SlideShare a Scribd company logo
Eclipse Plug-ins
and RCP
Training Course
Main Eclipse ecosystem classes
October 2013Copyright © 2013 Luca D’Onofrio – RCP Solutions
1
1. Runtime Platform Core & Runtime
a) Plugin & Bundle classes
b) Platform User Interface
c) Logging
2. Resource Management
3. Jobs
a) Progress monitoring
b) Workspace operations
Agenda
2
October 2013Copyright © 2013 Luca D’Onofrio – RCP Solutions
∗ The core component provides basic platform infrastructure that does not involve any UI.
∗ Main plug-ins:
∗ org.eclipse.core.contenttype - Support for defining and managing file content types
∗ org.eclipse.core.expressions - A generic XML-based expression language used in the
markup of various extension points.
∗ org.eclipse.core.filesystem - A generic file system API
∗ org.eclipse.core.jobs - Infrastructure for concurrent programming in Eclipse
∗ org.eclipse.core.resources - Management of resources - projects, folders, and files
∗ org.eclipse.core.runtime - Formerly the foundation of the platform, this plug-in has
largely been supplanted by the Equinox runtime
∗ Each plug-in provides a basic set of services, and API and extension points for managing
and interacting with those services.
∗ The contents of resources are never examined in any domain-specific way and the Core
can run equally well with and without a UI.
∗ Much of the function previously provided by core now falls under the Equinox OSGi
project
Platform Core & Runtime
Copyright © 2013 Luca D’Onofrio – RCP Solutions
3
October 2013
∗ The central class of the Eclipse Platform Runtime.
This class cannot be instantiated or subclassed by
clients; all functionality is provided by static methods.
∗ The Platform defines the set of frameworks and
common services that collectively make up
infrastructure required to support the use of Eclipse
as a component model, as a Rich Client Platform
(RCP) and as a comprehensive tool integration
platform.
∗ Features include:
∗ the platform registry of installed plug-ins
∗ the platform adapter manager
∗ the platform log
∗ the authorization info management
Platform core
Copyright © 2013 Luca D’Onofrio – RCP Solutions
4
class Platform
runtime::Platform
{leaf}
+ addAuthorizationInfo(URL, String, String, Map) : void
+ getAdapterManager() : IAdapterManager
+ getAuthorizationInfo(URL, String, String) : Map
+ getCommandLineArgs() : String[]
+ getDebugOption(String) : String
+ getLocation() : IPath
+ getPlugin(String) : Plugin
+ getPluginRegistry() : IPluginRegistry
+ resolve(URL) : URL
+ getJobManager() : IJobManager
+ getExtensionRegistry() : IExtensionRegistry
+ find(Bundle, IPath) : URL
+ find(Bundle, IPath, Map<String,String>) : URL
+ getLog(Bundle) : ILog
+ getOSArch() : String
+ getNL() : String
+ getNLExtensions() : String
+ getOS() : String
+ getWS() : String
+ getApplicationArgs() : String[]
+ getPlatformAdmin() : PlatformAdmin
+ getPreferencesService() : IPreferencesService
+ getProduct() : IProduct
+ getConfigurationLocation() : Location
+ getUserLocation() : Location
+ getInstallLocation() : Location
+ isFragment(Bundle) : boolean
+ getFragments(Bundle) : Bundle[]
+ getBundle(String) : Bundle
+ getBundles(String, String) : Bundle[]
+ isRunning() : boolean
+ inDebugMode() : boolean
October 2013
class PluginBundle
runtime::Plugin
+ Plugin()
+ Plugin(IPluginDescriptor)
+ find(IPath) : URL
+ find(IPath, Map) : URL
+ getDescriptor() : IPluginDescriptor
+ getLog() : ILog
+ getStateLocation() : IPath
+ getPluginPreferences() : Preferences
+ savePluginPreferences() : void
+ internalInitializeDefaultPluginPreferences() : void
+ isDebugging() : boolean
+ openStream(IPath) : InputStream
+ openStream(IPath, boolean) : InputStream
+ setDebugging(boolean) : void
+ shutdown() : void
+ startup() : void
+ start(BundleContext) : void
+ stop(BundleContext) : void
+ getBundle() : Bundle
Comparable
«interface»
framework::Bundle
+ UNINSTALLED: int = 0x00000001
+ INSTALLED: int = 0x00000002
+ RESOLVED: int = 0x00000004
+ STARTING: int = 0x00000008
+ STOPPING: int = 0x00000010
+ ACTIVE: int = 0x00000020
+ START_TRANSIENT: int = 0x00000001
+ START_ACTIVATION_POLICY: int = 0x00000002
+ STOP_TRANSIENT: int = 0x00000001
+ SIGNERS_ALL: int = 1
+ SIGNERS_TRUSTED: int = 2
+ getState() : int
+ start(int) : void
+ start() : void
+ stop(int) : void
+ stop() : void
+ update(InputStream) : void
+ update() : void
+ uninstall() : void
+ getHeaders() : Dictionary<String, String>
+ getBundleId() : long
+ getLocation() : String
+ getRegisteredServices() : ServiceReference<?>[]
+ getServicesInUse() : ServiceReference<?>[]
+ hasPermission(Object) : boolean
+ getResource(String) : URL
+ getHeaders(String) : Dictionary<String, String>
+ getSymbolicName() : String
+ loadClass(String) : Class<?>
+ getResources(String) : Enumeration<URL>
+ getEntryPaths(String) : Enumeration<String>
+ getEntry(String) : URL
+ getLastModified() : long
+ findEntries(String, String, boolean) : Enumeration<URL>
+ getBundleContext() : BundleContext
+ getSignerCertificates(int) : Map<X509Certificate, List<X509Certificate>>
+ getVersion() : Version
+ adapt(Class<A>) : A
+ getDataFile(String) : File
+bundle
Plugin & Bundle classes
Copyright © 2013 Luca D’Onofrio – RCP Solutions
5
October 2013
∗ Platform UI consists of several components, which provide the basic building blocks
for user interfaces built with Eclipse. (Some of these can be reused in arbitrary
applications, while others are specific to the Eclipse IDE).
∗ JFace and the Workbench can be used to build arbitrary applications, not just the
Eclipse IDE. The Eclipse IDE is just one instance of an RCP application.
∗ JFace is a UI toolkit with classes for handling many common UI programming
tasks. JFace is window-system-independent in both its API and implementation,
and is designed to work with SWT without hiding it. JFace includes the usual UI
toolkit components of image and font registries, text, dialog, preference and
wizard frameworks, and progress reporting for long running operations.
∗ The Workbench provides the user interface structure for Eclipse. The purpose of
the Workbench is to facilitate the seamless integration of tools. These tools
contribute to extension points defined by the Workbench.
Platform User Interface
(1/2)
Copyright © 2013 Luca D’Onofrio – RCP Solutions
6
October 2013
∗ The central class for access to the Eclipse Platform User
Interface. This class cannot be instantiated; all functionality is
provided by static methods. Features provided:
∗ Creation of the workbench.
∗ Access to the workbench.
Platform User Interface
(2/2)
Copyright © 2013 Luca D’Onofrio – RCP Solutions
7
October 2013
Logging
Copyright © 2013 Luca D’Onofrio – RCP Solutions
8
October 2013
∗ The Eclipse File System (EFS) is an abstract file system API. It is
used in the Eclipse platform to abstract away implementation
details about what file system is used to store data in the
workspace.
∗ EFS makes heavy use of Uniform Resource Identifiers, as
defined by RFC 2396.
∗ Implementations:
∗ Local file system for resource management
∗ Remote System Explorer (SSH, FTP, …)
∗ FTP, ZIP, CVS, …
Resource Management: EFS
Copyright © 2013 Luca D’Onofrio – RCP Solutions
9
October 2013
class resources
IAdaptable
«interface»
IContainer
IEncodedStorage
IAdaptable
«interface»
IFile
IAdaptable
«interface»
IFolder
IAdaptable
«interface»
IMarker
IAdaptable
«interface»
IProject
«interface»
IProjectDescription
«interface»
IProjectNature
IAdaptable
ISchedulingRule
«interface»
IResource
IAdaptable
«interface»
IWorkspace
IAdaptable
«interface»
IWorkspaceRoot
0..*
0..*
1..*
Resources Hierarchy
Copyright © 2013 Luca D’Onofrio – RCP Solutions
10
October 2013
∗ Copy / Move
∗ Create / Delete
∗ Exists
∗ Get Parent
∗ Get Location (IPath)
∗ Get Location (URI)
∗ Get Project
∗ Get Workspace
∗ Refresh
∗ Resource change listener management
∗ Markers management
∗ Persistent properties management
∗ Session properties management
∗ Find Marker
Resources operations
Copyright © 2013 Luca D’Onofrio – RCP Solutions
11
∗ Resource type attribute
∗ FILE
∗ FOLDER
∗ PROJECT
∗ ROOT
∗ DERIVED
∗ LINKED
∗ Synchronized
∗ Local
∗ Hidden
∗ Read Only
∗ Refresh attributes
∗ DEPTH_ZERO, DEPTH_ONE,
DEPTH_INFINITE
October 2013
∗ Long-running operations should be executed in the background so that the
UI stays responsive. One solution is to fork a lower-priority thread to perform
the operation rather than performing the operation in the UI thread.
∗ Eclipse provides a Jobs API for creating, managing, and displaying
background operations.
∗ Jobs: jobs are units of runnable work that can be scheduled to be run with
the job manager.
∗ UIJobs: the UIJob is a Job that runs within the UI Thread via an asyncExec.
Jobs
Copyright © 2013 Luca D’Onofrio – RCP Solutions
12
October 2013
∗ The IProgressMonitor object can be used to report progress.
∗ beginTask() specifies the total units of work. For an undefined
amount of work use IProgressMonitor .UNKNOWN
∗ worked() reports that a certain number of units of work have been
finished.
∗ isCancelled() checks if the user send a job cancel request
∗ done() all the work has been complete (successfully or not)
∗ A monitor can have one ore more sub progress monitors.
∗ The run method of a Job provide returns a IStatus object to the
caller:
∗ Status.CANCEL_STATUS
∗ Status.OK_STATUS
Jobs: progress monitoring
Copyright © 2013 Luca D’Onofrio – RCP Solutions
13
October 2013
∗ An operation which potentially makes changes to the
workspace.
∗ All resource modification should be performed using this
operation.
∗ The primary consequence of using this operation is that events
which typically occur as a result of workspace changes are
generally deferred until the outermost operation has
successfully completed.
∗ If a scheduling rule is provided, the operation will obtain that
scheduling rule for the duration of its execute method. If no
scheduling rule is provided, the operation will obtain a
scheduling rule that locks the entire workspace for the duration
of the operation.
Jobs: Workspace
operations
Copyright © 2013 Luca D’Onofrio – RCP Solutions
14
October 2013
References
Copyright © 2013 Luca D’Onofrio – RCP Solutions
15
∗ www.eclipse.org
∗ help.eclipse.org
∗ wiki.eclipse.org
∗ Eclipse SDK update site
∗ http://download.eclipse.org/eclipse/updates/4.3
October 2013

