SlideShare a Scribd company logo
Highlights from Java 10-13
and Future of Java
JCON 25.09.2019
by Rodion Alukhanov and Vadym Kazulkin, ip.labs GmbH
Contact
Vadym Kazulkin, ip.labs GmbH
v.kazulkin@iplabs.de
www.xing.com/profile/Vadym_Kazulkin
@VKazulkin, @ServerlessBonn (Meetup)
Rodion Alukhanov, ip.labs GmbH
r.alukhanov@iplabs.de
www.xing.com/profile/Rodion_Alukhanov
ip.labs GmbH
Agenda
● Highlights from Java 10-13
● Project Valhalla (Value Types)
● Project Loom (Fibers and Continuations)
● GraalVM
Project Amber
Local-Variable Type Inference (JEP 286, JDK 10)
URL url = new URL("https://javapro.io/neues-in-java-13");
URLConnection connection = url.openConnection();
try (InputStream s1 = connection.getInputStream()) {
IOUtils.copy(s1, System.out);
};
var url = new URL("https://javapro.io/neues-in-java-13");
var connection = url.openConnection();
try (var s1 = connection.getInputStream()) {
IOUtils.copy(s1, System.out);
};
var var = 19;
var b = null; // Compilation error
var c = 1; d = 1; // Compilation error
Project Amber
Local-Variable Type Inference (JEP 286, JDK 10)
var a = new ArrayList<>(); // list of <Object>
BiFunction<Integer, Integer, Integer> f1 =
(var a, var b) -> a + b; // since Java 11
var f2 = (var a, var b) -> a + b; // Compilation error
Consumer<String> a = getBuffer(); // Consumer or Supplier, never both
a.accept("variable of two types");
Supplier<String> b = (Supplier<String>)a;
System.out.print(b.get());
Project Amber
Local-Variable Type Inference (JEP 286, JDK 10)
// Tricky way to declare "Consumer & Supplier" type
public <T extends Consumer<String> & Supplier<String>> T getBuffer() {
return (T)new Buffer();
}
var a = getBuffer();
a.accept("variable of two types");
System.out.print(a.get());
Garbage Collector Interface (JEP 304, JDK10)
ZGC: A Scalable Low-Latency Garbage Collector (Experimental),
(JEP 333, JDK11)
Epsilon: A No-Op Garbage Collector (Experimental),
(JEP 318, JDK11)
Shenandoah: A Low-Pause-Time Garbage Collector (Experimental),
(JEP189, JDK 12)
Abortable Mixed Collections for G1 (JEP 344, JDK 12)
Promptly Return Unused Committed Memory from G1 (JEP 346, JDK 12)
ZGC: Uncommit Unused Memory, (JEP 351, JDK13)
String value = null;
switch (k) {
case 1: value = "one";
break;
case 2: value = "two";
break;
case 3:
case 4: value = “many";
break;
}
Switch Expressions (JEP 325, JDK 12 Preview),
Switch Expressions (JEP 354, JDK 13 Preview)
switch (k) {
case 1 -> value = "one";
case 2 -> value = "two";
case 3, 4 -> value = "many";
}
value = switch(k) {
case 1 -> "one";
case 2 -> "two";
case 3, 4 -> "many";
default -> {
yield null;
}
};
HTTP Client, (JEP 110, JDK 9 Incubator),
HTTP Client (JEP 321, JDK 11)
Some Features useful features:
+ HTTP/2 Support
+ Asynchronous requests
+ Stream, JDK Flow support
+ method chaining
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://javapro.io/neues-in-java-13"))
.build();
HttpResponse<String> response =
httpClient.send(request, BodyHandlers.ofString());
logger.info("Response status code: " + response.statusCode());
logger.info("Response headers: " + response.headers());
logger.info("Response body: " + response.body());
- No URI building libraries
- No compression support
- No multipart form data parser
- No non-2xx to exception conversion
API: Unmodifiable Lists (JDK 10)
List.of(e1,e2,e3,e4...)
List.copyOf(copyMe)
Collectors.toUnmodifiableList()
// same for Set and Map
// copies only if needed
// java.lang.UnsupportedOperationException
// no Guava compatibility (as expected)
API: Support for Unicode White Spaces (JDK 11)
String.isBlank()
String.strip()
String.stripLeading()
String.stripTrailing()
String.repeat(count)
Character trimable stripable
U+0009, TAB yes yes
U+0020, SPACE yes yes
U+00A0 NO-BREAK SPACE no no
U+2000 EN QUAD no yes
U+200B ZERO WIDTH SPACE no no
Better Container-Awareness (Docker Issues)
Runtime runtime = Runtime.getRuntime();
int processors = runtime.availableProcessors();
long maxMemory = runtime.maxMemory();
4 CORES, 4Gb --cpus=2 --cpuset-cpus=0,1
JAVA8, runtime.availableProcessors 4 2
JAVA10, runtime.availableProcessors 2 2
4 CORES, 4Gb --memory=512m
JAVA8, runtime.maxMemory 1g (¼ of 4g)
JAVA9, runtime.maxMemory 128m (¼ of 512m)
Fix for JDK 8u131 (Issue JDK-8146115)
-XX:+UseCGroupMemoryLimitForHeap
-XX:+UnlockExperimentalVMOptions
Application Class Data Sharing, (JEP 310, JEP 341, JEP 350)
load class-file
from disk
verify byte-
code
optimize
put into internal
merory structure
- CDS (-Xshare:auto) // JDK5
- Application CDS // JDK 10
- CDS out-of-the-box // JDK 12
- Dynamic Application CSD (-XX:ArchiveClassesAtExit) // JDK 13
load dump from disk map RAM
Raw String Literals (JEP 326),
Text-Blocks (Preview), (JEP 355, JDK 13)
var html = """
...........<html>
........... <body>Hello, world</body>
...........</html>
...........""";
- Incidental white spaces are removed (shown as dots in the example)
- Trailing white spaces are removed
- Line breaks become LF (a.k.a.  n) regardless of platform
- No incidential tabs support (checked using build 25)
- No variable place holder (as supported by Kotlin and Scala)
Project Valhalla
Value Types
Source: http://openjdk.java.net/projects/valhalla/
Project Valhalla
Goal:
● Reboot the layout of data in memory
Source: Brian Goetz, Oracle „Evolving the Java Language” https://www.youtube.com/watch?v=A-mxj2vhVAA
Project Valhalla
Motivation:
● Hardware has changed
– Multi-core
– The cost of cache misses has increased
Source: Brian Goetz, Oracle „Evolving the Java Language” https://www.youtube.com/watch?v=A-mxj2vhVAA
Project Valhalla
Motivation
Source: „Latency Numbers Every Programmer Should Know”
https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html
Project Valhalla
Motivation
Source: „Latency Numbers Every Programmer Should Know”
https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html
Project Valhalla
Storing objects in the Java Heap has its price, because object’s
metadata consumes additional memory for :
● flags facilitating synchronization/locking
● identity/polymorphismus
● garbage collection
Project Valhalla
Value Object
Value Object is an immutable type that is distinguishable only
by the state of its properties
Project Valhalla
Benefits:
● Reduced memory usage
● Reduced indirection
● Increased locality
Codes like a class, works like a primitive (Brian Goetz)
Project Valhalla
Source: „What Is Project Valhalla?” https://dzone.com/articles/what-is-project-valhalla
Project Valhalla
Value Types
inline class Point {long x, y ;}
Project Valhalla
Value Types
Can
● have method and field
● implement interfaces
● use encapsulation
● be generic
Can’t
● be mutated
● be sub-classed
Project Valhalla
Current Status:
● Released public prototype L2
– Can declare and use value types (inline classes)
– Can have erased generics over value types (analoguos to List<Integer>)
– Memory Layout optimizations implemented
– Compiler/Virtual Machine optimizations implemented
– A lot of challenges to solve (read the article https://www.infoq.com/news/2019/07/valhalla-
openjdk-lw2-released/)
Source: Brian Goetz, Oracle „Valhalla Update” https://www.youtube.com/watch?v=1H4vmT-Va4o
Project Valhalla
Open Questions:
● Nullity
● Equality
● Migration
● Specialized generics (Point<T>)
● GraalVM Support
Source: Brian Goetz, Oracle „Valhalla Update” https://www.youtube.com/watch?v=1H4vmT-Va4o
Project Loom
Fibers and Continuations
Source: http://openjdk.java.net/projects/loom
Project Loom
Motivation:
● Developers currently have 2 choices to write concurrent code:
– use blocking/synchronous API, which is simple, but less scalable (number of threads, that OS
supports is far less that open and concurrent connections required)
– asynchronous API (Spring Project Reactor, RXJava 2), which is scalable, but complex, harder to
debug and profile and limited (no asynchronous JDBC standard in this area)
Sources: Alan Bateman, Oracle „Project Loom: Fibers and Continuations for Java” https://www.youtube.com/watch?v=vbGbXUjlRyQ
“Spaghetti Code” https://exceptionnotfound.net/spaghetti-code-the-daily-software-anti-pattern/
Project Loom
Goals:
● explore Java VM features and APIs built on top of them for the
implementation of lightweight user-mode threads (fibers) and continuations
Project Loom
Continuation
Continuation is a program object, representing a computation
that may be suspended and resumed
Continuation
package java.lang;
public class Continuation {
public Continuation (ContinuationScope scope, Runnable target)
public final void run()
public static void yield (ContinuationScope scope)
public boolean isDone()
}
http://hg.openjdk.java.net/loom/loom/file/27a4185098e8/src/java.base/share/classes/java/lang/Continuation.java
Project Loom
Fibers
Fibre is a lightweight thread scheduled not by the OS, but by
the Java Runtime with low memory footprint and low task-
switching cost
Project Loom
Fibers & Continuations
Fiber
=
Continuation + Schedular
Project Loom
Schedular
Schedular executes the task on a pool of carrier threads
● java.util.concurrent.Executor API exposes the Schedular
● Default schedular is a ForJoinPool
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Fibers
● java.lang.Fibre currently supports:
– scheduling
– parking/unparking
– waiting for a fibre to terminate
● Fiber-friendly APIs
– java.util.concurrent locks
– java.net.Socket/ServerSocket
– java.nio.channels.SocketChannel and Pipes
– Thread.sleep
– JSSE implementation of TLS
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Fibers Implementation
● Currently Thread and Fiber don’t have a common supertype
● Thread.currentThread() in context of Fibers
– Create adaptor (Shadow Thread)
– Adaptor emulates legacy Thread API (except deprecated methods like
stop, suspend and resume)
– Thread Local becomes Fiber Local
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Structured Concurrency
Basic idea: Everytime that the control splits into multiple concurrent paths, we
want to guarantee that they join up again
try (var scope= FiberScope. open()) {
var fiber1= scope.schedule(task1);
var fiber2= scope.schedule(task2);
} //blocks until fiber1 and fiber2 terminate
Sources: Nathanial J. Smith „Notes on structured concurrency, or: Go statement considered harmful”
https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
Roman Elizarov: “Structured concurrency with Coroutines in Kotlin” https://medium.com/@elizarov/structured-concurrency-
722d765aa952
Project Loom
Structured Concurrency
Cancelation:
● Each fiber has cancel status which can only be set once, which sets the
interrupt status and unparks the fiber
● The task can poll canceled status
try (var scope= FiberScope. open(PROPAGATE_CANCEL)) {
var fiber1= scope.schedule(task1);
var fiber2= scope.schedule(task2);
} //canceling the fiber executing this code will cancel fiber1 and fiber2
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Current Status:
● Implemented initial prototype with Continuation and Fiber support
● Current prototype of Continuations and Fibers can run existing code
● Current focus on
– Performance improvement
– Stable Fiber API
– Debugger support
– Java Flight Recorder support
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Limitations:
● Can‘t yield with native frames
● Can‘t yield while holding a monitor
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Loom
Open Questions:
● Should the existing Thread API be completely re-examined?
● Can all existing code be run on top of Fibers?
Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
Project Metropolis
Polyglot GraalVM for Java 8
Source: http://openjdk.java.net/projects/metropolis
Project Metropolis
Goals:
● High performance for all languages
● Zero overhead interoperability between languages
● Language-level virtualization level for shared tooling
Source: Oleg Selajev : “Run Code in Any Language Anywhere with GraalVM” https://www.youtube.com/watch?v=JoDOo4FyYMU
JEP 317
Experimental Java-Based JIT Compiler
Graal, a Java-based JIT compiler on the Linux/x64 platform, is the basis of the
experimental Ahead-of-Time (AOT) compiler introduced in JDK 9.
To Enable:
-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
GraalVM
Architecture
Sources: Practical Partial Evaluation for High-Performance Dynamic Language Runtimes
http://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-truffle.pdf
„The LLVM Compiler Infrastructure“ https://llvm.org/
GraalVM
Benchmarks
Sources: Renaissance Suite https://renaissance.dev/
Oleg Šelajev: “GraalVM for Java developers @ Spring I/O 2019” https://www.youtube.com/watch?v=GinNxS3OSi0
GraalVM
New in GraalVM 19 libgraal
Sources: „libgraal: GraalVM compiler as a precompiled GraalVM native image“ https://medium.com/graalvm/libgraal-
graalvm-compiler-as-a-precompiled-graalvm-native-image-26e354bee5c
Oleg Šelajev: “GraalVM for Java developers @ Spring I/O 2019” https://www.youtube.com/watch?v=GinNxS3OSi0
libgraal jargraal
• Libgraal is a shared library, produced by GraalVM Native Image, which contains a pre-compiled
version of the GraalVM compiler.
• In Java applications on GraalVM libgraal used as the top tier Just-In-Time compiler.
• libgraal improves startup times and completely avoids interfering with the heap usage and profiling
of the application code.
GraalVM
Architecture
Sources: Practical Partial Evaluation for High-Performance Dynamic Language Runtimes
http://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-truffle.pdf
„The LLVM Compiler Infrastructure“ https://llvm.org/
SubstrateVM
Source: Oleg Šelajev, Thomas Wuerthinger, Oracle: “Deep dive into using GraalVM for Java and JavaScript”
https://www.youtube.com/watch?v=a-XEZobXspo
GraalVM and SubstrateVM
Source: Oleg Selajev, Oracle : “Run Code in Any Language Anywhere with GraalVM” https://www.youtube.com/watch?v=JoDOo4FyYMU
Support of GraalVM native images at Spring Framework
Working toward GraalVM native image support without requiring additional
configuration or workaround is one of the themes of upcoming Spring
Framework 5.3
Source: „GraalVM native image support“ https://github.com/spring-projects/spring-framework/wiki/GraalVM-native-image-support
GraalVM on SubstrateVM
A game changer for Java & Serverless?
Cold Start :
Source: Ajay Nair „Become a Serverless Black Belt” https://www.youtube.com/watch?v=oQFORsso2go
AWS Lambda cold start time
by supported language
Source: Yan Cui: https://read.acloud.guru/does-coding-language-memory-or-package-size-affect-cold-starts-of-aws-lambda-a15e26d12c76
GraalVM on SubstrateVM
A game changer for Java & Serverless?
Java Function compiled into a native executable using GraalVM on
SubstrateVM reduces
● “cold start” times
● memory footprint
● your bill in the cloud
by order of magnitude compared to running on JVM.
Lambda Layers
& Lambda
Runtime API
Door opener for using
• Newest Java versions
• Other JVM languages
Source: Mathias Düsterhöft : “Fighting cold startup issues for your Kotlin Lambda with GraalVM”
https://github.com/mduesterhoeft/kotlin-graalvm-custom-aws-lambda-runtime-talk
Quarkus
● Quarkus is a Kubernetes Native Java framework developed by Red Hat
tailored for GraalVM and HotSpot, crafted from best-of-breed Java libraries
and standards.
● The goal of Quarkus is
– make Java a leading platform in Kubernetes and serverless environments
– offering developers a unified reactive and imperative programming model
– optimally address a wider range of distributed application architectures.
Source: Jason Greene: „Introducing Quarkus: a next-generation Kubernetes native Java framework”
https://developers.redhat.com/blog/2019/03/07/quarkus-next-generation-kubernetes-native-java-framework/
is still an interesting and great
programming language
www.iplabs.de
Thank You!

