SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Who Took The Cookie From The Cookie Jar?



                                                                                       Olivier Thomann
                                                                                       IBM Ottawa Lab

                                                                                       March 25th, 2010




        Confidential | Date | Other Information, if necessary
      Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
                                                                                                     © 2002 IBM Corporation
Overview
    • API Tooling Features
    • API Use Reports
    • Future Work
    • Summary
    • Q&A




2
                             Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Tooling Features
    • 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
          Invalid references inside system libraries
    • 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


3
                                              Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
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



4
                                           Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Example of Published API




5
                               Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
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




6
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
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 the following rules:
        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 for the initial release.
        Technically speaking, this version should be changed as
         soon as any modification is made in the source code:
         comment change, method body change,…

7
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Detecting API Leaks
    • This is a crucial task to maintain a good API
    • It detects the usage of non-API types exposed by API
      definitions through return types of methods, method
      parameter types, thrown exceptions and field’s type.
    • Having such leaks can make your API unusable since
      the internal types might not be accessible




8
                                    Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Filtering of API Problems
    • Each component can define a problem filters
    • The filters are used to remove/ignore known breakage
      from reports.
       For example, an API breakage has been approved by the
        PMC and you don’t want to get it reported for each build.




9
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
IDE and Build Process
     • Each feature is available from within the IDE or during
       the build process.
     • 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.




10
                                       Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
IDE support
     • Addition of a new builder
     • Addition of a new nature
     • Creation of markers for each type of api problems:
       missing @since tags, binary compatibility issues, API
       usage, …
     • Addition of quick-fixes
     • Addition of code assist for Javadoc tag proposals




11
                                      Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Build support
     • Addition of new Ant tasks:
         Generation of an .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)




12
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Use Scans
     • Once the APIs are specified, the user needs to make
       sure that he/she is using them appropriately.
     • API use reports flag any kind of illegal API use:
         API use: reference to an API that is not supposed to be
          referenced, implementation of an interface that is not
          supposed to be implemented, ….
         The current toolset cannot detect use of in-lined members
     • A consequence of wrong illegal API usage is to
       increase the potential binary incompatibilities with
       future releases.


13
                                          Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Migration Reports
     • This can be generated once an API usage report is
       available
     • A migration report is generated from:
         an API use report
         A newer release of the API being used
     • It detects all possible migration issues that could occur
       between the version from which the API usage report
       has been generated and the current version
         Note: problems with constants will not be detected




14
                                          Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Demos of API Usage
     and Migration reports




15
                   Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Future Work




16
             Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Post 3.6 Work
     • Handling of package versioning
     • Support extended to support more than just bundles
         Pure Java™ projects
         Consider plug-in extension points
     • Global searching inside Eclipse projects
     • Improve integration with Rel-Eng build reporting
     • Determine compatible version range of required
       bundles
     • And what you might suggest


17
                                              Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Summary




18
           Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Tooling today
     • 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 illegal API usage and generate reports
     • Generate migration reports
     • Detect wrong @since tags and inconsistent bundle
       versioning
     • Detect API leaking
     • Detect illegal references inside BREEs

19
                                     Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Links
     • Wiki
         http://wiki.eclipse.org/Api_Tooling

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

     • Please send any questions you might have to the API tooling
       team:
          Olivier_Thomann@ca.ibm.com
          Darin_W right@ca.ibm.com
          Michael_Rennie@ca.ibm.com


20
                                            Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Q & A

21
        Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Legal Notices
     • Copyright © IBM Corp., 2007-2010. All rights reserved. This presentation and the
       source code in it are made available under the EPL, v1.0.
     • Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in
       the United States, other countries, or both.
     • Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc.
     • IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation,
       in the United States, other countries or both.
     • Other company, product, or service names may be trademarks or service marks of
       others.
     • THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR
       INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO
       VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS
       PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES
       ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH
       INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR
       STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE




22
                                                     Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.

Mais conteúdo relacionado

Mais procurados

iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationSerghei Moret
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Moon Technolabs Pvt. Ltd.
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12Sanjeev Sharma
 
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos DeliveryBadoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos DeliveryCodeFest
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...Moon Technolabs Pvt. Ltd.
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionLizzy Guido (she/her)
 
MOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaMOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaGergely Kis
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012Alan Greenblatt
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Gergely Kis
 
5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & TestingPerfecto by Perforce
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric FloeEric Floe
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Decksschwarzhoff
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Alaina Carter
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainedSemaphore
 
Mobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and ChellengesMobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and ChellengesSanjeev Sharma
 
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
 

Mais procurados (20)

How to design effective APIs
How to design effective APIsHow to design effective APIs
How to design effective APIs
 
API Tooling in Eclipse
API Tooling in EclipseAPI Tooling in Eclipse
API Tooling in Eclipse
 
iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluation
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
 
API presentation
API presentationAPI presentation
API presentation
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12
 
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos DeliveryBadoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year Edition
 
MOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaMOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in Java
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 
5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing
 
