In today’s modern
computing age, constant enhancements in software innovations are driving
us closer to an era of software revolution. Perhaps in the distant
future, that may be how the 21st century is remembered best. Among the
popular software languages out there, however, Java continues to have
the largest industry footprint, running applications around the globe
producing combined annual revenue in trillions. That’s why keeping up on
the JDK is a high priority. Despite having a massive API to improve
programming productivity, Java has also grown due to its high
performance yet scalable JVM runtime, building among the fastest
computing modern applications. As Java’s footprint expands, JDK
innovations continue to impact billions of lines of code. As AppDynamics
continues to grow, our focus towards supporting Java is only furthered
by our customer use & industry adoption of the JVM.
Announcements:
Since
the release of Java 8 in March of 2014, discussions around what’s next
for Java 9 have begun to steadily grow. Although various JDK
enhancements were originally targeted for Java 9, the scope of committed
work has gradually narrowed with an upcoming proposed release date of
September 2016. With over 30 key enhancements presently targeted, the
ones with potential for broadest impact will be shared.
Project Jigsaw:
Among
the largest impacting JDK 9 enhancements are from Project Jigsaw.
Jigsaw’s primary goal is to make the JDK more modular whereby also
enhancing the build system. It is motivated by the need for making Java
more scalable for smaller computing devices, secure, performant, and to
improve developer productivity. With the advent of the Internet of
Things (IoT), enabling Java to run on smaller devices is instrumental
for continued growth. However as Java’s footprint expands, its more
prone to security targeting and performance issues as a nature of
running on a vast permutation of computing services. Thus with a more
modular JDK, developers can significantly reduce necessary libraries
needed to build features, whereby reducing security risks as well as
making the applications smaller with better performance (ie. improving
code cache & class loader footprint, etc).
HTTP/2 Client:
Among
the most popular web protocols, HTTP has been getting its own upgrade
to HTTP/2 (with inspiration from Google’s SPDY/2), boasting significant
network performance gains. Hence, Java 9 will get its own HTTP client
API implementing HTTP/2 and WebSocket to replace the legacy
HttpURLConnection, which predates HTTP/1.1 and has various limitation
such as the one thread per request/ response behavior. Using HTTP/2 in
Java 9, applications will have better performance & scalability with
memory usage on par or lower than HttpURLConnection, Apache HttpClient,
and Netty.
jShell:
Also
being referred to as Java RPEL (Read-Print-Eval-Loop), JDK9 users will
be getting a shell like interface to interactively evaluate
declarations, statements, and expressions in Java. Similar to the Python
or Ruby interpreters or other JVM languages like Scala and Groovy, Java
users will be able to run Java code without needing to wrap in classes
or methods, allowing for a much easier, faster learning &
experimentation. Furthermore, as Java has been moving towards becoming a
less syntactically verbose language with features like Lambda
introduced in JDK 8 (shared in our Java 8 blog last year), having a
shell-like interface becomes more practical for ad-hoc testing.
The
JVM Code Cache is critical to application performance and can be set at
startup time using the following flag: -XX:InitialCodeCacheSize=32m.
When the code cache memory is exhausted, the JVM losses JIT and goes
into interpreted mode, significantly affecting application runtime
performance. In Java 9, this section of memory is getting divided into
the following 3 distinct heap segments in order to improve performance
and enable future extensions: JVM internal (non-method) code,
Profiled-code, Non-profiled code.
Notable mentions:
Some
other notable changes in JDK 9 will include making the G1 collector
default, adding a Microbenchmark testing suite extending the current
JMH, and the removal of some aged unsupported performance tools such as
JVM TI hprof and jHat.
Although
most programming languages tend to come and go, Java is one that’s here
to stay (least for the foreseeable decade). As one of the most popular
and widely adopted languages with a high performant, scalable runtime,
innovations towards the JDK have a large impact on the world’s computing
infrastructure. By staying current with what’s in the next JDK, firms
running JVM services can intelligently plan & prioritize their
innovation initiatives that are complementary to languages improvements.
For all those excited yet impatient and looking to get hands on, the
latest JDK 9 builds can be accessible from here: https://jdk9.java.net/download/
Read More »
No comments:
Post a Comment