Upload
tido4410
View
222
Download
1
Embed Size (px)
Citation preview
Minicurso de Eclipse para o Desenvolvimento de Plugins
Gabriel Bronzatti [email protected]
Bacharel em Engenharia de Software
Rafhael Rodrigues [email protected]
Bacharel em Engenharia de SoftwareMestrando em Engenharia de Computação
V Semana Acadêmica de ADSAnálise e Desenvolvimento de Sistemas
Parte I
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Plataforma Eclipse
➔ O que é?É um ambiente que fornece recursos da sua arquitetura
para a construção de plugins.
Plataforma Eclipse
Plataforma Eclipse
Ambiente principal da plataforma, fornece todos os recursos.
Plataforma Eclipse
Biblioteca de interface gráfica da plataforma Eclipse.
Plataforma Eclipse
Conjunto de ferramentas de interface gráfica da plataforma.
Plataforma Eclipse
Espaço de trabalho do usuário, sistema de diretório que contém seus arquivos.
Plataforma Eclipse
Recurso de manual de ajuda ao usuário.
Plataforma Eclipse
Recurso oferecido pela plataforma para versionamento de itens do workspace do usuário.
Plataforma Eclipse
Componente da plataforma utilizado para acionar os plugins do ambiente e interpretar seus arquivos de configuração
Plataforma EclipseO que é um plugin?
O que é um plugin?
O que é um plugin?
Plugin
➔ O que é?É uma parte de software que
utiliza recursos de um ambiente software para sua execução.
Arquitetura de um Plugin Eclipse
Arquitetura de um Plugin Eclipse
Arquitetura de um Plugin Eclipse
Define as bibliotecas utilizadas pelo plugin (suas dependências).
Arquitetura de um Plugin Eclipse
Define as informações necessárias para que o plugin possa ser executado.
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Ambiente de Desenvolvimento de Plugin➔ Pré-Requisitos:
- JDK 8:http://www.oracle.
com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Eclipse Mars: https://eclipse.org/mars/
- Rich Client Application Eclipse- WindowBuilder
Instalando o Eclipse Mars
Instalando o Eclipse Mars
Instalando o E4 Tools
Instalando o E4 Tools
Instalando o E4 Tools
Instalando o E4 Tools
Instalando o WindowBuilder
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Roteiro
1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Conhecendo o Primeiro Template de Plugin
Se você quiser criar um aplicativo plugin marque YES, nesse exemplo vamos criar apenas um plugin componente.
O assistente de criação disponibiliza templates para criar o seu plugin.
Extensões indicam recursos utilizados da plataforma Eclipse.
Arquivo responsável por definir as configurações necessárias para que o ambiente Eclipse possa executá-lo.
Dependências (bibliotecas) que o Plugin utiliza.
Primeira instância de execução do plugin, define também seu ciclo de vida.
Define um treinador (handler), abstração de listener.
plugin.xml
plugin.xml
Execute o plugin por aqui:
Resultado da Execução
plugin.xml
Dependências utilizadas pelo plugin.
plugin.xml
Extensões é quando um plugin utiliza a funcionalidade de outro plguin.
Testem outros templates...
Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Eclipse Rich Client Application (RCP)
➔ O que é?É uma plataforma para o
desenvolvimento de aplicações plugins.
Essas aplicações podem ser utilizadas de duas formas:● acopladas na IDE Eclipse;● como executável, o qual utilizará
os recursos empacotados da IDE Eclipse.
Primeiro Projeto em Eclipse RCP
O OSGI fornece componentes para que a aplicação possa ser executada independente da plataforma Eclipse, como executável.
Através dele é possível projetar quais recursos de interface gráfica que serão utilizados. Esses recursos podem ser: menus, painéis, controladores, assistentes, botões e o layout base das interfaces.
Dependências (bibliotecas) que o Plugin utiliza.
Define as propriedades básicas do plugin.
Estilo padrão para plugins Eclipse
plugin.xml é o mesmo que o anterior
Investigue um pouco sobre esses arquivos:
1. Application.e4xmi2. PrimeiroProjetoEmRCP.product
Executando nosso primeiro projeto RCP:
Executando nosso primeiro projeto RCP:
Executando nosso primeiro projeto RCP:
Continuação do Primeiro Projeto em RCP
➔ Problema Alvo:Um professor de matemática precisa de
uma ferramenta de software que calcule a área total das principais figuras (quadrado, triângulo,
retângulo, losângulo, etc) da geometria plana. Esse software será utilizado por alunos e deve
ter uma interface simples, para que eles possam através da inserção de parâmetros
calcular seus exercícios de geometria.
➔ Sua Tarefa:Construir um plugin executável para
resolver essa problemática.
Primeiro PassoVamos construir a interface gráfica do nosso software, para isso vamos utilizar o plugin WindowBuilder...
O Arquivo SimplePart define aquela interface que visualizamos quando executamos o nosso projeto.Agora vamos abrir esse arquivo com um editor de interface gráfica...
Se caso ocorrer algum erro, vocês atualizem o ambiente em Help-> Check for Updates e instalem as dependências
Utilizem a paleta de elementos para chegar a essa interface...
Vamos criar uma classe responsável para calcular a área do nosso quadrado. Sabemos que a área de um quadrado pode ser calculada por lado².
Vamos criar agora o código para o evento do nosso botão…Basta adicionar esse trecho de código em nossa classe SamplePart.
Nosso primeiro resultado…Tente você agora, você pode consultar mais fórmulas, vamos ver…
Link:http://acessibilidade.bento.ifrs.edu.br/oa-03-html.php
Primeiro Projeto em Eclipse RCP
https://github.com/tido4410/pluginExemploMinicursoEclipse.git
Primeiro Projeto em Eclipse RCP
Vamos agora exportar um executável do nosso software...
Primeiro Projeto em Eclipse RCP
Primeiro Projeto em Eclipse RCP
https://www.sendspace.com/file/dry8n1
Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis
Links Úteis
http://www.vogella.com
http://www.eclipse.org/documentation/
http://www.ibm.com/developerworks/br/library/os-ecplug/
Parte II
Evolução da Programa● Programação Assembler - x86
● Programação Estruturada - Pascal, C
● Programação Orientada a Objetos - C ++, Java
● Componentes de Software - J2EE, .NET
● Orientada a Aspectos - AspectJ, Spring Framework AOP
● Arquiteturas Orientadas a Serviços - WSDL, SOAP
Modelos● Até agora, a programação é sempre o centro das atenções..
● Como em outras obras de engenharia .. precisamos elevar o nível
de abstração.
● Modelos nos ajudam a construir sistemas mais complexos.
● Modelo: Descrição ou especificação (parte) de um sistema de
software a partir de um certo ponto de vista.
Model-Driven Engineering● MDE ou Engenharia de Software Dirigida a Modelos é o “novo”
enfoque da área de ES.
● Utilização de modelos como artefatos de software.
● Pode-se ter editores, otimizadores, validadores e compiladores
baseados em modelos.
● objetivo do modelo é facilitar o trabalho e reduzir o tempo de
desenvolvimento e o número de erros do software.
Aplicações MDE● Model-Driven Development (MDD)
● Engenharia Reversa
● Software Process Engineering (SPE)
● Domain Specific Language (DSL)
● Model-Driven Integration (MDI)
Domain Specific Languages (DSL)● Desenvolvimento de linguagens visuais e textuais
Domain Specific Languages (DSL)● Modelos gráficos, como UML, também podem ser representados
de forma textual.
Domain Specific Languages (DSL)● DSL classificasse da seguinte forma:
○ Representação■ Visual■ Textual
○ Implementação■ Interno■ Externo
Domain Specific Languages (DSL)● DSL textuais Internos:
○ Usam a infra-estrutura de uma linguagem de programação existente.
○ Na maioria dos casos, são implementados como bibliotecas na linguagem de programação.
○ Exemplo: Rails - Construido sobre a base da linguagem Ruby.
Domain Specific Languages (DSL)● DSL textuais externos:
○ Não utilizam como base nenhuma linguagem de programação já existente.
○ Desenvolvidos a partir do zero.○ Necessitam ser construídos com os estágios básicos de um
compilador.○ No entanto, não precisam de toda a complexidade envolvida
em uma linguagem de uso geral.
Domain Specific Languages (DSL)● DSL visuais internos:
○ Muitos problemas de engenharia de software são analisados e interpretados utilizando modelos gráficos melhores.
○ UML oferece um mecanismo de extensão (perfis) para personalizar modelos para domínios e plataformas específicas.
○ Os perfils não mudam a semântica da UML, e sim estendêm-a.○ São implementados usando estereótipos e restrições de
definição tag.
Domain Specific Languages (DSL)● DSL visuais externos:
○ Linguagens visuais são mais fáceis de analisar do que a textual.
○ No entanto, a UML e os perfils baseados nela, não são tão intuitivos para usuários não-técnicos.
○ Portanto, as linguagens gráficas devem ser adequadas ao tipo de modelagem semântica que se pretende resolver.
○ O desenvolvimento desse tipo de linguagem é muitas vezes mais complexo do que um texto.
Ferramentas de Desenvolvimento de DSL● Para apoiar as fases de desenvolvimento de um DSL, precisamos
de ferramentas para nos ajudar neste processo.
● Enfoque Tradicional○ Flex, BISON, ANTLR, etc.
● Enfoque model-driven○ Eclipse (Modeling Project)○ MS Visual Studio (DSL Tools)○ MetaEdit +, etc
Ferramentas de Desenvolvimento de DSL● Eclipse: Editor Textual
○ Eclipse é um ambiente de programação para Java, embora tenha de trabalhar com outras extensões de linguagens como PHP, XML, etc. Também permite trabalhar com DSLs criados pelo usuário.
Ferramentas de Desenvolvimento de DSL● Eclipse: Editor Visual
○ Eclipse permite trabalhar com modelos visuais baseados em UML ou DSLs criadas pelos usuários.
E como podemos desenvolver DSLs
usando MDE?
Desenvolvimento DSL com enfoque MDE
Construção do Editor
Projeto do Metamodelo
Desenvolvimento de um formato de representação
Geração das Transformações
Desenvolvimento DSL com enfoque MDE
Construção do Editor
Projeto do Metamodelo
Desenvolvimento de um formato de representação
Geração das Transformações
Desenvolvimento DSL com enfoque MDE
Projeto do Metamodelo:
● Metamodelagem é a análise, concepção e construção da meta necessária para cobrir um certo tipo de problema, bem como as suas regras e restrições.
● Metamodelo: um conjunto de conceitos de domínio para modelar (metaclasses) e as relações entre eles (metaassociações).
Desenvolvimento DSL com enfoque MDE
Projeto do Metamodelo:
● O objetivo é definir os conceitos e relações do domínio do problema que queremos abordar através de um diagrama de classes.
● Se define o metamodelo de forma abstrata, independentemente do formato de representação desejado.
● Metamodelos definem a sintaxe abstrata da linguagem a ser utilizada.
Desenvolvimento DSL com enfoque MDE
Construção do Editor
Projeto do Metamodelo
Desenvolvimento de um formato de representação
Geração das Transformações
Desenvolvimento DSL com enfoque MDE
Desenvolvimento de uma forma de representação:
● Como irá ser representado os elementos do metamodelo? Qual é o formato mais adequado para presentar nosso DSL?
● Qual é o tipo de problema que deseja-se modelar? Quem serão os usuários da linguagem?
● Linguagens visuais são mais fáceis de interpretar, mas as textuais geralmente são mais expressivas.
Desenvolvimento DSL com enfoque MDE
Desenvolvimento de uma forma de representação:
● Tem que se definir a sintaxe concreta para a nossa “nova linguagem”:
○ Textual: Baseada em uma gramática (tipo EBNF)○ Visual: Baseada em um mapeamento entre elementos
gráficos e o nosso metamodelo.
Desenvolvimento DSL com enfoque MDE
Construção do Editor
Projeto do Metamodelo
Desenvolvimento de um formato de representação
Geração das Transformações
Desenvolvimento DSL com enfoque MDE
Geração das Transformações:
● DSLs são projetados para preencher uma necessidade e automatizar tarefas.
● Os modelos criados com a nossa DSL devem ser compilados.● Motores de processamento MDE serão nossos processadores de
linguagem.● As transformações são definidas por um conjunto de regras.
Desenvolvimento DSL com enfoque MDE
Geração das Transformações:● As mudanças permitem ‘evoluir’ os modelos:
○ Modelo a Modelo (M2M)
■ Mesmo modelo:
● Refatoração ou aplicação de um padrão de projeto
■ Modelo diferente:
● Derivação de um diagrama de classes para um
framework J2EE a partir de um modelo E/R.
Desenvolvimento DSL com enfoque MDE
Geração das Transformações:● As mudanças permitem ‘evoluir’ os modelos:
○ Modelo a a texto (M2T)
■ Transformação de um diagrama de classes de um projeto
MVC em um conjunto de classes na linguagem Java.
Desenvolvimento DSL com enfoque MDE
Construção do Editor
Projeto do Metamodelo
Desenvolvimento de um formato de representação
Geração das Transformações
Desenvolvimento DSL com enfoque MDE
Construção do editor:● Precisa-se de uma abordagem integrada que nos permita fazer
modelos, usando o nosso idioma de ambiente.
● Existem diferentes tipos de editores:○ Editores baseados em árvores○ Editores visuais○ Editores textuais
Desenvolvimento DSL com enfoque MDE
Construção do editor:● Como podemos fazer uso de uma DSL sem levar em consideração
o formato de representação?○ Editores baseados em árvores
● Como utilizar nossos DSL visuais?● Não nos serve somente um programa de desenhos. E processar
imagens digitais é um processo complicado..● Precisamos de um ambiente de projeto que nos ofereça, entre
outros:○ Paleta de componentes visuais○ Área de desenho○ Validação automática de modelos
Conhecendo o GMF e colocando a mão na massa..
Graphical Modeling Framework (GMF)
➔ O que é?É um plugin que permite a construção de editores
gráficos de modelagem para a plataforma Eclipse.
Graphical Modeling Framework
Graphical Modeling Framework
Depois da instalação, o Eclipse
irá reiniciar o
ambiente...
Primeiro Projeto em GMF
Continuação do Primeiro Projeto em RCP
➔ Problema Alvo:Um professor de computação quer mostrar
aos seus alunos o princípio básico de um grafo orientado.
➔ Sua Tarefa:Construir um editor de modelagem que
permita a construção de um diagrama simples de grafo orientado. O qual contém um tipo de
nó e um tipo de relacionamento.
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMFO Dashboard orienta a construção do nosso editor de modelagem...
Primeiro Projeto em GMF1º Passo: vamos criar nosso ecore
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Selecione o item que está em baixo do platform://res..E abra a aba Properties do Eclipse, para definir por ela as propriedades.
Primeiro Projeto em GMF
Aqui criamos um EClass e atribuimos a ele um nome.
Primeiro Projeto em GMF
Em nosso projeto, precisamos de três EClass...
Primeiro Projeto em GMF
Um EReference define um tipo de relacionamento… A propriedade Containment define se esse é uma agregação, já o Upper Bound quando está em -1, define uma multiplicidade para muitos (n).
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Um EAttribute define um tipo de atributo que o nó do diagrama irá conter…
Primeiro Projeto em GMF
Vamos gerar uma representação gráfica do nosso ecore...
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Agora já temos o código base do nosso editor de modelagem...
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
NóRelacionamento
Primeiro Projeto em GMF
Aqui definimos a paleta de elementos gráficos do nosso editor.
Primeiro Projeto em GMF
Vocês podem criar no paint ícones para a palieta. Essas imagens devem estar em formato ‘GIF’ e elas tem que ter no máximo 16px de largura e altura.
Primeiro Projeto em GMF
Primeiramente apague os itens Default Image dos menus e acrescente os Bundles.
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Façam a mesma coisa para o Creation Tool Edge, só que aponte o camingo do ícone respectivo.
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Atributo
Primeiro Projeto em GMF
Vamos agora apagar o Rectangle NodeFigure, pois é uma elipse o nó do nosso grafo.
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Dentro do Polygon Decoration, vamos ter que definir três Template Points, para moldar a ponta da nossa seta de relacionamento.
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMFAqui está nosso editor, vamos agora executar ele...
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
Primeiro Projeto em GMF
https://github.com/tido4410/pluginExemploMinicursoEclipse.git
Primeiro Projeto em GMF