Introdução à plataforma GNU de desenvolvimento

A plataforma GNU de desenvolvimento é uma coleção de ferramentas de software livre para o desenvolvimento de aplicativos para as plataformas Windows, Linux, BSD, Mac OS e Unix. Ela é a mais importante ferramenta para desenvolvimento de software para Linux/Unix, é poderosa, estável e completa, mas ainda é pouco popular. Esse artigo apresenta os componentes essenciais dessa plataforma.

[ Hits: 53.454 ]

Por: Renato Merli em 26/02/2010


Introdução



Para desenvolver aplicativos normalmente fazemos uso de uma grande quantidade de ferramentas de programação, muitas vezes dispostas em kits, frameworks ou plataformas de desenvolvimento.

Como exemplo de plataformas de desenvolvimento temos o .NET e a linguagem JAVA combinada com uma das muitas ferramentas de edição de interface e de código disponíveis.

Para o desenvolvimento de software para as plataformas Windows, Linux, BSD, Mac OS e Unix temos a plataforma de desenvolvimento GNU, que é constituída de uma coleção de projetos de software livre mantidos pela Free Software Foundation e desenvolvedores que colaboram através da internet. Os principais componentes dessa plataforma estão referenciados em http://library.gnome.org/devel/references.

A plataforma GNU não esta associada a nenhuma linguagem de programação em particular: as ferramentas de programação são desenvolvidas em linguagem C e têm ligações para a maioria das linguagens, incluindo C# (mono), C++, Java, PHP, Perl, Python, Ruby e várias outras.

Ela reúne todos os recursos que um conjunto de ferramentas deve conter para ser chamado de plataforma de desenvolvimento: editor de código, editor gráfico de interfaces, compilador, depurador etc, além de um conjunto de bibliotecas facilitadoras para as necessidades de desenvolvimento mais comuns.

Atualmente a plataforma GNU é completa, estável, rica em recursos, mas nitidamente ainda é pouco utilizada para desenvolvimento de aplicativos de acesso a banco de dados, mesmo entre os desenvolvedores de software livre: uma pesquisa no Google pela palavra chave "GDAMM", o nome de umas ferramentas da plataforma de desenvolvimento, em janeiro de 2009, antes da publicação deste artigo, não retornava nenhuma ocorrência em língua portuguesa e muito poucas em língua inglesa.

Isso não deve, entretanto, perdurar por muito tempo. Os projetos que compõem o ambiente GNU estão sendo melhorados continuamente e, como acontece com as plataformas e aplicativos livres, sua popularidade deve continuar a crescer nos próximos anos. É provável que dentro de algum tempo a plataforma GNU venha a ter alguma representatividade entre os ambientes de desenvolvimento populares.

Considero que para todos os ambientes de desenvolvimento deve haver compiladores ou interpretadores, depuradores, editores etc. Por isso, entre todos os componentes que compõem uma plataforma de desenvolvimento, estamos interessados em especial no conjunto de bibliotecas para programação que o ambiente oferece, o resto é "bobagem".

As funcionalidades presentes no ambiente GNU são muitas, incluindo bibliotecas thread-safe e multiplataforma para algoritmos genéricos, threads, XML, unicode, arquivos e outras utilidades (GLIB); tratamento de imagens gráficas (CAIRO), criação de interfaces gráficas (GTK+), acesso a banco de dados (GDA), comunicação interprocesso (D-BUS e BONOBO) e web services (LIBSOUP).

Nas próximas seções vamos conhecer os componentes do ambiente GNU essenciais para a criação de aplicativos e, para tanto, vamos estudar a aplicação genérica de cada uma das funcionalidades necessárias para construir aplicativos de acesso a banco de dados.

Utilizaremos do ambiente GNU: um aplicativo chamado GLADE para desenhar a interface; o toolkit GTKMM para programá-la; os componentes da biblioteca GNOME-DB para integração com o SGBD; o compilador GCC para compilar e linkar; o editor de código Anjuta para escrever o código.

Foram utilizadas as seguintes versões:
  • GLIB 2.22.0, GLIBMM 2.22.0, GTK+ 2.16.5, GTKMM 2.12.8,
  • GDA 3.1.2, GDAMM 3.0.0, GNOME-DB 3.1.2, GNOMEDBMM 2.9.5

Não foi utilizada a biblioteca GDA na versão 4 porque, ao tempo da redação deste, a ligação em C++, GDAMM, estava incompleta e sem uso possível para as funcionalidades utilizadas aqui. Deve ser lembrado, entretanto, que a versão de referência para novos projetos deve ser a versão 4, se possível.

O conhecimento da linguagem C++ e da arquitetura MVC é pré-requisito para o estudo deste documento.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Criação de interfaces: desenho
   3. Criação de interfaces: programação
   4. Banco de dados
   5. Colocando tudo junto: programação do aplicativo
Outros artigos deste autor

Ensaio acerca de bibliotecas de código aberto para abstração de acesso a banco de dados em linguagem C++

Leitura recomendada

Como aprender a programar e produzir aplicativos usando Euphoria

Programando com uma granada de mão: uma visão da linguagem C

Aleatoriedade em C

Criação e uso de um interpretador de script BrainFuck em C++

Criando um sistema operacional com ASM e C++

  
Comentários
[1] Comentário enviado por danielsa em 26/02/2010 - 15:54h

Olá Renato Merli,

Parabéns pelo artigo, nunca tinha visto um tão completo.