More Related Content

What's hot

Easy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVEEasy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVE
Uehara Junji
 
Java PRACTICAL file
Java PRACTICAL fileJava PRACTICAL file
Java PRACTICAL file
RACHIT_GUPTA
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
Simon Ritter
 
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in JavaRuntime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
Juan Fumero
 
It's Java, Jim, but not as we know it
It's Java, Jim, but not as we know itIt's Java, Jim, but not as we know it
It's Java, Jim, but not as we know it
Simon Ritter
 
Ontopia tutorial
Ontopia tutorialOntopia tutorial
Ontopia tutorial
Lars Marius Garshol
 
(1) cpp introducing the_cpp_programming_language
(1) cpp introducing the_cpp_programming_language(1) cpp introducing the_cpp_programming_language
(1) cpp introducing the_cpp_programming_language
Nico Ludwig
 
Modules in Python Programming
Modules in Python ProgrammingModules in Python Programming
Modules in Python Programming
sambitmandal
 
Open CL For Speedup Workshop
Open CL For Speedup WorkshopOpen CL For Speedup Workshop
Open CL For Speedup WorkshopOfer Rosenberg
 
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time APIModern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Ganesh Samarthyam
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
Doug Hawkins
 
Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8
Ganesh Samarthyam
 
Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8
Simon Ritter
 
