Eclipse 4 Application Platform



Similar documents
e(fx)clipse - JavaFX Tooling and Runtime

e(fx)clipse - JavaFX Tooling and Runtime

e(fx)clipse - JavaFX Tooling and Runtime

e(fx)clipse - JavaFX Tooling

Eclipse 4 RCP application Development COURSE OUTLINE

E4 development: examples, methods and tools. Eclipse Con France 2014

Migration Eclipse 3 to Eclipse 4

Eclipse Rich Client Platform. Kai Tödter Karsten Becker et al. Organized by:

Developing Eclipse Plug-ins* Learning Objectives. Any Eclipse product is composed of plug-ins

Gyrex 0.10 Release Review

Java-based web-apps with the Rich Ajax Platform (RAP)

Web Development with the Eclipse Platform

Desktop, Web and Mobile: Learn one get two for free

Duke University Program Design & Construction Course

HP AppPulse Mobile. Adding HP AppPulse Mobile to Your Android App

Android App Development. Rameel Sethi

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

Measuring The End-to-End Value Of Your App. Neil Rhodes: Tech Lead, Mobile Analytics Nick Mihailovski: Developer Programs Engineer

Getting started with Android and App Engine

Aspect Weaving for OSGi. Martin Lippert (akquinet it-agile GmbH)

Best Practices for Programming Eclipse and OSGi

Showcase: GDF SUITE Management Center. Feb. 4 th 2004 Dr. Frank Gerhardt, Chris Wege

Smalltalk in Enterprise Applications. ESUG Conference 2010 Barcelona

Eclipse. Software Engineering with an Integrated Development Environment (IDE) Markus Scheidgen

Objective C and iphone App

Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID

Take full advantage of IBM s IDEs for end- to- end mobile development

Developing for MSI Android Devices

Modernizing Simulation Input Generation and Post-Simulation Data Visualization with Eclipse ICE

Web Tools Platform (WTP) 3.5

How To Write An Ria Application

Eclipse Scout. Eclipse Scout in the Banking Industry

Rich Client Application Development

Introduction to Eclipse, Creating Eclipse plug-ins and the Overture editor. David Holst Møller Engineering College of Aarhus

MMI 2: Mobile Human- Computer Interaction Android

An Eclipse based GUI for Scilab. Yves Neisius December 13, 2007

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

Eclipse Exam Scripting

Equinox Framework: A Happier OSGi R6 Implementation

l What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc)

ID TECH UniMag Android SDK User Manual

Mobile Application Development

Android Development. Marc Mc Loughlin

Eclipse Distilled: A Quick Start to Agile Development

Chapter 2 Getting Started

HybriDroid: Analysis Framework for Android Hybrid Applications

SPRING INTERVIEW QUESTIONS

Paul Boisvert. Director Product Management, Magento

Android Development. 吳 俊 興 國 立 高 雄 大 學 資 訊 工 程 學 系

Java VM monitoring and the Health Center API. William Smith

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android


How to Write AllSeen Alliance Self- Certification Test Cases September 25, 2014

Equinox above the Cloud ( - Some call it Heaven!!)

SAP's Integrated Development Environment for Java. Karl Kessler, SAP AG

