3. # 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
4. # 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
5. # Agenda
Primeiros Passos
A Cultura Windows x Linux
Linguagens Suportadas
Ferramentas
Aplicações Gráficas
Perguntas
Se vira nos 30
Contato
Referências
5
7. # 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
8. # 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
10. # 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
11. # 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
12. # A Cultura Windows x Linux
E a cultura Linux?
12
15. # 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
17. # 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
26. # 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
27. # 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
28. # 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
29. # 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
30. # Aplicações Gráficas / GTK
• Abaixo segue uma imagem da arquitetura de um
programa utilizando GTK.
30
32. # 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
33. # 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
36. # 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
38. # 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
40. # 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
42. # 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
46. # 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