Consigo usar esta plataforma para desenvolver aplicações para window e/ou multi plataforma?

Obrigado

[2] Comentário enviado por doradu em 26/02/2010 - 17:23h

fez tudo isso no Windows?

[3] Comentário enviado por fernandoamador em 27/02/2010 - 13:31h

Parabéns pelo artigo...

[4] Comentário enviado por vinipsmaker em 28/02/2010 - 12:29h

parabéns pelo artigo, ficou muito bom mesmo.
+10

[5] Comentário enviado por xadouron em 01/03/2010 - 17:08h

Ola rmerli,

Parabéns pelo artigo.

Só uma coisa:

O link para baixar o código fonte não esta funcionando ( http://uniksys.com.br/renato/pub/exemplodb1.tar.gz ).

Abraços,

[6] Comentário enviado por edkiller em 06/03/2010 - 12:03h

Olá rmerli,

Parabéns pelo artigo !!

Ficou excelente!


[7] Comentário enviado por pedrocipoli em 07/06/2010 - 13:58h

Parabéns rmerli!

Estava pensando em começar a explorar o gtk e essa foi uma excelente introdução.


[8] Comentário enviado por psfdeveloper em 27/08/2010 - 23:20h

Cara, que artigo magnífico.

Eu programei durante muitos anos para Windows mas nunca me envolvi com programação gráfica. Quando migrei para Linux as coisas ficaram mais complicadas ainda para mim. Vou fazer um Bookmark nesse artigo para poder revê-lo futuramente com mais cuidado.

A única reserva que eu tenho é quanto ao uso do GTK. O GTK é portátil, podendo, inclusive, ser utilizado no MinGW, mas no Windows e no Mac OS X eles não se parecem com as widgets nativas, o que deixa os programas com uma cara meio de "estrangeiro". O Mac OS X, pelo menos, com o XQuartz, possui o X Window como interface padrão e qualquer programa X consistente pode ser um programa do Macintosh. Para garantir uma interface consistente entre plataformas, eu acho o WxWidgets mais interessante.

Mas, como tudo em programação, nenhuma solução é 100% boa para tudo. Usar GTK, Qt ou WxWidget depende do gosto do desenvolvedor. O Java Swing também pode ser utilizado para fazer interfaces gráficas multiplataforma, mas ele tem o mesmo problema de estrangeirismo do GTK. Mas uma coisa eu preciso dizer: para interfaces gráficas em Linux, o GTK é praticamente imbatível, a não ser que você esteja fazendo software específico para KDE. Nesse caso é melhor usar o Qt.

Caro Renato Merli, imensos parabéns para seu artigo! Nota 10!

[9] Comentário enviado por fhespanhol em 01/12/2010 - 20:29h

Muito bom seu artigo é justamente o que estamos precisando por aqui. Alguém com objetivos sérios e vontade de compartilhar seus conhecimentos. Parabéns.

[10] Comentário enviado por removido em 14/03/2011 - 17:06h

Parabéns, amigo! Muito bom seu artigo!

[11] Comentário enviado por removido em 13/05/2011 - 01:35h

Também gostei! Muito bom!

[12] Comentário enviado por fernandoamador em 20/06/2011 - 11:09h

Parabéns pelo artigo.

[13] Comentário enviado por rony_souza em 17/04/2012 - 21:14h

Muito bom me ajudou a ficar sabendo sobre programacao ...

[14] Comentário enviado por Ditador Nicastro em 29/09/2012 - 17:37h

Parabéns pelo artigo e obrigado.

[15] Comentário enviado por rbbarretojr em 04/10/2012 - 23:20h

Parabéns pelo artigo.

[16] Comentário enviado por david23.7 em 05/11/2012 - 09:54h

Parabéns! Me deu um bom ponto de partida!

[17] Comentário enviado por rmerli em 05/11/2012 - 12:11h


[8] Comentário enviado por psfdeveloper em 27/08/2010 - 23:20h:

Cara, que artigo magnífico.

Eu programei durante muitos anos para Windows mas nunca me envolvi com programação gráfica. Quando migrei para Linux as coisas ficaram mais complicadas ainda para mim. Vou fazer um Bookmark nesse artigo para poder revê-lo futuramente com mais cuidado.

A única reserva que eu tenho é quanto ao uso do GTK. O GTK é portátil, podendo, inclusive, ser utilizado no MinGW, mas no Windows e no Mac OS X eles não se parecem com as widgets nativas, o que deixa os programas com uma cara meio de "estrangeiro". O Mac OS X, pelo menos, com o XQuartz, possui o X Window como interface padrão e qualquer programa X consistente pode ser um programa do Macintosh. Para garantir uma interface consistente entre plataformas, eu acho o WxWidgets mais interessante.

Mas, como tudo em programação, nenhuma solução é 100% boa para tudo. Usar GTK, Qt ou WxWidget depende do gosto do desenvolvedor. O Java Swing também pode ser utilizado para fazer interfaces gráficas multiplataforma, mas ele tem o mesmo problema de estrangeirismo do GTK. Mas uma coisa eu preciso dizer: para interfaces gráficas em Linux, o GTK é praticamente imbatível, a não ser que você esteja fazendo software específico para KDE. Nesse caso é melhor usar o Qt.

Caro Renato Merli, imensos parabéns para seu artigo! Nota 10!



Obrigado.

Concordo com tudo que disse e confesso que nunca dei a devida importancia ao que voce devidamente define como "estrangeirismo" .Vou passar a considerar esse requisito em projetos futuros.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts