O Eclipse é uma plataforma que foi concebida de raiz para construir ferramentas de desenvolvimento web e de aplicações integradas. Por concepção, a plataforma não se destina a facultar muitas funcionalidades de utilizador final por si só. O valor da plataforma está naquilo que pode fomentar: desenvolvimento rápido de funções integradas baseadas num modelo de plug-ins.
O Eclipse disponibiliza um modelo de interface de utilizador (user interface - UI) comum para trabalhar com ferramentas. Está concebida para executar em vários sistemas operativos, proporcionando uma robusta integração com cada SO subjacente. Os plug-ins podem programar para as APIs portáteis Eclipse e ser executados inalterados em qualquer dos sistemas operativos suportados.
No centro do Eclipse está uma arquitectura para descoberta, carregamento e execução dinâmicas de plug-ins. A plataforma trata da logística de localizar e executar o código apropriado. A UI da plataforma proporciona um modelo de navegação de utilizador padrão. Cada plug-in pode assim concentrar-se em realizar poucas tarefas com qualidade. Que tipo de tarefas? Definir, testar, animar, publicar, compilar, depurar, criar diagramas... a imaginação é o limite.
A plataforma Eclipse define uma arquitectura aberta para que cada equipa de desenvolvimento de plug-ins possa concentrar-se na respectiva área de especialidade. Permite-se assim aos peritos em repositórios construírem as reservas e aos peritos em usabilidade construírem as ferramentas de utilizador final. Se a plataforma for bem concebida, podem ser adicionadas funções significativas e níveis e integração sem impacto nas outras ferramentas.
A plataforma Eclipse utiliza o modelo de uma área de trabalho comum para integrar as ferramentas do ponto de vista do utilizador final. As ferramentas que forem desenvolvidas podem anexar-se à área de trabalho com ganchos bem definidos chamados pontos de extensão.
A plataforma propriamente dita está construída em níveis de plug-ins, cada qual definindo extensões para os pontos de extensão de plug-ins de nível mais baixo, e por seu turno definindo os seus próprios pontos de extensão para maior personalização. Este modelo de extensão permite aos programadores de plug-ins adicionar uma variedade de funções à plataforma de ferramentas básica. Os artefactos para cada ferramenta como, por exemplo, ficheiros e outros dados, são coordenados por um modelo de recursos de plataforma comum.
A plataforma dá aos utilizadores uma maneira comum de trabalhar com as ferramentas, e proporciona gestão integrada dos recursos que eles criarem com plug-ins.
Os programadores de plug-ins também saem a ganhar com esta arquitectura. A plataforma gere a complexidade dos diferentes ambientes de tempo de execução como, por exemplo, sistemas operativos ou ambientes de servidor de grupos de trabalho diferentes. Os programadores de plug-ins podem concentrar-se na sua tarefa específica em vez de tratar destas questões de integração.
A própria plataforma Eclipse está estruturada como subsistemas que são implementados num ou mais plug-ins. Os subsistemas são construídos por cima de um pequeno motor de tempo de execução. A figura abaixo ilustra uma vista simplificada.
Os plug-ins que constituem um subsistema definem pontos de extensão para adicionar comportamentos à plataforma. A tabela seguinte descreve os principais componentes de tempo de execução da plataforma que são implementados enquanto um ou mais plug-ins.
Tempo de execução da plataforma |
Define o modelo de pontos de extensão e plug-ins. Descobre dinamicamente plug-ins e mantém informações s sobre os plug-ins e respectivos pontos de extensão num registo de plataforma. Os plug-ins são iniciados quando necessário segundo o uso que o utilizador fizer da plataforma. O tempo de execução é implementado com o quadro OSGi. |
Gestão de recursos (espaço de trabalho) |
Define APIs para criar e gerir recursos (projectos, ficheiros e pastas) que são produzidos pelas ferramentas e mantidos no sistema de ficheiros. |
IU da área de trabalho |
Implementa o cockpit do utilizador para navegar na plataforma. Define pontos de extensão para adicionar componentes da UI como, por exemplo, vistas ou acções de menu. Proporciona kits de ferramentas adicionais (JFace e SWT) para construir interfaces de utilizador. Os serviços da UI estão estruturados para que possa ser utilizado um subconjunto dos plug-ins da UI para construir aplicações cliente complexas que sejam independentes da gestão de recursos e do modelo de espaço de trabalho. Os plug-ins centrados em IDE definem funcionalidades adicionais para navegar e manipular recursos. |
Sistema de ajuda |
Define pontos de extensão para plug-ins a fim de prestar ajuda ou outra documentação na qualidade de manuais onde se pode procurar. |
Suporte de equipa |
Define um modelo de programação de equipas para gerir e versionar recursos. |
Suporte de depuração |
Define um modelo de depuração independente da linguagem e classes de UI para construir depuradores e lançadores. |
Outros utilitários |
Os outros plug-ins utilitários proporcionam funcionalidades como, por exemplo, pesquisar e comparar recursos, realizar construções com ficheiros de configuração XML, e actualizar dinamicamente a plataforma a partir de um servidor. |
Pronta a utilizar - ou saída da Web - a plataforma básica é um ambiente de desenvolvimento integrado (IDE - integrated development environment) para tudo (e para nada em particular).
Compete aos plug-ins determinarem a funcionalidade da plataforma por excelência. Por isso é que o SDK do Eclipse traz plug-ins adicionais para aperfeiçoar as funcionalidades do SDK.
Os plug-ins podem proporcionar suporte para editar e manipular tipos de recursos adicionais como, por exemplo, ficheiros Java, programas C, documentos Word, páginas HTML e ficheiros JSP.