Features to be in JDK 1.1

I Find Karma (adam@cs.caltech.edu)
Thu, 29 Aug 96 22:35:28 PDT

An early-access, preliminary implementation of JDK 1.1 is scheduled for
release in Q4 1996 (calendar year). Early-access implementations are
already available for some features (such as JDBC and RMI) from this
page. Dates for the final version are not yet determined.

previews 14 new features of the Java Developers Kit 1.1:

1. JAR Files

JAR (Java Archive) is a platform-independent file format that aggregates
many files into one. Multiple Java applets and their requisite
components (.class files, images and sounds) can be bundled in a JAR
file and subsequently downloaded to a browser in a single HTTP
transaction, greatly improving the download speed. The JAR format also
supports compression, which reduces the file size, further improving the
download time. In addition, the applet author can digitally sign
individual entries in a JAR file to authenticate their origin. It is
fully backward-compatible with existing applet code and is fully
extensible, being written in Java.

2. Internationalization

Allows the development of localizable applets. Enhancements include the
display of UNICODE characters, a locale mechanism, localized message
support, locale-sensitive date, time, time zone and number handling,
collation services, character set converters, parameter formatting, and
support for finding character/word/sentence boundaries.

3. Security

The Java Security API is designed to allow developers to incorporate
both low-level and high-level security functionality into their Java
applications. This includes cryptography, key management and access
control. The first release of Java Security in JDK 1.1 will contain a
subset of this functionality, including APIs for digital signatures,
message digests, key management, access control lists, and utilities.
JDK 1.1 will also provide the ability to sign classes and other data
(such as images and sounds).

4. AWT Enhancements

Enhancements are aimed at solving some major AWT deficiencies with a
strong focus on quality and performance. The AWT enhancements will
include the beginnings of a richer infrastructure for larger-scale GUI
development, including APIs for printing, easier/faster scrolling, popup
menus, clipboard (copy/paste), cursors per component, a delegation-based
event model, imaging and graphics enhancements, and more flexible font
support for internationalization. Additionally, the Windows (Win32)
version of AWT has been completely re-written for improved speed,
quality, and consistency with the other platforms.

5. Networking enhancements

Support for selected BSD-style socket options in the java.net base
classes. With JDK 1.1, Socket and ServerSocket are non-final, extendable
classes. New subclasses of SocketException have been added for finer
granularity in reporting and handling network errors. The class
MulticastSocket moves from sun.net to java.net. Also includes general
performance improvements and bug fixes. See Net Enhancements web pages
for design papers and API docs.

6. Remote Method Invocation

Remote Method Invocation (RMI) enables Java objects to have their
methods invoked from Java code running in other virtual machines,
including ones running on other computers. References to such remote
objects can be passed as parameters in RMI calls. RMI uses Object
Serialization to marshal and unmarshal parameters.

7. Object Serialization

Object Serialization extends the core Java Input/Output classes with
support for objects. Object Serialization supports the encoding of
objects and the objects reachable from them into a stream of bytes and
the complementary reconstruction of the object graph from the stream.
Serialization is used for lightweight persistence and for communication
via sockets or Remote Method Invocation (RMI). The default encoding of
objects protects private and transient data, and supports the evolution
of the classes. A class may implement its own external encoding and is
then solely responsible for the external format.

8. Reflection

Enables Java code to discover and use information about the fields,
methods and constructors of loaded classes, within security
restrictions. This API accommodates applications that need to discover
and use either the public members of a target object (based on its
runtime class) or the members declared by a given class.

9. Byte and Short Classes

Extends wrapped numbers to accommodate bytes and shorts by adding new
classes Byte and Short. The abstract class Number gets two new concrete
methods: byteValue and shortValue; the default implementations of these
use intValue method.

10. JDBCTM - Java Database Connectivity

Java Database Connectivity is a standard SQL database access interface,
providing uniform access to a wide range of relational databases. It
also provides a common base on which higher level tools and interfaces
can be built. This comes with an "ODBC Bridge" (except on Mac 68K). The
Bridge is a library which implements JDBC in terms of the ODBC standard
C API. See JDBC web pages for the design specs, API docs, and early
access implementation.

11. New Java Native Method Interface

A standard programming interface for writing Java native methods. The
primary goal is binary compatibility of native method libraries across
all Java virtual machine implementations on a given platform.

12. JIT Compiler Interface Document

This document is a write-up of functionality which already existed in
1.0.2. It is for tool developers who are writing native code generators
or other utilities that run inside the Java Virtual machine. It supports
ahead-of-time compilers, re-compilers, and just-in-time code generators.

13. Nested Classes

Provides a simpler syntax for the creation of adapter classes. An
adapter class is a class that implements an interface (or class)
required by an API, and delegates the flow of control back to an
enclosing "main" object. The new language features apply to Java the
concepts of lexical scoping and block structure found in many languages.

14. Performance Enhancements
- Interpreter loop in assembly code on Win32 and Solaris/Sparc.
- Non-contiguous heap support on Mac.
- Monitor speed-ups.
- AWT peer class re-write for Win32.
- Garbage collection of classes.
- Optional use of native threads on Solaris.