Mobile Monitoring Best Practices
Mobile Monitoring Best PracticesMobile Monitoring Best Practices
Mobile Monitoring Best Practices
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric Floe
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Deck
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
 
Mobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and ChellengesMobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and Chellenges
 
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++
 

Semelhante a Who Took The Cookie From The Cookie Jar?

P2 Introduction
P2 IntroductionP2 Introduction
P2 Introductionirbull
 
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
 
Whats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ HargraveWhats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ Hargravemfrancis
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingChris Aniszczyk
 
How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind Apigee | Google Cloud
 
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
 
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...Jason Bloomberg
 
Pain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re EverywherePain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re EverywhereNordic APIs
 
Building Your API for Longevity
Building Your API for LongevityBuilding Your API for Longevity
Building Your API for LongevityMuleSoft
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinarLibbySchulze
 
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
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform WorkspaceTomasz Zarna
 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGiDan Selman
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataInfluxData
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...InfluxData
 
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioMuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioJitendra Bafna
 
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
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxData
 
Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience confluent
 

Semelhante a Who Took The Cookie From The Cookie Jar? (20)

P2 Introduction
P2 IntroductionP2 Introduction
P2 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)
 
Whats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ HargraveWhats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ Hargrave
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API Tooling
 
How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind
 
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
 
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
 
Pain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re EverywherePain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re Everywhere
 
Building Your API for Longevity
Building Your API for LongevityBuilding Your API for Longevity
Building Your API for Longevity
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
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
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform Workspace
 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGi
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
 
Bp209
Bp209Bp209
Bp209
 
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioMuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
 
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
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
 
Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience
 

Último

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Who Took The Cookie From The Cookie Jar?

  • 1. Who Took The Cookie From The Cookie Jar? Olivier Thomann IBM Ottawa Lab March 25th, 2010 Confidential | Date | Other Information, if necessary Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0. © 2002 IBM Corporation
  • 2. Overview • API Tooling Features • API Use Reports • Future Work • Summary • Q&A 2 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 3. API Tooling Features • 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  Invalid references inside system libraries • 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 3 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 4. 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 4 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 5. Example of Published API 5 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 6. 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 6 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 7. 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 the following rules:  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 for the initial release.  Technically speaking, this version should be changed as soon as any modification is made in the source code: comment change, method body change,… 7 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 8. Detecting API Leaks • This is a crucial task to maintain a good API • It detects the usage of non-API types exposed by API definitions through return types of methods, method parameter types, thrown exceptions and field’s type. • Having such leaks can make your API unusable since the internal types might not be accessible 8 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 9. Filtering of API Problems • Each component can define a problem filters • The filters are used to remove/ignore known breakage from reports.  For example, an API breakage has been approved by the PMC and you don’t want to get it reported for each build. 9 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 10. IDE and Build Process • Each feature is available from within the IDE or during the build process. • 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. 10 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 11. IDE support • Addition of a new builder • Addition of a new nature • Creation of markers for each type of api problems: missing @since tags, binary compatibility issues, API usage, … • Addition of quick-fixes • Addition of code assist for Javadoc tag proposals 11 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 12. Build support • Addition of new Ant tasks:  Generation of an .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) 12 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 13. API Use Scans • Once the APIs are specified, the user needs to make sure that he/she is using them appropriately. • API use reports flag any kind of illegal API use:  API use: reference to an API that is not supposed to be referenced, implementation of an interface that is not supposed to be implemented, ….  The current toolset cannot detect use of in-lined members • A consequence of wrong illegal API usage is to increase the potential binary incompatibilities with future releases. 13 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 14. Migration Reports • This can be generated once an API usage report is available • A migration report is generated from:  an API use report  A newer release of the API being used • It detects all possible migration issues that could occur between the version from which the API usage report has been generated and the current version  Note: problems with constants will not be detected 14 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 15. Demos of API Usage and Migration reports 15 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 16. Future Work 16 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 17. Post 3.6 Work • Handling of package versioning • Support extended to support more than just bundles  Pure Java™ projects  Consider plug-in extension points • Global searching inside Eclipse projects • Improve integration with Rel-Eng build reporting • Determine compatible version range of required bundles • And what you might suggest 17 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 18. Summary 18 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 19. API Tooling today • 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 illegal API usage and generate reports • Generate migration reports • Detect wrong @since tags and inconsistent bundle versioning • Detect API leaking • Detect illegal references inside BREEs 19 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 20. Links • Wiki  http://wiki.eclipse.org/Api_Tooling • Bugzilla  https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE • Please send any questions you might have to the API tooling team:  Olivier_Thomann@ca.ibm.com  Darin_W right@ca.ibm.com  Michael_Rennie@ca.ibm.com 20 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 21. Q & A 21 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 22. Legal Notices • Copyright © IBM Corp., 2007-2010. All rights reserved. This presentation and the source code in it are made available under the EPL, v1.0. • Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. • Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc. • IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation, in the United States, other countries or both. • Other company, product, or service names may be trademarks or service marks of others. • THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE 22 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.