In Anticipation of Tiger
Tiger is the codename for the next major release of the Java Platform. The release number will be Java 2, version 1.5 and is expected to preview in beta form sometime in Q4 2003, going into production release by Q1 2004.
Tiger is being developed under the guidelines of the Java Community Process (JSR 176-J2SE 1.5 (Tiger) Release Contents http://www.jcp.org/en/jsr/detail?id=176). Although the Java Specification Request currently hasn't even released a community draft, there is enough information available from Sun executives, newsgroups, discussion forums, and the JSR to anticipate the new features and modifications that will go into the release. The final release may not include all the features discussed here and may include other features not mentioned here.
Scope of Changes
According to the JSR, it is anticipated that the Tiger release will be mainly targeted at the following major themes:
- Reliability, Availability, and Serviceability
- Monitoring and Manageability
- Scalability and Performance
- XML and Client Web Services
- Ease of Development
In support of these themes, Tiger will introduce language and syntax modifications, additions to the core library APIs, and a number of bug fixes and optimizations. Let's take a look at each of these themes in detail
Theme 1: Reliability, Availability, and Serviceability
The maturity, popularity, growing support, and availability of tools for the Java platform has resulted in deployment of Java-based, mission-critical enterprise applications. Mission-critical applications need to be deterministic, highly reliable, and highly available. In event of an outage, mission-critical applications need to be debugged, serviced (preferably self healed), and fixed immediately. In response to this need, Tiger plans to make several fixes and optimizations to the client and server Java runtimes that will improve reliability and availability of the platform. It also plans to include two new APIs that relate to this theme.
- A new Java Platform Profiling Architecture
Platform profiling is the ability to extract usage statistics of a running JVM. Metrics include memory usage, CPU usage, object references, and so forth. There is an experimental interface—the Java Virtual Machine Profiling Interface (JVMPI)—that suffers from a number of design flaws, scalability issues, sizeable overhead, and imprecise profiling. The new profiling architecture intends to non-compatibly supercede JVMPI, but provide similar yet enhanced functionality. These APIs will allow inter-operability of profiling and advanced garbage collection technologies. The APIs will allow reliable implementation on the widest range of virtual machines, part of which will be achieved by grouping functionality into optional sets. Queries for which optional capabilities are supported will be provided. The APIs will be targeted to provide a Java programming language model of execution, however, some aspects of the virtual machine, native, and operating system models may be directly provided or provided via an extension mechanism. The APIs will accommodate implementations that can dynamically enable and disable profiling; and thus will allow implementations that have a negligible performance impact when profiling is disabled. While profiling in the application development phase will be the primary goal of this specification, the design objectives for low performance overhead and data perturbation will also support profiling in the deployment phase.
- Application Isolation API Specification
When running multiple Java applications on the same box, the negative effects of large initial footprint, large increments of memory required by additional applications, and long startup latencies are hurting Java's ability to compete with more nimble and efficient language systems and bring into doubt the prospects for scalability. Currently, ad hoc script and native code mechanisms for controlling and load balancing multiple Java virtual machines in server settings hurt portability, maintainability, and robustness. This API provides a uniform mechanism for managing Java application life cycles that are isolated from each other with respect to object reachability, but that can potentially share underlying implementation resources. It provides a means of deploying new Java implementation features that enable and enhance scalability while providing an alternative to ad hoc control schemes for multiple Java applications running on the same box. The implementation of this feature will guarantee isolation of Java state (for example, logically disjoint heap spaces, per application mutable static fields, and so on), and maybe separation of the JNI state and separation of the process state. Inclusion of this API will make it easier to run multiple Java applications on the same box without having to worry about Operating System resources consumed by multiple copies of the JVM in memory. This has a direct impact on reliability and availability.
Along with some more features discussed below, the Java community should expect significant strides in reliability and scalability of the Java platform with the release of Tiger.
Theme 2: Monitoring and Manageability
Along with the wide scale deployment of Java mission-critical applications comes the need for a consistent, standard mechanism to monitor the state of the Java application and its associated Virtual Machine. There is also a need to modify the application's state and runtime characteristics, without having to restart the application. Currently, applications tend to use home-grown libraries and applications to achieve the required functionality. Tiger plans to bundle a set of APIs to allow end-to-end management and monitoring of Java-based resources.
- Monitoring and Management for the Java Virtual Machine
These APIs will provide Java applications, system management tools, and RAS-related tools with the ability to monitor the health of the Java virtual machine as well as manage certain runtime controls such as class loading, memory, and garbage collection statistics, thread statistics, object references and state, operating system, and platform information. It will also provide control for JIT compilation, thread creation, garbage collector operation, and heap allocation. It will support JMX invocation and its feature set and implementation will be developed to in synergy with the new platform profiling architecture.
- Java Management Extensions
Java Management Extensions (JMX) is an existing technology that is currently being used by a variety of applications (for example, JBoss application server uses a JMX-enabled core for its management). These extensions define an architecture, the design patterns, the APIs, and the services for application and network management and monitoring in the Java programming language. JMX provides Java developers with the means to instrument Java code, create smart Java agents, implement distributed management middleware and managers, and smoothly integrate these solutions into existing management and monitoring systems. In addition, JMX is referenced by a number of Java APIs for existing standard management and monitoring technologies. Making JMX part of the standard Java platform answers the community's need for a way to manage and monitor Java-based applications.
The introduction of these management and monitoring capabilities, along with the platform profiling architecture, allows for comprehensive debugging of Java applications delivering a significant boost to the development of more optimized, robust, reliable, and scalable applications.
Theme 3: Scalability and Performance
There is no such thing as too fast and too scalable. There intend to be a number of bug fixes and performance improvements to the Java runtime (both client and server). The following changes will also aid in improving the performance:
- Fixes and speedups in garbage collection
- Reduced VM startup time
- Reduced memory footprint
- Further HotSpot VM tuning
- Application Isolation API will make a single VM scalable to multiple applications without requiring the instantiation of a new VM process.
- Additional new I/O capabilities for files to support bulk access to file attributes, the addition of asynchronous I/O for network socketsn and files and formatted I/O such as printf.
There is always the need for speed and this release intends to be the fastest Java ever.
Theme 4: XML and Client Web Services
The seeming ubiquity of XML and Web Services has made it imperative for the standard Java platform to support it. Currently, Java 1.4 has a bundled XML parser, related XML data structure libraries, and XML processing libraries. Java 1.5 intends to increase the number of XML and Web Services APIs in the standard platform by adding some libraries currently available in the Sun Web Services Developer Pack (WSDP). In particular, Tiger is anticipated to bundle:
- An update to the XML parsing APIs (JAXP) to support XML Schemas
- Java API for XML Binding (JAXP), which is a facility for compiling an XML schema into one or more Java classes which can parse, generate, and validate documents that adhere to the schema
- Support for XML Remote Procedure Calls API (JAX-RPC)
- XML Digital Signatures APIs
- XML Digital Encryption APIs
- Optimizations and performance improvements to the existing XML libraries
- Web Services Client support
As XML and Web Services evolve at a rapid pace, the Tiger release hopes to make Java a natural choice for applications using this technology.