Dia Debian 2007 - Desenvolvendo aplicações no Linux

51
© 2007 Jorge Pereira http://www.jorgepereira.com.br/ © 2007 Jorge Pereira http://www.jorgepereira.com.br/ Palestrante: Jorge Pereira Assunto: Desenvolvendo Aplicações no Linux Local: Olinda Data: 18/08/2007

description

Autor, Jorge Pereira

Transcript of Dia Debian 2007 - Desenvolvendo aplicações no Linux

Page 1: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

Palestrante: Jorge PereiraAssunto: Desenvolvendo Aplicações no LinuxLocal: OlindaData: 18/08/2007

Page 2: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Licença

Page 3: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# whoiam?

Meu nome é Jorge Pereira, tendo meu primeiro contato com sistemas Unix 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++.

Page 4: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Agenda

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

Page 6: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Primeiros Passos

Page 7: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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.• Por fim: Força de vontade.

Page 8: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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, Oracle, Novell ...

Page 9: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# A Cultura Windows x Linux

Page 10: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# A Cultura Windows x Linux

E a cultura Linux?

Page 13: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Linguagens Suportadas

Page 14: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

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

Page 15: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas

Page 17: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas O Linux inclui o conjunto de ferramentas de desenvolvimento do GNU.• Editores vim e Emacs• Compilador GCC• Linkeditor dinâmico• Depurador GDB (cli), xgdb, DDD e GVD (visuais)• Bibliotecas• Makefiles (Ferramentas de Build)• CVS• Man (ajuda online)• Entre outras.

Page 18: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / Vim

Page 19: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / Emacs

Page 20: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / GCC (GNU Compiler Collection)

Page 21: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / Linkeditor

Page 22: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / GDB

Page 23: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / Makefiles

Page 24: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Ferramentas / CVS

Page 25: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Aplicações Gráficas

Page 26: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 são 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.• Grande parte dos aplicativos são desenvolvidos na linguagem C e C++, possuindo bindings para outras linguagens.

Page 27: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

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

Page 31: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Aplicações Gráficas / GTK

Em seguida, um exemplo de código GTK feito em “C”

Page 32: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

Page 33: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 34: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 35: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

Page 36: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Aplicações Gráficas / GTK

GTK com as facilidades do desenvolvimento Visual.

Page 37: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 38: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

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

Page 39: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 40: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

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

Demonstração de um projeto feito no Glade.

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

Page 41: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 42: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 43: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

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

Page 44: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 45: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Aplicações Gráficas / DevHelp

Page 46: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Aplicações Gráficas / DevHelp

Page 47: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Perguntas?

Page 48: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# 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 49: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Referências

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

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

• Fernando LozanoFernando Lozanowww.lozano.eti.brwww.lozano.eti.br

• CinLugCinLugwww.cin.ufpe.br/~cinlug/www.cin.ufpe.br/~cinlug/

Page 50: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

# Contato

Site: http://www.jorgepereira.com.br/E-mail: [email protected]

Page 51: Dia Debian 2007 - Desenvolvendo aplicações no Linux

© 2007 Jorge Pereira http://www.jorgepereira.com.br/© 2007 Jorge Pereira http://www.jorgepereira.com.br/

Obrigado! ;)