ESLPE 2008 - Desenvolvendo aplicações no Linux

49
1 Jorge Pereira <[email protected]> 23 de Abril de 2008 “Guiando os primeiros para iniciar o desenvolvimento no ambiente Linux”

description

Autor, Jorge Pereira

Transcript of ESLPE 2008 - Desenvolvendo aplicações no Linux

Page 1: ESLPE 2008 - Desenvolvendo aplicações no Linux

1Jorge Pereira

<[email protected]> 23 de Abril de 2008

“Guiando os primeiros para iniciar o desenvolvimento no ambiente Linux”

Page 2: ESLPE 2008 - Desenvolvendo aplicações no Linux

2

# Licença

Page 3: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 4: ESLPE 2008 - Desenvolvendo aplicações no Linux

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

Page 5: ESLPE 2008 - Desenvolvendo aplicações no Linux

5

# Agenda

Primeiros Passos A Cultura Windows x Linux Linguagens Suportadas Ferramentas Aplicações Gráficas Perguntas Se vira nos 30 Contato Referências

Page 6: ESLPE 2008 - Desenvolvendo aplicações no Linux

6

# Primeiros Passos

Page 7: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 8: ESLPE 2008 - Desenvolvendo aplicações no Linux

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 ...

Page 9: ESLPE 2008 - Desenvolvendo aplicações no Linux

9

# A Cultura Windows x Linux

Page 10: ESLPE 2008 - Desenvolvendo aplicações no Linux

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)

Page 11: ESLPE 2008 - Desenvolvendo aplicações no Linux

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”.

Page 12: ESLPE 2008 - Desenvolvendo aplicações no Linux

12

# A Cultura Windows x Linux

E a cultura Linux?

Page 13: ESLPE 2008 - Desenvolvendo aplicações no Linux

13

# Linguagens Suportadas

Page 14: ESLPE 2008 - Desenvolvendo aplicações no Linux

14

# Linguagens Suportadas• C/C++• Python• Perl• PHP• Ruby• Java• Cobol• Fortran• Pascal• Lua• ...

Page 15: ESLPE 2008 - Desenvolvendo aplicações no Linux

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• ...

Page 16: ESLPE 2008 - Desenvolvendo aplicações no Linux

16

# Ferramentas

Page 17: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 18: ESLPE 2008 - Desenvolvendo aplicações no Linux

18

# Ferramentas / Vim

Page 19: ESLPE 2008 - Desenvolvendo aplicações no Linux

19

# Ferramentas / Emacs

Page 20: ESLPE 2008 - Desenvolvendo aplicações no Linux

20

# Ferramentas / GCC (GNU Compiler Collection)

Page 21: ESLPE 2008 - Desenvolvendo aplicações no Linux

21

# Ferramentas / Linkeditor

Page 23: ESLPE 2008 - Desenvolvendo aplicações no Linux

23

# Ferramentas / Builder

Page 24: ESLPE 2008 - Desenvolvendo aplicações no Linux

24

# Ferramentas / CVS

Page 25: ESLPE 2008 - Desenvolvendo aplicações no Linux

25

# Aplicações Gráficas

Page 26: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 27: ESLPE 2008 - Desenvolvendo aplicações no Linux

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

Page 28: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 29: ESLPE 2008 - Desenvolvendo aplicações no Linux

29

# Aplicações Gráficas / GTK

• Gimp• Mozilla• OpenOffice• Evolution• Ethereal• Glade• AbiWord

• Gnumeric• Dia• MrProject• xmms• Anjuta• File Roller• O próprio GNOME

• 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.

Page 30: ESLPE 2008 - Desenvolvendo aplicações no Linux

30

# Aplicações Gráficas / GTK• Abaixo segue uma imagem da arquitetura de um programa utilizando GTK.

Page 31: ESLPE 2008 - Desenvolvendo aplicações no Linux

31“Exemplo de código GTK feito em C”

# Aplicações Gráficas / GTK

Page 32: ESLPE 2008 - Desenvolvendo aplicações no Linux

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”. =)

Page 33: ESLPE 2008 - Desenvolvendo aplicações no Linux

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”.

Page 34: ESLPE 2008 - Desenvolvendo aplicações no Linux

34“Exemplo de código GTK feito em PHP-GTK”

# Aplicações Gráficas / GTK

Page 35: ESLPE 2008 - Desenvolvendo aplicações no Linux

35

# Aplicações Gráficas / GTK

GTK com as facilidades do desenvolvimento Visual.

Page 36: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 37: ESLPE 2008 - Desenvolvendo aplicações no Linux

37

# Aplicações Gráficas / GTK / Glade

Page 38: ESLPE 2008 - Desenvolvendo aplicações no Linux

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

Page 39: ESLPE 2008 - Desenvolvendo aplicações no Linux

39

# Aplicações Gráficas / GTK / Ambiente

• Glade (desenhar formulários)• Emacs, SciTE, Moleskine, Ajuta (editor de programas)• GCC, Java, Perl, Python, PHP (compilador ou interpretador)• DDD, GVD, GDB (depurador)• CVS (trabalho em equipe)• MySQL, PostgreSQL, Firebird (Banco de Dados)

Page 40: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 41: ESLPE 2008 - Desenvolvendo aplicações no Linux

41

# Aplicações Gráficas / GTK / Anjuta

Page 42: ESLPE 2008 - Desenvolvendo aplicações no Linux

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.

Page 43: ESLPE 2008 - Desenvolvendo aplicações no Linux

43

# Aplicações Gráficas / DevHelp

Page 44: ESLPE 2008 - Desenvolvendo aplicações no Linux

44

# Aplicações Gráficas / DevHelp

Page 45: ESLPE 2008 - Desenvolvendo aplicações no Linux

45

# Perguntas?

Page 46: ESLPE 2008 - Desenvolvendo aplicações no Linux

46

# Referências

• Sobre o Gimpwww.gimp.orgwww.wingimp.org

• Sobre o GTKwww.gtk.org

• Sobre o Gnomewww.gnome.org

• Sobre o Gladewww.glade.orgwingtk.sourceforge.net

• GNU Cgcc.gnu.orgmingw.sourceforge.net

• Free Pascalwww.freepascal.org

Page 47: ESLPE 2008 - Desenvolvendo aplicações no Linux

47

# Referências

• PHP www.php.net pear.php.net

• Java-Gnome (J/GTK+) java-gnome.sourceforge

• Fernando Lozanowww.lozano.eti.br

• CinLugwww.cin.ufpe.br/~cinlug/

Page 48: ESLPE 2008 - Desenvolvendo aplicações no Linux

48

# Se vira nos 30

Demonstração de um projeto feito no Glade!será que da tempo?!?!? :P

Projeto: “$PWD/GTK-EditorTexto-Glade/editor.glade”

Page 49: ESLPE 2008 - Desenvolvendo aplicações no Linux

49

Obrigado! ;)

<[email protected]> www.jorgepereira.com.br