ESLPE 2008 - Desenvolvendo aplicações no Linux - Presentation Transcript
“Guiando os primeiros para iniciar o
desenvolvimento no ambiente Linux”
Jorge Pereira 1
<jorge@jorgepereira.com.br> 23 de Abril de 2008
# Licença
2
# who i'am?
Meu nome é Jorge Pereira, tive meu primeiro
contato com o Linux por volta de 1996, trabalhando
durante muitos anos com soluções e consultorias
voltadas para sistemas OpenSource, atuando
durante esses anos como desenvolvedor, sysadmin,
instrutor e palestrante. Atualmente trabalhando como
desenvolvedor C/C++ & Embedded Systems.
3
# Objetivos
Apresentar ao profissional ou estudante acostumado
a programar em ambiente Windows ou qualquer outro
ambiente diferente do Linux, as ferramentas e
possibilidades disponíveis para programação em
ambiente Linux.
Indicar caminhos para o desenvolvimento de
aplicações multiplataforma, como preparação para uma
futura migração ao Linux ou como forma de viabilizar
uma rede heterogênea
4
# Agenda
Primeiros Passos
A Cultura Windows x Linux
Linguagens Suportadas
Ferramentas
Aplicações Gráficas
Perguntas
Se vira nos 30
Contato
Referências
5
# Primeiros Passos
6
# Primeiros Passos
• Possuir o Linux instalado na máquina.
• Conhecer o básico sobre o sistema.
• Entender o básico sobre seu funcionamento.
• Acesso a fontes de pesquisa.
• Conhecimentos sobre programação.
• Indicado conhecer o básico sobre licenças.
• Por fim: Força de vontade.
7
# Primeiros Passos / Vantagens
• Custo Zero.
• Open Source.
• Bugs podem ser consertados por qualquer pessoa.
• Maior flexibilidade.
• Vasta base de software.
• Utilização do Linux em aplicações embarcadas.
• Grandes empresas investindo na plataforma:
• Motorola, Nokia, IBM, SUN, Oracle, Novell ...
8
# A Cultura Windows x Linux
9
# A Cultura Windows x Linux
• Como o SO fornecia apenas componentes de baixo
nível (e nenhuma ferramenta de apoio ao
desenvolvimento), as IDEs tornaram-se “inchados” e
incompatíveis entre si.
• As dificuldades do padrão *OCX fizeram com que
cada IDE fornecesse sua própria biblioteca de
componentes, de modo que o programador não
aproveita quase nada do seu knowhow ao mudar de
IDE.
* (OLE Control Extension)
10
# A Cultura Windows x Linux
• Pior, frequentemente uma nova versão do mesmo IDE
é incompatível com aplicações desenvolvidas com
versões anteriores do mesmo IDE (ex: VB 4/5/6, Delphi
6/7)
• O foco nos desenhadores de formulários leva a
aplicações de difícil manutenção sem a ajuda dos
famosos “componentes”.
11
# Linguagens Suportadas
• C no Linux a linguagem de programação nativa é
“C”, sua API padrão chama-se “Glibc – GNU
Library C”, possuindo os principais recursos
nativos abaixo:
• Entrada/Saída;
• Arquivos;
• Rede;
• Chamadas de Sistema;
• Matemática;
• Multi-Tarefas
• ...
15
# Ferramentas
16
# Ferramentas
O Linux inclui o conjunto de ferramentas de
desenvolvimento.
• Editores vim e Emacs
• Compilador cross-compile GCC
• Linkeditor dinâmico
• Depurador GDB (cli), xgdb, DDD e GVD (visuais)
• Diversas bibliotecas
• Makefiles (Ferramentas de Build)
• CVS
• Man (ajuda online)
• Entre outras.
17
# Ferramentas / Vim
18
# Ferramentas / Emacs
19
# Ferramentas / GCC (GNU Compiler
Collection)
20
# Ferramentas / Linkeditor
21
# Ferramentas / GDB
22
# Ferramentas / Builder
23
# Ferramentas / CVS
24
# Aplicações Gráficas
25
# Aplicações Gráficas
• O Linux dispõe de vários componentes para
desenvolvimento de aplicativos gráficos, também
conhecidos como “toolkits”.
• Os mais famosos e o GTK, utilizado no desenvolvimento
do Gnome e o QT utilizado no KDE.
• Ambos os toolkits também são disponíveis para outros
ambientes, inclusive o Windows e sistemas embarcados.
• Grande parte dos aplicativos são desenvolvidos na
linguagem C e C++, possuindo bindings para outras
linguagens.
26
# Aplicações Gráficas / GTK
• O GTK+ nasceu como um toolkit alternativo para o X
Window System no desenvolvimento do GIMP, pois
nenhum toolkit livre existente na época fornecia a
qualidade visual e riqueza de componentes exigidos
pela aplicação.
• A popularidade do GIMP e as características do
GTK+ o tornaram apropriado para muitas outras
aplicações, e hoje ele talvez seja o toolkit mais popular
para o desenvolvimento de aplicações para Linux e
Unix
27
# Aplicações Gráficas / GTK
• O GTK+ foi desenvolvido em ANSI C, embora
baseado em um projeto orientado a objetos
• Assim se torna fácil criar bindings do toolkit para
outras linguagens, como Perl, Python, PHP, Pascal,
Java, ADA, etc.
• Todos esses bindings são muito semelhantes,
apenas adaptados às peculiaridades de cada
linguagem, de modo que o conhecimento sobre o
GTK+ é preservado em uma mudança de linguagem.
28
# Aplicações Gráficas / GTK
• O GTK e um projeto bastante estável e rico de componentes
gráficos para desenvolvimento de aplicações das mais diversas,
abaixo seguem alguns exemplos de aplicativos que utilizam o
GTK como sendo o toolkit visual.
• Gimp • Gnumeric
• Mozilla • Dia
• OpenOffice • MrProject
• Evolution • xmms
• Ethereal • Anjuta
• Glade • File Roller
• AbiWord • O próprio GNOME
29
# Aplicações Gráficas / GTK
• Abaixo segue uma imagem da arquitetura de um
programa utilizando GTK.
30
# Aplicações Gráficas / GTK
“Exemplo de código GTK feito em C”
31
# Aplicações Gráficas / Complicado?
• A o código aparentemente complicado, cheio de
ponteiros, casts, e funções com nomes longos, não é
conseqüência da natureza do GTK+ e sim da
linguagem C, que manipula ponteiros diretamente e
não implementa polimorfismo.
• Linguagens com características semelhantes, como
PHP, geram programas semelhantes “de uma forma
menos traumatizante”. =)
32
# Aplicações Gráficas / Complicado?
Em seguida, um exemplo do mesmo código sendo
feito em PHP com suporte a GTK, chamado de “php-
gtk”.
33
# Aplicações Gráficas / GTK
34
“Exemplo de código GTK feito em PHP-GTK”
# Aplicações Gráficas / GTK
GTK com as facilidades do desenvolvimento
Visual.
35
# Aplicações Gráficas / GTK / Glade
• Proposta de desenvolvimento visual diferente dos IDEs do
mundo Windows.
• O GTK+ é independente de linguagem e de SO.
• O Glade também tenta ser, apesar de oferecer recursos
(opcionais) específicos para o Gnome.
• Pode gerar o código das janelas em C e outras linguagens.
• Mas o preferido é salvar apenas a descrição das janelas em
formato XML, processado em tempo de execução pela
biblioteca libGlade.
• Permite modificar o layout das janelas sem recompilar.
36
# Aplicações Gráficas / GTK / Glade
37
# Aplicações Gráficas / GTK / Glade
• Ele não é um IDE estilo Delphi ou VB, é apenas uma
IDE utilizada para desenhar janelas.
• É capaz de gerar código em C, C++, Ada, Eiffel e
Perl correspondente à interface desenhada
• Entretanto, via LibGlade, pode ser utilizado com
qualquer outra linguagem.
• IDEs como o Anjuta utilizam o Glade para fornecer
Um ambiente completo de desenvolvimento
38
# Aplicações Gráficas / GTK / Ambiente
Anjuta é um Ambiente de Desenvolvimento
Integrado para C e C++ em GNU/Linux. Ele foi escrito
para GTK+/GNOME e suporta muitas capacidades
avançadas como gerenciamento de projetos e um
poderoso editor de código fonte.
40
# Aplicações Gráficas / GTK / Anjuta
41
# Aplicações Gráficas / DevHelp
E possível obter ajuda sobre diversas API,
inclusive o GTK através do próprio Linux, basta
instalar e utilizar a ferramenta Devhelp.
Pois ele possui recurso de busca e fácil acesso a
descrição das API.
42
# Aplicações Gráficas / DevHelp
43
# Aplicações Gráficas / DevHelp
44
# Perguntas?
45
# Referências • Sobre o Glade
www.glade.org
• Sobre o Gimp
www.gimp.org wingtk.sourceforge.net
www.wingimp.org
• GNU C
• Sobre o GTK gcc.gnu.org
www.gtk.org
mingw.sourceforge.net
• Sobre o Gnome
www.gnome.org • Free Pascal
www.freepascal.org
46
0 comments
Post a comment