SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Eclipse, OSGi and API Tooling




                                                                   Chris Aniszczyk (EclipseSource)
                                                                            zx@eclipsesource.com
                                                                           http://eclipsesource.com




1
1       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Who am I?
    • Chris Aniszczyk
         Senior Software Engineer at EclipseSource
         Plug-in Development Environment (PDE) Co-Lead
         Been doing OSGi before it was en vogue
         Committer Representative on Eclipse’s Board of Directors
         Co-author Eclipse RCP Book 2nd Edition
         I dabble with many things at Eclipse.org
    • My blog
       http://aniszczyk.org
    • Follow me on Twitter
       http://twitter.com/caniszczyk


2
2          Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Overview
    • The need for tooling
    • Tooling features
    • Tooling in action!
    • Future work
    • Summary
    • Q&A




3
2        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
The need for tooling

    Remember Kirk’s gigantic Modularity diagram?




4
3    Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Define API
    • APIs are published contracts
       Producers specify the contracts
           Honor contracts release after release
           Evolve the contracts for enhancements and fix problems
       Consumers adhere to the contracts
           Implement the contracts per specification
           Use provided implementations per contract specifications




5
4        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
The Ideal Release Equation

     Developer: Compatibility (producer)

                                                                 +

                     Client: Honor API contract (consumer)

                                                                 =

                                              Free migration!!!




6
5       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
The Ideal Never Happens...

                   Developer: (features + deprecation +
                  Optional extensions to existing features +
                            Replacement API +
                              Provisional API)

                                                                 +

                            Client: Illegal internal references

                                                                 =

                                            Migration at a cost

7
6       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
What have we done as developers?
    • We use Javadoc™ to document contracts
        This class is not intended to be instantiated or subclassed by
         clients.
        Has no effect if not read
        Inconsistent wording, placement, and use
    • Use component.xml to specify APIs (at Eclipse.org)
        Out of date, not maintained
        Why? Because there’s no tooling and it’s separate from the code
    • We use package names to categorize as public/internal, but all
      packages are exported
    • We use OSGi package exports (x-internal and x-friends)
      to limit visibility, but does not prevent access to internal types
    • We use Eclipse’s access rules to discourage use, but this can
      be turned off

8
7         Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
More things we do…
    • Manually examine API changes or use some external
      tool before a release (aka the API Police)
       Changes between releases can be significant
       Validation is time consuming and error prone
       Lost development time (due to checking and bugs found)




9
8       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
And we still fail...




10
 9        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
And we still fail...
     • At Eclipse, we have had issues with projects
       unintentionally breaking API...
     • Outside of Eclipse, it highly varies...
        “Commons collections 3.0 is binary compatible with version
         2.1 and 2.0 except for certain methods on one class. As the
         release was a major version, this is permitted, however it
         was unintentional and an error... the chosen solution is to
         provide a work around by releasing v2.1.1 and v3.1.”


     • Surely you’ve come across API issues, right?



11
10        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Disclaimer
     • This presentation isn’t about API design

     • API design is still your problem
         Designing quality APIs is tough
         Ensuring consistent behavior
         Evolving APIs is tricky




     • But there are things that tooling can help with…

12
11        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Good fences...




     • Check out some of Joshua Bloch’s presentations
       around API (How to Design API and Why it Matters)
       and some of the EclipseCon API design
       presentations...
13
12        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling Features




14
13   Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling to the Rescue!
     • Reports
           Illegal API use
           Binary incompatibility relative to a baseline
           Incorrect bundle version numbers
           Missing or malformed @since tags
           Leakage of non-APIs types inside APIs
           Execution Environment validation
     • Tightly integrated toolset in the Eclipse SDK
         Currently limited to Plug-in projects/OSGi bundles
         Runs as a builder (auto-build, incremental and full builds)
         Immediate feedback as you develop and use APIs


15
14          Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Specifying API Contracts
     • Use Javadoc tags
         E.g. @noimplement, @noextend, @noreference, @noinstantiate


     • Benefits
         Contracts live with the code for producers and consumers
         Content assist helps developers
         Available for projects that are not using 1.5 annotations
         Restrictions appear in published Javadoc APIs in a standard
          way
         Tools can process tags




16
15          Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling Javadoc Tags




17
16       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Example of Published API




18
17       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Usage
     • Once the APIs are specified, the user needs to make
       sure that he/she is using them appropriately.
     • API usage is flagging any kind of illegal usage of API:
       reference to an API that is not supposed to be
       referenced, implementation of an interface that is not
       supposed to be implemented, ….
     • A consequence of wrong API usage is a potential
       binary incompatible change error.




19
18        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Why API Usage Scans?
     API producers can see what internals are being used
     •   Inform clients how to use proper API
     •   Determine what new API needs to be added
     •   Know what clients will be broken
     •   Avoid breaking internals until clients have migrated




20
19         Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Validating Binary Compatibility
     • Evolving APIs such that they are backwards
       compatible with existing binaries
        http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs
        It is easy to get it wrong
        Now the tooling takes care of this


     • The user simply specifies an API baseline
        Generally this means pointing to the previous release (N – 1)




21
20        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Comparisons
     • What’s changed between versions?




22
21       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
System Library Validation
     • Validate system library use based on a bundle’s
       required execution environment (BREE)
        if a bundle claims to run on J2SE-1.4, access to members in
         J2SE-1.5 and higher are flagged as illegal
        See OSGi Specification on Execution Environments




23
22        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Migration Assistance
     • “What will be broken if I move to a new version?”
     • “Will my plug-in still run on an older target version?”
     • We simply re-resolve the references against X, with
       the code in X+1
     • Of course you can get the same information if you
       compile, but that requires more setup...




24
23        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Bundle version number management
     • http://wiki.eclipse.org/index.php/Version_Numbering
     • The tooling takes care of letting the user know when
       the minor or major version of a bundle should be
       changed according to rules described in the
       document:
         A new API that is not a breaking change requires the minor
          version to be incremented
         A new API that is a breaking change requires the major
          version to be incremented
     • No support for the micro version yet...
         Technically speaking, this version should be changed as
          soon as any modification is made in the source code:
          comment change, method body change,…
25
24        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
OSGi Versioning 101
     • major.minor.micro.qualifier
          major - An incompatible update; breaking API
          minor - A backward compatible update; API stable
          micro - A bug fix
          qualifier - build date; lexicographic


     • Versions should encode compatibility at the bundle
       and package level... aid in evolution...

     • They aren’t a marketing number!


26
25          Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling in Action (example of bug 191231/191232)




27
25         Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2008 EclipseSource
API Tooling in Action (API Usage Report)




28
26        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling in Action (System Library Validation)




29
29         Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling in Action (API Comparison)




30
30        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling Parts




31
31   Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Profile and API Components
     • These are the two major pieces used by the API
       tooling tools to make diagnosis on the code
     • An API profile can be seen like a PDE target platform
     • An API profile is a collection of API components
     • It is initialized using an Eclipse SDK installation
       plugins directory (or some other directory of bundles)
     • Inside the IDE, a profile corresponding to the
       workbench contents is automatically created




32
32        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Description
     • This contains the specific restrictions for all the API
       types of an API component
     • It is kept up-to-date inside the workbench by using
       resource listeners
     • It is exported inside the binary bundles or generated at
       build time using an ant task.




33
33        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Filtering of API Problems
     • Each component can define a problem filter
     • The filtering can be used to remove from reports
       known breakages.
     • For example, an API breakage has been approved by
       the PMC and you don’t want to get it reported for each
       build.
     • The problem filter is also part of the binary plug-in




34
34        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Two aspects: IDE and build process
     • Each feature is available from within the IDE or inside
       a headless build process via Ant tasks
     • The IDE support is required to help the Eclipse
       developer while the code is written
     • The build process support is required to provide
       feedback during the Eclipse build. This also allows
       other projects to use it inside their builds.




