Desenvolviment para plataforma GNOME

By Fabio Rafael Rosa

Nesse post, começo uma sério de artigos(espero que, semanalmente, se o emprego permitir) nos quais tento passar ao leitor um conhecimento consolidade sobre o é a plataforma GNOME, quais os componentes que a formam, como desenvolver aplicações utilizando todos os recursos disponíveis na plataforma e como contribuir para o projeto

O que me levou a iniciar essa série de artigos é a dificuldade em conseguir encontrar uma documentação passo a passo para programadores (iniciantes ou não) que queiram iniciar na plataforma GNOME.

Lembro que esse guia é destinado a programadores. Aqui procuro transcrever da melhor forma possivel tudo o que aprendi até o momento sobre a plataforma GNOME. Ao leitores, deixo aberto o espaço de comentários para que possamos gerar discussões a respeito do artigo da semana. Só reitero aqui para que evitem flames e mantenham a discussão saudável e produtiva. Isso não é um espaço para discutir “qual a melhor ferramenta”, “qual o melhor desktop”, coisas do genero. Convido inclusive desenvolvedores experientes em outras plataforma Desktop opensource a públicar documentos semelhantes. A uma certa falta de documentação organizada (principalmente em portugues) sobre o assunto.

Sem mais, agradeço a audiência e espero que isso seja de ajuda a todos. Estou abertoa críticas e sugestões, então, nao se sintam acanhados.

Breve histórico

GNOME – GNU Network Object Model Environment

Em 1997, nascia o projeto GNOME. O projeto nasceu em resposta ao projeto KDE. A grande motivação foi o fato de que, apesar de KDE ser opensource, era baseado em uma toolkit nao livre (naquela época). Preocupados com o que aconteceria com o ambiente caso fosse proibido o uso da Qt, Miguel de Icaza e Federino Mena deram inicio ao GNOME, um ambiente Desktop 100% construido utilizando tecnologia opensource. A ideia era criar um framework unificado que tornasse mais simples e uniforme o desenvolvimento de aplicações, e que fornecesse uma interface amigável para o usuário. O GTK foi escolhido como toolkit para o projeto, por ja ser um toolkit livre disponível no momento (criado para e utilizado no Gimp).

Conceitos basicos

O GNOME usa como base a biblioteca GTK. GTK era um toolkit que ja existia, foi feito para desenvolver o Gimp, uma ferramenta de manipulação de imagens. O GTK tem uma característica interessante: ele é um toolkit totalmente feito em C, porém, orientado e objetos. O fato de ser feito em C faz com que seja muito simples de usar em diversas outras linguagens de programação. Essa é, na minha opinião, a característica mais forte do GTK. Depois de algum tempo, diversas partes do GTK foram sendo separadas do toolkit, para serem usadas em aplicações não gráficas. Nasce assim, a glib. Depois de mais algum tempo, o hierarquia de objetos foi separada ta toolkit, gerando o que se conhece como GObject hoje, base comum de quase todas as bibliotecas que compõe a plataforma.

Ambiente para os artigos.

Eu estarei usando como ferramenta de desenvolvimento o Eclipse (Ganimedes – 3.4) O eclipse não é meu IDE principal e favorito, porém leva bem menos tempo para configurar os exemplos no Eclipse do que se eu fosse usar o Emacs (ja que nem todos estarão familiarizados com o Emacs). Uso eclipse a muito tempo para trabalhar(sou desenvolvedor Java), logo, estou tão familiarizado com ele quanto com o Emacs. (na verdade até mais, ja que o Emacs é bem mais extenso, mas, melhor nao entrarmos por esse terreno ;) ). Porém, para aqueles que ja possuem um Editor/IDE de  referencia, será muito simples adaptar qualquer exemplo para os mesmos.

Que linguagem usar

