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: eclipse, gnome, gtk, java, opensource, Programação, Python
Novembro 24, 2008 às 7:03 pm
[...] por Fabio Rafael da Rosa (fabiorafael·rosaΘgmail·com) – referência [...]
Novembro 24, 2008 às 7:15 pm
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.
Novembro 24, 2008 às 7:31 pm
“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
Novembro 24, 2008 às 8:24 pm
Muito bom cara… vou acompanhar os seus artigos.
PArabens.
Novembro 24, 2008 às 8:41 pm
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.
Novembro 24, 2008 às 8:58 pm
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.
Novembro 24, 2008 às 9:04 pm
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.
Novembro 24, 2008 às 10:42 pm
Iniciativa totalmente apoiada!!! Venho por estes dias me enveredando na estrada do python e gtk, widgets, gobject,etc !!!!!
Anciosamente no aguardo de novos posts!
Novembro 25, 2008 às 1:01 am
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!
[]!
Novembro 25, 2008 às 2:40 am
Sou estudante de java e tenho interesse também em desenvolver para o gnome pois vejo que o futuro é o open-source.
Novembro 25, 2008 às 3:08 am
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
Novembro 25, 2008 às 11:12 am
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!!!
Novembro 25, 2008 às 11:29 am
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.
Novembro 25, 2008 às 1:04 pm
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!
Novembro 25, 2008 às 9:12 pm
Aguardo ansiosamente pelos POSTs seguintes!
Novembro 25, 2008 às 11:48 pm
Ótimo!
Quando sai a próxima postagem?
Um abraço!
Novembro 26, 2008 às 12:51 am
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
Novembro 26, 2008 às 2:56 am
Excelente iniciativa mesmo, obrigado.
Eu deixo a sugestão de um feed RSS pra ficar mais fácil acompanharmos.
Novembro 26, 2008 às 12:10 pm
Ha um link para o RSS do blog no final da página.
Novembro 27, 2008 às 8:53 pm
Muito interessante o artigo, e parabéns pela ótima idéia.
Aguardando novos posts.