35
35        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Build support
     • Addition of new ant tasks:
         Generation of .api_description file
         Comparison of SDK drops: binary compatibility, api usage
          reports
     • Integration inside the Eclipse builds (headless mode)
     • Integration inside ant build (no Eclipse running)




36
22        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Error/Warning Preferences




37
37       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Setup Wizard




38
38       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Profile (Baseline) Preferences




39
39       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Profile (Baseline) Wizard




40
40       Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Future work




41
41   Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
To be done...
     • Handling of package level versioning
     • Support extended to support more than just bundles
         Pure Java™ projects
         Plug-in extension points
     • Improve integration with Eclipse rel-eng build reporting
     • Determine compatible version range of required bundles

     • And what you might suggest...




42
42         Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Summary




43
43   Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
API Tooling Summary
     • Help you to define your API restrictions
     • Keep a consistent and standard presentation of API
       restrictions
     • Detect binary breakage between a baseline and the
       current version
     • Detect wrong API usage
     • Detect wrong @since tags and inconsistent bundle
       versioning
     • Detect Execution Environment problems...
     • Supports more than just Eclipse (hi OSGi folks)!

44
44        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Links
     • Wiki
         http://wiki.eclipse.org/Api_Tooling

     • Bugzilla
         https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE


     • Get Involved
        https://dev.eclipse.org/mailman/listinfo/pde-dev




45
45        Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
Q & A

46
46   Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource

Weitere ähnliche Inhalte

Was ist angesagt?

Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
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
 
Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Florent BENOIT
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Gilang Mentari Hamidy
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppRyo Jin
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learnedrajeevdayal
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Ajeet Singh Raina
 
Getting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserGetting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserZeroTurnaround
 
Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenPascal Rapicault
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsJohn M. Wargo
 
Working effectively with OpenShift
Working effectively with OpenShiftWorking effectively with OpenShift
Working effectively with OpenShiftShekhar Gulati
 
.NET Online TechTalk “Azure Cloud for DEV”
.NET Online TechTalk “Azure Cloud for DEV”.NET Online TechTalk “Azure Cloud for DEV”
.NET Online TechTalk “Azure Cloud for DEV”GlobalLogic Ukraine
 
Developing Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaDeveloping Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaShekhar Gulati
 
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
 
MicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices ArchitectureMicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices Architecturejclingan
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with AppceleratorMatt Raible
 
Running Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesRunning Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesVMware Tanzu
 
A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...CollabNet
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceAll Things Open
 

Was ist angesagt? (20)

Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
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
 
Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014
 
Cloud Collaboration with Eclipse Che
Cloud Collaboration with Eclipse CheCloud Collaboration with Eclipse Che
Cloud Collaboration with Eclipse Che
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
 
Getting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserGetting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse User
 
Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with Maven
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
Working effectively with OpenShift
Working effectively with OpenShiftWorking effectively with OpenShift
Working effectively with OpenShift
 
.NET Online TechTalk “Azure Cloud for DEV”
.NET Online TechTalk “Azure Cloud for DEV”.NET Online TechTalk “Azure Cloud for DEV”
.NET Online TechTalk “Azure Cloud for DEV”
 
Developing Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaDeveloping Great Apps with Apache Cordova
Developing Great Apps with Apache Cordova
 
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)
 
MicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices ArchitectureMicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices Architecture
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
 
Running Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesRunning Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native Images
 
A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
 

Andere mochten auch

Eclipse Extensions Vs OSGI Services Tikal@ EclipseDemoCamps Tel Aviv
Eclipse Extensions Vs OSGI Services   Tikal@ EclipseDemoCamps Tel AvivEclipse Extensions Vs OSGI Services   Tikal@ EclipseDemoCamps Tel Aviv
Eclipse Extensions Vs OSGI Services Tikal@ EclipseDemoCamps Tel Avivguestb69b980e
 
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBMOSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBMmfrancis
 
Intro to OSGi and Eclipse Virgo
Intro to OSGi and Eclipse VirgoIntro to OSGi and Eclipse Virgo
Intro to OSGi and Eclipse VirgoGordon Dickens
 
