Runtime Aspects of APIs


So far, the chapters in this book have concentrated mostly on source or binary compatibility. Suggestions usually advise exposing fewer classes, methods, and fields and thereby help their evolution. This is indeed desirable, because if we want clueless assembly of applications built on top of our libraries, we need the applications to link and not throw UnsatisfiedLinkErrors. However, API design doesn’t end when applications link. At that point the real quest is just beginning! Then you need the linked pieces of an application to continue working together. Also, they shouldn’t only work once. Instead, they should continue when modular parts of the application are replaced by their newer versions. Only then are you aligned with the clueless application assembly approach. And you can only achieve this if you know and understand the implications of functional compatibility.


Virtual Machine Memory Management Application Code Garbage Collector Random Failure 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Andy Hunt and Dave Thomas, Pragmatic Unit Testing in Java with JUnit (Raleigh, NC and Dallas, TX: Pragmatic Bookshelf, 2003).Google Scholar
  2. 2.
    Per Brinch Hansen, “Java’s Insecure Parallelism” (1999), Scholar

Copyright information

© Jaroslav Tulach 2008

Personalised recommendations