Rust and Eclipse
Rust and EclipseRust and Eclipse
Rust and Eclipse
Max Bureck
 
Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams
Ganesh Samarthyam
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMake
ICS
 
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...Yandex
 

What's hot (19)

Easy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVEEasy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVE
 
Java PRACTICAL file
Java PRACTICAL fileJava PRACTICAL file
Java PRACTICAL file
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
 
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in JavaRuntime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
 
It's Java, Jim, but not as we know it
It's Java, Jim, but not as we know itIt's Java, Jim, but not as we know it
It's Java, Jim, but not as we know it
 
Ontopia tutorial
Ontopia tutorialOntopia tutorial
Ontopia tutorial
 
(1) cpp introducing the_cpp_programming_language
(1) cpp introducing the_cpp_programming_language(1) cpp introducing the_cpp_programming_language
(1) cpp introducing the_cpp_programming_language
 
Modules in Python Programming
Modules in Python ProgrammingModules in Python Programming
Modules in Python Programming
 
Open CL For Speedup Workshop
Open CL For Speedup WorkshopOpen CL For Speedup Workshop
Open CL For Speedup Workshop
 
Java practical
Java practicalJava practical
Java practical
 
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time APIModern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8
 
Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8
 
Rust and Eclipse
Rust and EclipseRust and Eclipse
Rust and Eclipse
 
Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMake
 
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...
Разработка кросс-платформенного кода между iPhone &lt; -> Windows с помощью o...
 

