130 likes | 254 Views
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?
E N D
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.
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 • Text Framework Editor Document Source Viewer
UI Component Eclipse Workbench • Text Framework Editor Document Provider Document Source Viewer Source Viewer Configuration 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.