Eclipse, o Super IDE
Escrito em Java, o Eclipse pode rodar em qualquer plataforma e ser usado para escrever programas em várias linguagens
O Projeto Eclipse tem por objetivo fornecer um framework open source para a construção de ferramentas de desenvolvimento. Sobre o framework são instalados plug-ins que fornecem recursos como integração a compiladores e depuradores, editores com realce de sintaxe, desenho de diagramas UML, acesso a bancos de dados e o que mais for útil para um desenvolvedor de software.
Apesar de ser um projeto com apenas dois anos de existência, o Eclipse já faz sentir o seu impacto no mercado, em especial no desenvolvimento em Java. Alguns dos IDEs mais populares nesta arena, como o Websphere Studio da IBM, o XDE da Rational ou o SOFIA, têm como base o Eclipse.
O grande diferencial do Eclipse é a sua neutralidade em relação à linguagem de programação e ao sistema operacional. O Eclipse Consortium, formado pela IBM, Merant, HP, Borland, Fujitsu, Red Hat, Sybase, Oracle, Rational e outras dezenas de empresas e organizações, fornece suporte a Java, C e COBOL nas plataformas Windows, Linux, AIX, Solaris, HP-UX, QNX e MacOS. Mas, como o framework é livre, qualquer um pode adicionar o suporte a seu ambiente preferido, e já existem mais de 260 plug-ins para o Eclipse disponíveis no SourceForge e outros sites para desenvolvedores Perl, Python, Pascal, PHP e até Clipper.
No futuro, o Eclipse será o único IDE de que necessitaremos, integrando as melhores ferramentas abertas e proprietárias em todas as etapas do ciclo de vida do desenvolvimento de software. Mas o que já pode ser feito com o Eclipse hoje, e quando deveremos buscar novas alternativas? São estas as questões que tentamos responder neste artigo.
Arquitetura do Eclipse
O Eclipse obtém sua independência de plataforma por ser escrito em Java. É necessário ter uma máquina virtual Java (JRE) versão 1.3 ou superior para rodar o Eclipse. Não se surpreenda, em muitos segmentos do mercado, Java vem substituindo C e C++ como a linguagem preferencial para software básico. O Java tem fama de ser lento graças à sua biblioteca de componentes GUI padrão, o Swing. Por isso o Eclipse adota em seu lugar o SWT (Standard Widget Toolkit), que fornece uma camada de abstração sobre o conjunto de componentes gráficos da plataforma, garantindo ao mesmo tempo portabilidade e desempenho.
O Eclipse em si fornece apenas o ambiente integrado para a execução dos plug-ins e uns poucos plug-ins básicos, como editor de textos ASCII, sistema de ajuda e integração ao CVS. Para iniciar o desenvolvimento, em qualquer linguagem que seja, devem ser instalados plug-ins adicionais. Assim sendo, o Eclipse tem dois públicos-alvos distintos:
1.Desenvolvedores de software, que agregam plug-ins ao Eclipse para construir o ambiente de trabalho mais poderoso, integrado e simples possível;
2.Fornecedores de ferramentas de desenvolvimento, que escrevem os plug-ins e competem entre si para fornecer as melhores ferramentas ao mercado.
Para o primeiro grupo é fornecido o Plataform Run-time Binary, que fornece o IDE pronto para receber plug-ins de terceiros. O segundo grupo deve baixar o Plataform SDK, que fornece os fontes do Eclipse em si e uma série de ferramentas voltadas para o seu próprio desenvolvimento ou de plug-ins.
O ambiente do Eclipse, de modo similar a outros IDEs, é baseado nos conceitos de Projeto, Perspectiva e Visualização:
•Um projeto agrupa arquivos-fonte e define os plug-ins responsáveis pelas atividades de compilação, depuração, etc, assim como configurações personalizadas;
•Uma perspectiva fornece layouts diferenciados para o IDE, customizados para atividades como gerenciamento de versões, codificação ou testes pela ativação das visualizações apropriadas;
•Uma visualização é o componente básico de uma perspectiva, fornecendo, por exemplo, navegação pela estrutura de classes, uma lista de tarefas a realizar ou o histórico de modificações de um arquivo-fonte no CVS.
Internamente, estes componentes se comunicam entre si e com os componentes que realizam as tarefas reais de desenvolvimento de software.
•Editores especializados na edição de tipos específicos de arquivo, normalmente fontes em uma linguagem de programação, fornecendo realce de sintaxe e recursos, como o Autocompletar, mas que também podem ser voltados para a edição de ícones, desenho visual de formulários ou desenho de modelos de Engenharia de Software;
•Lançadores (launchers), que fornecem ambientes para a execução do projeto ou partes dele dentro de um depurador, servidor web ou outros tipos de contêineres;
•Construtores (builders), responsáveis por traduzir diversos tipos de arquivos-fonte nos arquivos-objetos correspondentes ou por pré-processar arquivos-fonte, gerando outros arquivos-fonte, que serão por sua vez processados por outros construtores.
Um plug-in pode acrescentar novas versões de qualquer destes tipos de componentes ou pode utilizar os ganhos fornecidos pelo IDE para fornecer assistentes, modificar menus e assim estender os componentes pré-existentes.
Vamos agora analisar alguns dos plug-ins disponíveis, organizados pela linguagem de programação suportada, e iniciando pelos “mais completos” até os “menos funcionais”.
Java
Como o Eclipse é escrito em Java, espera-se que esta linguagem possua um bom suporte. O JDT (Java Development Toolkit) fornecido pelo próprio Eclipse Consortium fornece recursos avançados como integração ao Ant e ao JUnit, além de suporte extensivo a refatoração de código.
Para utilizar o JDT basta ter um Java2 SDK instalado em sua plataforma, possibilitando ao Eclipse acesso ao compilador Java e às classes básicas. Instale também a documentação do Java2 SDK em formato HTML, pois o Eclipse sabe como utilizá-la para fornecer ajuda sensível ao contexto sobre classes e métodos.
O JDT não fornece construtores visuais de formulários ou a capacidade de executar aplicações web e EJBs. Felizmente, há vários plug-ins no mercado que acrescentam estas capacidades sem que seja necessário adquirir produtos caros baseados no Eclipse como o Websphere Studio.
O Assisi fornece um construtor visual tanto para Swing quanto para SWT, enquanto que o plug-in Lomboz fornece todo o suporte ao J2EE (EJBs, Servlets, JSP). Se você necessita algo mais leve, apenas para desenvolver aplicações web, pode considerar os plug-ins Webapp e Sysdeo. Outra opção para o desenvolvedor J2EE é o JBoss-IDE, focado na integração com o XDoclet.
Antes de investir no JBuilder ou XDE, reserve um tempo para avaliar o JDT e as dezenas de plug-ins complementares. Provavelmente você irá encontrar em ferramentas livres tudo o que é necessário para o seu projeto Java, ou então irá encontrar alternativas bem mais em conta com o mesmo poder de fogo.
C e C++
O CDT ou C Development Toolkit é o segundo grande projeto do Eclipse Consortium (o primeiro foi o JDT). Ele fornece um ambiente que integra as ferramentas GNU (GCC, GDB, GMake, etc.) ao Eclipse, fornecendo um ambiente multiplataforma ao desenvolvedor C. Mas, e quanto aos desenvolvedores Windows? Basta instalar o MingW ou o Cygwin para ter versões nativas Win32 das ferramentas GNU.
Projetos criados com o CDT têm a sua compilação direcionada por Makefiles, entretanto o CDT não fornece nenhum recurso para a sua geração, exceto pelo editor ASCII, deixando o desenvolvedor iniciante sem saber por onde começar. Uma vez criado manualmente um Makefile na raiz do projeto, o CDT mostra suas capacidades.
Os plug-ins Aston e BlackSun permitem compensar estas falhas. O primeiro fornece um conjunto extensível de modelos que pode ser customizado de modo a gerar assistentes para criação de Makefiles e programas mínimos estilo linha de comando (chamando getopt) ou GTK+ (incluindo os headers necessários e inicializando o ambiente gráfico). O segundo fornece um editor de Makefiles, mas é fornecido apenas em código-fonte, de modo que não pode ser instalado diretamente sobre o Plataform Run-time Binary.
Outro ponto falho na versão atual do CDT é a ausência de documentação de referência para as bibliotecas padrão C e C++. Não existe ainda uma referência externa facilmente integrável ao Eclipse, como existe para Java, mas poderia haver ao menos uma tentativa de acessar as páginas do manual (man pages) em plataformas Unix.
Se você necessita desenvolver aplicações ou bibliotecas C em múltiplas plataformas, irá gostar de ter um único IDE em todas elas. Se você está preocupado apenas em desenvolver aplicações C para Linux, o Eclipse não fornece nenhuma vantagem significativa sobre IDEs, como o Anjuta ou KDevelop, além de ser mais pesado e carecer de alguns recursos importantes presentes neles, como geração de makefiles e documentação de referência para bibliotecas.
PHP
Há dois conjuntos de plug-ins que fornecem suporte ao PHP dentro do Eclipse: PHPclipse e Web Studio. Avaliaremos apenas o PHPClipse, pois o Web Studio ainda não é suportado em Linux.
O PHPClipse tem uma certa orientação para o mundo Windows, fornecendo ícones para o início e término do Apache e do MySQL, configurações padrão referenciando arquivos EXE e configurando o DocumentRoot do Apache. Entretanto, uma vez que você modifique as preferências para indicar o executável do php em /usr/bin e ignore os ícones para iniciar/terminar servidores, o plug-in é bastante útil em Linux.
Na verdade o PHPclipse é formado por vários plug-ins, cada qual com seu próprio cronograma de releases, confundindo o usuário, que fica sem saber quais arquivos baixar (solução: leia a documentação). O Plug-in básico fornece um editor para arquivos PHP e a capacidade de executar um navegador informando a URL adequada para processar a página no servidor - lembre-se de criar o projeto do Eclipse em um diretório visível para o Apache. Plug-ins adicionais integram a documentação de referência do PHP ao Eclipse e permitem a execução passo-a-passo em depuradores como o DBG.
Concluindo, o PHPClipse fornece algumas comodidades que justificam o seu uso pelo desenvolvedor PHP, ainda mais se complementado por plug-ins especializados na edição de arquivos HTML e XML, pois o fornecido por ele é bem fraquinho, não validando atributos de tags.
Python
O plug-in PyEclipse fornece suporte básico a edição de scripts Python e a capacidade de executar estes scripts. Não fornece recursos como autocompletar, templates de código ou a capacidade de executar scripts passo-a-passo em um depurador. Ainda assim, pode ser útil dada a crescente popularidade do Python como ferramenta de script em projetos OO. Seria interessante que o plug-in utilizasse o Jython (interpretador Python escrito em Java), pois assim seria possível usufruir os recursos já presentes no JDT. Existem outras opções de plug-ins para o desenvolvedor Python, mas não houve tempo hábil para avaliar cada uma.
Perl
O Epic é um plug-in que fornece um bom editor de código Perl, com autocompletar e outros recursos. Além disso, fornece um interessante plug-in para a execução imediata de expressões regulares Perl. Entretanto, o Epic não fornece a capacidade de executar um script Perl ou de depurá-lo de dentro do Eclipse. Assim sendo, o leitor poderia bem optar pelo BlackSun, que também fornece um editor Perl.
Outras Linguagens
O Pasclipse fornece suporte a edição e compilação de programas Pascal dentro do Eclipse, mas o plug-in é extremamente orientado para ambientes Windows, não funcionando corretamente em Linux. Um plug-in realmente multiplataforma baseado no Free Pascal ou GNU Pascal poderia usufruir a maioria das capacidades do CDT (como integração com o GDB), de modo que é decepcionante o estado atual deste plug-in.
O Harbour-IDE fornece um pacote que instala o Eclipse e uma série de plug-ins para suportar o desenvolvimento em Clipper / xBase utilizando o compilador livre Harbour. Este IDE é bem rico em recursos, entretanto é fornecido apenas para ambientes Windows. Talvez seja possível extrair os plug-ins e instalá-los em Linux, pois a maioria dos plug-ins do Eclipse é inteiramente escrito em Java.
Até o COBOL tem suporte no Eclipse, graças à Fujitsu, que doou ao consórcio os plug-ins escritos para seu compilador proprietário. Falta agora adaptar os plug-ins para outros compiladores do mercado.
Alguém conhece Eiffel e Rubby? Eu não, mas também existem plug-ins para os amantes destas linguagens. Infelizmente, não tenho conhecimentos suficientes para comentar sobre eles.
O Eclipse ainda não cumpre inteiramente a promessa de ser o único IDE de que necessitaremos, pois apenas o suporte a Java compete de em igualdade de condições com outras ofertas do mercado. Entretanto, o suporte a C e a PHP já apresenta progressos animadores, e outros projetos estão evoluindo.
Ter um único IDE para várias plataformas e linguagens de programação diferentes certamente vale o investimento em aprendizado e até em contribuição de patches. Pense no potencial: cada IDE não necessita fornecer o seu próprio utilitário de conexão a bancos de dados ou seu próprio suporte ao CVS. Projetos multilinguagem podem ser desenvolvidos em um único ambiente. As possibilidades são infinitas!
Tabela comparativa dos plug-ins para o Eclipse por linguagem de programação
Recurso |
Java |
C/C++ |
PHP |
Python |
Perl |
Editor com realce de sintaxe |
* |
* |
* |
* |
* |
Autocompletar código |
* |
* |
* |
|
* |
Templates de código |
* |
* |
* |
|
* |
Refatoração de código |
* |
* |
|
|
|
Execução por dentro do IDE |
|
* |
* |
* |
* |
Execução passo-a-passo em depurador |
* |
* |
* |
|
|
Documentação de referência integrada |
* |
|
* |
|
|
Desenhador visual de formulários |
* |
|
|
|
|
Execução em servidor web |
* |
|
* |
|
|
Construção de projetos |
* |
* |
N/A |
N/A |
N/A |
Geração / organização de projetos |
* |
|
|
|
|
Antes de investir no VBuilder ou XDE, avalie o JDT e dezenas de plug-ins complementares - Fernando Lozano fernando@lozano.eti.br
PSM:
Eclipse
www.eclipse.org
Plataform Runtime Binary (IDE básico)
Plataform SDK (desenvolvimento de plug-ins)
Java
JDT (suporte ao J2STD)
www.objectlearn.com
Lomboz (suporte ao J2EE)
www.assisiplugins.com
Assisi (Desenhador de formulários e janelas)
blueskytime.sourceforge.net
Webapp (Suporte a Servlets e JSP)
C/C++
www.eclipse.org
CDT (suporte ao GCC e Binutils)
PHP
phpeclipse.sourceforge.net
PHPclipse (suporte ao PHP com Apache e MySQL)
www.xored.com/products.php
WebStudio (outro ambiente PHP para o Eclipse)
Python
sourceforge.net/projects/pyeclipse
PyEclipse (suporte ao Python)
phpeclipse.sourceforge.net
Python Editor for Eclipse (inclui depurador)
sourceforge.net/projects/trustudio
TruStudio (mais uma opção, inclui suporte a PHP e JavaScript)
Perl
e-p-i-c.sourceforge.net
EPIC (editor Perl e interpretador de regex)
Outros
sourceforge.net/projects/harbour-ide
Clipper (Harbour)
sourceforge.net/projects/pasclipse
Pascal
sourceforge.net/projects/jfacedbc
JfaceDBC (acesso a banco de dados)
sourceforge.net/projects/sqldeveloper
SQL Developer (acesso a banco de dados)
renaud91.free.fr/Plugins/index_en.html
Aston (assistentes configuráveis para geração de qualquer tipo de arquivo-fonte)
sourceforge.net/projects/xmen
X-Men (editor XML)
solareclipse.sourceforge.net
SolarEclipse (Editor HTML)
www.mysunrise.ch/users/adinu
JSEditor (Editor JavaScript)
black-sun.sourceforge.net
BlackSun (Editor de Makefiles, Perl e HTML)
www.eclipseuml.com
OMONDO (Desenhador de diagramas UML)
eclipse-plugins.2y.net/eclipse/index.jsp