60 likes | 199 Views
API Tooling. An API is a contract. API usage is the key for long-term maintenance of software. Detection of potential breakage can help to prevent delays in SDK adoption. Different levels of exposure: API, SPI and internal code. Terminology. API: they are defined by the bundle manifest
E N D
API Tooling • An API is a contract. • API usage is the key for long-term maintenance of software. • Detection of potential breakage can help to prevent delays in SDK adoption. • Different levels of exposure: API, SPI and internal code. Equinox Summit 2007
Terminology • API: they are defined by the bundle manifest • SPI: limited to a reduced number of clients. Clients are aware that they are subject to change. • Internal code: Should never be used. • Speaking with WAS and WTP people, it seems that these definitions need some flexibility. Equinox Summit 2007
Use cases • Backward compatibility: Detect changes that are not backward compatible ASAP • Global references: who’s using my code and what am I using • Version management: Make sure that the versioning scheme is respected according to the changes applied to a code base http://wiki.eclipse.org/PDE_UI_Incubator_ApiTools#Usecases Equinox Summit 2007
Source Snapshots OSGi bundle Eclipse product Java JAR Update site Filesystem Database API definition Queries Manifest.mf Javadoc tags Rules files Annotations Reports Reports Reports Equinox Summit 2007
Existing PDE Api Tool Control structure Collect Source API Snapshot Source NEW API Snapshot Control structure Compare OLDAPI Snapshot + Comparator XML Report HTML Report Equinox Summit 2007
Existing tools • Diff tool made by Jed Anderson • PDE API tools prototype made by Oleg • AUS (tool available on alphaworks) • Open-source tool for jar comparison: http://sab39.netreach.com/Software/Japitools/42/ (GPL) • WTP tool (component.xml ?) • JDiff (used by TPTP): http://www.jdiff.org/ Equinox Summit 2007