NOTE - JDK 1.1.5 is a bug-fix 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.5".
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.