SlideShare a Scribd company logo
1 of 21
Vikas Chandra (PDE and GMF committer) 
Eclipse and API tooling 
© 2014 IBM Corporation
© 2014 IBM Corporation 
Overview 
What is an API 
Ground rules for Eclipse Platform API 
API management 
API tools – API Use Scan 
API Binary Compatibility/Versioning 
API tools for Binary compatibility and Versioning
What is an API? 
Set of defined functions and methods for 
interfacing with the underlying operating 
system or another program or service 
•Producer of API & Consumer of API 
•Behavior of API – consistent 
•More relevant for software vendors for 
masses 
© 2014 IBM Corporation
Eclipse APIs , Distinguish API/non-API 
 API elements - documented /have specification 
 Non-API elements - internal implementation details usually without 
documentation or specifications 
 API - API package ( advertised in documentation) , API class, API 
interface, API constructor, API field 
 Non-API – non-API package, All classes and interfaces in non-API 
package, Non-public classes and interfaces in API packages, Default 
access and private methods, fields etc, not documented 
© 2014 IBM Corporation
© 2014 IBM Corporation 
API rules 
FOR PRODUCERS 
When evolving the Component API from release to 
release, do not break existing clients. 
API changes must not invalidate formerly legal 
client code. 
Every aspect of the API matters to some client. 
( hypothetical)
© 2014 IBM Corporation 
API rules 
FOR CONSUMERS 
Honor all contracts 
Do not rely on incidental behavior 
Do ensure that an API method's preconditions are met before 
calling the method 
Do not pass null as a parameter to an API method unless the 
parameter is explicitly documented as allowing null 
Do not use instanceof and cast expressions to increase what 
is known about an object beyond what the API supports
© 2014 IBM Corporation 
Not following rules 
Fail when run with a different mix of co-resident 
plug-ins 
 Fail on different version 
 Fail with patches 
Cost associated with this.
© 2014 IBM Corporation 
Why API management 
 Producer - replaces API, changes signature, makes provisional APIs 
 Consumer – make references to non-APIs, internal functions 
DISASTER 
Producer should ship compatible APIs 
Consumer should respect API rules
API Tools/Restrictions 
 @noreference - Indicates that other bundles must not reference this member by name 
 @noimplement - Indicates that other bundles must not implement this interface 
 @noextend - Indicates that other bundles must not extend the class/ interface it 
appears on 
 @noinstantiate - Indicates that other bundles must not create instances of this class. 
 @nooverride - Indicates that other bundles must not extend 
© 2014 IBM Corporation
© 2014 IBM Corporation 
API Management 
Manage API 
Maintain APIs 
Reporting API defect 
Reporting usage of non-API code 
Identifying binary incompatibility 
Versioning based on eclipse versioning scheme
© 2014 IBM Corporation 
API use scan 
View of how APIs used in component 
For example which APIs of *.swt* are used in all of my 
components *.mycomponent.* 
Reports Illegal use 
Reports internal and internal-permissible 
Reports general API use 
Can get this at compile time based on preference options
TYPICAL USE SCAN REPORT 
© 2014 IBM Corporation
© 2014 IBM Corporation 
API Use Scan 
For producers 
1. Inform clients how to use 
2. Avoid breaking changes till client migrated. 
For consumers 
1. Inform producer when they break API 
2. Send Use scan report to producer. 
Can associate with the build ( example eclipse )
Achieving API Binary Compatibility 
A change to a type is binary compatible with preexisting binaries if 
preexisting binaries that previously linked without error will continue to link 
without error 
© 2014 IBM Corporation 
Evolving PACKAGE 
 Add API package Binary compatible 
 Delete API package Breaks compatibility 
 Add API type to API package Binary compatible 
 Delete API type from API package Breaks compatibility 
 Add non-public (non-API) type to API package Binary compatible 
 Delete non-public (non-API) type from API package Binary compatible 
 Change non-public (non-API) type in API package to make public Binary compatible 
 Change public type in API package to make non-public Breaks compatibility 
………………..
Evolving method, class, interface 
Evolving METHOD 
 Change body of method or constructor Binary compatible 
 Change formal parameter name- Binary compatible 
 Change method name- Breaks compatibility 
 Add or delete formal parameter- Breaks compatibility 
 Change type of a formal parameter- Breaks compatibility 
 Change result type (including void)- Breaks compatibility 
 ………. 
