Who Took The Cookie From The Cookie Jar?



                                                                              ...
Overview
    • API Tooling Features
    • API Use Reports
    • Future Work
    • Summary
    • Q&A




2
                ...
API Tooling Features
    • Reports
          Illegal API use
          Binary incompatibility relative to a baseline
   ...
Specifying API Contracts
    • Use Javadoc tags
        E.g. @noimplement, @noextend, @noreference, @noinstantiate


    ...
Example of Published API




5
                               Copy right © IBM Corp., 2010. All rights reserv ed. Licensed...
Binary Compatibility
    • Evolving APIs such that they are backwards compatible
      with existing binaries
       http...
Bundle Version Number Management
    • http://wiki.eclipse.org/index.php/Version_Numbering
    • The tooling takes care of...
Detecting API Leaks
    • This is a crucial task to maintain a good API
    • It detects the usage of non-API types expose...
Filtering of API Problems
    • Each component can define a problem filters
    • The filters are used to remove/ignore kn...
IDE and Build Process
     • Each feature is available from within the IDE or during
       the build process.
     • The ...
IDE support
     • Addition of a new builder
     • Addition of a new nature
     • Creation of markers for each type of a...
Build support
     • Addition of new Ant tasks:
         Generation of an .api_description file
         Comparison of S...
API Use Scans
     • Once the APIs are specified, the user needs to make
       sure that he/she is using them appropriate...
Migration Reports
     • This can be generated once an API usage report is
       available
     • A migration report is g...
Demos of API Usage
     and Migration reports




15
                   Copy right © IBM Corp., 2010. All rights reserv ed...
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
         Pu...
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 AP...
Links
     • Wiki
         http://wiki.eclipse.org/Api_Tooling

     • Bugzilla
         https://bugs.eclipse.org/bugs/e...
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 i...
Upcoming SlideShare
Loading in …5
×

Who Took The Cookie From The Cookie Jar?

4,872 views

Published on

Published in: Technology
  • Be the first to comment

Who Took The Cookie From The Cookie Jar?

  1. 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. 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. 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. 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. 5. Example of Published API 5 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. Future Work 16 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  17. 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. 18. Summary 18 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  19. 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. 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. 21. Q & A 21 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  22. 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.

×