O Eclipse e uma plataforma designada para a construc~ao de ambientes de desenvol- vimento integrados (do ingl^es Integrated Development Environment - IDE) escrita na linguagem Java e distribuda na forma de codigo aberto. No entanto, esta plataforma e uma composic~ao de componentes; ao utilizar um sub-conjunto destes componentes podem ser criadas aplicac~oes diversas[CR06].
Desta forma, foram construdas varias ferramentas de desenvolvimento utilizando o Eclipse. Ao adicionar os componentes de desenvolvimento Java (chamado JDT - Java Development Tools), o Eclipse se transforma em um ambiente de desenvolvimento para
5.2 a plataforma eclipse 69 esta linguagem. Se adicionarmos os componentes de desenvolvimento C/C++ (CDT - C/C++ Development Tooling), o Eclipse ira se transformar em um IDE para desenvol- vimento em C/C++. Se quisermos um IDE com capacidade para desenvolvimento em Java e C++, basta adicionarmos os componentes do CDT e JDT em conjunto.
Com isto, e possvel perceber que a extensibilidade e a possibilidade de integrac~ao de varias ferramentas em um unico ambiente s~ao as pricipais caractersticas do Eclipse. Abaixo s~ao descritos os principais componentes que fazem parte da estrutura base do Eclipse:
Platform Runtime: e o nucleo do Eclipse e tem a func~ao de inicializar o ambiente e carregar todos os outros componentes.
Workspace: componente que representa o diretorio de trabalho no sistema de arquivos e contem todos os projetos do usuario.
Workbench: E a interface graca, e representa a janela do Eclipse. Contem todos os menus, barras de ferramentas, esquemas de visualizac~oes e editores.
Team: componente responsavel por integrar o Eclipse com uma ferramenta de controle de vers~ao.
Help: responsavel por apresentar a documentac~ao do Eclipse e de todos os outros componentes.
Figura 5.1. Arquitetura da plataforma Eclipse
A Figura 5.1 ilustra esta estrutura, destacando os principais componentes e API's da arquitetura do Eclipse. Tambem pode-se perceber a possibilidade de extens~ao do Eclipse ilustrada pelos elementos que est~ao plugados na estutura base.
Um dos pontos principais e o mais visvel ao usuario e o workbench. Assim, iremos descrever abaixo os principais elementos que comp~oem o Workbench do Eclipse.
5.2 a plataforma eclipse 70 View: corresponde a generalizac~ao de uma area delimitada dentro da janela do Eclipse. Cada view pode representar diversos elementos, como editores, arvores de diretorio, itens de congurac~ao, entre outros.
Editor: e uma view associada a um determinado formato de arquivo e e congurado para editar este formato. Geralmente o editor apresenta o arquivo com uma serie de controles associados que permitem uma melhor visualizac~ao e manipulac~ao dos dados desse arquivo.
Perspectiva: uma perspectiva representa um conjunto de views e sua organizac~ao dentro do workbench. Por exemplo, a perspectiva de edic~ao de codigo normal- mente apresenta um editor para a linguagem correspondente, uma view com uma arvore de diretorios, mostrando os arquivos que fazem parte do projeto e uma view com a estrutura logica (classes, metodos, atributos); enquanto uma perspectiva de depurac~ao para esta mesma linguagem deve possuir outras views como a sada do console, valores das variaveis que est~ao sendo analisadas, lista dos breakpoints, entre outras.
Wizard: um wizard e um conjunto de passos (telas) que ir~ao guiar ou ajudar o usuario a realizar determinada atividade. Os wizards s~ao bastante comuns na criac~ao dos projetos, mas podem aparecer em outras situac~oes nas quais o usuario deve executar um conjunto denido de passos, como a criac~ao de uma nova classe no projeto.
A customizac~ao do Eclipse para servir como ferramenta de desenvolvimento em uma determinada linguagem signica estender os elementos acima para realizar as func~oes necessarias ao desenvolvimento na linguagem especca. A seguir, sera descrito o funci- onamento da plataforma, como tambem a din^amica de integrac~ao dos componentes no Eclipse e o mecanismo para extens~ao destes componentes.
5.2.1 A arquitetura de plug-ins do Eclipse
A Plataforma Eclipse e composta por um nucleo, chamado de Platform Runtime, e di- versos modulos, chamados plug-ins. O nucleo da plataforma e responsavel por identicar e carregar os plug-ins na inicializac~ao, enquanto os plug-ins implementam efetivamente as funcionalidades desejadas.
Todas as outras funcionalidades do Eclipse (que n~ao a do nucleo) s~ao descritas como plug-ins e features (conjunto de plug-ins). Um plug-in e a estrutura basica da arquitetura do Eclipse. Os relacionamentos de depend^encias e a comunicac~ao entre plug-ins s~ao descritas atraves de pontos de extens~ao. Cada plug-in declara sua lista de plug-ins que ele depende (estende) e os pontos que ele permite que outros plug-ins estendam. Este relacionamento pode ser visto na Figura 5.2.
Existe um arquivo XML (plugin.xml) que descreve e publica todas as depend^encias e pontos de extens~ao de um plug-in. Cada ponto de extens~ao declarado no arquivo plugin.xml deve ter uma interface1 associada que possui todos os metodos necessarios
5.2 a plataforma eclipse 71
Figura 5.2. Arquitetura dos plug-ins do Eclipse
para este ponto de extens~ao. Por exemplo, se o plug-in B estende o plug-ins A, ele tem que implementar a interface declarada por A e o arquivo XML deve ter a informac~ao que B vai ser usado quando A precisar de uma classe que implemente esta interface.
Com este mecanismo, e possvel desenvolver plug-ins e congurar os plug-ins existentes para realizar as funcionalidades desejadas. E desta forma que o Eclipse se transforma em IDE para Java, C++ e varias outras linguagens de programac~ao. A seguir, sera apresentado o plug-in CDT (C/C++ Development Tooling) do Eclipse. Este plug-ins implementa todas as funcionalidades necessarias para transformar o Eclipse em um IDE para desenvolvimento em C/C++. Por este motivo, o CDT tambem foi utilizado como a base para o desenvolvimento do Gluon.
5.2.2 CDT - Eclipse C/C++ Development Tooling
O CDT e um projeto de codigo aberto (licenciado sobre a licenca CPL2 da IBM) e
implementado completamente na linguagem Java como um conjunto de plug-ins para o Eclipse.
Estes plug-ins adicionam perspectivas no Workbench do Eclipse que prov^e o suporte ao desenvolvimento em C/C++ atraves de um conjunto de views, wizards e componentes para edic~ao e depurac~ao do codigo. Embora o CDT seja focado no desenvolvimento de software em C/C++ para o sistema operacional Linux, ele funciona muito bem em todos os ambientes onde existam as ferramentas de compilac~ao e depurac~ao GNU disponveis, como: Win32 (Windows 95/98/Me/NT/2000/XP), QNX Neutrino e Solaris.
Cada plug-in do CDT implementa uma determinada funcionalidade requerida pelo processo de desenvolvimento e e administrado separadamente, possuindo seus proprios desenvolvedores, listas de discuss~ao e ferramentas para rastreamento de bugs. Abaixo s~ao descritos os principais plug-ins do CDT:
CDT Feature Eclipse: representa a feature CDT para o Eclipse. E o ponto de entrada do CDT dentro do Eclipse e realiza a ligac~ao entre todos os outros plug-ins do CDT.
CDT Core: e o nucleo do CDT, provendo as funcionalidades basicas como os 2Common Public License - disponvel em http://www.eclipse.org/legal/cpl-v10.html
5.3 gluon 72