Track: Java - Propelling the Ecosystem Forward

Location: Broadway Ballroom South, 6th fl.

Day of week:

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.

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.

Rossen Stoyanchev, Spring Framework Committer @Pivotal

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.

John Chapin, Cloud Technology Consultant with an expertise in Serverless Computing

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.

Dan Lawesson, CSO @Speedment

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.

Thomas Wuerthinger, Graal Compiler Architect @Oracle

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

Kristen O'Leary, Technology Associate @GoldmanSachs

Java Open Space

Richard Kasperowski, Author of The Core Protocols: A Guide to Greatness

Tracks

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.