Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
Practical API Design: Confessions of a Java Framework Architect 2008th Edition
Use the Amazon App to scan ISBNs and compare prices.
Windows 10 For Dummies Video Training
Get up to speed with Windows 10 with this video training course from For Dummies. Learn more.
Frequently Bought Together
Customers Who Viewed This Item Also Viewed
Top Customer Reviews
But even if it's not your job to define interfaces, you are somewhat alway on the other side consuming them and it's good to know what drives evolution of the APIs you work with.
The book consists of 3 parts:
Part 1 is called "Theory and Justification". It defines the terminology and background which gives you the necessary foundation to explain and justify API design.
Let me give you and example: Have you ever had problems explaining your design to a colleague? You couldn't find the right words to reasonably highlight your decision, but you know it was right? The only justification was your intuition and the feeling that your design was the right choice. Does that sound familiar?
That's where Part 1 of this book comes in and tries to give you a tool to justify and even measure the quality of your design decisions: Selective Cluelessness. It's a principle which is based on the assumption that you can achieve more by knowing less:
"The more good APIs we have, the bigger the systems we'll be able to build without understanding all their details."
"Practical Design" is Part 2 and basically puts the theory highlighted in the first part to practice. Using Java, the author provides a set of what he calls API design patterns. They are design patterns in the traditional sense, but with a focus on evolution. Most of them accompanied by an examples the the NetBeans APIs. It doesn't matter if you are not familiar with NetBeans.Read more ›
I would definitelly NOT compare it to Bloch's Effective Java, that one is simply so much better. I really do respect author, he is definitelly an exprienced designer. He writes about the environments of public API - something you can't change easily after it's released (for example internal APIs in various businesses can be rewritten much much easier), so it must be designed carefully.
Overally, if you want to learn something more about API design, this is probably one of the best books about the topic. But prepare yourself - there will be some stale Swingish jargon full of abstractions ...
The focus of this book is on how you can design software that evolves to meet changing requirements and technology. Although the examples are primarily in Java, the advice in the book transcends any computer language and will be valuable to any developer who creates libraries or frameworks on which others rely. The book describes how to create intuitive APIs, ideas for improving performance through API design, tools for testing compatibility and tricks for compatible evolution.
As the principal designer of the NetBeans Platform (a software framework used by hundreds of organizations, including many Fortune 500 companies), the author certainly knows the topic well. He covers the problems faced when designing APIs, then illustrates them with real-life examples of how to solve them. His thoughtful assessments of what has -- and has not -- been successful for the APIs he has designed allows the reader to benefit from his many years of experience.
In summary, this is an excellent book and I'm not aware of any other which covers these topics with the same depth and passion. I've given it four stars for only one reason: it could be more concise. It sometimes embarks on tangents which, while interesting, don't seem to reinforce the main points.
Full disclosure: I'm an active NetBeans Platform developer and I know the author personally. At his request, I served as a technical reviewer for the manuscript of this book. Although the publisher sent me a free copy of the book following publication, I received no other compensation and feel that the review I've given here is honest and unbiased.
The key part for the PRACTICAL design is part 2. So do not be discouraged from part 1. If you do not like philosophy you might be annoyed, and if you do like philosophy you will be disappointed. A condensed version of the philosophical background of his advice is helpful though: Users of your library should be effective with the maximum amount of cluelessnes. And the development of your library should stay flexible without breaking the code of your clients.
In part 2 and 3 you will find a treasure trove of hard to find advice. Highlights are a very detailed comparison between the tradeoffs of using: interfaces, abstract classes, concrete final classes, ... . You find about problems of offering callbacks to your clients. The ramifications to multithreading are especially interesting. Also of particular interest is his implementation of the visitor pattern that abstracts from the API version of the concrete used library: an example of triple dispatch.
I do strongly support Jaroslav Tulachs call for direct compiler support of versioning of APIs. This immediately helps for solving the great challenges in our open source libraries weaving world.
I do strongly recommend this great book. Thank you Jaroslav.
Most Recent Customer Reviews
I have started reading this book, and after a while i realized that it is definitely not a fun to read this book. You need to spend lot of time to get little knowledge.Published on June 16, 2013 by rony
After 15 years of writing vague, unclear and verbose "manuals" of the type "you don't have to bother thinking", someone from SUN explains why they had written their API that... Read morePublished on March 17, 2013 by Dimitri K
If you are willing to change your devlopment way of yhingking you can achieve great results in about the same time as linear developmentPublished on December 25, 2012 by Remo Loaiza
This book is a huge inspiration for me, and contributed to one of the biggest releases of my OpenSource tool: WizTools.org RESTClient. Read morePublished on November 1, 2012 by Amazon Customer
If you are busy with or interested in API design, you should read this book. This book delivers many valuable practices, together with philosophical sections. Read morePublished on May 14, 2011 by Michael Huettermann