More Related Content

What's hot

Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
Ryan Cuprak
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
Simon Ritter
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
Ryan Cuprak
 
Java 9 and Project Jigsaw
Java 9 and Project JigsawJava 9 and Project Jigsaw
Java 9 and Project Jigsaw
DPC Consulting Ltd
 
Petro Gordiievych "From Java 9 to Java 12"
Petro Gordiievych "From Java 9 to Java 12"Petro Gordiievych "From Java 9 to Java 12"
Petro Gordiievych "From Java 9 to Java 12"
LogeekNightUkraine
 
A Tour of the Modern Java Platform
A Tour of the Modern Java PlatformA Tour of the Modern Java Platform
A Tour of the Modern Java Platform
VMware Tanzu
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12
NexSoftsys
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in action
Marco Molteni
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
Sander Mak (@Sander_Mak)
 
Projects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG MainzProjects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG Mainz
Vadym Kazulkin
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Red Hat Developers
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
Ryan Cuprak
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
Bhanu Prakash Gopularam
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Martin Toshev
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
Simon Ritter
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
Ryan Cuprak
 
50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes
Arun Gupta
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack ImplementationMert Çalışkan
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
Wolfgang Weigend
 

What's hot (20)

Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
Java 9 and Project Jigsaw
Java 9 and Project JigsawJava 9 and Project Jigsaw
Java 9 and Project Jigsaw
 
