Creating IDEs for the Eclipse Platform

Preview:

DESCRIPTION

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? - PowerPoint PPT Presentation

Citation preview

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 Descreve os ficheiros e directórios do projecto,

opções de compilador, condicionais, etc. Project Builder

Invoca o compilador, constrói o projecto. Parser & Language Model

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

Source ViewerDocument

Editor

UI Component

Editor

Source ViewerDocument

EclipseWorkbench

DocumentProvider

Source ViewerConfiguration

Text Framework

StyledText

Advanced Concepts

AST Conter toda a informação relevante ao utilizador. Arvore heterogénea com bom mecanismos de navegação.

Advanced Parser Functionality Permitir recuperação de erros. Parsing parcial (de um sub-elemento da unidade de

compilação).

Entity References Mecanismo para poder navegar de um elemento-

referê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.