Evolving Classes, Interface 
Increase access – generally compatible , decrease access – generally incompatible. 
Add new interface with method –Fine , Use as superinterface of interface API – Not Fine 
© 2014 IBM Corporation 
Deprecate before removing, Also provide with alternate API
© 2014 IBM Corporation 
Binary Incompatibility 
Assume you are developing a component 
When would it break API from version 1 to version 2 
There are numerous ways that the API could be broken 
Easy to get it wrong 
API tooling takes care of it
© 2014 IBM Corporation 
API baseline 
Set API baseline to previous version 
Any API issue will be flagged 
Developer should deal with this issue 
Any API issue is configurable via the preference 
page
Versioning 
API tools help in versioning 
The major segment indicates breakage in the API 
The minor segment indicates externally visible changes like 
new API, 
The service segment indicates bug fixes 
The qualifier segment indicates a particular build. 
© 2014 IBM Corporation
© 2014 IBM Corporation 
Versioning ( contd..) 
Suppose a new API is added 
You need to increase minor version 
Also add @since tag
© 2014 IBM Corporation 
Resources 
 http://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html ( Binary compatibility) 
 http://www.eclipse.org/articles/Article-API-Use/ ( API use in eclipse) 
 http://wiki.eclipse.org/Evolving_Java-based_APIs ( Evolving APIs) 
 http://wiki.eclipse.org/Version_Numbering ( Versioning) 
 https://wiki.eclipse.org/PDE/API_Tools/Restrictions ( API Restrictions)
© 2014 IBM Corporation 
Thank You 
Vikas Chandra 
Vikas.Chandra@in.ibm.com

More Related Content

What's hot

Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...
Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...
Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...Profesia Srl, Lynx Group
 
Testing APIs in the Cloud
Testing APIs in the CloudTesting APIs in the Cloud
Testing APIs in the CloudSmartBear
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API TestingQASource
 
Api testing and steps to do it
Api testing and steps to do itApi testing and steps to do it
Api testing and steps to do itZoe Gilbert
 
Schema-First API Design
Schema-First API DesignSchema-First API Design
Schema-First API DesignYos Riady
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLAnton Arhipov
 
Reliable application tests for ui5 apps
Reliable application tests for ui5 appsReliable application tests for ui5 apps
Reliable application tests for ui5 appsMaxim Naidenov
 
E2E testing with UIVeri5
E2E testing with UIVeri5E2E testing with UIVeri5
E2E testing with UIVeri5Maxim Naidenov
 
Novedades en desarrollo en SharePoint 2013
Novedades en desarrollo en SharePoint 2013Novedades en desarrollo en SharePoint 2013
Novedades en desarrollo en SharePoint 2013Mario Cortés Flores
 
More Coverage, Better Diagnostics
More Coverage, Better DiagnosticsMore Coverage, Better Diagnostics
More Coverage, Better DiagnosticsSmartBear
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1SmartBear
 
UI5 supportability tools explained
UI5 supportability tools explainedUI5 supportability tools explained
UI5 supportability tools explainedMaxim Naidenov
 
API Lifecycle Management
API Lifecycle ManagementAPI Lifecycle Management
API Lifecycle ManagementPostman
 

What's hot (20)

Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...
Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...
Wso2 italia Open Break session #7 - Test di API e microservizi nelle architet...
 
Meetup #5 API Testing World
Meetup #5 API Testing WorldMeetup #5 API Testing World
Meetup #5 API Testing World
 
Api testing
Api testingApi testing
Api testing
 
Mule raml
Mule ramlMule raml
Mule raml
 
API TESTING
API TESTINGAPI TESTING
API TESTING
 
Testing APIs in the Cloud
Testing APIs in the CloudTesting APIs in the Cloud
Testing APIs in the Cloud
 
APIDD Document
APIDD DocumentAPIDD Document
APIDD Document
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API Testing
 
Api testing and steps to do it
Api testing and steps to do itApi testing and steps to do it
Api testing and steps to do it
 
Schema-First API Design
Schema-First API DesignSchema-First API Design
Schema-First API Design
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSL
 
Reliable application tests for ui5 apps
Reliable application tests for ui5 appsReliable application tests for ui5 apps
Reliable application tests for ui5 apps
 
