SlideShare a Scribd company logo
Developing Eclipse Plugins לירן זילכה מנכ"ל משותף Liran.zelkha@alunasoft.com
Aluna Israel’s leading Java/JavaEE and SOA consulting company Customers:
Eclipse plug-in architecture Some of this material was taken from a plug-in course developed by the ECESIS project.
Eclipse plug-in architecture Flexible, structured around extension points and plug-ins This 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
Eclipse plug-in architecture Tool (plug-in) Tool (plug-in) Tool (plug-in) Plug-in  Developer Environment (PDE) Java  Development Tooling (JDT) Eclipse Platform Workbench Help JFace SWT … Workspace Team Platform Runtime Eclipse SDK
Platform runtime In 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
Extension points Describe 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
Extension points There 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
Plug-ins Define 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 platform Provide their own set of APIs Used for further extension of their functionalities Are external, but fully integrated
Plug-ins Implement behavior defined through extension point API interface Can 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
What's in a plug-in? A JAR file An archive with the plug-in code plugin.xml Manifest that describes plug-in about.html Textual description of the plug-in plugin.properties Plugin-in properties
Describing plug-ins An extension to the platform has to be registered somewhere Each plug-in has a manifest file that describes: Location of the plug-in code Extensions added by the plug-in
Describing plug-ins The 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
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>
Packaging plug-ins Plug-ins are packaged as Java Archives – JAR files Archives 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
Publishing plug-ins Used for preparing plug-in for deployment on a specific platform Manual 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
Publishing plug-ins Automatic 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.
Installing plug-ins Plug-ins are installed under the plugins directory under the Eclipse installation directory Usually c:clipselugins on Windows platforms
Plug-in fragments Used 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
Plug-in fragments Described in fragment.xml files Similar to plug-in manifest files Plug-in archive can contain plug-ins or fragments
Eclipse API Meant to be used by plug-in developers API elements are documented and completely specified The API elements specify what they are supposed to do and how they are intended to be used.
Eclipse API The Eclipse platform code is separated into: API packages Contain API elements Non-API packages Contain internal platform implementation
Using the Eclipse API The 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
Using the Eclipse API More ways to use the API: Overriding API methods Allowed for some methods Implementing platform API interfaces Accessing Fields in API classes and interfaces Mainly final, read-only fields

More Related Content

What's hot

Discovering the p2 API
Discovering the p2 APIDiscovering the p2 API
Discovering the p2 API
Pascal Rapicault
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)
Chinmoy Mohanty
 
Rewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API EconomyRewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API Economy
Tim Pettersen
 
Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)
Pascal Rapicault
 
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
irbull
 
P2 Introduction
P2 IntroductionP2 Introduction
P2 Introduction
irbull
 
Introduction to Eclipse IDE
Introduction to Eclipse IDEIntroduction to Eclipse IDE
Introduction to Eclipse IDE
Muhammad Hafiz Hasan
 
Eclipse IDE
Eclipse IDEEclipse IDE
Eclipse IDE
Anirban Majumdar
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Ralf Sternberg
 
OSGi Sticker Shock Eclipse Con 2010
OSGi Sticker Shock   Eclipse Con 2010OSGi Sticker Shock   Eclipse Con 2010
OSGi Sticker Shock Eclipse Con 2010
ericjohnson
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Ryan Baxter
 
What's new in Eclipse Mars
What's new in Eclipse MarsWhat's new in Eclipse Mars
What's new in Eclipse Mars
Lakshmi Priya
 
Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with Maven
Pascal Rapicault
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
Arnaud Tournier
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDE
intelliyole
 
Common Client Rich Client Platforms
Common Client   Rich Client PlatformsCommon Client   Rich Client Platforms
Common Client Rich Client PlatformsGeertjan Wielenga
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation
Pallab Sarkar
 
Building an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developersBuilding an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developerskim.mens
 

What's hot (20)

Discovering the p2 API
Discovering the p2 APIDiscovering the p2 API
Discovering the p2 API
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)
 
Rewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API EconomyRewriting a Plugin Architecture 3 Times to Harness the API Economy
Rewriting a Plugin Architecture 3 Times to Harness the API Economy
 
Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)
 
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
 
