Maybe you are standing in a book store, holding this book in your hand, and asking yourself: "Should I buy it?" Here is your answer: If you have ever written code and handed it to someone else to let them compile their code against yours, the answer is: "You are ready to enter the API design world and this book will help you explore it."
However, this book does not attempt to "teach API design in five easy lessons". It cannot be read in "only three days!". If you are looking for a quick handbook, probably this book is not for you. On the other hand, if you are interested in a deeper knowledge of API design, in knowing not only the how, but also the why, let me introduce myself to you before you put this book back on the shelf.
My name is Jaroslav Tulach and I am the founder and initial architect of NetBeans, which is not just a well known IDE, but also the first modular desktop application framework written in Java. This book is based on notes that I have collected over the last ten years, while designing and maintaining NetBeans APIs and transferring this knowledge to the rest of our developers. It is a journal from the heart of the NetBeans laboratory, describing our problems, our growing understanding of them, the solutions we have chosen and the conclusions we made after applying them. Although our knowledge has been gathered while working on NetBeans, it is general enough to be useful for most software projects.
Knowledge of proper API design is essential for the successful creation of 21st century software. Let this book be your guide while exploring the big wide world of API design.
 Part 1: Theory and Justification
- Chapter 1: The Art of Building Modern Software
- Chapter 2: The Motivation to Create an API
- Chapter 3: Determining What Makes a Good API
- Chapter 4: Ever Changing Targets
 Part 2: Practical Design
- Chapter 5: Do Not Expose More Than You Want
- Chapter 6: Code Against Interfaces, Not Implementations
- Chapter 7: Use Modular Architecture
- Chapter 8: Separate APIs for Clients and Providers
- Chapter 9: Keep Testability In Mind
- Chapter 10: Cooperating with Other APIs
- Chapter 11: Runtime Aspects of APIs
- Chapter 12: Declarative Programming
 Part 3: Daily Life
- Chapter 13: Extreme Advice Considered Harmful
- Chapter 14: Paradoxes of API Design
- Chapter 15: Evolving the API Universe
- Chapter 16: Teamwork
- Chapter 17: Using Games to Improve API Design Skills
- Chapter 18: Extensible Visitor Pattern Case Study
- Chapter 19: End Of Life Procedures