E2E testing with UIVeri5
E2E testing with UIVeri5E2E testing with UIVeri5
E2E testing with UIVeri5
 
API presentation
API presentationAPI presentation
API presentation
 
Novedades en desarrollo en SharePoint 2013
Novedades en desarrollo en SharePoint 2013Novedades en desarrollo en SharePoint 2013
Novedades en desarrollo en SharePoint 2013
 
More Coverage, Better Diagnostics
More Coverage, Better DiagnosticsMore Coverage, Better Diagnostics
More Coverage, Better Diagnostics
 
Angular 11 – everything you need to know
Angular 11 – everything you need to knowAngular 11 – everything you need to know
Angular 11 – everything you need to know
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
 
UI5 supportability tools explained
UI5 supportability tools explainedUI5 supportability tools explained
UI5 supportability tools explained
 
API Lifecycle Management
API Lifecycle ManagementAPI Lifecycle Management
API Lifecycle Management
 

Similar to Eclipse and API tooling

Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfAparna Sharma
 
#APIOps- Agile API Development powered by API Connect
#APIOps- Agile API Development powered by API Connect#APIOps- Agile API Development powered by API Connect
#APIOps- Agile API Development powered by API Connectpramodvallanur
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfAparna Sharma
 
Rebooting APIs at scale
Rebooting APIs at scaleRebooting APIs at scale
Rebooting APIs at scaleRahul Dighe
 
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...apidays
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
INTERFACE, by apidays - How to Win Friends and Influence People with API First
INTERFACE, by apidays - How to Win Friends and Influence People with API FirstINTERFACE, by apidays - How to Win Friends and Influence People with API First
INTERFACE, by apidays - How to Win Friends and Influence People with API Firstapidays
 
A Comprehensive Guide Of API Development.pdf
A Comprehensive Guide Of API Development.pdfA Comprehensive Guide Of API Development.pdf
A Comprehensive Guide Of API Development.pdfiDataScientists
 
Do you know How to Effectively Test APIs.pdf
Do you know How to Effectively Test APIs.pdfDo you know How to Effectively Test APIs.pdf
Do you know How to Effectively Test APIs.pdfAmeliaJonas2
 
Spec-first API Design for Speed and Safety
Spec-first API Design for Speed and SafetySpec-first API Design for Speed and Safety
Spec-first API Design for Speed and SafetyAtlassian
 
API Economy - Cuomo
API Economy - Cuomo API Economy - Cuomo
API Economy - Cuomo Prolifics
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinarLibbySchulze
 
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
 
Designing Good API & Its Importance
Designing Good API & Its ImportanceDesigning Good API & Its Importance
Designing Good API & Its ImportanceImran M Yousuf
 
MuleSoft_Meetup__Official_August-2022.pptx
MuleSoft_Meetup__Official_August-2022.pptxMuleSoft_Meetup__Official_August-2022.pptx
MuleSoft_Meetup__Official_August-2022.pptxSupriya Pawar
 
APIs, APIs and more APIs
APIs, APIs and more APIsAPIs, APIs and more APIs
APIs, APIs and more APIsAnand Sawant
 
Top 11 API testing tools for 2022
Top 11 API testing tools for 2022Top 11 API testing tools for 2022
Top 11 API testing tools for 2022Aparna Sharma
 

Similar to Eclipse and API tooling (20)

Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
 
#APIOps- Agile API Development powered by API Connect
#APIOps- Agile API Development powered by API Connect#APIOps- Agile API Development powered by API Connect
#APIOps- Agile API Development powered by API Connect
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
 
Rebooting APIs at scale
Rebooting APIs at scaleRebooting APIs at scale
Rebooting APIs at scale
 
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...
apidays LIVE Helsinki & North 2022_How to Win Friends and Influence People wi...
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
INTERFACE, by apidays - How to Win Friends and Influence People with API First
INTERFACE, by apidays - How to Win Friends and Influence People with API FirstINTERFACE, by apidays - How to Win Friends and Influence People with API First
INTERFACE, by apidays - How to Win Friends and Influence People with API First
 
A Comprehensive Guide Of API Development.pdf
A Comprehensive Guide Of API Development.pdfA Comprehensive Guide Of API Development.pdf
A Comprehensive Guide Of API Development.pdf
 
Do you know How to Effectively Test APIs.pdf
Do you know How to Effectively Test APIs.pdfDo you know How to Effectively Test APIs.pdf
Do you know How to Effectively Test APIs.pdf
 
