A Java Road Map

With everything that’s going on, it’s hard to keep track of what’s available now, what’s promised, and what has been around for some time. Here’s a road map that imposes some order on Java’s past, present, and future.

The Past: Java 1.0 and Java 1.1

Java 1.0 provided the basic framework for Java development: the language itself plus packages that let you write applets and simple applications. Although Java 1.0 is officially obsolete, it will be some time before vendors catch up with the newer releases.

Java 1.1 superseded Java 1.0. It incorporated major improvements in the AWT package ( Java’s original GUI facility) and many new features. Java 1.1 remains important, because it is supported natively by both the Netscape Navigator and Microsoft Internet Explorer browsers. For various political reasons, the future of the browser world is uncertain; to execute applets using any features of Java 2, you need to use the Java plug-in, which allows Netscape and IE to execute Java 2 code.

The Present: Java 2

Java 2 was released in December 1998, providing many improvements and additions. The most notable addition is Swing, which is a new user interface toolkit with capabilities far exceeding AWT’s. (Swing, AWT, and some other packages are now called the JFC, or Java Foundation Classes.) Here’s a brief overview of the most important features of the core Java 2 API:

JDBC (Java Database Connectivity)

A general facility for interacting with databases. (Introduced with Java 1.1.)

RMI (Remote Method Invocation)

Java’s distributed objects system. RMI lets you call methods on objects hosted by a server running somewhere else on the network. (Introduced with Java 1.1.)

Java Security

A facility for controlling access to system resources, combined with a uniform interface to cryptography. Java Security is the basis for signed classes, which were discussed earlier.

JFC (Java Foundation Classes)

A catch-all for a number of new features, including the Swing user interface components; “pluggable look-and-feel,” which means the ability of the user interface to adapt itself to the “look-and-feel” of the platform you’re using; drag and drop; and accessibility, which means the ability to integrate with special software and hardware for people with disabilities.

Java 2D

Part of JFC; enables high-quality graphics, font manipulation, and printing.

Internationalization

The ability to write programs that adapt themselves to the language the user wants to use; the program automatically displays text in the appropriate language. (Introduced with Java 1.1.)

The following features aren’t part of the core Java 2 definition; you may have to download them separately. Most of them are what Sun calls “standard extensions”:

JNDI (Java Naming and Directory Interface)

A very general service for looking up resources. JNDI unifies access to directory services like LDAP, Novell’s NDS, and others.

JavaMail

A uniform API for writing email software.

Java 3D

A facility for developing applications with 3D graphics.

Java Media

Another catch-all that includes Java 2D, Java 3D, the Java Media Framework (a framework for coordinating the display of many different kinds of media), Java Speech (for speech recognition and synthesis), Java Sound (high-quality audio), Java TV (for interactive television and similar applications), and others.

Java Servlets

A facility that lets you write custom Internet servers. It is most frequently used to write web server applications, but it’s much more general.

Java Cryptography

Actual implementations of cryptographic algorithms. (This package was separated from Java Security for legal reasons.)

JavaHelp

A facility for writing help systems and incorporating them in Java programs.

Enterprise JavaBeans

A component architecture for building distributed server-side applications.

Jini

An extremely interesting catch-all that is designed to enable massively distributed computing, including computing on common household appliances. In a few years, your stereo may be able to execute Java programs.

Java Card

A version of Java for very small (i.e., credit card-sized) devices, which have severe limitations on speed and memory.

In this book, we’ll try to give you a taste of as many features as possible; unfortunately for us (but fortunately for Java software developers), the Java environment has become so rich that it’s impossible to cover everything in a single book.

The Future

You can think of the first four years of Java development as a “big bang,” followed by an “inflationary” phase as Sun added new features, and improved old features, at an incredible rate. Things seem to be slowing down now: new APIs aren’t being announced as often, and those that are announced tend to be more specialized. At least for the moment, the Java world is stabilizing.

But it’s important to look into the new areas into which Java is headed. The most interesting of these is consumer devices. An interesting game to play is thinking of what an everyday appliance might be able to do if it had a Java processor in it. A common bread maker could download “breadlets” (applets that implement bread recipes) from the Internet; your stereo wouldn’t just play CDs—it could find music sources on the Internet and perhaps even facilitate live, distributed jam sessions using technologies like Java Sound. These devices could probably be built without Java, but that’s not saying much: after all, no software has yet been written that couldn’t (in theory) be hand-coded in assembly language. More to the point, Java (and especially Jini) make it much easier to develop these kinds of applications in reliable, safe ways.

Until now, discussion of Java on consumer devices has been limited to visionary, hypothetical talk. However, this is changing. There is already a version of the Java Virtual Machine that runs on 3Com’s Palm devices; JVMs for cell phones, pagers, and other personal communication devices are on the way. While this book can’t go into the details of development for such devices, it’s important to realize that the vision is becoming reality. The step from a Palm hand-held computer to a cell phone to your VCR or television is extremely small—much smaller than the leap from a personal computer to the Palm.

Availability

By the time you read this book, you should have several choices for Java development environments and runtime systems. Sun’s Java 2 SDK[5] is available for Solaris, Linux, and Windows. Visit Sun’s Java web site at http://java.sun.com for more information about the Java 2 SDK. There are also Java ports for other platforms, including NetWare, HP-UX, OSF/1 (including Digital Unix), Silicon Graphics’ IRIX, and various IBM operating systems (including AIX and OS2). For more information, see the web pages maintained by the vendor you’re interested in. Sun maintains a web page summarizing porting efforts at http://java.sun.com/cgi-bin/java-ports.cgi. Another good source for current information is the Java FAQ from the comp.lang.java newsgroup.

There are efforts under way to produce a free clone of Java, redistributable in source form. The Java Open Language Toolkit ( JOLT) Project is working to assemble a high-quality Java implementation that will pass Sun’s validation tests and earn a Java stamp. The JOLT Project web page is accessible from http://www.redhat.com.

Netscape Navigator and Microsoft Internet Explorer both come with their own Java runtime system that runs Java applets and supports SDK 1.1. Neither supports Java 2 at present, although the newest release of Navigator (6.0) is supposed to support Java 2 and future versions through a new “open Java” API. To ameliorate the problem in general, Sun has released a Java plug-in that supports Java 2; it is distributed with the Java SDK for Windows.



[5] The Java 2 SDK used to be called the JDK. Sun’s marketing group has an unfortunate tendency to change terminology for reasons that are no doubt clear to them, but only introduce confusion for everyone else. In this book, we’ll use SDK, even for older versions of Java that were distributed as the JDK.

Get Learning Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.