A standard mechanism for managing resources such as memory and network bandwidth in Java applications is advancing through the Java Community Process.
Java Specification Request 284, which features an API for partitioning resources among applications and querying about resource availability, was published in an early draft form late in August. Officially known as the Resource Management Consumption API, JSR 284 is considered important to evolving Java to allow for better system management. It also will provide a means for exposing various resources.
"It's important because right now, when people like to run computations inside the JVM (Java Virtual machine), they have extremely crude ways to manage resources," said Grzegorz Czajkowski, the specification lead on JSR 284, and an engineer at Google. Czajkowski formerly was a senior staff engineer at Sun Microsystems.
"You can control the JVM process through OS controls but there's not a lot you can do within the JVM itself," Czajkowski said.
The JSR document notes the criticality of what JSR 284 attempts to provide.
"Software systems in many circumstances need awareness of their resource usage. Meeting performance requirements often requires the ability to manage consumption of resources provided by the environment. Resource management is traditionally handled by operating systems, but the growing need to use the Java platform in the systems programming domain adds increased pressure to equip it with resource management capabilities at a level of abstraction that fits gracefully with the language.
"Preventing denial of service attacks, providing load-balancing, and monitoring the usage of a given resource are all difficult to do in the current version of the Java platform. In general, these and other features cannot be provided without going beyond the Java language proper, through mechanisms such as native code or shell scripts that ask the OS to handle matters related to resource management. The lack of a standard, programmatic way to partition resources available to virtual machine(s) among Java applications has led to a number of ad-hoc solutions," the document reads.
A public draft of JSR 284 is expected in early-November, with a three-week voting period likely for December. The specification could be completed by January.