Petro Gordiievych "From Java 9 to Java 12"
Petro Gordiievych "From Java 9 to Java 12"Petro Gordiievych "From Java 9 to Java 12"
Petro Gordiievych "From Java 9 to Java 12"
 
A Tour of the Modern Java Platform
A Tour of the Modern Java PlatformA Tour of the Modern Java Platform
A Tour of the Modern Java Platform
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in action
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
 
Projects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG MainzProjects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG Mainz
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
 

Similar to Highlights from Java 10-13 and Future of Java at JCON 2019 by Alukhanov and Kazulkin

JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVMJavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
FestGroup
 
Projects Valhalla and Loom at IT Tage 2021
Projects Valhalla and Loom at IT Tage 2021Projects Valhalla and Loom at IT Tage 2021
Projects Valhalla and Loom at IT Tage 2021
Vadym Kazulkin
 
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
Highlights from Java 10, 11 and 12 and Future of Java at JUG KoblenzHighlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
Vadym Kazulkin
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
Vadym Kazulkin
 
Java Course 15: Ant, Scripting, Spring, Hibernate
Java Course 15: Ant, Scripting, Spring, HibernateJava Course 15: Ant, Scripting, Spring, Hibernate
Java Course 15: Ant, Scripting, Spring, Hibernate
Anton Keks
 
