This session will cover what it means to have an API in Java. I will explain how an exposed API can be maintained and evolved over releases. I will talk about evolving APIs without breaking the clients. Interesting cases like generification of APIs will be discussed. I will also discuss the various rules of versioning in case the API needs to have breaking changes.
The session will explain the different types of incompatibilities - like binary, source, behavorial incompatibilities etc. with examples. I will demonstrate the examples live during the session.
The session will also cover best practices in evolving APIs. In addition, I will discuss and demonstrate a few interesting API evolution puzzles.
In the last part of the session, I will cover the pitfalls in API evolution and how API Tools can be used to detect and rectify them. I will also discuss about versioning in this era of multiple releases in a year.
In this session, basic knowledge of Java is required. The attendees will understand API evolution in Java and the usage of API Tools to achieve API evolution.