Spec-first API Design for Speed and Safety
Spec-first API Design for Speed and SafetySpec-first API Design for Speed and Safety
Spec-first API Design for Speed and Safety
 
How to design effective APIs
How to design effective APIsHow to design effective APIs
How to design effective APIs
 
API Economy - Cuomo
API Economy - Cuomo API Economy - Cuomo
API Economy - Cuomo
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
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)
 
Designing Good API & Its Importance
Designing Good API & Its ImportanceDesigning Good API & Its Importance
Designing Good API & Its Importance
 
MuleSoft_Meetup__Official_August-2022.pptx
MuleSoft_Meetup__Official_August-2022.pptxMuleSoft_Meetup__Official_August-2022.pptx
MuleSoft_Meetup__Official_August-2022.pptx
 
API Presentation
API PresentationAPI Presentation
API Presentation
 
APIs, APIs and more APIs
APIs, APIs and more APIsAPIs, APIs and more APIs
APIs, APIs and more APIs
 
What is API Testing_ .pdf
What is API Testing_ .pdfWhat is API Testing_ .pdf
What is API Testing_ .pdf
 
Top 11 API testing tools for 2022
Top 11 API testing tools for 2022Top 11 API testing tools for 2022
Top 11 API testing tools for 2022
 

More from Eclipse Day India

Java Performance Testing for Everyone - Shelley Lambert
Java Performance Testing for Everyone - Shelley LambertJava Performance Testing for Everyone - Shelley Lambert
Java Performance Testing for Everyone - Shelley LambertEclipse Day India
 
Eclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
Eclipse IDE Tips and Tricks - Lakshmi Priya ShanmugamEclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
Eclipse IDE Tips and Tricks - Lakshmi Priya ShanmugamEclipse Day India
 
Pattern Matching in Java - Srikanth Sankaran
Pattern Matching in Java - Srikanth SankaranPattern Matching in Java - Srikanth Sankaran
Pattern Matching in Java - Srikanth SankaranEclipse Day India
 
Machine Learning for Java Developers - Nasser Ebrahim
Machine Learning for Java Developers - Nasser EbrahimMachine Learning for Java Developers - Nasser Ebrahim
Machine Learning for Java Developers - Nasser EbrahimEclipse Day India
 
Scaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiScaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiEclipse Day India
 
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...Eclipse Day India
 
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan HerrmannSupporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan HerrmannEclipse Day India
 
Eclipse Day India 2015 - Rest with Java (jax rs) and jersey
Eclipse Day India 2015 - Rest with Java (jax rs) and jerseyEclipse Day India 2015 - Rest with Java (jax rs) and jersey
Eclipse Day India 2015 - Rest with Java (jax rs) and jerseyEclipse Day India
 
Eclipse Day India 2015 - Java bytecode analysis and JIT
Eclipse Day India 2015 - Java bytecode analysis and JITEclipse Day India 2015 - Java bytecode analysis and JIT
Eclipse Day India 2015 - Java bytecode analysis and JITEclipse Day India
 
Eclipse Day India 2015 - Java 8 Overview
Eclipse Day India 2015 - Java 8 OverviewEclipse Day India 2015 - Java 8 Overview
Eclipse Day India 2015 - Java 8 OverviewEclipse Day India
 
Eclipse Day India 2015 - Java 9
Eclipse Day India 2015 - Java 9Eclipse Day India 2015 - Java 9
Eclipse Day India 2015 - Java 9Eclipse Day India
 
Eclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India
 
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automationEclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automationEclipse Day India
 
Eclipse Day India 2015 - Oomph
Eclipse Day India 2015 - OomphEclipse Day India 2015 - Oomph
Eclipse Day India 2015 - OomphEclipse Day India
 
Eclipse Day India 2015 - Keynote (Mike Milinkovich)
Eclipse Day India 2015 - Keynote (Mike Milinkovich)Eclipse Day India 2015 - Keynote (Mike Milinkovich)
Eclipse Day India 2015 - Keynote (Mike Milinkovich)Eclipse Day India
 
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in EclipseEclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in EclipseEclipse Day India
 

More from Eclipse Day India (20)