Eclipse e4 Tutorial - EclipseCon 2010
Eclipse e4 Tutorial - EclipseCon 2010Eclipse e4 Tutorial - EclipseCon 2010
Eclipse e4 Tutorial - EclipseCon 2010Lars Vogel
 
OSGi For Eclipse Developers
OSGi For Eclipse DevelopersOSGi For Eclipse Developers
OSGi For Eclipse DevelopersChris Aniszczyk
 
OSGi and Eclipse RCP
OSGi and Eclipse RCPOSGi and Eclipse RCP
OSGi and Eclipse RCPEric Jain
 
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!Noopur Gupta
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)mikaelbarbero
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with DataSeth Familian
 

Andere mochten auch (10)

Eclipse Extensions Vs OSGI Services Tikal@ EclipseDemoCamps Tel Aviv
Eclipse Extensions Vs OSGI Services   Tikal@ EclipseDemoCamps Tel AvivEclipse Extensions Vs OSGI Services   Tikal@ EclipseDemoCamps Tel Aviv
Eclipse Extensions Vs OSGI Services Tikal@ EclipseDemoCamps Tel Aviv
 
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBMOSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
 
Intro to OSGi and Eclipse Virgo
Intro to OSGi and Eclipse VirgoIntro to OSGi and Eclipse Virgo
Intro to OSGi and Eclipse Virgo
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Eclipse e4 Tutorial - EclipseCon 2010
Eclipse e4 Tutorial - EclipseCon 2010Eclipse e4 Tutorial - EclipseCon 2010
Eclipse e4 Tutorial - EclipseCon 2010
 
OSGi For Eclipse Developers
OSGi For Eclipse DevelopersOSGi For Eclipse Developers
OSGi For Eclipse Developers
 
OSGi and Eclipse RCP
OSGi and Eclipse RCPOSGi and Eclipse RCP
OSGi and Eclipse RCP
 
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!
Mastering your Eclipse IDE - Tips, Tricks, Java 8 tooling & More!
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Ähnlich wie OSGi, Eclipse and API Tooling

Who Took The Cookie From The Cookie Jar?
Who Took The Cookie From The Cookie Jar?Who Took The Cookie From The Cookie Jar?
Who Took The Cookie From The Cookie Jar?Olivier Thomann
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixMarcel Offermans
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinarLibbySchulze
 
API Contract as Code: Rapid Development with OpenAPI
API Contract as Code: Rapid Development with OpenAPIAPI Contract as Code: Rapid Development with OpenAPI
API Contract as Code: Rapid Development with OpenAPISmartBear
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012Steven Pousty
 
OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17Phil Wilkins
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - IntroductionLuca D'Onofrio
 
EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)moberhuber
 
DemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionDemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionÁkos Horváth
 
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...mfrancis
 
Evolution and History of Angular as Web Development Platform.pdf
Evolution and History of Angular as Web Development Platform.pdfEvolution and History of Angular as Web Development Platform.pdf
Evolution and History of Angular as Web Development Platform.pdfiFour Technolab Pvt. Ltd.
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersCisco DevNet
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterAmazon Web Services
 
Getting started with the Ionic Framework
Getting started with the Ionic FrameworkGetting started with the Ionic Framework
Getting started with the Ionic FrameworkAnuradha Weeraman
 
SRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterSRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterAmazon Web Services
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoAmazon Web Services
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesRich Mills
 

Ähnlich wie OSGi, Eclipse and API Tooling (20)

API Tooling in Eclipse
API Tooling in EclipseAPI Tooling in Eclipse
API Tooling in Eclipse
 
Who Took The Cookie From The Cookie Jar?
Who Took The Cookie From The Cookie Jar?Who Took The Cookie From The Cookie Jar?
Who Took The Cookie From The Cookie Jar?
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
API Contract as Code: Rapid Development with OpenAPI
API Contract as Code: Rapid Development with OpenAPIAPI Contract as Code: Rapid Development with OpenAPI
API Contract as Code: Rapid Development with OpenAPI
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012
 
