JDK Contents

# JDK 1.1 New Feature Summary

> > NOTE - JDK 1.1.8 is a maintenance release, with no new features over earlier versions of JDK 1.1. In general, documentation that refers to "JDK 1.1" applies equally well to "JDK 1.1.8".

These are the new features in version 1.1 of the JDK. All of the APIs listed here are part of the core Java API, which means they will be available on all platforms and operating systems where the Java 1.1 Virtual Machine is present.

1. 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.
2. Security and Signed Applets
   The Java Security API is designed to allow developers to incorporate both low-level and high-level security functionality into their Java applications. The first release of Java Security in JDK 1.1 contains a subset of this functionality, including APIs for digital signatures and message digests. In addition, there are abstract interfaces for key management, certificate management and access control. Specific APIs to support X.509 v3 certificates and other certificate formats, and richer functionality in the area of access control, will follow in subsequent JDK releases.
   JDK 1.1 also provides a tool that can sign Java ARchive (JAR) files, which can contain classes and other data (such as images and sounds). The appletviewer allows any downloaded applets in JAR files signed (using the tool) by a trusted entity to run with the same full rights as local applications. That is, such applets are not subject to the "sandbox" restrictions of the original Java security model. Later releases will provide more sophisticated security policies, including greater granularity in the allowable trust levels.
3. AWT Enhancements
   Enhancements are aimed at solving some major AWT (Abstract Window Toolkit) 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.
4. JavaBeansTM
   The JavaBeans APIs define a software component model for Java allowing third party ISVs to create and ship Java components that can be composed together into applications by end users.
5. JAR File Format
   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.
6. 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.
7. IO Enhancements
   The I/O package has been extended with character streams, which are like byte streams except that they contain 16-bit Unicode characters rather than eight-bit bytes. Character streams make it easy to write programs that are not dependent upon a specific character encoding, and are therefore easy to internationalize. Nearly all of the functionality available for byte streams is also available for character streams.
8. Math Package
   The math package provides two new classes: `BigInteger` and `BigDecimal`. `BigInteger` numbers are immutable arbitrary-precision integers, which provide analogs to all of Java's primitive integer operators, and all relevant static methods from `java.lang.Math`. Additionally, `BigInteger` numbers provide operations for modular arithmetic, GCD calculation, primality testing, prime generation, single-bit manipulation, and a few other odds and ends.
   `BigDecimal` numbers are immutable, arbitrary-precision signed decimal numbers, suitable for monetary calculations. `BigDecimal` numbers provide operations for basic arithmetic, scale manipulation, comparison, format conversion and hashing.
9. Remote Method Invocation
   RMI enables the programmer to create distributed Java-to-Java applications, in which the methods of remote Java objects can be invoked from other Java virtual machines, possibly on different hosts. A Java program can make a call on a remote object once it obtains a reference to the remote object, either by looking up the remote object in the bootstrap naming service provided by RMI or by receiving the reference as an argument or a return value. A client can call a remote object in a server, and that server can also be a client of other remote objects. RMI uses Object Serialization to marshal and unmarshal parameters and does not truncate types, supporting true object-oriented polymorphism.
10. 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.
11. Reflection
    Enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts on objects, within security restrictions. The API accommodates applications that need access to either the public members of a target object (based on its runtime class) or the members declared by a given class.
12. 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.
13. Inner 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. Java Native Interface
    A standard programming interface for writing Java native methods and embedding the Java virtual machine into native applications. The primary goal is binary compatibility of native method libraries across all Java virtual machine implementations on a given platform.
15. Performance Enhancements
    - Interpreter loop in assembly code on Win32 and Solaris/Sparc.
    - Non-contiguous heap support on Mac.
    - Monitor speed-ups.
    - Garbage collection of classes.
    - AWT peer class re-write for Win32.
    - JAR (Java Archive) bundling of resources for a single HTTP transaction
16. Miscellaneous
    - Byte, Short and Void Classes - Bytes and shorts are accommodated as wrapped numbers 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. Also includes a new class `Void` that is an uninstantiable placeholder class.
    - `The @deprecated tag` - Used in documentation comments for unambiguously marking classes, methods and fields that have been superseded by new APIs. The compiler issues a warning when it processes source code that uses a deprecated API feature.
    - Accessing Resource Files - APIs that provide a mechanism for locating resource files in a way that is independent of the location of the resources. For example, this mechanism can locate a resource file whether it is an applet loaded from the net using multiple HTTP connects, an applet loaded using JAR files, or a "library" installed in the CLASSPATH.
    - Additions to APPLET Tag (HTML) Enhancements of the <APPLET> tag used in HTML.

Copyright © 1996, 1997, 1998 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303-4900 USA. All rights reserved.