1
|
|
2
|
- Objetivo: Discutir os principais conceitos relacionados a Plataforma de
Desenvolvimento Eclipse e suas facilidades para a Programação JAVA
- A quem se destina : Alunos e Profissionais que desejem aprofundar seus
conhecimentos sobre Orientação a Objetos e sua aplicação em uma
linguagem totalmente orientada a Objetos.
|
3
|
- Introdução a Plataforma Eclipse
- Introdução
- Arquitetura da Plataforma
- Componentes da Plataforma
- JDT
- PDE
|
4
|
- Eclipse project briefing materials
- http://www.eclipse.org/eclipse/presentation/eclipse-slides.html
- Eclipse User-Guide – projeto Hotwork
- http://hotwork.sourceforge.net/hotwork/manual/eclipse/eclipse-user-guide.html
|
5
|
|
6
|
- O Eclipse é uma plataforma para a integração de ferramentas de
desenvolvimento.
- Iniciativa Open Source.
- Arquitetura extensível baseada no uso e desenvolvimento de plug-ins.
- Público Alvo:
- Desenvolvedores de Aplicação
- Desenvolvedores de Ferramentas de Desenvolvimento
- Pesquisadores
|
7
|
- Prover uma plataforma aberta para ferramentas de desenvolvimento de
aplicações.
- Independência de sistema operacional
- Facilitar integração de ferramentas, mesmo que oriundas de fornecedores
diferentes
- Adicionar novas ferramentas a produtos já instalados
- Neutralidade de linguagens
- Não possui restrição quanto ao tipo de conteúdo
- HTML, Java, C, JSP, EJB, XML, GIF, …
- Suporte a funcionamento com e sem GUI
- Portabilidade
- Atrair desenvolvedores de ferramentas
|
8
|
- Origens
- A linha Visual Age de IDEs da IBM estava precisando de um
reposicionamento comercial e uma refatoração da sua arquitetura
- Esta refatoração deu origem ao Eclipse como software livre e sua
arquitetura de plug-ins
- O Eclipse se tornou a base da nova linha de IDEs da IBM, o WebSphere
Studio
- Também é a base da nova linha de ferramentas da Rational (XDE),
encampada pela IBM
|
9
|
- Origens (cont.)
- Infra-estrutura para o desenvolvimento de ferramentas de
desenvolvimento para qualquer plataforma e linguagem
- Java é apenas a “linguagem de sistema” do Eclipse, assim como C é a
“linguagens de sistema” do VB
- Em vez do Swing, é utilizada a biblioteca SWT para componentes visuais
- Foco no apoio à codificação (automação,refatoração, extreme
programming) em vez da construção visual
|
10
|
- Independência da IBM
- A Eclipse Foundation se tornou este ano uma entidade jurídica
independente da IBM, e seu conselho diretor hoje é presidida por um
executivo da Oracle
- Este fato estimulou outras grandes empresas como a SAP a se tornarem
parte da fundação
- Amplo mercado de plug-ins de terceiros, como o SOFIA, Genuitec
(MyEclipse), TruStudio (Python), W4T, etc
|
11
|
- 1999
- Abril - Início do Eclipse dentro da OTI / IBM responsaveis pleos
produtos IBM VisualAge
- (Smalltalk,
Java, J2ME).
- 2000
- Junho - Lançamento do Eclipse Tech Preview
- 2001
- Março - Início do http://www.eclipsecorner.org/
- Junho - Eclipse 0.9
Outubro - Eclipse 1.0
- Novembro - IBM doa base de código do Eclipse, Eclipse Platafom, JDT e
do PDE
- -
Lançamento do http://www.eclipse.org/
- 2002
- Junho - Eclipse 2.0
Setembro - Eclipse 2.0.1
Novembro - Eclipse 2.0.2
- 2003
- Março - Eclipse 2.1
- Junho – Eclipse 2.1.1
- Novembro – 2.1.2
|
12
|
|
13
|
|
14
|
|
15
|
|
16
|
- Plug-in
- Menor bloco de construção do Eclipse. Unidade mínima de funcionalidade.
- Exemplos: editor HTML, Ação para criar arquivos zip
- Uma aplicação complexa pode ser baseada em vários plugins; a maior
parte do próprio Eclipse é implementada por plugins
- Pontos de Extensão
- Entidades definidas para o agrupamento de contribuições. Um plugin
declara pontos de extensão e extensões para pontos de extensão de
outros plugins
- Exemplo: ponto de extensão para preferências referentes a interface com
usuários de um editor
- Extensão
- Uma contribuição
- Exemplo: preferência específicas de um editor HTML
|
17
|
- Cada plug-in:
- Contribui com 1 ou mais pontos de extensão
- Opcionalmente, declara novos pontos de extensão
- Depende de outros plug-ins
- Contém bibliotecas Java e outros arquivos
- Pertence ao seu próprio diretório de plug-ins
- Detalhes sobre o plug-in são escritos no arquivo plugin.xml no
diretório raiz do plug-in.
- Runtime da Eclipse Plataform
- Estrutura micro-kernel. Toda a funcionalidade é suprida por plug-ins.
- Ao iniciar Runtime descobre todos os plug-ins registrado
|
18
|
- Plugins explicitam seus pontos de extensão, extensões e relações com outros
plugins através de um arquivo de inventário (manifest) no formato XML
- Com base nos arquivos de inventário, o sistema cria uma listagem dos
plugins disponíveis e suas interconexões durante a inicialização
- Os plugins só são ativados quando efetivamente solicitados
|
19
|
|
20
|
- Plug-in A
- Declara o ponto de extensão P
- Declara a interface I de acordo com P
- Plug-in B
- Implementa a interface I com a classe C
- Contribui com a classe C para o ponto de extensão P
- Plug-in A instancia C e chama os métodos de I
|
21
|
|
22
|
|
23
|
|
24
|
- Ferramentas lêem, criam, modificam e removem recursos da área de
trabalho
- Recursos
- Projetos, pastas e arquivos
- Possibilidade de trabalhar com vários projetos em paralelo.
- Organização:
- Por usuário
- Por diretórios no sistema de arquivos
|
25
|
|
26
|
- Um projeto é um conjunto de arquivos em um diretório raiz
- Um projeto tem uma espécie (nature), à qual corresponde uma configuração
do ambiente
- Projetos, arquivos e diretórios que os compõem são encarados como
“recursos”
- Pode-se criar marcadores com listas de tarefas, pontos de parada de
depuração etc.; plugins podem definir tipos de marcadores
- A forma preferida de acrescentar recursos de construção é via scripts
Ant
|
27
|
- Mudanças nos recursos que compõem um projeto são descritas por uma
árvore de alterações de recursos (resource deltas)
- Alterações em lote geram uma única árvore
- Plugins podem ser informados de mudanças em algum recurso
- coerência de operação e de interface com o usuário entre plugins
- construção parcial (incremental build)
|
28
|
- Interface do usuário da plataforma Eclipse
- Fornece uma estrutura para a interação de ferramentas com os usuários
- Componentes do Workbench
- Perspectivas
- Visões
- Editores
- Oferece suporte ao trabalho em equipe
|
29
|
- Composta de visores e editores; diferentes perspectivas correspondem a
diferentes organizações de visores e editores
- Editores acrescentam ações aos menus e barras de ferramentas da bancada
- Visores fornecem diversas informações ao usuário sobre os recursos que
estão sendo editados
- visores, editores, perspectivas e ações podem ser acrescentados ao
sistema por plugins
|
30
|
|
31
|
- Interface independente de plataforma; implementação em Java + JNI
- Usa biblioteca padrão do sistema; quando isso não é possível, emulação
- Interface de programação portátil + interface de usuário consistente com
o sistema
- Permite extensões não-portáteis, como
ActiveX em Windows)
- Pode ser usada em outros projetos
|
32
|
- Conjunto de classes para tarefas comuns de GUI, como assistentes,
preferências, diálogos etc.
- Ações (actions): definição abstrata de um comando a ser incluído na
interface sem definir onde (nome, ícone, dica etc.)
- Visores (viewers): adaptadores que implementam o padrão observer para
alguns elementos SWT, como listas, árvores e tabelas
|
33
|
- Image and font registries
- Dialog, preference, and wizard frameworks
- Structured viewers
- Model-aware adapters for SWT tree, table, list widgets
- Text infrastructure
- Document model for SWT styled text widget
- Coloring, formatting, partitioning, completion
- Actions
- Location-independent user commands
- Contribute action to menu, tool bar, or button
|
34
|
|
35
|
- Plugins podem acrescentar documentação ao sistema
- Documentos em HTML
- Estrutura das relações entre documentos em XML
- O plugin define onde os tópicos de ajuda devem ser inseridos na árvore
de documentação
- Servidor HTTP embutido no Eclipse
|
36
|
- Help is presented in a standard web browser
|
37
|
- Launch configurations
- How to run a program (debug mode option)
- Generic debug model
- Standard debug events: suspended, exit, …
- Standard debug actions: resume, terminate, step, …
- Breakpoints; Expressions and Source code locator
- Generic debug UI
- Debug perspective
- Debug views: stack frames, breakpoints, …
- Example: JDT supplies Java launcher and debugger
- Java debugger based on JPDA
- Debug mechanisms available to other plug-ins
|
38
|
- Run or debug Java programs
|
39
|
- Run Java programs
- In separate target JVM (user selectable)
- Console provides stdout, stdin, stderr
- Scrapbook pages for executing Java code snippets
- Debug Java programs
- Full source code debugging
- Any JPDA-compliant JVM
|
40
|
- Debugger features include
- Method and exception breakpoints
- Conditional breakpoints; Watchpoints
- Step over, into, return; run to line
- Inspect and modify fields and local variables
- Evaluate snippets in context of method
- Hot swap (if target JVM supports)
|
41
|
|
42
|
- Primary feature controls product information
- Splash screen
- Window image
- About product info
- Initial welcome page
- Default perspective
- Preference default overrides
- All features can provide
- Welcome page
- About feature info
|
43
|
- Eclipse Platform is the nucleus of IDE products
- Plug-ins, extension points, extensions
- Open, extensible architecture
- Workspace, projects, files, folders
- Common place to organize & store development artifacts
- Workbench, editors, views, perspectives
- Common user presentation and UI paradigm
- Key building blocks and facilities
- Help, team support, internationalization, …
|
44
|
|
45
|
- Estado da arte em ambientes de desenvolvimento Java.
- Construído sobre a Plataforma Eclipse.
- Implementado como um conjunto de Plug-ins.
- Utiliza as APIs e pontos de extensão da Plataforma.
- Incluído na distribuição do Eclipse.
|
46
|
- Perspectiva Java
- Concentra as funcionalidades necessárias a um desenvolvedor java.
- Facilidades para escrever código:
- Method Completion
- Refactoring
- Quick Fixes
- Code Templates
- Formatador de Código
- Dentre outras facilidades…
|
47
|
- Classes etc. apresentados em diretórios correspondentes a pacotes
- Navegação em termos de elementos específicos da linguagem, como pacotes,
tipos, métodos, atributos etc.
- Editor com características otimizadas
- Visor de estrutura do arquivo
- Funções para refatoração
- Depurador integrado
|
48
|
- Construtor parcial usa uma árvore de alterações de recursos juntamente
com um grafo de dependências armazenado persistentemente para reconstruções otimizadas
- Sistema mantém uma árvore de elementos Java para navegação pelos
editores e visores; essa árvore é construída e carregada em memória em
partes, em função da necessidade
|
49
|
- Interface de usuário e infra-estrutura separados
- Define a espécie “projeto Java”, o construtor parcial Java e marcadores
para depuração
- Define a perspectiva Java, visores de pacotes e de hierarquia de tipos,
assistentes para a criação de classes, pacotes, interfaces etc.
- Define preferências, como classpath, opções de formatação do editor Java
etc.
|
50
|
- Java-centric view of files in Java projects
- Java elements meaningful for Java programmers
|
51
|
- Browse type hierarchies
- “Up” hierarchy to supertypes
- “Down” hierarchy to subtypes
|
52
|
- Search for Java elements
- Declarations or references
- Including libraries and other projects
|
53
|
- Hovering over identifier shows Javadoc spec
|
54
|
|
55
|
- On-the-fly spell check catches errors early
|
56
|
- Code templates help with drudgery
|
57
|
|
58
|
|
59
|
- JDT has actions for refactoring Java code
|
60
|
- Refactoring actions rewrite source code
- Within a single Java source file
- Across multiple interrelated Java source files
- Refactoring actions preserve program semantics
- Does not alter what program does
- Just affects the way it does it
- Encourages exploratory programming
- Encourages higher code quality
- Makes it easier to rewrite poor code
|
61
|
- Full preview of all ensuing code changes
- Programmer can veto individual changes
|
62
|
- Growing catalog of refactoring actions
- Organize imports
- Rename {field, method, class, package}
- Move {field, method, class}
- Extract {method, local variable, interface}
- Inline {method, local variable}
- Reorder method parameters
- Push members down
- …
|
63
|
- JDT is a state of the art Java IDE
- Java views, editor, refactoring
- Helps programmer write and maintain Java code
- Java compiler
- Takes care of translating Java sources to binaries
- Java debugger
- Allows programmer to get inside the running program
|
64
|
|
65
|
- Definições Declarativas (manifest)
|
66
|
- Ambiente de desenvolvimento de plug-ins dentro do workbench do Eclipse
- Também é um plug-in, construído usando os recursos da própria plataforma
e o JDT
- Permite a definição de um plug-in project, que agrega os elementos do plug-in
(arquivo manifest, código-fonte, gifs)
- Possibilita a construção, compilação, depuração, teste e empacotamento
de um plug-in
|
67
|
- Ferramenta para edição do arquivo de manifest
- Possui wizards para a geração de diversas extensões:
- actions, xml editor, help content, editor multi-page, wizard para novo
arquivo, preferences, property page, views
- Suporte ao deployment de um plug-in
- num arquivo .zip ou atualização automática via Eclipse (feature)
|
68
|
- Forma Básica de definir um plug-in:
- Definir no arquivo de manifesto (plugin.xml), os pontos de extensão que
o plug-in irá contemplar
- Definir uma subclasse de alguma classe da plataforma Eclipse de acordo
com a extensão sendo definida
- Implementar métodos herdados destas classes juntamente com código de
lógica de funcionamento do plug-in
|
69
|
- Exemplos de pontos básicos de extensão do Workbench
- org.eclipse.ui.views
- org.eclipse.ui.viewActions
- org.eclipse.ui.editors
- org.eclipse.ui.editorsActions
- org.eclipse.ui.popMenus
- org.eclipse.ui.actionSets
- org.eclipse.ui.actionSetPartAssociation
- org.eclipse.ui.perspectives
- org.eclipse.ui.perspectivesExtensions
|