SlideShare uma empresa Scribd logo
Palestrante: Jorge Pereira
Assunto: Desenvolvendo Aplicações no Linux
Local: Olinda
Data: 18/08/2007
                       © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Licença




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




                               © 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


                                © 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


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




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




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



                               © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# A Cultura Windows x Linux




                      © 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)



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




                                  © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# A Cultura Windows x Linux



       E a cultura Linux?




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




                     © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Linguagens Suportadas
  • C/C++
  • Python
  • Perl
  • PHP
  • Ruby
  • Java
  • Cobol
  • Fortran
  • Pascal
  • Lua

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


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




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


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




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




                        © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Ferramentas / GCC   (GNU Compiler Collection)




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




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




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




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




                      © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas




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


                                 © 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

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


                                 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# 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
                                        © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / GTK
• Abaixo segue uma imagem da arquitetura de um
programa utilizando GTK.




                                 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / GTK


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




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



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




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




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



                                    © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / GTK / Glade




                       © 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




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




                                     © 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)



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




                              © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / GTK / Anjuta




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




                                 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / DevHelp




                       © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Aplicações Gráficas / DevHelp




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




               © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# 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
                       © 2007 Jorge Pereira http://www.jorgepereira.com.br/
# Referências
• PHP                    • Fernando Lozano
www.php.net              www.lozano.eti.br
pear.php.net
                         • CinLug
• Java-Gnome (J/GTK+)    www.cin.ufpe.br/~cinlug/
java-gnome.sourceforge




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



 Site: http://www.jorgepereira.com.br/
 E-mail: jorge@jorgepereira.com.br




                        © 2007 Jorge Pereira http://www.jorgepereira.com.br/
Obrigado! ;)


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

Mais conteúdo relacionado

Mais procurados

Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Tchelinux
 

Mais procurados (17)

Não sou Programador, como posso ajudar o Debian?
Não sou Programador, como posso ajudar o Debian?Não sou Programador, como posso ajudar o Debian?
Não sou Programador, como posso ajudar o Debian?
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Acessibilidade para-deficientes-visuais-com-python-v2
Acessibilidade para-deficientes-visuais-com-python-v2Acessibilidade para-deficientes-visuais-com-python-v2
Acessibilidade para-deficientes-visuais-com-python-v2
 
Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
 
Php Gtk
Php GtkPhp Gtk
Php Gtk
 
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
 
.NET Open Source 2009
.NET Open Source 2009.NET Open Source 2009
.NET Open Source 2009
 
Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]Palestra Software Livre [UPDATE]
Palestra Software Livre [UPDATE]
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Software livre pra quem não é da área
Software livre pra quem não é da áreaSoftware livre pra quem não é da área
Software livre pra quem não é da área
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
As vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NETAs vantagens do desenvolvimento em .NET
As vantagens do desenvolvimento em .NET
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 

Destaque

AMERICA 12 Octubre
AMERICA 12 OctubreAMERICA 12 Octubre
AMERICA 12 Octubre
gopakua
 
The Subprime Primer
The Subprime PrimerThe Subprime Primer
The Subprime Primer
IbmecSP
 
Studentenonderzoek2008
Studentenonderzoek2008Studentenonderzoek2008
Studentenonderzoek2008
HEUS Marketing
 
Presentación Mk
Presentación MkPresentación Mk
Presentación Mk
Indra
 
Futrinka utca Egyesület - 2. verzió
Futrinka utca Egyesület - 2. verzióFutrinka utca Egyesület - 2. verzió
Futrinka utca Egyesület - 2. verzió
guestfc9287
 
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
Petra Grell
 
Plusses, Potentials & Concerns
Plusses, Potentials & ConcernsPlusses, Potentials & Concerns
Plusses, Potentials & Concerns
Innowiz
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
Bruno Pedro
 
День флага
День флагаДень флага
День флага
guest583ae1
 
VietRees_Newsletter_50_Tuan4_Thang09
VietRees_Newsletter_50_Tuan4_Thang09VietRees_Newsletter_50_Tuan4_Thang09
VietRees_Newsletter_50_Tuan4_Thang09
internationalvr
 
VietRees_Newsletter_48_Week2_Month09_Year08
VietRees_Newsletter_48_Week2_Month09_Year08VietRees_Newsletter_48_Week2_Month09_Year08
VietRees_Newsletter_48_Week2_Month09_Year08
internationalvr
 
29 Oktober 2007
29 Oktober 200729 Oktober 2007
29 Oktober 2007
0793937
 

Destaque (20)

presentacion ejemplo1
presentacion ejemplo1presentacion ejemplo1
presentacion ejemplo1
 
AMERICA 12 Octubre
AMERICA 12 OctubreAMERICA 12 Octubre
AMERICA 12 Octubre
 
The Subprime Primer
The Subprime PrimerThe Subprime Primer
The Subprime Primer
 
PRESENTACION EJEMPLLO 1
PRESENTACION EJEMPLLO 1PRESENTACION EJEMPLLO 1
PRESENTACION EJEMPLLO 1
 
Amistadpura
AmistadpuraAmistadpura
Amistadpura
 
Studentenonderzoek2008
Studentenonderzoek2008Studentenonderzoek2008
Studentenonderzoek2008
 
Presentación Mk
Presentación MkPresentación Mk
Presentación Mk
 
