I this talk I will draw from my experience at Google working with the Core Java Libraries team, and the lessons I have learned about designing Java APIs.
I've worked on the design of several core Java libraries at Google, including the Truth testing API and Flogger (Google's Java logging API) and in doing this I've built up a lot of experience with API design, and especially fluent APIs.
I will explain why Fluent APIs work well for a lot of Java libraries and what their general benefits are. I will also describe, with practical definitions, the difference between fluent APIs and other, similar looking, design patterns (chainable APIs, builders etc.). I will also describe some of the pitfalls and subtleties in designing a fluent API which can dramatically affect how useful and intuitive they are to people.
David Beaumont
n/a (currently taking a break)
David Beaumont's Java journey started when he worked on an alternate JVM for pre-Android mobile phones (circa 2000). The experience of implementing clean-room alternatives to core Java libraries gave him a lot of insight into the benefits of good library APIs, and the problems with bad ones.
With a passion for API design, he joined Google in 2007, primarily working on improving internal libraries of one kind or another. Working with the internationalization team in Zurich, he helped improve address formatting and phone number libraries, and later worked with Mark Davis and the ICU consortium to design a new API for CLDR ( data representation.
During his time at Google, he designed and implemented Flogger, a fluent, extensible Java debug logging library. This became the de facto Java logging library in Google and resulted in a multi-year migration of millions of lines of code to use the new API.