ESLPE 2008 - Desenvolvendo aplicações no Linux

Post on 02-Jul-2015

1.692 views 3 download

description

Autor, Jorge Pereira

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

1Jorge Pereira

<jorge@jorgepereira.com.br> 23 de Abril de 2008

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

2

# Licença

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.

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

5

# Agenda

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

6

# Primeiros Passos

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.

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

9

# A Cultura Windows x 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)

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

12

# A Cultura Windows x Linux

E a cultura Linux?

13

# Linguagens Suportadas

14

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

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

16

# Ferramentas

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.

18

# Ferramentas / Vim

19

# Ferramentas / Emacs

20

# Ferramentas / GCC (GNU Compiler Collection)

21

# Ferramentas / Linkeditor

23

# Ferramentas / Builder

24

# Ferramentas / CVS

25

# Aplicações Gráficas

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.

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

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.

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.

30

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

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

# Aplicações Gráficas / GTK

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

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

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

# Aplicações Gráficas / GTK

35

# Aplicações Gráficas / GTK

GTK com as facilidades do desenvolvimento Visual.

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.

37

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

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

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)

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.

41

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

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.

43

# Aplicações Gráficas / DevHelp

44

# Aplicações Gráficas / DevHelp

45

# Perguntas?

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

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/

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”

49

Obrigado! ;)

<jorge@jorgepereira.com.br> www.jorgepereira.com.br