Java Performance Testing for Everyone - Shelley Lambert
Java Performance Testing for Everyone - Shelley LambertJava Performance Testing for Everyone - Shelley Lambert
Java Performance Testing for Everyone - Shelley Lambert
 
Eclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
Eclipse IDE Tips and Tricks - Lakshmi Priya ShanmugamEclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
Eclipse IDE Tips and Tricks - Lakshmi Priya Shanmugam
 
Pattern Matching in Java - Srikanth Sankaran
Pattern Matching in Java - Srikanth SankaranPattern Matching in Java - Srikanth Sankaran
Pattern Matching in Java - Srikanth Sankaran
 
Machine Learning for Java Developers - Nasser Ebrahim
Machine Learning for Java Developers - Nasser EbrahimMachine Learning for Java Developers - Nasser Ebrahim
Machine Learning for Java Developers - Nasser Ebrahim
 
Scaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiScaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj Modi
 
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
Please Behave Yourself: BDD and automating Eclipse RCP applications using JBe...
 
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan HerrmannSupporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
Supporting Java™ 9 in Eclipse - A critical perspective - Stephan Herrmann
 
Eclipse Day India 2015 - Rest with Java (jax rs) and jersey
Eclipse Day India 2015 - Rest with Java (jax rs) and jerseyEclipse Day India 2015 - Rest with Java (jax rs) and jersey
Eclipse Day India 2015 - Rest with Java (jax rs) and jersey
 
Eclipse Day India 2015 - Java bytecode analysis and JIT
Eclipse Day India 2015 - Java bytecode analysis and JITEclipse Day India 2015 - Java bytecode analysis and JIT
Eclipse Day India 2015 - Java bytecode analysis and JIT
 
Eclipse Day India 2015 - Java 8 Overview
Eclipse Day India 2015 - Java 8 OverviewEclipse Day India 2015 - Java 8 Overview
Eclipse Day India 2015 - Java 8 Overview
 
Eclipse Day India 2015 - Java 9
Eclipse Day India 2015 - Java 9Eclipse Day India 2015 - Java 9
Eclipse Day India 2015 - Java 9
 
Eclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan Herrmann
 
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automationEclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
Eclipse Day India 2015 - Eclipse RCP testing using Jubula based automation
 
Eclipse Day India 2015 - Oomph
Eclipse Day India 2015 - OomphEclipse Day India 2015 - Oomph
Eclipse Day India 2015 - Oomph
 
Eclipse Day India 2015 - Keynote (Mike Milinkovich)
Eclipse Day India 2015 - Keynote (Mike Milinkovich)Eclipse Day India 2015 - Keynote (Mike Milinkovich)
Eclipse Day India 2015 - Keynote (Mike Milinkovich)
 
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in EclipseEclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
 
IDS and Bluemix
IDS and BluemixIDS and Bluemix
IDS and Bluemix
 
SWT - Technical Deep Dive
SWT - Technical Deep DiveSWT - Technical Deep Dive
SWT - Technical Deep Dive
 
PDE builds or Maven
PDE builds or MavenPDE builds or Maven
PDE builds or Maven
 