Viewers also liked

Soluciones de movilidad con Android y PaaS
Soluciones de movilidad con Android y PaaSSoluciones de movilidad con Android y PaaS
Soluciones de movilidad con Android y PaaS
Neodoo Microsystems S.L.
 
Consumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API ManagerConsumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API Manager
IsildurMaC
 
Flex Air Intro
Flex Air IntroFlex Air Intro
Flex Air Intro
JUG Genova
 
Flex
FlexFlex
Flex
oomm
 
Escenario de aprendizaje 1 talde osoa
Escenario de aprendizaje 1 talde osoaEscenario de aprendizaje 1 talde osoa
Escenario de aprendizaje 1 talde osoajaizkibel
 
Flex Introduction
Flex IntroductionFlex Introduction
Flex Introduction
Sabarinathan Masilamani
 
Artículo 3 sobre la plataforma ECLIPSE
Artículo 3 sobre la plataforma ECLIPSEArtículo 3 sobre la plataforma ECLIPSE
Artículo 3 sobre la plataforma ECLIPSE
torrubia
 
Flex Messeging Services
Flex Messeging ServicesFlex Messeging Services
Flex Messeging Servicesravinxg
 
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4 JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
César Pajares
 

Viewers also liked (9)

Soluciones de movilidad con Android y PaaS
Soluciones de movilidad con Android y PaaSSoluciones de movilidad con Android y PaaS
Soluciones de movilidad con Android y PaaS
 
Consumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API ManagerConsumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API Manager
 
Flex Air Intro
Flex Air IntroFlex Air Intro
Flex Air Intro
 
Flex
FlexFlex
Flex
 
Escenario de aprendizaje 1 talde osoa
Escenario de aprendizaje 1 talde osoaEscenario de aprendizaje 1 talde osoa
Escenario de aprendizaje 1 talde osoa
 
Flex Introduction
Flex IntroductionFlex Introduction
Flex Introduction
 
Artículo 3 sobre la plataforma ECLIPSE
Artículo 3 sobre la plataforma ECLIPSEArtículo 3 sobre la plataforma ECLIPSE
Artículo 3 sobre la plataforma ECLIPSE
 
Flex Messeging Services
Flex Messeging ServicesFlex Messeging Services
Flex Messeging Services
 
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4 JBoss AS Seguridad -  monitorizacións - Curso JBoss JB366 Día 4
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4
 

Similar to Eclipse Training - Main eclipse ecosystem classes

Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
Platonov Sergey
 
Eclipse Training - RCP & Industrialization
Eclipse Training - RCP & IndustrializationEclipse Training - RCP & Industrialization
Eclipse Training - RCP & Industrialization
Luca D'Onofrio
 
Manage software dependencies with ioc and aop
Manage software dependencies with ioc and aopManage software dependencies with ioc and aop
Manage software dependencies with ioc and aop
Stefano Leli
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling FrameworkAjay K
 
Eclipse Training - Standard Extension Points and APIs
Eclipse Training - Standard Extension Points and APIsEclipse Training - Standard Extension Points and APIs
Eclipse Training - Standard Extension Points and APIs
Luca D'Onofrio
 
PRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptxPRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptx
SajalKesharwani2
 
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScriptQiangning Hong
 
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
 
Docker practical solutions
Docker practical solutionsDocker practical solutions
Docker practical solutions
Kesav Kumar Kolla
 