Serverless Java on Kubernetes
Serverless Java on KubernetesServerless Java on Kubernetes
Serverless Java on Kubernetes
Krzysztof Sobkowiak
 
Java 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
Michal Malohlava
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
 
Sofea and SOUI - Web future without web frameworks
Sofea and SOUI - Web future without web frameworksSofea and SOUI - Web future without web frameworks
Sofea and SOUI - Web future without web frameworks
André Neubauer
 
Not Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabsNot Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabs
Konrad Malawski
 
Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020
Vadym Kazulkin
 
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
Juarez Junior
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
Mattias Karlsson
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
Rapid Web API development with Kotlin and Ktor
Rapid Web API development with Kotlin and KtorRapid Web API development with Kotlin and Ktor
Rapid Web API development with Kotlin and Ktor
Trayan Iliev
 
Panama.pdf
Panama.pdfPanama.pdf
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Ondrej Mihályi
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Payara
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Payara
 

Similar to Highlights from Java 10-13 and Future of Java at JCON 2019 by Alukhanov and Kazulkin (20)

JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVMJavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
JavaFest. Вадим Казулькин. Projects Valhalla, Loom and GraalVM
 
Projects Valhalla and Loom at IT Tage 2021
Projects Valhalla and Loom at IT Tage 2021Projects Valhalla and Loom at IT Tage 2021
Projects Valhalla and Loom at IT Tage 2021
 
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
Highlights from Java 10, 11 and 12 and Future of Java at JUG KoblenzHighlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
 
Java Course 15: Ant, Scripting, Spring, Hibernate
Java Course 15: Ant, Scripting, Spring, HibernateJava Course 15: Ant, Scripting, Spring, Hibernate
Java Course 15: Ant, Scripting, Spring, Hibernate
 