P2 Introduction
P2 IntroductionP2 Introduction
P2 Introduction
 
Introduction to Eclipse IDE
Introduction to Eclipse IDEIntroduction to Eclipse IDE
Introduction to Eclipse IDE
 
Eclipse IDE
Eclipse IDEEclipse IDE
Eclipse IDE
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
OSGi Sticker Shock Eclipse Con 2010
OSGi Sticker Shock   Eclipse Con 2010OSGi Sticker Shock   Eclipse Con 2010
OSGi Sticker Shock Eclipse Con 2010
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
 
What's new in Eclipse Mars
What's new in Eclipse MarsWhat's new in Eclipse Mars
What's new in Eclipse Mars
 
Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with Maven
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDE
 
Common Client Rich Client Platforms
Common Client   Rich Client PlatformsCommon Client   Rich Client Platforms
Common Client Rich Client Platforms
 
Python IDE Roundup
Python IDE RoundupPython IDE Roundup
Python IDE Roundup
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
Building an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developersBuilding an Eclipse plugin to recommend changes to developers
Building an Eclipse plugin to recommend changes to developers
 

Similar to Building Eclipse Plugins

Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
Lars Vogel
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
Tonny Madsen
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ Rheinjug
Lars Vogel
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
whbath
 
Assign 10 - Creating Projects using Eclipse IDE
Assign 10 -  Creating Projects using Eclipse IDE Assign 10 -  Creating Projects using Eclipse IDE
Assign 10 - Creating Projects using Eclipse IDE Yogesh Deshpande
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
Mikkel Flindt Heisterberg
 
Eclipse_Building_Blocks
Eclipse_Building_BlocksEclipse_Building_Blocks
Eclipse_Building_BlocksRahul Shukla
 
The Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case StudyThe Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case Study
gustavoeliano
 
Namespaces in C#
Namespaces in C#Namespaces in C#
Namespaces in C#
yogita kachve
 
Android application structure
Android application structureAndroid application structure
Android application structureAlexey Ustenko
 
R12 d49656 gc10-apps dba 05
R12 d49656 gc10-apps dba 05R12 d49656 gc10-apps dba 05
R12 d49656 gc10-apps dba 05
zeesniper
 
Java ant tutorial
Java ant tutorialJava ant tutorial
Java ant tutorial
Ashoka Vanjare
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium Rohit Thakur
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Plug-in Architectures
Plug-in ArchitecturesPlug-in Architectures
Plug-in Architectureselliando dias
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
Lars Vogel
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Tonny Madsen
 

Similar to Building Eclipse Plugins (20)

Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ Rheinjug
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
Assign 10 - Creating Projects using Eclipse IDE
Assign 10 -  Creating Projects using Eclipse IDE Assign 10 -  Creating Projects using Eclipse IDE
Assign 10 - Creating Projects using Eclipse IDE
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Eclipse_Building_Blocks
Eclipse_Building_BlocksEclipse_Building_Blocks
Eclipse_Building_Blocks
 
The Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case StudyThe Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case Study
 
Namespaces in C#
Namespaces in C#Namespaces in C#
Namespaces in C#
 
Android application structure
Android application structureAndroid application structure
Android application structure
 
R12 d49656 gc10-apps dba 05
R12 d49656 gc10-apps dba 05R12 d49656 gc10-apps dba 05
R12 d49656 gc10-apps dba 05
 
Ant tutorial
Ant tutorialAnt tutorial
Ant tutorial
 
Java ant tutorial
Java ant tutorialJava ant tutorial
Java ant tutorial
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Plug-in Architectures
Plug-in ArchitecturesPlug-in Architectures
Plug-in Architectures
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
 
Ide
IdeIde
Ide
 

More from Liran Zelkha

Scaling data on public clouds
Scaling data on public cloudsScaling data on public clouds
Scaling data on public clouds
Liran Zelkha
 
OC4J to WebLogic Server Migration5
OC4J to WebLogic Server Migration5OC4J to WebLogic Server Migration5
OC4J to WebLogic Server Migration5Liran Zelkha
 
