building eclipse plugins

24
Developing Eclipse Plugins הההה ההההה ההה"ה ההההה[email protected]

Upload: liran-zelkha

Post on 13-Jan-2015

3.881 views

Category:

Technology


3 download

DESCRIPTION

Basic terminology of eclipse plugins development

TRANSCRIPT

Page 1: Building Eclipse Plugins

Developing Eclipse Plugins

לירן זילכהמנכ"ל משותף

[email protected]

Page 2: Building Eclipse Plugins

AlunaIsrael’s leading Java/JavaEE and SOA

consulting companyCustomers:

Page 3: Building Eclipse Plugins

Eclipse plug-in architectureSome of this material was taken from a

plug-in course developed by the ECESIS project .

Page 4: Building Eclipse Plugins

Eclipse plug-in architectureFlexible, structured around extension

points and plug-insThis architecture allows for:

◦Other tools to be used within the platform◦Other tools to be further extended◦Integration between tools and the platform

No need to wait for new product releases

Page 5: Building Eclipse Plugins

Eclipse plug-in architecture

Eclipse Platform

Platform Runtime

Tool(plug-in)

Tool(plug-in)

Tool(plug-in)

Workbench

Workspace

Help

Team

JFace

SWT

Plug-in Developer

Environment(PDE)

Java Development

Tooling(JDT)

Eclipse SDK

Page 6: Building Eclipse Plugins

Platform runtimeIn the Eclipse, everything is plug-in except

the Platform Runtime (the kernel)All other subsystems build up on the

Platform Runtime following the rules of plug-ins

The Basic platform includes:◦Resources Management◦Workbench◦Team◦Debug◦Help

Page 7: Building Eclipse Plugins

Extension pointsDescribe additional functionality that

could be integrated with the platform◦External tools extend the platform to bring

specific functionality◦Java Development Tooling (JDT) and Plug-in

Development Environment (PDE) are external tools integrated with the platform

Page 8: Building Eclipse Plugins

Extension pointsThere are two levels of extending Eclipse:

◦Extending core platform◦Extending existing extensions

Extension points may have a corresponding API interface

◦Describes what should be provided in the extension

Page 9: Building Eclipse Plugins

Plug-insDefine extension points

◦Each plug-in defines its own set of extension points

Implement specialized functionality◦Usually key functionality that does not already

exist in the platformProvide their own set of APIs

◦Used for further extension of their functionalities

Are external, but fully integrated

Page 10: Building Eclipse Plugins

Plug-insImplement behavior defined through

extension point API interfaceCan extend named extension points from

Eclipse or extension points of other plug-ins

Can declare an extension point and provide an extension to it

Are developed in Java programming language

Page 11: Building Eclipse Plugins

What's in a plug-in?A JAR file

◦An archive with the plug-in codeplugin.xml

◦Manifest that describes plug-inabout.html

◦Textual description of the plug-inplugin.properties

◦Plugin-in properties

Page 12: Building Eclipse Plugins

Describing plug-insAn extension to the platform has to be

registered somewhereEach plug-in has a manifest file that

describes:◦Location of the plug-in code◦Extensions added by the plug-in

Page 13: Building Eclipse Plugins

Describing plug-insThe manifest file is plugin.xml .

◦There are Eclipse tools that make it easy to edit the file without using XML directly.

The manifest describes:◦Name, id, and version of the plug-in◦List of other plug-ins (and versions) required by

the plug-in described◦Extension points◦Where the plug-in code is located

Page 14: Building Eclipse Plugins

Example manifest file

?<xml version="1.0" encoding="UTF-8>?"?<eclipse version="3.0>?"

<plugin name="Helloworld plug-in " id="com.examples.helloworld " version="1.0.0“

provider-name="EXAMPLE" class="com.example.helloworld.HelloworldPlugin > >"

< requires>< import plugin="org.eclipse.ui>/"< import plugin="org.eclipse.core.runtime>/"< import plugin="org.eclipse.core.runtime.compatibility>/" /< requires >< runtime>

< library name="helloworld.jar>"< export name>/"*"=/< library >/< runtime >< extension point="org.eclipse.ui.views>"< category name="Hello Category" id="com.example.helloworld"> </category >< view name="Hello View" icon="icons/sample.gif" category="com.example.helloworld"

class="com.example.helloworld.HelloWorldView" id="com.example.helloworld.HelloWorldView >"/< view >/< extension> /<plugin>

Page 15: Building Eclipse Plugins

Packaging plug-insPlug-ins are packaged as Java Archives –

JAR filesArchives are named using naming

convention:◦<id>_<version>.jar

<id> is the identifier<version> is the full version number from the

manifest file◦For example: org.eclipse.demo.

plugin.simple_1.0.jar

Page 16: Building Eclipse Plugins

Publishing plug-insUsed for preparing plug-in for deployment

on a specific platformManual publishing makes use of Ant

scripts◦Ant is a open source build tool, commonly used

in building processes with Java code◦Ant scripts are Java based (platform

independent) with XML configuration◦Ant is supported in Eclipse

Page 17: Building Eclipse Plugins

Publishing plug-insAutomatic publishing is available by using

Eclipse wizards◦You don't have to use Ant scripts ◦Wizards allow publishing in a single zip file. A

single zip file can contain multiple plug-ins.

Page 18: Building Eclipse Plugins

Installing plug-insPlug-ins are installed under the plugins

directory under the Eclipse installation directory

◦Usually c:\eclipse\plugins on Windows platforms

Page 19: Building Eclipse Plugins

Plug-in fragmentsUsed for extending existing plug-ins

◦Provide an additional functionality to existing plug-ins

◦Ideal for providing add-on functionality to plug-ins

Packaged in separate files◦Fragment content is treated as it was original

plug-in archive◦At runtime the platform detects fragments and

merges their content with the original plug-in

Page 20: Building Eclipse Plugins

Plug-in fragmentsDescribed in fragment.xml files

◦Similar to plug-in manifest files◦Plug-in archive can contain plug-ins or

fragments

Page 21: Building Eclipse Plugins

Eclipse APIMeant to be used by plug-in developersAPI elements are documented and

completely specifiedThe API elements specify what they are

supposed to do and how they are intended to be used.

Page 22: Building Eclipse Plugins

Eclipse APIThe Eclipse platform code is separated

into:◦API packages

Contain API elements◦Non-API packages

Contain internal platform implementation

Page 23: Building Eclipse Plugins

Using the Eclipse APIThe API can be used by doing one of the

following:◦Instantiating platform API classes◦Subclassing platform API classes◦Calling public API methods

Most commonly used◦Calling protected API methods

Possible from API subclasses

Page 24: Building Eclipse Plugins

Using the Eclipse APIMore ways to use the API:

◦Overriding API methodsAllowed for some methods◦Implementing platform API interfaces◦Accessing Fields in API classes and interfaces

Mainly final, read-only fields