Esse assunto é delicado. É possível desenvolver para plataforma GNOME utilizando diversas linguagens diferentes. A plataforma atual do GNOME possui 5 linguagens marcadas como oficiais (pois possuem suporte extenso às bibliotecas que formam o GNOME):

  • C++
  • Java
  • Python
  • C#
  • Perl

Eu prentendo utilizar Java e Python para os exemplos. Mas, por que ? Pelo fato de ambas serem as linguagens mais simples e rapidas (para desenvolver) da lista que eu trabalho e conheço bem. Agora, segue um ponto de vista pessoal , de como eu vejo cada linguagem da lista:

  • C -> é uma linguagem para desenvolver bibliotecas. É totalmente possivel desenvolveaplicações em C, mas, para mim, foge muito do escopo, e da um baita trabalho
  • C++ -> Muito adequada para desenvolver aplicações, porém, é uma linguagem complexa e que poucas pessoas realmente dominam. Eu acho C++ extretamente poderosa, mas a curva de aprendizagem é bem alta. C++ pode ou não ter gerenciamente automatico de memória.
  • Java -> Ela esta alguns degraus acima do C++ naquela listinha baixo nivel -> alto nivel.Uso para densenvolver aplicaçoes muito grandes que não precisem do controle do C++.
  • Python -> É a menina dos meus olhos. Não vou entrar nos detalhes do porque pessoalmenteadoro a linguagem, basta dizer, que uso sempre que possivel. So nao uso Python no lugar doJava para aplicações muito grandes porque a runtime do Java é _bem_ mais rapida.Costumo utilizar bastante a combinação Python / C e Python / C++. Realmente, depende do projeto.

Por que nao C# ou Perl:

Simples, tenho algum conhecimento de C#, mas não tanto quando das outras. Meu conhecimento de perl é quase nulo.

Há ainda o Vala, que vou deixar para explicar em outro post, pois esse ja esta ficando muito grande.

Até a próxima pessoal

Tags: , , , , , ,

