Post on 06-Jan-2016
description
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
• 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.
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
ReportsReports
Source
OSGi bundleOSGi bundle
Java JARJava JAR
Eclipse productEclipse product
Update siteUpdate site
API definition
Manifest.mfManifest.mf
Rules filesRules files
Javadoc tagsJavadoc tags
AnnotationsAnnotations
Snapshots
FilesystemFilesystem
DatabaseDatabase
Reports
QueriesQueries
Collect
Compare
Source API Snapshot
Control structure
OLD API Snapshot
Source NEW API SnapshotControl
structure
Comparator
XML Report
HTML Report
+
Existing PDE Api Tool
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/