Data SLA in the public cloud
Data SLA in the public cloudData SLA in the public cloud
Data SLA in the public cloudLiran Zelkha
 
שטפונות בנגב
שטפונות בנגבשטפונות בנגב
שטפונות בנגב
Liran Zelkha
 
Oracle Coherence
Oracle CoherenceOracle Coherence
Oracle Coherence
Liran Zelkha
 
Social Networks Optimization
Social Networks OptimizationSocial Networks Optimization
Social Networks Optimization
Liran Zelkha
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
Liran Zelkha
 
Aluna Introduction
Aluna IntroductionAluna Introduction
Aluna IntroductionLiran Zelkha
 

More from Liran Zelkha (9)

Scaling data on public clouds
Scaling data on public cloudsScaling data on public clouds
Scaling data on public clouds
 
OC4J to WebLogic Server Migration5
OC4J to WebLogic Server Migration5OC4J to WebLogic Server Migration5
OC4J to WebLogic Server Migration5
 
Data SLA in the public cloud
Data SLA in the public cloudData SLA in the public cloud
Data SLA in the public cloud
 
שטפונות בנגב
שטפונות בנגבשטפונות בנגב
שטפונות בנגב
 
מתפ
מתפמתפ
מתפ
 
Oracle Coherence
Oracle CoherenceOracle Coherence
Oracle Coherence
 
Social Networks Optimization
Social Networks OptimizationSocial Networks Optimization
Social Networks Optimization
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
 
Aluna Introduction
Aluna IntroductionAluna Introduction
Aluna Introduction
 

Recently uploaded

From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 

Recently uploaded (20)

From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 

Building Eclipse Plugins

  • 1. Developing Eclipse Plugins לירן זילכה מנכ"ל משותף Liran.zelkha@alunasoft.com
  • 2. Aluna Israel’s leading Java/JavaEE and SOA consulting company Customers:
  • 3. Eclipse plug-in architecture Some of this material was taken from a plug-in course developed by the ECESIS project.
  • 4. Eclipse plug-in architecture Flexible, structured around extension points and plug-ins This 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
  • 5. Eclipse plug-in architecture Tool (plug-in) Tool (plug-in) Tool (plug-in) Plug-in Developer Environment (PDE) Java Development Tooling (JDT) Eclipse Platform Workbench Help JFace SWT … Workspace Team Platform Runtime Eclipse SDK
  • 6. Platform runtime In 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
  • 7. Extension points Describe 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
  • 8. Extension points There 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
  • 9. Plug-ins Define 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 platform Provide their own set of APIs Used for further extension of their functionalities Are external, but fully integrated
  • 10. Plug-ins Implement behavior defined through extension point API interface Can 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
  • 11. What's in a plug-in? A JAR file An archive with the plug-in code plugin.xml Manifest that describes plug-in about.html Textual description of the plug-in plugin.properties Plugin-in properties
  • 12. Describing plug-ins An extension to the platform has to be registered somewhere Each plug-in has a manifest file that describes: Location of the plug-in code Extensions added by the plug-in
  • 13. Describing plug-ins The 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
  • 14. 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>
  • 15. Packaging plug-ins Plug-ins are packaged as Java Archives – JAR files Archives 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
  • 16. Publishing plug-ins Used for preparing plug-in for deployment on a specific platform Manual 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
  • 17. Publishing plug-ins Automatic 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.
  • 18. Installing plug-ins Plug-ins are installed under the plugins directory under the Eclipse installation directory Usually c:clipselugins on Windows platforms
  • 19. Plug-in fragments Used 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
  • 20. Plug-in fragments Described in fragment.xml files Similar to plug-in manifest files Plug-in archive can contain plug-ins or fragments
  • 21. Eclipse API Meant to be used by plug-in developers API elements are documented and completely specified The API elements specify what they are supposed to do and how they are intended to be used.
  • 22. Eclipse API The Eclipse platform code is separated into: API packages Contain API elements Non-API packages Contain internal platform implementation
  • 23. Using the Eclipse API The 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
  • 24. Using the Eclipse API More ways to use the API: Overriding API methods Allowed for some methods Implementing platform API interfaces Accessing Fields in API classes and interfaces Mainly final, read-only fields