The development of the Java programming language going forward will emphasize support for modern computing platforms including GPUs and containers, Oracle revealed in a presentation on March 21. Among other things, the company’s plans call for ensuring that Java provides strong support for GPUs and hardware acceleration, which will be key to supporting machine learning and artificial intelligence workloads.
The Java SE (Standard Edition) development team at Oracle want to configure Java such that the JVM will understand which workloads should run on the GPU and which should run on the CPU. GPUs, while initially built for image processing, are increasingly being used for number-crunching applications, machine learning, and even databases.
- Making Java as small as possible to reduce its footprint and run workloads with the smallest resource consumption and lowest cost.
- Scalability for big data, toward petabyte-sized heaps.
- Predictability at scale.
- Data density, with the presentation of data in the JVM as concise as possible.
- Native access, with the ability to access libraries in spaces such as artificial intelligence and machine learning.
- Making it easier and more efficient to get data in and out of the JVM.
- Developer productivity and continued language enhancements.
Oracle drew attention to a number of innovative Java projects including Valhalla, an incubator project for virtual machine and language features; Panama, for accessing non-Java APIs; and Loom, to make it easier to handle concurrency in applications.
Oracle also pointed to the gradual elimination of Java’s finalization capability, for performing postmortem cleanup on objects that the garbage collector found unreachable. Finalization has made garbage collection more expensive, with the collector having to perform an extra pass. There are now better ways to deal with the task, Oracle said, such as the java.lang.ref subsystem.
Oracle has just released Java Development Kit 12, featuring a preview of switch expressions to simplify coding. Also in JDK 12 is an abortable mixed collections capability for the G1 garbage collector. JDK 13 is due in September. Features are still be determined, although raw string literals and a production version of switch expressions are expected.