Stuart Marks is a Principal Member of Technical Staff in the Java Platform Group at Oracle. He is currently working on a variety of JDK core libraries projects, including Collections, Lambda, and Streams, as well as improving test quality and performance. As his alter ego "Dr Deprecator" he also works on the Java SE deprecation mechanism. He has previously worked on JavaFX and Java ME at Sun Microsystems. He has over twenty years of software platform product development experience in the areas of window systems, interactive graphics, and mobile and embedded systems. Stuart holds a Master's degree in Computer Science and a Bachelor's degree in Electrical Engineering from Stanford University.
We've all been there: debugging problems in a test case and silently screaming into the dark. (Sometimes not even silently.) Poor test case design can cost you significant time and effort let alone impact the quality of your application or product. Testing is vitally important, but so is having a test suite you can use effectively and can rely on. This session will take you through the top ten rules for writing effective and reliable testcases.
The new kids on the block such as Cloud or Docker and general "Infrastructure as Code" style solutions may make you believe old rules are just old. This talk will make you think again. Knowledge gained from personal experience is always best. Learn from these old masters how to design great test cases and maybe you'll never have to visit the dark side again.
The streams API combined with lambda expressions, both introduced in JDK 8, provide a way for developers to use a functional style of programming for the first time in Java. As with all powerful features like this, it is easy to abuse them and produce code that is difficult to read and hard to maintain.
In this BoF we’ll use examples of streams to discuss whether the code is good, bad or ugly and talk about ways the code could be changed. No doubt, this will lead to some interesting discussions!
If you have examples of stream code you think would be good to discuss please feel free to bring them along.
The Collections Framework was introduced in JDK 1.2 back in 1998 and is still in heavy use today. Although its fundamentals remain unchanged, it has evolved considerably since its introduction, and it continues to evolve. This presentation will describe some of the recent enhancements made to Collections, particularly the lambda-capable default methods added in Java 8. The presentation will also cover enhancements currently in development for Java 9, including JEP 269, Convenience Factory Methods, a library-based API that serves the purpose of collection literals. Finally, the presentation will provide a glimpse at some several possible futures for the Collections Framework.
The Optional class was introduced in Java 8 in order to solve a narrow but frequently occurring problem: what to return if you have nothing to return. It is a single class with less than 20 methods, but it turns out to have been one of the most controversial and most misunderstood APIs, having generated several "centithreads" of discussion on OpenJDK mailing lists. Indeed, Brian Goetz (Java Language and Libraries Architect) has mentioned that one aspect of Optional was his biggest mistake in Java 8. Optional is also one of the more widely misused APIs. A brief survey of OpenJDK code revealed several embarrassing examples of Optional usage, and expert Java programmers have admitted to not making the most of this API.
This session covers the history and rationale of Optional, provides recommendations and examples of proper and effective usage, shows several antipatterns and code smells and how to fix them, and finally describes some current and proposed work on Optional for Java 9.