Now that Java has settled into a six month release model, we are seeing significant innovation at a very rapid pace. This track will cover the new features in the recent and near-future releases of Java and the JVM. We will also discuss how these additions and changes offer new, modern functionality and higher performance to real-world Java applications. We’ll hear about modern Java’s influence ranging from cloud native to IoT, serverless to low-latency data stores, machine learning to scalability, in a variety of application domains.
Track: Modern Java Innovations
Location: Broadway Ballroom South, 6th fl.
Day of week:
Track Host: Jeanne Boyarsky
Jeanne Boyarsky is a Java developer and part time ScrumMaster. She co-authored Wiley’s OCA/OCP 8 certification books and is updating them for the Java 11. In addition to volunteering at CodeRanch, she mentors the programmers on a high school robotics team and won a mentorship award. In the last year, Jeanne has spoken at conferences including Oracle Code One, DevNexus and QCon.
10:35am - 11:25am
Java Futures, 2019 Edition
Since last year, we've seen two more major versions of the JDK! What's changed in the last year, and what's coming down the road? Join Java Language Architect Brian Goetz in a whirlwind tour of just some of the features coming to Java next.
11:50am - 12:40pm
The Trouble with Memory
When developers and operations are asked: what is the biggest performance bottleneck you face on a regular basis, it's rare that memory inefficiency comes up as an answer. Yet our observations suggest that approximately 60% of all Java applications suffer from this problem. We also see this inefficiency in new (Java 11/12) and older versions of Java as well as Scala, Ruby, Kotlin, Clojure, Groovy, et al. We’ve also seen it in C#/CLR applications, on Android devices, in the cloud, on bare metal systems and just about everywhere. There are many reasons why this bottleneck is being overlooked. Quite often this memory inefficiency hides itself as lower application throughput and longer-tail latency events. These other non-memory issues then take the mistaken blame. In this session, we’ll look at the telltale signs that your JVM based application is in that 60% memory inefficiency area, and demonstrate steps you can take with your Java application to attack this problem.
1:40pm - 2:30pm
Maximizing Performance with GraalVM
GraalVM project enhances the Java ecosystem with an integrated, polyglot, high-performance execution environment for dynamic, static, and native languages. GraalVM supports Java, Scala, Kotlin, Groovy, and other JVM-based languages. At the same time, it can run the dynamic scripting languages JavaScript including node.js, Ruby, R, and Python.
In this session we will discuss the best practices for Java code and compiler configurations to maximize performance with GraalVM and how to measure performance in a reliable manner. We will talk about how to achieve minimal memory footprint and binary size of GraalVM native images — programs compiled ahead of time to native executables. A comparison of profile-guided optimizations for ahead-of-time compilation and just-in-time compilation will show the benefits and drawbacks of the two approaches. After this session you will have a better idea how to use GraalVM for the maximum potential to run your applications faster!
2:55pm - 3:45pm
Are We Really Cloud-Native?
As Java developers we are used to adjusting ourselves in heterogeneous environments and so over the last ten years or so we gained experience with PaaS, VMs, Containers, DevOps, Continuous Integration and Microservices Architectures. Now a new phenomena arises: building greenfield applications with the intent of using agile application development and architecting specifically for the Cloud a.k.a Cloud Native Computing. But are we really Cloud-Native because we use the latest and greatest in technology and run it on a (public) cloud platform? The modern Cloud is much more than just a virtualization platform. And is Java even a natural fit in such environments?
In this talk I will go beyond the hype of being Cloud-Native and focus instead on what being Cloud-Native actually requires in terms of skills and experience for Java Developers and how it will affect and impact traditional systems design.
4:10pm - 5:00pm
Panel: Which Java Vendor Should I Choose?
Many vendors provide free and paid versions of Java. How do you know which one to choose and for which use case? You probably wouldn’t use the same JDK for Cloud, IoT and more. This session will provide an animated discussion to help you pick which JDK makes sense for your organization. We will have members of the JCP EC, vendors and local companies participating in a lively discussion.
Simon Ritter, Deputy CTO @Azul
Tony Printezis, JVM/GC Engineer @Twitter & Twitter Rep at JCP Executive Committee
Sai Sharan Donthi, Assistant Vice President @CreditSuisse
5:25pm - 6:15pm
Beyond Entitlements for Cloud-Native
A Policy Engine is a tool that allows for checking user privileges as well as evaluate a responsibility matrix based on dynamic data for a given user. A Policy Engine is not only an Entitlement Management System but also provides for functional evaluation of conditions that result in deterministic responsibilities for a given user or actor.
This session shows how we use Open Policy Agent with Spring Boot and HOCON to produce a responsibility management solution that scales to volume and performance needs. We also show some hiccups that we faced while deriving the most optimal solution for our needs. A short explanation of some tooling we built for validating the policy files in the IDE will also be discussed.
Hong Liu, Principal Developer, Resilient Systems Engineering @BNYMellon