Orion - IDE on the cloud
Orion - IDE on the cloudOrion - IDE on the cloud
Orion - IDE on the cloud
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Eclipse and API tooling

  • 1. Vikas Chandra (PDE and GMF committer) Eclipse and API tooling © 2014 IBM Corporation
  • 2. © 2014 IBM Corporation Overview What is an API Ground rules for Eclipse Platform API API management API tools – API Use Scan API Binary Compatibility/Versioning API tools for Binary compatibility and Versioning
  • 3. What is an API? Set of defined functions and methods for interfacing with the underlying operating system or another program or service •Producer of API & Consumer of API •Behavior of API – consistent •More relevant for software vendors for masses © 2014 IBM Corporation
  • 4. Eclipse APIs , Distinguish API/non-API  API elements - documented /have specification  Non-API elements - internal implementation details usually without documentation or specifications  API - API package ( advertised in documentation) , API class, API interface, API constructor, API field  Non-API – non-API package, All classes and interfaces in non-API package, Non-public classes and interfaces in API packages, Default access and private methods, fields etc, not documented © 2014 IBM Corporation
  • 5. © 2014 IBM Corporation API rules FOR PRODUCERS When evolving the Component API from release to release, do not break existing clients. API changes must not invalidate formerly legal client code. Every aspect of the API matters to some client. ( hypothetical)
  • 6. © 2014 IBM Corporation API rules FOR CONSUMERS Honor all contracts Do not rely on incidental behavior Do ensure that an API method's preconditions are met before calling the method Do not pass null as a parameter to an API method unless the parameter is explicitly documented as allowing null Do not use instanceof and cast expressions to increase what is known about an object beyond what the API supports
  • 7. © 2014 IBM Corporation Not following rules Fail when run with a different mix of co-resident plug-ins  Fail on different version  Fail with patches Cost associated with this.
  • 8. © 2014 IBM Corporation Why API management  Producer - replaces API, changes signature, makes provisional APIs  Consumer – make references to non-APIs, internal functions DISASTER Producer should ship compatible APIs Consumer should respect API rules
  • 9. API Tools/Restrictions  @noreference - Indicates that other bundles must not reference this member by name  @noimplement - Indicates that other bundles must not implement this interface  @noextend - Indicates that other bundles must not extend the class/ interface it appears on  @noinstantiate - Indicates that other bundles must not create instances of this class.  @nooverride - Indicates that other bundles must not extend © 2014 IBM Corporation
  • 10. © 2014 IBM Corporation API Management Manage API Maintain APIs Reporting API defect Reporting usage of non-API code Identifying binary incompatibility Versioning based on eclipse versioning scheme
  • 11. © 2014 IBM Corporation API use scan View of how APIs used in component For example which APIs of *.swt* are used in all of my components *.mycomponent.* Reports Illegal use Reports internal and internal-permissible Reports general API use Can get this at compile time based on preference options
  • 12. TYPICAL USE SCAN REPORT © 2014 IBM Corporation
  • 13. © 2014 IBM Corporation API Use Scan For producers 1. Inform clients how to use 2. Avoid breaking changes till client migrated. For consumers 1. Inform producer when they break API 2. Send Use scan report to producer. Can associate with the build ( example eclipse )
  • 14. Achieving API Binary Compatibility A change to a type is binary compatible with preexisting binaries if preexisting binaries that previously linked without error will continue to link without error © 2014 IBM Corporation Evolving PACKAGE  Add API package Binary compatible  Delete API package Breaks compatibility  Add API type to API package Binary compatible  Delete API type from API package Breaks compatibility  Add non-public (non-API) type to API package Binary compatible  Delete non-public (non-API) type from API package Binary compatible  Change non-public (non-API) type in API package to make public Binary compatible  Change public type in API package to make non-public Breaks compatibility ………………..
  • 15. Evolving method, class, interface Evolving METHOD  Change body of method or constructor Binary compatible  Change formal parameter name- Binary compatible  Change method name- Breaks compatibility  Add or delete formal parameter- Breaks compatibility  Change type of a formal parameter- Breaks compatibility  Change result type (including void)- Breaks compatibility  ………. Evolving Classes, Interface Increase access – generally compatible , decrease access – generally incompatible. Add new interface with method –Fine , Use as superinterface of interface API – Not Fine © 2014 IBM Corporation Deprecate before removing, Also provide with alternate API
  • 16. © 2014 IBM Corporation Binary Incompatibility Assume you are developing a component When would it break API from version 1 to version 2 There are numerous ways that the API could be broken Easy to get it wrong API tooling takes care of it
  • 17. © 2014 IBM Corporation API baseline Set API baseline to previous version Any API issue will be flagged Developer should deal with this issue Any API issue is configurable via the preference page
  • 18. Versioning API tools help in versioning The major segment indicates breakage in the API The minor segment indicates externally visible changes like new API, The service segment indicates bug fixes The qualifier segment indicates a particular build. © 2014 IBM Corporation
  • 19. © 2014 IBM Corporation Versioning ( contd..) Suppose a new API is added You need to increase minor version Also add @since tag
  • 20. © 2014 IBM Corporation Resources  http://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html ( Binary compatibility)  http://www.eclipse.org/articles/Article-API-Use/ ( API use in eclipse)  http://wiki.eclipse.org/Evolving_Java-based_APIs ( Evolving APIs)  http://wiki.eclipse.org/Version_Numbering ( Versioning)  https://wiki.eclipse.org/PDE/API_Tools/Restrictions ( API Restrictions)
  • 21. © 2014 IBM Corporation Thank You Vikas Chandra Vikas.Chandra@in.ibm.com