C++ Programming
C++ ProgrammingC++ Programming
Activity 5
Activity 5Activity 5
Activity 5
Heidi Owens
 
adaptTo() 2014 - Integrating Open Source Search with CQ/AEM
adaptTo() 2014 - Integrating Open Source Search with CQ/AEMadaptTo() 2014 - Integrating Open Source Search with CQ/AEM
adaptTo() 2014 - Integrating Open Source Search with CQ/AEM
therealgaston
 
Gwt.create
Gwt.createGwt.create
C++ Programming
C++ ProgrammingC++ Programming
C++ Programming
Rounak Samdadia
 
Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
Angelo Failla
 
Inroduction to golang
Inroduction to golangInroduction to golang
Inroduction to golang
Yoni Davidson
 
EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4
Max Kleiner
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
David Barreto
 
Logging & Metrics with Docker
Logging & Metrics with DockerLogging & Metrics with Docker
Logging & Metrics with Docker
Stefan Zier
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 Overview
Lars Vogel
 

Similar to Eclipse Training - Main eclipse ecosystem classes (20)

Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
 
Eclipse Training - RCP & Industrialization
Eclipse Training - RCP & IndustrializationEclipse Training - RCP & Industrialization
Eclipse Training - RCP & Industrialization
 
Manage software dependencies with ioc and aop
Manage software dependencies with ioc and aopManage software dependencies with ioc and aop
Manage software dependencies with ioc and aop
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling Framework
 
Eclipse Training - Standard Extension Points and APIs
Eclipse Training - Standard Extension Points and APIsEclipse Training - Standard Extension Points and APIs
Eclipse Training - Standard Extension Points and APIs
 
PRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptxPRINCE PRESENTATION(1).pptx
PRINCE PRESENTATION(1).pptx
 
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript
 
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)
 
Docker practical solutions
Docker practical solutionsDocker practical solutions
Docker practical solutions
 
C++ Programming
C++ ProgrammingC++ Programming
C++ Programming
 
Activity 5
Activity 5Activity 5
Activity 5
 
adaptTo() 2014 - Integrating Open Source Search with CQ/AEM
adaptTo() 2014 - Integrating Open Source Search with CQ/AEMadaptTo() 2014 - Integrating Open Source Search with CQ/AEM
adaptTo() 2014 - Integrating Open Source Search with CQ/AEM
 
Gwt.create
Gwt.createGwt.create
Gwt.create
 
C++ Programming
C++ ProgrammingC++ Programming
C++ Programming
 
Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
 
Inroduction to golang
Inroduction to golangInroduction to golang
Inroduction to golang
 
EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
 
Logging & Metrics with Docker
Logging & Metrics with DockerLogging & Metrics with Docker
Logging & Metrics with Docker
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 Overview
 

Recently uploaded

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
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
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
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 

Recently uploaded (20)

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
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
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
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 