How To Write A File Station In Android.Com (For Free) On A Microsoft Macbook Or Ipad (For A Limited Time) On An Ubuntu 8.1 (For Ubuntu) On Your Computer Or Ipa (For

Selenium Automation set up with TestNG and Eclipse- A Beginners Guide

Technical Conception and Implementation of a Configurator Environment for Processaware Questionnaires Based on the Eclipse Rich Client Platform

Embedded Device Solution Life Cycle Support with Eclipse

Supporting Multi-tenancy Applications with Java EE

Whitepaper. Rich Internet Applications. Frameworks Evaluation. Document reference: TSL-SES-WP0001 Januar

Eclipse Platform Technical Overview

Implementation of ULC Visual Editor for Eclipse

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

Eclipse-based Applications: Java on the Desktop Revisited


GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

SAP Mobile Platform Intro

Android Development Exercises Version Hands On Exercises for. Android Development. v

Eclipse Open Financial Market Platform Creation Review

Installing IBM WDT with Web Development Extension for Power Systems Software

Using Eclipse CDT/PTP for Static Analysis

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation

OpenCV on Android Platforms

ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM

Automating the Development of Information Systems with the MOSKitt Open Source Tool

A10 Writing Your First Application

Metamodels and Modeling Multiple Kinds of Information Systems

Android Studio Application Development

CommentTemplate: A Lightweight Code Generator for Java built with Eclipse Modeling Technology

Android Development Setup [Revision Date: 02/16/11]

Module 13 Implementing Java EE Web Services with JAX-WS

Dr. Dimitar Valtchev. 24 June 2010, Stuttgart, Eclipse Embedded Day

Next Generation ETS Software A preview of the upcoming new ETS5 system & user enhancements. KNX Association, Brussels André Hänel

OSGi Remote Management

Web Development in Java

Cross-Platform ASP.NET 5 For the Cloud. Anthony Sneed

Android Development. Lecture AD 0 Android SDK & Development Environment. Università degli Studi di Parma. Mobile Application Development

Code Quality on Magento

WA 2. GWT Martin Klíma

01. Introduction of Android

Using Intel C++ Compiler in Eclipse* for Embedded Linux* targets

EMC Documentum Composer

IBM Tealeaf CX Mobile Android Logging Framework Version 9 Release 0.1 December 4, IBM Tealeaf CX Mobile Android Logging Framework Guide

ANDROID APP DEVELOPMENT: AN INTRODUCTION CSCI /19/14 HANNAH MILLER

Mobile Application Development Android

POINT-TO-POINT vs. MEAP THE RIGHT APPROACH FOR AN INTEGRATED MOBILITY SOLUTION

Eclipse Summit Europe 2008

zen Platform technical white paper

With a single download, the ADT Bundle includes everything you need to begin developing apps:

Transcription:

Eclipse 4 Application Platform Tom Schindl - BestSolution Systemhaus GmbH EclipseCon March 2012

About Tom CEO BestSolution Systemhaus GmbH Eclipse Committer e4 Platform UI EMF Projectlead: UFaceKit, Nebula Member of the Architectual Council

A bit of history (and future)

A bit of history (and future) EclipseCon `08: Announcement of e4-project

A bit of history (and future) EclipseCon `08: Announcement of e4-project End of May `08: Boris Bokowski and Tom Schindl publish a prototype of a new Eclipse 4 Platform in an mail named A radical approach to explore new paths for e4

A bit of history (and future) EclipseCon `08: Announcement of e4-project End of May `08: Boris Bokowski and Tom Schindl publish a prototype of a new Eclipse 4 Platform in an mail named A radical approach to explore new paths for e4 Summer `09: e4 0.9 published as a tech preview

A bit of history (and future) EclipseCon `08: Announcement of e4-project End of May `08: Boris Bokowski and Tom Schindl publish a prototype of a new Eclipse 4 Platform in an mail named A radical approach to explore new paths for e4 Summer `09: e4 0.9 published as a tech preview Summer `10: Eclipse 4.0 SDK published as a developer preview

A bit of history (and future) EclipseCon `08: Announcement of e4-project End of May `08: Boris Bokowski and Tom Schindl publish a prototype of a new Eclipse 4 Platform in an mail named A radical approach to explore new paths for e4 Summer `09: e4 0.9 published as a tech preview Summer `10: Eclipse 4.0 SDK published as a developer preview Summer `11 (as part of Indigo): Eclipse 4.1 SDK published

A bit of history (and future) EclipseCon `08: Announcement of e4-project End of May `08: Boris Bokowski and Tom Schindl publish a prototype of a new Eclipse 4 Platform in an mail named A radical approach to explore new paths for e4 Summer `09: e4 0.9 published as a tech preview Summer `10: Eclipse 4.0 SDK published as a developer preview Summer `11 (as part of Indigo): Eclipse 4.1 SDK published Summer `12: Juno release train will ship on Eclipse 4.2 SDK

Eclipse SDK 3.x vs 4.x Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x PDE JDT Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x PDE JDT Platform 3.x Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x PDE JDT Platform 3.x Equinox Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x PDE JDT Platform 3.x Equinox PDE JDT Platform 4.x Equinox Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x PDE PDE JDT Platform 3.x Equinox JDT Platform 4.x Eclipse 4.x Application Platform (RCP 2.0) Equinox Eclipse 3.x Eclipse 4.x

Eclipse SDK 3.x vs 4.x Platform 3.x Platform 4.x jface core.resources... jface core.resources... ui.workbench 4.x ui.workbench 3.x Eclipse 4 Application Platform

Eclipse 4.1 Application Platform

Eclipse 4.1 Application Platform EMF Framework Eclipse 4 Application Platform OSGi (Equinox) JRE

Eclipse 4.1 Application Platform Services DI-Container Workbench Model EMF Framework Eclipse 4 Application Platform OSGi (Equinox) JRE

Eclipse 4.1 Application Platform App SWT-UI Core-Business-Logic Framework EAP-SWT Services DI-Container Workbench Model Eclipse 4 Application Platform OSGi (Equinox) JRE EMF

Dependency Injection public class MyPart { void createpartcontrol(composite parent) { void selchanged(object value) { void dispose() { void setfocus() {

Dependency Injection public class MyPart { @PostConstruct void createpartcontrol(composite parent) { @Inject void selchanged(@named("selection") @Optional Object value) { @PreDestroy void dispose() { @Focus void setfocus() {

Dependency Injection public class PartRenderer { public void createcontrib(composite c, IEclipseContext ctx) throws Exception { ctx.set("org.eclipse.swt.widgets.composite",s); MyPart part = ContextInjectionFactory.make(MyPart.class, ctx);

Dependency Injection

Dependency Injection What is subject of injection

Dependency Injection What is subject of injection All objects stored in the IEclipseContext-Hierarchy

Dependency Injection What is subject of injection All objects stored in the IEclipseContext-Hierarchy All Preferences

Dependency Injection What is subject of injection All objects stored in the IEclipseContext-Hierarchy All Preferences All objects stored in the OSGi-Service-Registry

IEclipseContext

IEclipseContext Application-Context

IEclipseContext Application-Context Window-Context

IEclipseContext Application-Context PerspectiveContext Window-Context

IEclipseContext PartContext PartContext Application-Context PerspectiveContext Window-Context

Application-Model

Workbench-Model Holds the whole application information It s a live model (similar to the Browser-DOM) One can interact with it Acts as the glue between the structure and your custom Java-Code

2 typical problems in RCP Native Resource sharing / managing Support locales in your application NLS ResourceBundle

Resource management and sharing public class ModelEditor { @PostConstruct public void createpartcontrol(composite composite) { Label l = new Label(composite, SWT.NONE); l.setimage( Activator.imageDescriptorFromPlugin( Activator.PLUGIN_ID, "/resource/myimage.png").createimage() );

Resource management and sharing public class ModelEditor { @Inject private final IResourcePool resourcepool; @PostConstruct void createpartcontrol(composite composite) { Label l = new Label(composite, SWT.NONE); l.setimage(resourcepool.getimageunchecked("myimage"));

Resource management and sharing Application Resource Pool myimage: 2 Local Resource Pool Local Resource Pool get( myimage ) get( myimage ) MyFirstPart MySecondPart

Resource management and sharing Application Resource Pool myimage: 1 Local Resource Pool get( myimage ) MyFirstPart

Resource management and sharing Application Resource Pool myimage: 0

Context Functions Allows to lazily create the injection instance Contributed as an OSGi-Service <?xml version="1.0" encoding="utf-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.e4.tools.services.resourcepoolfactory"> <implementation class="org.eclipse.e4.tools.services.impl.resourcepoolfactory"/> <service> <provide interface="org.eclipse.e4.core.contexts.icontextfunction"/> </service> <property name="service.context.key" type="string" value="org.eclipse.e4.tools.services.iresourcepool"/> </scr:component>

Context Functions public class ResourcePoolFactory extends ContextFunction { @Override public Object compute(ieclipsecontext context) { return ContextInjectionFactory.make(ResourcePool.class, context);

Context Functions class ResourcePool implements IResourcePool { public Image getimage(string key) { // load image or increment refcount @PreDestroy public void dispose() { // decrease refcount of images loaded

Locale Support public class Messages { public static String MyLabel; NLS.initializeMessages(Messages.class.getName(), Messages.class); public class ModelEditor { @PostConstruct public void createpartcontrol(composite composite) { Label l = new Label(composite, SWT.NONE); l.settext(messages.mylabel);

Locale Support public class Messages { public String MyLabel; public class ModelEditor { @Inject @Translation Messages Messages; @PostConstruct public void createpartcontrol(composite composite) { Label l = new Label(composite, SWT.NONE); l.settext(messages.mylabel);

Create your own annotations @javax.inject.qualifier @Documented @Target({ElementType.FIELD, ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface Translation {

Teach Eclipse DI the new annotation Contributed through DS <?xml version="1.0" encoding="utf-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.e4.tools.services.translationsupplier"> <implementation class="org.eclipse.e4.tools.services.impl.translationobjectsupplier"/> <service> <provide interface="org.eclipse.e4.core.di.suppliers.extendedobjectsupplier"/> </service> <property name="dependency.injection.annotation" type="string" value="org.eclipse.e4.tools.services.translation"/> </scr:component>

The object supplier public class TranslationObjectSupplier extends ExtendedObjectSupplier { @Override public Object get(iobjectdescriptor descriptor, IRequestor requestor, boolean track, boolean group) {

Eclipse 4.1 Application Platform Support for locales in Application Model Translations are implement as a decoration which at least in theory supports dynamic language switching MMenu label: %menu.file Rendering Engine SWT-Menu text: File TranslationService

Eclipse 4.1 Application Platform Support for locales in Application Model Translations are implement as a decoration which at least in theory supports dynamic language switching MMenu label: %menu.file Rendering Engine SWT-Menu text: File GoogleTranslationService

Resources My blog: http://tomsondev.bestsolution.at e4-wiki: http://wiki.eclipse.org/e4 e4-newsgroup: eclipse.e4 e4-mailinglist: e4-dev@eclipse.org Twitter: @tomsontom