Java continues to evolve to support an ever-changing ecosystem of applications, languages, and platforms. Whether you are building systems that run at scale, or applications for mobile devices, performance and features are key. This track will focus on how you can build better software, innovate in new spaces, and improve efficiency by leveraging improvements in the JDK.
Track: Java - Propelling the Ecosystem Forward
Location: Broadway Ballroom South, 6th fl.
Day of week:
Trackhost Interview
- QCon: What's the big picture you're looking to accomplish in the Java track this year at QConNY?
Haley: Since we are coming up to a new Java release, I wanted to highlight some the features and improvements that are coming with Java 9 as well as interesting work people are doing with Java 8. What you see in the track is a mix of new features, Java 9 migration stories, and also some of the cool projects that Oracle and the Open Source community are investing in.
- QCon: If you had to pick just one, what are you most excited about for QCon NY?
Haley: Probably the Graal talk. When I think about what Thomas is working on, it kind of blows my mind. I'm really interested to hear about how they're achieving language interoperability within the same runtime and what the potential is for this in the real world.
- QCon: What do you recommend that a lead developer focus on in the months ahead?
- Haley: One area that I'd like to understand more deeply is machine learning. I keep running into problems in my current role which seem like they could benefit from a machine learning approach, so I think there is a lot of value in understanding that space as well as which use cases are a good fit.
Servlet vs Reactive Stacks In 5 Use Cases
In the past year, Netflix shared a story about upgrading their main gateway serving 83 million users from Servlet-stack Zuul 1 to an async and non-blocking Netty-based Zuul 2. The results were interesting and nuanced with some major benefits as well as some trade-offs.
Can mere mortal web applications make this journey and moreover should they? The best way to explore the answer is through a specific use case. In this talk, we'll take 5 common use cases in web application development and explore the impact of building on Servlet and Reactive web application stacks.
For reactive programming, we'll use RxJava and Reactor. For the web stack, we'll pit Spring MVC vs Spring WebFlux (new in Spring 5) allowing us to move easily between the Servlet and Reactive worlds and drawing a meaningful, apples-to-apples comparison. Spring knowledge is not required and not assumed for this session.
Fearless AWS Lambdas
The modern Java Virtual Machine (JVM) is the culmination of millions of hours of expert engineering, and is the foundation on which enormous portions of the digital landscape are built. However, as a runtime for AWS Lambda functions, the JVM is often derided as being a poor fit for an ephemeral world. The truth of the matter is that the JVM is an excellent choice of runtime for a wide range of AWS Lambda use cases, and developers need not even constrain themselves to just the Java language to use it.
In this talk, John Chapin gives an overview of the JVM runtime for AWS Lambda, as well as a comprehensive look at JVM-based Lambda performance across a range of use cases. He outlines a set of criteria to help architects and engineers decide whether or not to choose the JVM over the other runtime options. He also gives strategies, tips, and examples for developing efficient, performant AWS Lambda functions in a variety of JVM languages, including Java, Clojure, and Scala.
Migrating Speedment to Java 9
Migrating a Java 8 application to Java 9 is not just an exercise in API management, but also a learning experience in areas such as memory management and package dependencies.
This talk will share insights from our experience migrating Speedment to Java 9 with a focus on 2 key areas. First, Speedment is an ORM with a Java 8 Streams API and one of its prominent features is acceleration based on in-memory off-heap caching of data. Because it relies on the efficient handling of Strings and sun.misc. Unsafe memory access, the migration entailed several interesting performance considerations. Second, the key feature of Java 9, Project Jigsaw, fits well with the already fundamentally modular design of Speedment. Having an API based on OSGi modularization helps when taking the step to Java 9 but there are several pitfalls to be avoided.
This talk will cover examples such as test frameworks failing and dependencies needing to be reworked to accommodate the stricter Java 9 modularization.
Polyglot on the JVM with Graal
Current language runtimes often execute in isolation -- running in different processes, using different compilation infrastructure, and maintaining their own garbage collectors. There is no reuse of infrastructure and cross-language communication is inefficient. Our vision of the future of execution runtimes is Graal: an integrated, polyglot, high-performance execution environment. Its core is a new just-in-time compiler for the Java Virtual Machine. Graal doesn’t only support Java-based languages such as Scala or Kotlin, but also provides a dynamic language implementation framework that is used to implement JavaScript, Ruby, and R. Additionally, even lower level languages such as C, C++, Go, and Rust are integrated into the ecosystem.
This session provides an overview of the new capabilities Graal enables for seamless language interoperability while simultaneously providing world-class performance for each individual language. Lastly, it will preview a low footprint ahead-of-time compiled Graal-enabled VM for embedded environments and microservices that require fast startup.
The Java Evolution of Eclipse Collections
With each passing version of Java, frameworks must adapt and transform in order to stay current. Eclipse Collections is a collections framework for Java. It has JDK-compatible List, Set and Map implementations with a rich API, as well as additional types not found in the JDK such as Bags, Multimaps and BiMaps. Eclipse Collections also has a full complement of primitive containers.
In this session, we will cover some of the newest features from the 8.0.0 release including the use of Java 8 features such as:
- Collectors – Learn how to transform your streams with your own custom, reusable Collectors.
- Optional – Leverage interop between this new Java 8 class and EC API like detectWithOptional().
- SummaryStatistics – Understand ways to perform mathematical evaluations on your JDK and EC primitive collections and see the memory saving benefits of EC primitive collections.
These new interactions allow developers to have a more seamless experience coding using both Eclipse Collections and Java. We will also discuss some of the upcoming changes to the framework to better prepare for Java 9, specifically the process of modularizing the framewor