Play framework
Play frameworkPlay framework
Play framework
 
Serverless Java on Kubernetes
Serverless Java on KubernetesServerless Java on Kubernetes
Serverless Java on Kubernetes
 
Java 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Sofea and SOUI - Web future without web frameworks
Sofea and SOUI - Web future without web frameworksSofea and SOUI - Web future without web frameworks
Sofea and SOUI - Web future without web frameworks
 
Not Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabsNot Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabs
 
Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020
 
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
Oracle CloudWorld 2023 - A High-Speed Data Ingestion Service in Java Using MQ...
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
 
Rapid Web API development with Kotlin and Ktor
Rapid Web API development with Kotlin and KtorRapid Web API development with Kotlin and Ktor
Rapid Web API development with Kotlin and Ktor
 
Panama.pdf
Panama.pdfPanama.pdf
Panama.pdf
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 

More from Vadym Kazulkin

High performance Serverless Java on AWS at GeeCon 2024 Krakow
High performance Serverless Java on AWS at GeeCon 2024 KrakowHigh performance Serverless Java on AWS at GeeCon 2024 Krakow
High performance Serverless Java on AWS at GeeCon 2024 Krakow
Vadym Kazulkin
 
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 LondonAmazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Vadym Kazulkin
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
Vadym Kazulkin
 
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin
 
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
Vadym Kazulkin
 
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Vadym Kazulkin
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Vadym Kazulkin
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
Vadym Kazulkin
 
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
Vadym Kazulkin
 
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Vadym Kazulkin
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Vadym Kazulkin
 
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
Vadym Kazulkin
 
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Vadym Kazulkin
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
Vadym Kazulkin
 
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Vadym Kazulkin
 
Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022
Vadym Kazulkin
 
Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022
Vadym Kazulkin
 
Adopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays LuxemburgAdopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays Luxemburg
Vadym Kazulkin
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Vadym Kazulkin
 
Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022
Vadym Kazulkin
 

More from Vadym Kazulkin (20)

High performance Serverless Java on AWS at GeeCon 2024 Krakow
High performance Serverless Java on AWS at GeeCon 2024 KrakowHigh performance Serverless Java on AWS at GeeCon 2024 Krakow
High performance Serverless Java on AWS at GeeCon 2024 Krakow
 
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 LondonAmazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
Amazon DevOps Guru for Serverless Applications at DevOpsCon 2024 London
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
 
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
 
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...How to reduce cold starts for Java Serverless applications in AWS at Serverle...
How to reduce cold starts for Java Serverless applications in AWS at Serverle...
 
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
Revolutionize DevOps lifecycle with Amazon CodeCatalyst and DevOps Guru at De...
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
Amazon DevOps Guru for the Serverless Applications at AWS Community Day NL 2023
 
Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...Making sense of service quotas of AWS Serverless services and how to deal wit...
Making sense of service quotas of AWS Serverless services and how to deal wit...
 
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
How to reduce cold starts for Java Serverless applications in AWS at InfoShar...
 
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
Adopting Java for the Serverless World at Voxxed Days Bruxelles 2023
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
 
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
AWS Lambda SnapStart: Why, How and What AWS Serverless Meetup New York Boston...
 
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
Revolutionize DevOps with ML capabilities. Deep dive into Amazon CodeGuru and...
 
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...Amazon DevOps Guru for the Serverless Applications at  AWS Community Day Bene...
Amazon DevOps Guru for the Serverless Applications at AWS Community Day Bene...
 
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
Amazon CodeGuru vs SonarQube for Java Developers at JCon 2022
 
Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022Adopting Java for the Serverless World at JUG Saxony Day 2022
Adopting Java for the Serverless World at JUG Saxony Day 2022
 
Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022Projects Valhalla and Loom DWX 2022
Projects Valhalla and Loom DWX 2022
 
Adopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays LuxemburgAdopting Java for the Serverless World at VoxxedDays Luxemburg
Adopting Java for the Serverless World at VoxxedDays Luxemburg
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
 
Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022Adopting Java for the Serverless World at JUG Bonn 2022
Adopting Java for the Serverless World at JUG Bonn 2022
 

Recently uploaded

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 

Recently uploaded (20)

20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 