20 Respostas para “Desenvolviment para plataforma GNOME”

  1. Desenvolvimento para plataforma GNOME Disse:

    [...] por Fabio Rafael da Rosa (fabiorafael·rosaΘgmail·com) – referência [...]

  2. Edinho Disse:

    Eu também programo em Java e estou criando um pequeno projeto usando a Java-Gnome. Espero que os proximos artigos tragam coisas interessantes.
    Parabéns pelo iniciativa.

  3. Puelo Disse:

    “Java: Uso para densenvolver aplicaçoes muito grandes que nao precisem do controle do C++.”

    Você não sabe como eu gostaria que as pessoas perdessem essa mania de fazer coisas grandes em Java. Aí os usuários acabam com aquelas interfaces lentas e bugadas como a do Netbeans e que precisam de computadores com 2gb+ de ram

  4. Diego Disse:

    Muito bom cara… vou acompanhar os seus artigos.
    PArabens.

  5. rafaelrosa Disse:

    Puelo:
    Vou realmente ter de discordar de voce.
    O stigma de lento do Java ja não existe faz tempo. Querendo ou nao, o java tem um tempo de execução similar ao C++. Sim, Swing É lento, concordo com voce, isso não é problema do Java em si, mas sim da biblioteca (que eu particularmente acho horrivel).
    Fato, apĺicações Java _são_ rapidas se bem feitas.
    Java não é minha linguagem predileta, porém, trabalhe em uma equipe de aprox 10 programadores de nível médio em um projeto complexo, e voce vai apreciar muito Java (é simplesmente um pesadelo usar C++ nesse cenário).
    Java + Gtk é uma combinação bem rápida.

  6. Eduardo Disse:

    Java é lento, bem mais lento que C++ ñ tem nem comparação, com swing ou sem swing não tem jeito, rodou por cima de uma máquina pra depois ser interpretado por outro vai ter atraso, é inevitável.

  7. rafaelrosa Disse:

    Eduardo, voce precisa descontar o tempo de carga da maquina virtual, que só acontece quando dispara o programa.
    A execução, tem sim performance semelhante, isso ja foi medido e documentado em diversos papers. A vm atual do java (hotspot) tem diversos mecanismos no Jit que permitem esse ganho de performance.
    Não vou entrar muito no mérito agora, pois vai acabar desviando o foco da discussão do artigo.
    Vou ver se colho material para montar um outro post sobre esse assunto.

  8. Gabriel Disse:

    Iniciativa totalmente apoiada!!! Venho por estes dias me enveredando na estrada do python e gtk, widgets, gobject,etc !!!!!

    Anciosamente no aguardo de novos posts!

  9. zezim Disse:

    Ver este artigo coincide com o dia em que eu comecei o tutorial do PyGTK.
    Coincidências à parte, o blog tá favoritado! Quero ver os posts seguintes!
    Quero aprender!

    []!

  10. João Paulo Disse:

    Sou estudante de java e tenho interesse também em desenvolver para o gnome pois vejo que o futuro é o open-source.

  11. Rodrigo de Lima Vieira Disse:

    Parabéns pela iniciativa.
    Estou ansioso por novos posts.
    Ah, não de idéia para posts infundados sem embasamentos teóricos ou fatos comprovados, como o caso de C++ é muito mais rápido do que Java.
    Futuramente, quando os posts ganharem mais popularidade você vai se lembrar disso ;)

  12. Renato Diogo Disse:

    Opa, muito bom a iniciativa e a ideia.

    Veio a casar justamente na época em que estou iniciando meus estudos no python (que em seguida já seria o gnome).

    Estou ancioso para continuar acompanhando, Parabens!!!

  13. Jonas Disse:

    Gente… essa histório de java lento ainda, lol.

    Isso ja mudou a muito tempo.
    Vou estar sempre te acompanhando aqui a sua iniciativa é muito legal.
    :) .
    Eu sempre usei slack no meu server, mas recentemente adotei o openSuse11 como meu desktop, e ele é 100%, pra eu mudar só falta eu me adaptar na parte de desenvolvimento, pois sou desenvolvedor .net, e estou mudando pra java. Acredito que seus artigos serão de grande importância e de muita utilidade.

    Mais uma vez, parabens mesmo pela inciativa e boa sorte.

  14. Rafael Gil Disse:

    Excelente iniciativa :)

    Comecei a estudar Java-Gnome há algum tempo, mas desistí justamente por falta de material de apoio (Tanto em portugues como em ingles), e partí para o Qt.
    Gostei muito do Qt, mas também gostaría de desenvolver apps para GNOME.

    Ignore os comentários do tipo “Java é mais lento que c++”, não vale a pena discutir isto. Quem programa em Java sabe que a VM da sun otimiza o código on the fly (tornando-o mais rapido durante a execução, chegando a ser mais rápido que o c++), coisa que o C++ não faz ;)

    Tá favoritado!

  15. prato Disse:

    Aguardo ansiosamente pelos POSTs seguintes!

  16. Willian Disse:

    Ótimo!
    Quando sai a próxima postagem?
    Um abraço!

  17. rafaelrosa Disse:

    Opa.
    A minha idéia é postar semanalmente, no final da semana(6a. feira). Se houver algum atraso é por excesso de trabalho (ai eu posto no sabado)
    Ja tenho a maior parte do material do próximo, que ja começei a redigir, creio que nao deve atrasar.

    Abraços

  18. Erlon Cabral Disse:

    Excelente iniciativa mesmo, obrigado.

    Eu deixo a sugestão de um feed RSS pra ficar mais fácil acompanharmos.

  19. rafaelrosa Disse:

    Ha um link para o RSS do blog no final da página.

  20. Irio Musskopf Disse:

    Muito interessante o artigo, e parabéns pela ótima idéia.

    Aguardando novos posts.

Deixe uma resposta