Creating IDEs for the
Eclipse Platform
Survey de Introdução à
Investigação
Motivação

Porquê uma IDE?



Uma IDE é um componente fundamental do
toolchain de uma linguagem.
Influencia bastante a productividade do
programador.
Porquê o Eclipse?


Muita infra-estructura e funcionalidades
disponiveis, trabalho poupado.
Integração com outras ferramentas de
desenvolvimento.
IDE Features









Code editor.
Syntax highlighting.
File/project explorer.
Program builder.
Outline.
Debugger.
Code completion.
Code formatting.
Refactoring.
Eclipse Platform
Extendido através de plug-ins.
 Cada plug-in implementa um conjunto de
extensões a extension points pré-definidos.
 O próprio Eclipse é composto por plug-ins.
Uma IDE do Eclipse:
 Separada em components como o Core,
User Interface, Debug, Build, etc., cada uma
correspondendo a uma plug-in.

Core Component

Project Description


Project Builder


Invoca o compilador, constrói o projecto.
Parser & Language Model


Descreve os ficheiros e directórios do projecto,
opções de compilador, condicionais, etc.
Cria uma representação estruturada do código.
Project Nature

Associa o projecto à IDE.
Basic IDE Architecture
UI Component

Consiste em vários elementos como:








Editor
Views
Outline
Dialogs
Wizards
Preferences
Actions (buttons e menus)
Em geral simples de implementar, o editor e a text
framework é que são um pouco mais complicados.
UI Component
UI Component

Text Framework
Editor
Document
Source Viewer
UI Component

Eclipse
Workbench
Text Framework
Editor
Document
Provider
Document
Source Viewer
StyledText
Source Viewer
Configuration
Advanced Concepts

AST



Advanced Parser Functionality



Conter toda a informação relevante ao utilizador.
Arvore heterogénea com bom mecanismos de navegação.
Permitir recuperação de erros.
Parsing parcial (de um sub-elemento da unidade de
compilação).
Entity References

Mecanismo para poder navegar de um elementoreferência da AST, para o elemento-definição.
Advanced Concepts

DOM AST



Estruturar a AST como o DOM de XML/HTML.
É um mecanismo mais rico para manipular a AST (bom
para refactoring).
Model scalability



Permitir que a UI continue usável (responsive) em
projectos muito grandes.
Criar um modelo mais simples e mais lightweight que a
AST, para a estrutura de nomes do programa.
Gerir os elementos desse modelo através duma cache.
Advanced Concepts

Model updating



Definir como actualizar o modelo após mudanças textuais
do código.
Solução ideal: actualizar numa background thread, 2 a 5
vezes por segundo.
Refactoring



A “ultimate” feature duma IDE, tanto em utilidade como
complexidade.
Eclipse oferece algum suporte através do LTK ( Language
Toolkit).
Mas cabe ao developer implementar a lógica de cada
operação.
Download

Creating IDEs for the Eclipse Platform