Highlights from Java 10-13 and Future of Java at JCON 2019 by Alukhanov and Kazulkin

  • 1. Highlights from Java 10-13 and Future of Java JCON 25.09.2019 by Rodion Alukhanov and Vadym Kazulkin, ip.labs GmbH
  • 2. Contact Vadym Kazulkin, ip.labs GmbH v.kazulkin@iplabs.de www.xing.com/profile/Vadym_Kazulkin @VKazulkin, @ServerlessBonn (Meetup) Rodion Alukhanov, ip.labs GmbH r.alukhanov@iplabs.de www.xing.com/profile/Rodion_Alukhanov
  • 4. Agenda ● Highlights from Java 10-13 ● Project Valhalla (Value Types) ● Project Loom (Fibers and Continuations) ● GraalVM
  • 5. Project Amber Local-Variable Type Inference (JEP 286, JDK 10) URL url = new URL("https://javapro.io/neues-in-java-13"); URLConnection connection = url.openConnection(); try (InputStream s1 = connection.getInputStream()) { IOUtils.copy(s1, System.out); }; var url = new URL("https://javapro.io/neues-in-java-13"); var connection = url.openConnection(); try (var s1 = connection.getInputStream()) { IOUtils.copy(s1, System.out); };
  • 6. var var = 19; var b = null; // Compilation error var c = 1; d = 1; // Compilation error Project Amber Local-Variable Type Inference (JEP 286, JDK 10) var a = new ArrayList<>(); // list of <Object> BiFunction<Integer, Integer, Integer> f1 = (var a, var b) -> a + b; // since Java 11 var f2 = (var a, var b) -> a + b; // Compilation error
  • 7. Consumer<String> a = getBuffer(); // Consumer or Supplier, never both a.accept("variable of two types"); Supplier<String> b = (Supplier<String>)a; System.out.print(b.get()); Project Amber Local-Variable Type Inference (JEP 286, JDK 10) // Tricky way to declare "Consumer & Supplier" type public <T extends Consumer<String> & Supplier<String>> T getBuffer() { return (T)new Buffer(); } var a = getBuffer(); a.accept("variable of two types"); System.out.print(a.get());
  • 8. Garbage Collector Interface (JEP 304, JDK10) ZGC: A Scalable Low-Latency Garbage Collector (Experimental), (JEP 333, JDK11) Epsilon: A No-Op Garbage Collector (Experimental), (JEP 318, JDK11) Shenandoah: A Low-Pause-Time Garbage Collector (Experimental), (JEP189, JDK 12) Abortable Mixed Collections for G1 (JEP 344, JDK 12) Promptly Return Unused Committed Memory from G1 (JEP 346, JDK 12) ZGC: Uncommit Unused Memory, (JEP 351, JDK13)
  • 9. String value = null; switch (k) { case 1: value = "one"; break; case 2: value = "two"; break; case 3: case 4: value = “many"; break; } Switch Expressions (JEP 325, JDK 12 Preview), Switch Expressions (JEP 354, JDK 13 Preview) switch (k) { case 1 -> value = "one"; case 2 -> value = "two"; case 3, 4 -> value = "many"; } value = switch(k) { case 1 -> "one"; case 2 -> "two"; case 3, 4 -> "many"; default -> { yield null; } };
  • 10. HTTP Client, (JEP 110, JDK 9 Incubator), HTTP Client (JEP 321, JDK 11) Some Features useful features: + HTTP/2 Support + Asynchronous requests + Stream, JDK Flow support + method chaining HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://javapro.io/neues-in-java-13")) .build(); HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString()); logger.info("Response status code: " + response.statusCode()); logger.info("Response headers: " + response.headers()); logger.info("Response body: " + response.body()); - No URI building libraries - No compression support - No multipart form data parser - No non-2xx to exception conversion
  • 11. API: Unmodifiable Lists (JDK 10) List.of(e1,e2,e3,e4...) List.copyOf(copyMe) Collectors.toUnmodifiableList() // same for Set and Map // copies only if needed // java.lang.UnsupportedOperationException // no Guava compatibility (as expected)
  • 12. API: Support for Unicode White Spaces (JDK 11) String.isBlank() String.strip() String.stripLeading() String.stripTrailing() String.repeat(count) Character trimable stripable U+0009, TAB yes yes U+0020, SPACE yes yes U+00A0 NO-BREAK SPACE no no U+2000 EN QUAD no yes U+200B ZERO WIDTH SPACE no no
  • 13. Better Container-Awareness (Docker Issues) Runtime runtime = Runtime.getRuntime(); int processors = runtime.availableProcessors(); long maxMemory = runtime.maxMemory(); 4 CORES, 4Gb --cpus=2 --cpuset-cpus=0,1 JAVA8, runtime.availableProcessors 4 2 JAVA10, runtime.availableProcessors 2 2 4 CORES, 4Gb --memory=512m JAVA8, runtime.maxMemory 1g (¼ of 4g) JAVA9, runtime.maxMemory 128m (¼ of 512m) Fix for JDK 8u131 (Issue JDK-8146115) -XX:+UseCGroupMemoryLimitForHeap -XX:+UnlockExperimentalVMOptions
  • 14. Application Class Data Sharing, (JEP 310, JEP 341, JEP 350) load class-file from disk verify byte- code optimize put into internal merory structure - CDS (-Xshare:auto) // JDK5 - Application CDS // JDK 10 - CDS out-of-the-box // JDK 12 - Dynamic Application CSD (-XX:ArchiveClassesAtExit) // JDK 13 load dump from disk map RAM
  • 15. Raw String Literals (JEP 326), Text-Blocks (Preview), (JEP 355, JDK 13) var html = """ ...........<html> ........... <body>Hello, world</body> ...........</html> ..........."""; - Incidental white spaces are removed (shown as dots in the example) - Trailing white spaces are removed - Line breaks become LF (a.k.a. n) regardless of platform - No incidential tabs support (checked using build 25) - No variable place holder (as supported by Kotlin and Scala)
  • 16. Project Valhalla Value Types Source: http://openjdk.java.net/projects/valhalla/
  • 17. Project Valhalla Goal: ● Reboot the layout of data in memory Source: Brian Goetz, Oracle „Evolving the Java Language” https://www.youtube.com/watch?v=A-mxj2vhVAA
  • 18. Project Valhalla Motivation: ● Hardware has changed – Multi-core – The cost of cache misses has increased Source: Brian Goetz, Oracle „Evolving the Java Language” https://www.youtube.com/watch?v=A-mxj2vhVAA
  • 19. Project Valhalla Motivation Source: „Latency Numbers Every Programmer Should Know” https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html
  • 20. Project Valhalla Motivation Source: „Latency Numbers Every Programmer Should Know” https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html
  • 21. Project Valhalla Storing objects in the Java Heap has its price, because object’s metadata consumes additional memory for : ● flags facilitating synchronization/locking ● identity/polymorphismus ● garbage collection
  • 22. Project Valhalla Value Object Value Object is an immutable type that is distinguishable only by the state of its properties
  • 23. Project Valhalla Benefits: ● Reduced memory usage ● Reduced indirection ● Increased locality Codes like a class, works like a primitive (Brian Goetz)
  • 24. Project Valhalla Source: „What Is Project Valhalla?” https://dzone.com/articles/what-is-project-valhalla
  • 25. Project Valhalla Value Types inline class Point {long x, y ;}
  • 26. Project Valhalla Value Types Can ● have method and field ● implement interfaces ● use encapsulation ● be generic Can’t ● be mutated ● be sub-classed
  • 27. Project Valhalla Current Status: ● Released public prototype L2 – Can declare and use value types (inline classes) – Can have erased generics over value types (analoguos to List<Integer>) – Memory Layout optimizations implemented – Compiler/Virtual Machine optimizations implemented – A lot of challenges to solve (read the article https://www.infoq.com/news/2019/07/valhalla- openjdk-lw2-released/) Source: Brian Goetz, Oracle „Valhalla Update” https://www.youtube.com/watch?v=1H4vmT-Va4o
  • 28. Project Valhalla Open Questions: ● Nullity ● Equality ● Migration ● Specialized generics (Point<T>) ● GraalVM Support Source: Brian Goetz, Oracle „Valhalla Update” https://www.youtube.com/watch?v=1H4vmT-Va4o
  • 29. Project Loom Fibers and Continuations Source: http://openjdk.java.net/projects/loom
  • 30. Project Loom Motivation: ● Developers currently have 2 choices to write concurrent code: – use blocking/synchronous API, which is simple, but less scalable (number of threads, that OS supports is far less that open and concurrent connections required) – asynchronous API (Spring Project Reactor, RXJava 2), which is scalable, but complex, harder to debug and profile and limited (no asynchronous JDBC standard in this area) Sources: Alan Bateman, Oracle „Project Loom: Fibers and Continuations for Java” https://www.youtube.com/watch?v=vbGbXUjlRyQ “Spaghetti Code” https://exceptionnotfound.net/spaghetti-code-the-daily-software-anti-pattern/
  • 31. Project Loom Goals: ● explore Java VM features and APIs built on top of them for the implementation of lightweight user-mode threads (fibers) and continuations
  • 32. Project Loom Continuation Continuation is a program object, representing a computation that may be suspended and resumed
  • 33. Continuation package java.lang; public class Continuation { public Continuation (ContinuationScope scope, Runnable target) public final void run() public static void yield (ContinuationScope scope) public boolean isDone() } http://hg.openjdk.java.net/loom/loom/file/27a4185098e8/src/java.base/share/classes/java/lang/Continuation.java
  • 34. Project Loom Fibers Fibre is a lightweight thread scheduled not by the OS, but by the Java Runtime with low memory footprint and low task- switching cost
  • 35. Project Loom Fibers & Continuations Fiber = Continuation + Schedular
  • 36. Project Loom Schedular Schedular executes the task on a pool of carrier threads ● java.util.concurrent.Executor API exposes the Schedular ● Default schedular is a ForJoinPool Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 37. Project Loom Fibers ● java.lang.Fibre currently supports: – scheduling – parking/unparking – waiting for a fibre to terminate ● Fiber-friendly APIs – java.util.concurrent locks – java.net.Socket/ServerSocket – java.nio.channels.SocketChannel and Pipes – Thread.sleep – JSSE implementation of TLS Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 38. Project Loom Fibers Implementation ● Currently Thread and Fiber don’t have a common supertype ● Thread.currentThread() in context of Fibers – Create adaptor (Shadow Thread) – Adaptor emulates legacy Thread API (except deprecated methods like stop, suspend and resume) – Thread Local becomes Fiber Local Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 39. Project Loom Structured Concurrency Basic idea: Everytime that the control splits into multiple concurrent paths, we want to guarantee that they join up again try (var scope= FiberScope. open()) { var fiber1= scope.schedule(task1); var fiber2= scope.schedule(task2); } //blocks until fiber1 and fiber2 terminate Sources: Nathanial J. Smith „Notes on structured concurrency, or: Go statement considered harmful” https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/ Roman Elizarov: “Structured concurrency with Coroutines in Kotlin” https://medium.com/@elizarov/structured-concurrency- 722d765aa952
  • 40. Project Loom Structured Concurrency Cancelation: ● Each fiber has cancel status which can only be set once, which sets the interrupt status and unparks the fiber ● The task can poll canceled status try (var scope= FiberScope. open(PROPAGATE_CANCEL)) { var fiber1= scope.schedule(task1); var fiber2= scope.schedule(task2); } //canceling the fiber executing this code will cancel fiber1 and fiber2 Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 41. Project Loom Current Status: ● Implemented initial prototype with Continuation and Fiber support ● Current prototype of Continuations and Fibers can run existing code ● Current focus on – Performance improvement – Stable Fiber API – Debugger support – Java Flight Recorder support Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 42. Project Loom Limitations: ● Can‘t yield with native frames ● Can‘t yield while holding a monitor Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 43. Project Loom Open Questions: ● Should the existing Thread API be completely re-examined? ● Can all existing code be run on top of Fibers? Source: Alan Bateman, Oracle „Project Loom Update” https://www.youtube.com/watch?v=NV46KFV1m-4
  • 44. Project Metropolis Polyglot GraalVM for Java 8 Source: http://openjdk.java.net/projects/metropolis
  • 45. Project Metropolis Goals: ● High performance for all languages ● Zero overhead interoperability between languages ● Language-level virtualization level for shared tooling Source: Oleg Selajev : “Run Code in Any Language Anywhere with GraalVM” https://www.youtube.com/watch?v=JoDOo4FyYMU
  • 46. JEP 317 Experimental Java-Based JIT Compiler Graal, a Java-based JIT compiler on the Linux/x64 platform, is the basis of the experimental Ahead-of-Time (AOT) compiler introduced in JDK 9. To Enable: -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
  • 47.
  • 48. GraalVM Architecture Sources: Practical Partial Evaluation for High-Performance Dynamic Language Runtimes http://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-truffle.pdf „The LLVM Compiler Infrastructure“ https://llvm.org/
  • 49. GraalVM Benchmarks Sources: Renaissance Suite https://renaissance.dev/ Oleg Šelajev: “GraalVM for Java developers @ Spring I/O 2019” https://www.youtube.com/watch?v=GinNxS3OSi0
  • 50. GraalVM New in GraalVM 19 libgraal Sources: „libgraal: GraalVM compiler as a precompiled GraalVM native image“ https://medium.com/graalvm/libgraal- graalvm-compiler-as-a-precompiled-graalvm-native-image-26e354bee5c Oleg Šelajev: “GraalVM for Java developers @ Spring I/O 2019” https://www.youtube.com/watch?v=GinNxS3OSi0 libgraal jargraal • Libgraal is a shared library, produced by GraalVM Native Image, which contains a pre-compiled version of the GraalVM compiler. • In Java applications on GraalVM libgraal used as the top tier Just-In-Time compiler. • libgraal improves startup times and completely avoids interfering with the heap usage and profiling of the application code.
  • 51. GraalVM Architecture Sources: Practical Partial Evaluation for High-Performance Dynamic Language Runtimes http://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-truffle.pdf „The LLVM Compiler Infrastructure“ https://llvm.org/
  • 52. SubstrateVM Source: Oleg Šelajev, Thomas Wuerthinger, Oracle: “Deep dive into using GraalVM for Java and JavaScript” https://www.youtube.com/watch?v=a-XEZobXspo
  • 53. GraalVM and SubstrateVM Source: Oleg Selajev, Oracle : “Run Code in Any Language Anywhere with GraalVM” https://www.youtube.com/watch?v=JoDOo4FyYMU
  • 54. Support of GraalVM native images at Spring Framework Working toward GraalVM native image support without requiring additional configuration or workaround is one of the themes of upcoming Spring Framework 5.3 Source: „GraalVM native image support“ https://github.com/spring-projects/spring-framework/wiki/GraalVM-native-image-support
  • 55. GraalVM on SubstrateVM A game changer for Java & Serverless? Cold Start : Source: Ajay Nair „Become a Serverless Black Belt” https://www.youtube.com/watch?v=oQFORsso2go
  • 56. AWS Lambda cold start time by supported language Source: Yan Cui: https://read.acloud.guru/does-coding-language-memory-or-package-size-affect-cold-starts-of-aws-lambda-a15e26d12c76
  • 57. GraalVM on SubstrateVM A game changer for Java & Serverless? Java Function compiled into a native executable using GraalVM on SubstrateVM reduces ● “cold start” times ● memory footprint ● your bill in the cloud by order of magnitude compared to running on JVM.
  • 58. Lambda Layers & Lambda Runtime API Door opener for using • Newest Java versions • Other JVM languages Source: Mathias Düsterhöft : “Fighting cold startup issues for your Kotlin Lambda with GraalVM” https://github.com/mduesterhoeft/kotlin-graalvm-custom-aws-lambda-runtime-talk
  • 59. Quarkus ● Quarkus is a Kubernetes Native Java framework developed by Red Hat tailored for GraalVM and HotSpot, crafted from best-of-breed Java libraries and standards. ● The goal of Quarkus is – make Java a leading platform in Kubernetes and serverless environments – offering developers a unified reactive and imperative programming model – optimally address a wider range of distributed application architectures. Source: Jason Greene: „Introducing Quarkus: a next-generation Kubernetes native Java framework” https://developers.redhat.com/blog/2019/03/07/quarkus-next-generation-kubernetes-native-java-framework/
  • 60. is still an interesting and great programming language
  • 61.