Appium.pptx
Appium.pptxAppium.pptx
Appium.pptx
 
OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17OracleDeveloperMeetup - London 19-12-17
OracleDeveloperMeetup - London 19-12-17
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - Introduction
 
EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)
 
DemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionDemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - Introdcution
 
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...
Keynote - Eclipse - Accelerating OSGi Adoption - Mike Milinkovich, Executive ...
 
Evolution and History of Angular as Web Development Platform.pdf
Evolution and History of Angular as Web Development Platform.pdfEvolution and History of Angular as Web Development Platform.pdf
Evolution and History of Angular as Web Development Platform.pdf
 
Ng spain
Ng spainNg spain
Ng spain
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
Getting started with the Ionic Framework
Getting started with the Ionic FrameworkGetting started with the Ionic Framework
Getting started with the Ionic Framework
 
SRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterSRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver Faster
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San Francisco
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in Microservices
 

Mehr von Chris Aniszczyk

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationChris Aniszczyk
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Chris Aniszczyk
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative UpdateChris Aniszczyk
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Chris Aniszczyk
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source ProgramsChris Aniszczyk
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsChris Aniszczyk
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupChris Aniszczyk
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open SourceChris Aniszczyk
 
Life at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsLife at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsChris Aniszczyk
 
Creating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterCreating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterChris Aniszczyk
 
The Open Source... Behind the Tweets
The Open Source... Behind the TweetsThe Open Source... Behind the Tweets
The Open Source... Behind the TweetsChris Aniszczyk
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Chris Aniszczyk
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter StackChris Aniszczyk
 
Open Source Craft at Twitter
Open Source Craft at TwitterOpen Source Craft at Twitter
Open Source Craft at TwitterChris Aniszczyk
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at TwitterChris Aniszczyk
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonChris Aniszczyk
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with EclipseChris Aniszczyk
 
Evolution of Version Control In Open Source
Evolution of Version Control In Open SourceEvolution of Version Control In Open Source
Evolution of Version Control In Open SourceChris Aniszczyk
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseChris Aniszczyk
 

Mehr von Chris Aniszczyk (20)

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux Foundation
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative Update
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source Programs
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 months
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO Group
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open Source
 
Life at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsLife at Twitter + Career Advice for Students
Life at Twitter + Career Advice for Students
 
Creating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterCreating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from Twitter
 
The Open Source... Behind the Tweets
The Open Source... Behind the TweetsThe Open Source... Behind the Tweets
The Open Source... Behind the Tweets
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter Stack
 
Open Source Craft at Twitter
Open Source Craft at TwitterOpen Source Craft at Twitter
Open Source Craft at Twitter
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at Twitter
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
 
Evolution of Version Control In Open Source
Evolution of Version Control In Open SourceEvolution of Version Control In Open Source
Evolution of Version Control In Open Source
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in Eclipse
 
SWTBot Tutorial
SWTBot TutorialSWTBot Tutorial
SWTBot Tutorial
 

Kürzlich hochgeladen

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