Futrinka utca Egyesület - 2. verzió
Futrinka utca Egyesület - 2. verzióFutrinka utca Egyesület - 2. verzió
Futrinka utca Egyesület - 2. verzió
 
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
Forschende Lernwerkstatt - Forschung jenseits von Interviews und Fragebogen (...
 
Plusses, Potentials & Concerns
Plusses, Potentials & ConcernsPlusses, Potentials & Concerns
Plusses, Potentials & Concerns
 
About Benjamin Bloom
About Benjamin BloomAbout Benjamin Bloom
About Benjamin Bloom
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
 
День флага
День флагаДень флага
День флага
 
2º Medio
2º Medio2º Medio
2º Medio
 
Rich Learning Tasks
Rich Learning TasksRich Learning Tasks
Rich Learning Tasks
 
2 Appt
2 Appt2 Appt
2 Appt
 
Estresado
EstresadoEstresado
Estresado
 
VietRees_Newsletter_50_Tuan4_Thang09
VietRees_Newsletter_50_Tuan4_Thang09VietRees_Newsletter_50_Tuan4_Thang09
VietRees_Newsletter_50_Tuan4_Thang09
 
VietRees_Newsletter_48_Week2_Month09_Year08
VietRees_Newsletter_48_Week2_Month09_Year08VietRees_Newsletter_48_Week2_Month09_Year08
VietRees_Newsletter_48_Week2_Month09_Year08
 
29 Oktober 2007
29 Oktober 200729 Oktober 2007
29 Oktober 2007
 

Semelhante a Dia Debian 2007 - Desenvolvendo aplicações no Linux

Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellani
Hugo Borges
 
ESLPE 2008 - Contribuindo com o GNOME
ESLPE 2008 - Contribuindo com o GNOMEESLPE 2008 - Contribuindo com o GNOME
ESLPE 2008 - Contribuindo com o GNOME
Jorge Pereira
 
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes VazAplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
Tchelinux
 

Semelhante a Dia Debian 2007 - Desenvolvendo aplicações no Linux (20)

Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellani
 
Ruby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo CastellaniRuby No Desktop - Marcelo Castellani
Ruby No Desktop - Marcelo Castellani
 
ESLPE 2008 - Contribuindo com o GNOME
ESLPE 2008 - Contribuindo com o GNOMEESLPE 2008 - Contribuindo com o GNOME
ESLPE 2008 - Contribuindo com o GNOME
 
Web open source
Web open sourceWeb open source
Web open source
 
Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017
 
Tupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDETupiniquizando o desktop com KDE
Tupiniquizando o desktop com KDE
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
Intro linux
Intro linuxIntro linux
Intro linux
 
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes VazAplicações livres para o seu Desktop - Leonardo Menezes Vaz
Aplicações livres para o seu Desktop - Leonardo Menezes Vaz
 
C# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev WeekC# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev Week
 
Janela Livre
Janela LivreJanela Livre
Janela Livre
 
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
 
Software livre
Software livreSoftware livre
Software livre
 
Ambientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sAmbientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC's
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila Ayres
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Csharp
CsharpCsharp
Csharp
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 

Dia Debian 2007 - Desenvolvendo aplicações no Linux

  • 1. Palestrante: Jorge Pereira Assunto: Desenvolvendo Aplicações no Linux Local: Olinda Data: 18/08/2007 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 2. # Licença © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 3. # 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++. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 5. # Agenda  Primeiros Passos  A Cultura Windows x Linux  Linguagens Suportadas  Ferramentas  Aplicações Gráficas  Perguntas  Referências  Contato © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 6. # Primeiros Passos © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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. • Por fim: Força de vontade. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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, Oracle, Novell ... © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 9. # A Cultura Windows x Linux © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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) © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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”. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 12. # A Cultura Windows x Linux E a cultura Linux? © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 13. # Linguagens Suportadas © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 14. # Linguagens Suportadas • C/C++ • Python • Perl • PHP • Ruby • Java • Cobol • Fortran • Pascal • Lua © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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 • ... © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 16. # Ferramentas © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 17. # 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 18. # Ferramentas / Vim © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 19. # Ferramentas / Emacs © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 20. # Ferramentas / GCC (GNU Compiler Collection) © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 21. # Ferramentas / Linkeditor © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 22. # Ferramentas / GDB © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 23. # Ferramentas / Makefiles © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 24. # Ferramentas / CVS © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 25. # Aplicações Gráficas © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 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 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 30. # Aplicações Gráficas / GTK • Abaixo segue uma imagem da arquitetura de um programa utilizando GTK. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 31. # Aplicações Gráficas / GTK Em seguida, um exemplo de código GTK feito em “C” © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 32. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 33. # 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”. =) © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 34. # 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”. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 35. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 36. # Aplicações Gráficas / GTK GTK com as facilidades do desenvolvimento Visual. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 37. # 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 38. # Aplicações Gráficas / GTK / Glade © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 39. # 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 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 40. # Aplicações Gráficas / GTK / Glade Demonstração de um projeto feito no Glade. Projeto: “$PWD/GTK-EditorTexto-Glade/editor.glade” © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 41. # 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) © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 42. # 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 43. # Aplicações Gráficas / GTK / Anjuta © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 44. # 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. © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 45. # Aplicações Gráficas / DevHelp © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 46. # Aplicações Gráficas / DevHelp © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 47. # Perguntas? © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 48. # 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 © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 49. # Referências • PHP • Fernando Lozano www.php.net www.lozano.eti.br pear.php.net • CinLug • Java-Gnome (J/GTK+) www.cin.ufpe.br/~cinlug/ java-gnome.sourceforge © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 50. # Contato Site: http://www.jorgepereira.com.br/ E-mail: jorge@jorgepereira.com.br © 2007 Jorge Pereira http://www.jorgepereira.com.br/
  • 51. Obrigado! ;) © 2007 Jorge Pereira http://www.jorgepereira.com.br/