Eclipse Training - Main eclipse ecosystem classes

  • 1. Eclipse Plug-ins and RCP Training Course Main Eclipse ecosystem classes October 2013Copyright © 2013 Luca D’Onofrio – RCP Solutions 1
  • 2. 1. Runtime Platform Core & Runtime a) Plugin & Bundle classes b) Platform User Interface c) Logging 2. Resource Management 3. Jobs a) Progress monitoring b) Workspace operations Agenda 2 October 2013Copyright © 2013 Luca D’Onofrio – RCP Solutions
  • 3. ∗ The core component provides basic platform infrastructure that does not involve any UI. ∗ Main plug-ins: ∗ org.eclipse.core.contenttype - Support for defining and managing file content types ∗ org.eclipse.core.expressions - A generic XML-based expression language used in the markup of various extension points. ∗ org.eclipse.core.filesystem - A generic file system API ∗ org.eclipse.core.jobs - Infrastructure for concurrent programming in Eclipse ∗ org.eclipse.core.resources - Management of resources - projects, folders, and files ∗ org.eclipse.core.runtime - Formerly the foundation of the platform, this plug-in has largely been supplanted by the Equinox runtime ∗ Each plug-in provides a basic set of services, and API and extension points for managing and interacting with those services. ∗ The contents of resources are never examined in any domain-specific way and the Core can run equally well with and without a UI. ∗ Much of the function previously provided by core now falls under the Equinox OSGi project Platform Core & Runtime Copyright © 2013 Luca D’Onofrio – RCP Solutions 3 October 2013
  • 4. ∗ The central class of the Eclipse Platform Runtime. This class cannot be instantiated or subclassed by clients; all functionality is provided by static methods. ∗ The Platform defines the set of frameworks and common services that collectively make up infrastructure required to support the use of Eclipse as a component model, as a Rich Client Platform (RCP) and as a comprehensive tool integration platform. ∗ Features include: ∗ the platform registry of installed plug-ins ∗ the platform adapter manager ∗ the platform log ∗ the authorization info management Platform core Copyright © 2013 Luca D’Onofrio – RCP Solutions 4 class Platform runtime::Platform {leaf} + addAuthorizationInfo(URL, String, String, Map) : void + getAdapterManager() : IAdapterManager + getAuthorizationInfo(URL, String, String) : Map + getCommandLineArgs() : String[] + getDebugOption(String) : String + getLocation() : IPath + getPlugin(String) : Plugin + getPluginRegistry() : IPluginRegistry + resolve(URL) : URL + getJobManager() : IJobManager + getExtensionRegistry() : IExtensionRegistry + find(Bundle, IPath) : URL + find(Bundle, IPath, Map<String,String>) : URL + getLog(Bundle) : ILog + getOSArch() : String + getNL() : String + getNLExtensions() : String + getOS() : String + getWS() : String + getApplicationArgs() : String[] + getPlatformAdmin() : PlatformAdmin + getPreferencesService() : IPreferencesService + getProduct() : IProduct + getConfigurationLocation() : Location + getUserLocation() : Location + getInstallLocation() : Location + isFragment(Bundle) : boolean + getFragments(Bundle) : Bundle[] + getBundle(String) : Bundle + getBundles(String, String) : Bundle[] + isRunning() : boolean + inDebugMode() : boolean October 2013
  • 5. class PluginBundle runtime::Plugin + Plugin() + Plugin(IPluginDescriptor) + find(IPath) : URL + find(IPath, Map) : URL + getDescriptor() : IPluginDescriptor + getLog() : ILog + getStateLocation() : IPath + getPluginPreferences() : Preferences + savePluginPreferences() : void + internalInitializeDefaultPluginPreferences() : void + isDebugging() : boolean + openStream(IPath) : InputStream + openStream(IPath, boolean) : InputStream + setDebugging(boolean) : void + shutdown() : void + startup() : void + start(BundleContext) : void + stop(BundleContext) : void + getBundle() : Bundle Comparable «interface» framework::Bundle + UNINSTALLED: int = 0x00000001 + INSTALLED: int = 0x00000002 + RESOLVED: int = 0x00000004 + STARTING: int = 0x00000008 + STOPPING: int = 0x00000010 + ACTIVE: int = 0x00000020 + START_TRANSIENT: int = 0x00000001 + START_ACTIVATION_POLICY: int = 0x00000002 + STOP_TRANSIENT: int = 0x00000001 + SIGNERS_ALL: int = 1 + SIGNERS_TRUSTED: int = 2 + getState() : int + start(int) : void + start() : void + stop(int) : void + stop() : void + update(InputStream) : void + update() : void + uninstall() : void + getHeaders() : Dictionary<String, String> + getBundleId() : long + getLocation() : String + getRegisteredServices() : ServiceReference<?>[] + getServicesInUse() : ServiceReference<?>[] + hasPermission(Object) : boolean + getResource(String) : URL + getHeaders(String) : Dictionary<String, String> + getSymbolicName() : String + loadClass(String) : Class<?> + getResources(String) : Enumeration<URL> + getEntryPaths(String) : Enumeration<String> + getEntry(String) : URL + getLastModified() : long + findEntries(String, String, boolean) : Enumeration<URL> + getBundleContext() : BundleContext + getSignerCertificates(int) : Map<X509Certificate, List<X509Certificate>> + getVersion() : Version + adapt(Class<A>) : A + getDataFile(String) : File +bundle Plugin & Bundle classes Copyright © 2013 Luca D’Onofrio – RCP Solutions 5 October 2013
  • 6. ∗ Platform UI consists of several components, which provide the basic building blocks for user interfaces built with Eclipse. (Some of these can be reused in arbitrary applications, while others are specific to the Eclipse IDE). ∗ JFace and the Workbench can be used to build arbitrary applications, not just the Eclipse IDE. The Eclipse IDE is just one instance of an RCP application. ∗ JFace is a UI toolkit with classes for handling many common UI programming tasks. JFace is window-system-independent in both its API and implementation, and is designed to work with SWT without hiding it. JFace includes the usual UI toolkit components of image and font registries, text, dialog, preference and wizard frameworks, and progress reporting for long running operations. ∗ The Workbench provides the user interface structure for Eclipse. The purpose of the Workbench is to facilitate the seamless integration of tools. These tools contribute to extension points defined by the Workbench. Platform User Interface (1/2) Copyright © 2013 Luca D’Onofrio – RCP Solutions 6 October 2013
  • 7. ∗ The central class for access to the Eclipse Platform User Interface. This class cannot be instantiated; all functionality is provided by static methods. Features provided: ∗ Creation of the workbench. ∗ Access to the workbench. Platform User Interface (2/2) Copyright © 2013 Luca D’Onofrio – RCP Solutions 7 October 2013
  • 8. Logging Copyright © 2013 Luca D’Onofrio – RCP Solutions 8 October 2013
  • 9. ∗ The Eclipse File System (EFS) is an abstract file system API. It is used in the Eclipse platform to abstract away implementation details about what file system is used to store data in the workspace. ∗ EFS makes heavy use of Uniform Resource Identifiers, as defined by RFC 2396. ∗ Implementations: ∗ Local file system for resource management ∗ Remote System Explorer (SSH, FTP, …) ∗ FTP, ZIP, CVS, … Resource Management: EFS Copyright © 2013 Luca D’Onofrio – RCP Solutions 9 October 2013
  • 11. ∗ Copy / Move ∗ Create / Delete ∗ Exists ∗ Get Parent ∗ Get Location (IPath) ∗ Get Location (URI) ∗ Get Project ∗ Get Workspace ∗ Refresh ∗ Resource change listener management ∗ Markers management ∗ Persistent properties management ∗ Session properties management ∗ Find Marker Resources operations Copyright © 2013 Luca D’Onofrio – RCP Solutions 11 ∗ Resource type attribute ∗ FILE ∗ FOLDER ∗ PROJECT ∗ ROOT ∗ DERIVED ∗ LINKED ∗ Synchronized ∗ Local ∗ Hidden ∗ Read Only ∗ Refresh attributes ∗ DEPTH_ZERO, DEPTH_ONE, DEPTH_INFINITE October 2013
  • 12. ∗ Long-running operations should be executed in the background so that the UI stays responsive. One solution is to fork a lower-priority thread to perform the operation rather than performing the operation in the UI thread. ∗ Eclipse provides a Jobs API for creating, managing, and displaying background operations. ∗ Jobs: jobs are units of runnable work that can be scheduled to be run with the job manager. ∗ UIJobs: the UIJob is a Job that runs within the UI Thread via an asyncExec. Jobs Copyright © 2013 Luca D’Onofrio – RCP Solutions 12 October 2013
  • 13. ∗ The IProgressMonitor object can be used to report progress. ∗ beginTask() specifies the total units of work. For an undefined amount of work use IProgressMonitor .UNKNOWN ∗ worked() reports that a certain number of units of work have been finished. ∗ isCancelled() checks if the user send a job cancel request ∗ done() all the work has been complete (successfully or not) ∗ A monitor can have one ore more sub progress monitors. ∗ The run method of a Job provide returns a IStatus object to the caller: ∗ Status.CANCEL_STATUS ∗ Status.OK_STATUS Jobs: progress monitoring Copyright © 2013 Luca D’Onofrio – RCP Solutions 13 October 2013
  • 14. ∗ An operation which potentially makes changes to the workspace. ∗ All resource modification should be performed using this operation. ∗ The primary consequence of using this operation is that events which typically occur as a result of workspace changes are generally deferred until the outermost operation has successfully completed. ∗ If a scheduling rule is provided, the operation will obtain that scheduling rule for the duration of its execute method. If no scheduling rule is provided, the operation will obtain a scheduling rule that locks the entire workspace for the duration of the operation. Jobs: Workspace operations Copyright © 2013 Luca D’Onofrio – RCP Solutions 14 October 2013
  • 15. References Copyright © 2013 Luca D’Onofrio – RCP Solutions 15 ∗ www.eclipse.org ∗ help.eclipse.org ∗ wiki.eclipse.org ∗ Eclipse SDK update site ∗ http://download.eclipse.org/eclipse/updates/4.3 October 2013