OSGi, Eclipse and API Tooling

  • 1. Eclipse, OSGi and API Tooling Chris Aniszczyk (EclipseSource) zx@eclipsesource.com http://eclipsesource.com 1 1 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 2. Who am I? • Chris Aniszczyk  Senior Software Engineer at EclipseSource  Plug-in Development Environment (PDE) Co-Lead  Been doing OSGi before it was en vogue  Committer Representative on Eclipse’s Board of Directors  Co-author Eclipse RCP Book 2nd Edition  I dabble with many things at Eclipse.org • My blog  http://aniszczyk.org • Follow me on Twitter  http://twitter.com/caniszczyk 2 2 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 3. Overview • The need for tooling • Tooling features • Tooling in action! • Future work • Summary • Q&A 3 2 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 4. The need for tooling Remember Kirk’s gigantic Modularity diagram? 4 3 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 5. Define API • APIs are published contracts  Producers specify the contracts  Honor contracts release after release  Evolve the contracts for enhancements and fix problems  Consumers adhere to the contracts  Implement the contracts per specification  Use provided implementations per contract specifications 5 4 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 6. The Ideal Release Equation Developer: Compatibility (producer) + Client: Honor API contract (consumer) = Free migration!!! 6 5 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 7. The Ideal Never Happens... Developer: (features + deprecation + Optional extensions to existing features + Replacement API + Provisional API) + Client: Illegal internal references = Migration at a cost 7 6 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 8. What have we done as developers? • We use Javadoc™ to document contracts  This class is not intended to be instantiated or subclassed by clients.  Has no effect if not read  Inconsistent wording, placement, and use • Use component.xml to specify APIs (at Eclipse.org)  Out of date, not maintained  Why? Because there’s no tooling and it’s separate from the code • We use package names to categorize as public/internal, but all packages are exported • We use OSGi package exports (x-internal and x-friends) to limit visibility, but does not prevent access to internal types • We use Eclipse’s access rules to discourage use, but this can be turned off 8 7 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 9. More things we do… • Manually examine API changes or use some external tool before a release (aka the API Police)  Changes between releases can be significant  Validation is time consuming and error prone  Lost development time (due to checking and bugs found) 9 8 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 10. And we still fail... 10 9 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 11. And we still fail... • At Eclipse, we have had issues with projects unintentionally breaking API... • Outside of Eclipse, it highly varies...  “Commons collections 3.0 is binary compatible with version 2.1 and 2.0 except for certain methods on one class. As the release was a major version, this is permitted, however it was unintentional and an error... the chosen solution is to provide a work around by releasing v2.1.1 and v3.1.” • Surely you’ve come across API issues, right? 11 10 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 12. Disclaimer • This presentation isn’t about API design • API design is still your problem  Designing quality APIs is tough  Ensuring consistent behavior  Evolving APIs is tricky • But there are things that tooling can help with… 12 11 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 13. Good fences... • Check out some of Joshua Bloch’s presentations around API (How to Design API and Why it Matters) and some of the EclipseCon API design presentations... 13 12 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 14. API Tooling Features 14 13 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 15. API Tooling to the Rescue! • Reports  Illegal API use  Binary incompatibility relative to a baseline  Incorrect bundle version numbers  Missing or malformed @since tags  Leakage of non-APIs types inside APIs  Execution Environment validation • Tightly integrated toolset in the Eclipse SDK  Currently limited to Plug-in projects/OSGi bundles  Runs as a builder (auto-build, incremental and full builds)  Immediate feedback as you develop and use APIs 15 14 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 16. Specifying API Contracts • Use Javadoc tags  E.g. @noimplement, @noextend, @noreference, @noinstantiate • Benefits  Contracts live with the code for producers and consumers  Content assist helps developers  Available for projects that are not using 1.5 annotations  Restrictions appear in published Javadoc APIs in a standard way  Tools can process tags 16 15 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 17. API Tooling Javadoc Tags 17 16 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 18. Example of Published API 18 17 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 19. API Usage • Once the APIs are specified, the user needs to make sure that he/she is using them appropriately. • API usage is flagging any kind of illegal usage of API: reference to an API that is not supposed to be referenced, implementation of an interface that is not supposed to be implemented, …. • A consequence of wrong API usage is a potential binary incompatible change error. 19 18 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 20. Why API Usage Scans? API producers can see what internals are being used • Inform clients how to use proper API • Determine what new API needs to be added • Know what clients will be broken • Avoid breaking internals until clients have migrated 20 19 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 21. Validating Binary Compatibility • Evolving APIs such that they are backwards compatible with existing binaries  http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs  It is easy to get it wrong  Now the tooling takes care of this • The user simply specifies an API baseline  Generally this means pointing to the previous release (N – 1) 21 20 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 22. API Comparisons • What’s changed between versions? 22 21 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 23. System Library Validation • Validate system library use based on a bundle’s required execution environment (BREE)  if a bundle claims to run on J2SE-1.4, access to members in J2SE-1.5 and higher are flagged as illegal  See OSGi Specification on Execution Environments 23 22 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 24. Migration Assistance • “What will be broken if I move to a new version?” • “Will my plug-in still run on an older target version?” • We simply re-resolve the references against X, with the code in X+1 • Of course you can get the same information if you compile, but that requires more setup... 24 23 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 25. Bundle version number management • http://wiki.eclipse.org/index.php/Version_Numbering • The tooling takes care of letting the user know when the minor or major version of a bundle should be changed according to rules described in the document:  A new API that is not a breaking change requires the minor version to be incremented  A new API that is a breaking change requires the major version to be incremented • No support for the micro version yet...  Technically speaking, this version should be changed as soon as any modification is made in the source code: comment change, method body change,… 25 24 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 26. OSGi Versioning 101 • major.minor.micro.qualifier  major - An incompatible update; breaking API  minor - A backward compatible update; API stable  micro - A bug fix  qualifier - build date; lexicographic • Versions should encode compatibility at the bundle and package level... aid in evolution... • They aren’t a marketing number! 26 25 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 27. API Tooling in Action (example of bug 191231/191232) 27 25 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2008 EclipseSource
  • 28. API Tooling in Action (API Usage Report) 28 26 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 29. API Tooling in Action (System Library Validation) 29 29 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 30. API Tooling in Action (API Comparison) 30 30 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 31. API Tooling Parts 31 31 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 32. API Profile and API Components • These are the two major pieces used by the API tooling tools to make diagnosis on the code • An API profile can be seen like a PDE target platform • An API profile is a collection of API components • It is initialized using an Eclipse SDK installation plugins directory (or some other directory of bundles) • Inside the IDE, a profile corresponding to the workbench contents is automatically created 32 32 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 33. API Description • This contains the specific restrictions for all the API types of an API component • It is kept up-to-date inside the workbench by using resource listeners • It is exported inside the binary bundles or generated at build time using an ant task. 33 33 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 34. Filtering of API Problems • Each component can define a problem filter • The filtering can be used to remove from reports known breakages. • For example, an API breakage has been approved by the PMC and you don’t want to get it reported for each build. • The problem filter is also part of the binary plug-in 34 34 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 35. Two aspects: IDE and build process • Each feature is available from within the IDE or inside a headless build process via Ant tasks • The IDE support is required to help the Eclipse developer while the code is written • The build process support is required to provide feedback during the Eclipse build. This also allows other projects to use it inside their builds. 35 35 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 36. Build support • Addition of new ant tasks:  Generation of .api_description file  Comparison of SDK drops: binary compatibility, api usage reports • Integration inside the Eclipse builds (headless mode) • Integration inside ant build (no Eclipse running) 36 22 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 37. API Error/Warning Preferences 37 37 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 38. API Setup Wizard 38 38 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 39. API Profile (Baseline) Preferences 39 39 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 40. API Profile (Baseline) Wizard 40 40 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 41. Future work 41 41 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 42. To be done... • Handling of package level versioning • Support extended to support more than just bundles  Pure Java™ projects  Plug-in extension points • Improve integration with Eclipse rel-eng build reporting • Determine compatible version range of required bundles • And what you might suggest... 42 42 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 43. Summary 43 43 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 44. API Tooling Summary • Help you to define your API restrictions • Keep a consistent and standard presentation of API restrictions • Detect binary breakage between a baseline and the current version • Detect wrong API usage • Detect wrong @since tags and inconsistent bundle versioning • Detect Execution Environment problems... • Supports more than just Eclipse (hi OSGi folks)! 44 44 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 45. Links • Wiki  http://wiki.eclipse.org/Api_Tooling • Bugzilla  https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE • Get Involved  https://dev.eclipse.org/mailman/listinfo/pde-dev 45 45 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource
  • 46. Q & A 46 46 Eclipse, OSGi and API Tooling | Chris Aniszczyk | © 2010 EclipseSource

Hinweis der Redaktion