|
Java 1.1 Unleashed
- 57 -
Java into the Future
by Michael Morrison
IN THIS CHAPTER
- Java API Overview
- JavaOS
- Java Microprocessors
This chapter wraps up your journey through Java by peering into the crystal ball
and taking a look at what lies ahead for Java. More specifically, this chapter discusses
new API extensions for Java development, the JavaOS operating system, and Java microprocessors.
Most of the new API extensions are available in white-paper form, with early implementations
becoming available in the near future. If you aren't familiar with white papers,
they are technical documents describing the goals of a new technology. The JavaOS
is a new compact operating system based on and fully supporting the Java platform.
Java microprocessors are full-blown microprocessors geared toward supporting the
Java virtual machine.
The emerging Java technologies you learn about in this chapter are still in their
early stages as of this writing, which means that I can give you only a preliminary
look at what they have to offer. Nevertheless, you should be able to take from this
chapter a better understanding of where Java is headed and what it might mean to
your own development efforts. You should check out JavaSoft's Web site (www.javasoft.com)
to get the latest scoop on the status of these technologies; this site will always
contain the most up-to-date information regarding these technologies.
Java API Overview
Java version 1.1, the latest Java release as of this writing, is now being referred
to by JavaSoft as the core Java API. The core Java API defines the minimal set of
functionality a Java implementation must support to be considered Java compliant.
For example, when someone undertakes the job of supporting Java on a particular platform,
that person must fully implement the core Java API. This guaranteed support for the
core API is what allows Java developers the luxury of being able to write Java programs
once and having them run on any Java-compliant platform.
In the near future, JavaSoft plans to expand on the core API by introducing new
APIs that address more applied development needs. The new APIs cover a wide range
of areas and will ultimately save developers a great deal of time by establishing
a consistent approach to certain development issues, reducing the need for custom
coding. Some of these new APIs may merge with the core API in a future release of
Java; other APIs will remain extensions. Regardless of their ultimate relationship
to the core API, the new extension APIs are referred to as the standard extension
APIs because they extend the current core API as we know it.
The standard extension APIs are divided into a set of individual APIs that target
different development needs. Following are the major components of the standard extension
APIs:
- Commerce API
- Management API
- Server API
- Media API
- Embedded API
The following sections explain each of these APIs and how they impact the Java
software platform.
The Commerce API
As the role of the Internet continues to evolve from being an information source
to being a retail marketplace, the need for a secure commercial transaction protocol
is also growing. Both Internet vendors and shoppers alike are eagerly awaiting the
inevitable migration of shopping to the Web. Beyond shopping, there are also other
important areas of financial transactions (such as investment trading) that can benefit
greatly from a secure standard. JavaSoft has provided an answer to the problem of
secure purchasing with the Commerce API, a Java API extension that provides the overhead
for Java programs to support secure purchasing and financial management.
The Java Commerce API aims to provide developers with an elegant solution to the
problem of commercial transactions on the Web. The goal is to make purchasing goods
a seamless yet secure part of the Web experience. To this end, the Commerce API is
being pushed by JavaSoft as an open, extensible environment for financial management
on the Web. The long-term plan for the Commerce API is for integration into the Java
software platform--partially with the core API and partially as a standard extension.
It isn't clear yet which components will make it into the core API and which will
remain separate.
The Commerce API consists of the following primary components:
- Infrastructure. The infrastructure of the Commerce API is the architectural
framework that defines the interactions between the other components of the API.
This infrastructure is also what gives the API its extensibility to support future
commerce extensions.
- Information database.The database component serves as a repository for
user information such as payment methods and the user's shipping address. The database
component contains encryption features so that user information can be kept completely
private. Alternatively, commerce service providers have the option of sharing user
information with one another.
- Payment cassettes. The Commerce API makes use of cassettes, which are
software modules that implement specific financial protocols. A payment cassette
defines the protocol for making electronic payments. Examples of payment cassettes
include credit cards, debit cards, and (eventually) digital cash. A user can have
multiple payment cassettes that represent different payment instruments, much like
we carry different payment instruments in our wallets or purses. In fact, one of
the classes in the Commerce API specifically models an electronic wallet.
- Service cassettes Service cassettes are the second kind of software module
used by the Commerce API to implement specific financial protocols. Service cassettes
serve to model any type of value-added financial service such as financial analysis
or tax preparation modules. For example, you can feasibly purchase a service cassette
to help you balance your electronic checkbook or assess the value of your stock portfolio.
- Administrative interfaces. This component of the Commerce API includes
dialog boxes and other graphical interfaces used to retrieve information from the
user and to configure commerce options.
For more information on the Commerce API, check out JavaSoft's Commerce API Web
site, located at this URL:
http://www.javasoft.com/products/commerce/
The Management API
The Management API is designed to answer the needs of integrated network management
systems. It includes a wide range of interfaces, classes, and applets to facilitate
the development of integrated management solutions. The primary goal of the Management
API is to provide a unified approach to handling the complexities involved in developing
and maintaining resources and services on a heterogeneous network. Using the Management
API, Java developers can rapidly develop network management applications supporting
a wide range of systems on large and often complex networks. JavaSoft plans to keep
the Management API as a separate extension from the core API.
The Management API includes the following core components:
- Admin View Module (AVM). The AVM is an extension of the Java Abstract
Windowing Toolkit (AWT), enhanced to provide specific support for creating integrated
management applications. The classes implemented in the AVM serve as a basis for
developing sophisticated graphical user interfaces. For example, the AVM includes
support for graphical tables, charts, graphs, and visual gauges.
- Base object interfaces.The base object interfaces define the core object
types used for distributed resources and services in a management system. Using the
base object interfaces, developers can define abstractions for a variety of attributes
associated with a managed enterprise environment.
- Managed container interfaces.The managed container interfaces define a
way to group together managed objects for better organization. This organization
facilitates a more group-oriented approach to keeping up with managed resources,
which can be a great benefit in complex systems.
- Managed notification interfaces.The managed notification interfaces define
a core foundation of managed event-notification services. Developers are free to
develop more advanced application-specific notification services by extending these
services.
- Managed data interfaces.The managed data interfaces provide a way to link
managed object attributes to relational databases using JDBC. In doing so, the managed
data interfaces establish a transparent link between management resources and external
databases.
- Managed protocol interfaces The managed protocol interfaces use the Java
Security APIs and Java RMI to add secure distributed object support to the core functionality
provided by the base object interfaces.
- Simple Network Management Protocol (SNMP) interfaces The SNMP interfaces
extend the managed protocol interfaces to provide support for SNMP agents. SNMP is
a relatively simple protocol originally developed to solve communication problems
between different types of networks and gather network statistics. Because SNMP is
the most popular management protocol in use, its support through the SNMP interfaces
is an important part of the Management API.
- Applet integration interfaces.The applet integration interfaces component
of the Management API specifies how Java applets can be integrated with the Management
API to provide management solutions. Applet developers use the applet integration
interfaces to build management support into their applets.
For more information on the Management API, refer to JavaSoft's Management API
Web site, located at this URL:
http://www.javasoft.com/products/JavaManagement/
The Server API
After the success of Java and its immediate use for developing client-side applets,
JavaSoft decided to take steps to make Java a more viable alternative for server-side
applications. The Server API is JavaSoft's answer to the need for more complete server-oriented
support in Java. The Server API provides a wide range of server functionality including
support for administration, accessibility control, and dynamic resource handling.
Also included in the Server API is the Servlet API, which provides a framework for
extending servers with servlets. A servlet is a Java object that extends the functionality
of an information server, such as an HTTP server. You can think of servlets as the
server equivalents of client-side Java applets.
The Servlet API provides the overhead necessary for creating servlets and interfacing
them with information servers. The Servlet API is equipped to handle the entire servlet/server
relationship, with an emphasis on keeping things stable and simple. All that is required
to run servlets is a server that supports the Servlet API.
JavaSoft has grouped the Server and Servlet APIs under its new Internet server
framework known as Jeeves. To get more information about the APIs, check out Chapter
55, "Serving the Net with Jeeves." You may also want to visit JavaSoft's
Jeeves Web site, located at this URL:
http://jeeves.javasoft.com/products/java-server/webserver/index.shtml
The Media API
Possibly the weakest area of the core Java API as we know it is its support for
media. Currently, the Java API supports only static GIF and JPEG images and wave
sounds in the AU sound format. Clearly, this limited media support won't cut it in
the long run. Sure, developers can hack their own media implementations to some extent,
but they can already do that in a variety of other languages and platforms. Java
was supposed to make things easier, right?
JavaSoft realized this weakness and is remedying things with the Media API, which
is slated to include support for a dizzying array of media types that will no doubt
put Java on the map as a serious multimedia platform. The Media API includes classes
that model media types such as full-motion video, audio, 2D and 3D graphics, telephony,
and more. Furthermore, the structure of the API is such that many of these media
types will rely on the same underlying facilities. For example, all time-based media
(such as video and audio) will use the same underlying timing mechanism, meaning
that synchronization won't be a problem.
The Media API is designed to be very open and extensible--which is important considering
that the world of multimedia is always changing. JavaSoft plans to integrate the
Media API into the Java platform both as core API additions and as standard extension
APIs.
The following API subsets comprise the Media API:
- Media Framework API. The Media Framework API handles the low-level timing
functionality required by many of the other media APIs. This API includes support
for timing and synchronization, both of which are critical to media types that must
function together in harmony. Synchronization refers to how different time-based
media elements agree with each other in time. For example, it is important for the
sound track of a movie to remain synchronized with the picture.
- Also included in the Media Framework API is support for streaming, compression,
and live data sources. Streaming is the process of interacting with data while it
is still being transferred. For example, a streaming audio player begins playing
audio as soon as a certain minimal amount of data has been transferred.
- 2D Graphics API. The 2D Graphics API extends the functionality of the
AWT classes to provide wider support for 2D graphics primitives and a variety of
different graphical output devices, such as printers. Another important addition
to the 2D Graphics API is the definition of a uniform graphical model that brings
many graphics functions into one structure.
- Animation API The Animation API uses the 2D Graphics API as a basis for
its implementation of animated 2D graphics objects, or sprites. The Animation API
also relies on the Media Framework API for maintaining timing and synchronization.
- 3D Graphics API.The 3D Graphics API provides the overhead necessary to
generate high-performance 3D graphics. This API implements 3D graphics by supporting
a model of 3D graphical objects that can be rendered at high speeds. The 3D Graphics
API also includes support for VRML, which is a very popular 3D modeling language.
To pull off all this functionality, the 3D Graphics API relies heavily on the functions
provided by many of the other media APIs.
- Video API.The Video API brings full-motion video to Java. The API provides
the framework for managing and processing video in either a streaming or stored scenario.
- Audio API.Similar to the Video API in some ways, the Audio API also provides
support for both streaming and stored media. However, the media supported by the
Audio API consists of either sampled or synthesized audio. The Audio API even contains
classes for implementing 3D spatial audio.
- Musical Instrument Digital Interface (MIDI) API.The MIDI API brings timed
musical events to Java by way of the popular MIDI standard. MIDI defines a protocol
for communicating and storing time-based events, such as those generated by a musical
instrument. MIDI is an efficient way to represent both musical pieces as well as
more general timing resources. Expect to hear the Web much differently once this
API catches on!
- Share API.The Share API is probably the most interesting of the media
APIs, simply because it's the least obvious. It defines a means by which live, multiparty
communication can take place over a network. The Share API provides support for both
synchronization and session management. I wouldn't be surprised to see multiplayer
games and "chat" applets take on a new feel once this API is out.
- Telephony API.The Telephony API gives Java the capability to interact
with telephones. Most important telephone functions are supported in this API, including
teleconferencing and caller ID, among others.
The Embedded API
The last of the standard extension APIs is the Embedded API, which defines a minimal
set of Java functionality specifically targeted for embedded systems applications,
such as consumer electronics devices. An embedded system is a scaled-down computer
system programmed to perform a particular function within an electronic device. The
Embedded API is the only API that doesn't really add anything to the Java core API.
In fact, the Embedded API will more than likely be a subset of the core API, because
only a part of the core functionality is needed in embedded applications. For example,
because most embedded systems have no graphical output to speak of, the entire AWT
is really unnecessary. Likewise, a network connection is unlikely in an embedded
system, so there is no need to include the Java networking package.
More than likely, the Embedded API will consist of the following packages from
the core API: language, utilities, and I/O. Beyond those, it's possible that Embedded
API extensions could be developed to support specialized networking and output requirements.
Because the Embedded API is itself a subset of the core API, it will more than likely
be treated as an extension API.
JavaOS
Even though Java has been touted largely as a neat new programming language, it
is, in fact, much more than that. Java is also a very powerful and compact runtime
system that, in many ways, mimics the facilities provided by a full-blown operating
system. Knowing this, it wasn't a complete surprise to some that JavaSoft decided
to build a complete operating system around the Java technology. This new operating
system is called JavaOS and is described by JavaSoft as "a highly compact operating
system designed to run Java applications directly on micro-processors in anything
from net computers to pagers."
JavaOS is no doubt intended to ride the wave created by Java and its insanely
rapid success. However, don't let that statement mislead you into thinking that JavaOS
is any less legitimate than the technology it is built on. The idea of building a
complete operating system on top of the existing Java technology makes perfect sense.
The applications of a compact, efficient operating system that can natively run Java
programs are far and wide. In fact, JavaSoft has already made mention of a variety
of devices to which the JavaOS technology could be easily applied. These devices
include everything from networked computers to cellular telephones; basically any
device that can benefit from a compact operating system and support for a powerful
programming language like Java.
Overhead
JavaOS has been described by JavaSoft as just enough of an operating system to
run the Java virtual machine. With this minimal design goal, it stands to reason
that JavaSoft is targeting consumer electronic devices with the JavaOS technology.
As part of this approach, JavaOS is specifically designed to be fully ROMable, meaning
that it will work well in the embedded systems common to electronic devices. A ROMable
software technology is one that can be implemented in read-only memory (ROM). ROM
is commonly used in electronic devices to store executable system code because there
is typically no other storage means beyond random access memory (RAM), which is temporary.
JavaOS has been touted as being able to run with as little as 512K of ROM and
256K of RAM in an embedded environment. Likewise, an entire JavaOS system running
on a networked computer requires only 4M of ROM and 4M of RAM. These last figures
include space for JavaOS, the HotJava Web browser, and a cache for downloading Web
content and applets. JavaOS's minimal requirements set the stage for some unique
products such as compact personal digital assistants (PDAs) with complete Internet
support.
Industry Support
Because of the success of Java, JavaOS is able to enjoy industry support before
its availability in even a preliminary form. An impressive group of technology companies
have already announced plans to license JavaOS. Likewise, an equally important group
of software tools companies have announced plans to provide development tools for
JavaOS. These two areas of support provide the one-two punch necessary for JavaOS
to be a success.
JavaSoft is already working with the software tools companies to define a set
of APIs for developing applications for JavaOS. Major players on the Java development
scene have already announced intentions to enhance their development environments
to support JavaOS embedded systems development. This is a pretty major step in the
embedded programming world, where many development tools are still fairly primitive
compared to the visual tools used by computer applications developers.
NOTE: On a similar front, both the Solaris
and Windows platforms are slated to include full support for Java at the operating
system level. However, this support will be aimed more at supporting the Java runtime
system than serving as an implementation of JavaOS.
Java Microprocessors
As if Sun weren't branching out enough with JavaOS, the company surprised the
microprocessor world last year by announcing the development of a line of microprocessors
optimized for Java. Microprocessors aren't new to Sun, whose Sun Microelectronics
division is responsible for the popular SPARC line of microprocessors. However, the
idea of Sun Microelectronics developing microprocessors specifically to support Java
no doubt caught a lot of people off guard, including other microprocessor companies!
NOTE: Just so you don't get confused,
both JavaSoft and Sun Microelectronics are divisions of Sun Microsystems. Whenever
I refer to Sun, I'm referring to the company at large.
Java microprocessors are quite obviously yet another move on Sun's part to capitalize
on the success of Java. However, as it does with JavaOS, Sun legitimately has an
interesting and potentially lucrative angle in developing Java microprocessors. As
it is for JavaOS, the primary target application for Java microprocessors is in embedded
systems. Speed is a very critical factor in embedded systems, primarily because of
the limited horsepower available in these small systems. Java microprocessors have
the potential to significantly increase performance because they are being designed
around the highly efficient Java technology. Contrast this with other embedded microprocessors
that typically have a more generic design.
Sun is pushing Java microprocessors based on a new microprocessor product paradigm:
simple, secure, and small. Add to this Sun's promise to deliver Java microprocessors
at a fraction of the cost of traditional microprocessors. Sun is clearly appealing
to the consumer electronics market, where a compact, low-cost microprocessor would
probably rock a lot of boats. Sun has also announced the development of a full range
of component-level and board-level products to support the microprocessors.
Although the prospect of a Java microprocessor may seem strange at first, it's
not hard to see Sun's motivation. By 1999, the average American home is expected
to contain between 50 and 100 microcontrollers. Worldwide, there are also expected
to be more than 145 million cellular phone users, with each phone containing at least
one microcontroller. And each microcontroller contains at least one microprocessor.
Are you starting to get the picture?
NOTE: A microcontroller is a miniature
computer system, usually implemented on a single circuit board, scaled down to support
a limited function such as those required by consumer electronic devices.
The Java processor family consists of three lines of microprocessors:
- picoJAVA
- microJAVA
- UltraJAVA
The next few sections describe these different processor lines and the application
for which each is targeted.
picoJAVA
The specification for a minimal Java microprocessor is called picoJAVA and serves
as the basic design for all Sun's microprocessors. picoJAVA isn't a physical processor
that Sun intends to manufacture and sell; rather, it is the core specification on
which all Java microprocessors will be designed and built. The picoJAVA specification
will be made readily available for licensing to other chip manufacturers who want
to develop their own Java microprocessors. The picoJAVA specification is geared toward
a microprocessor with the best price/performance that fully supports the Java virtual
machine.
microJAVA
The first physical microprocessor in the works at Sun is microJAVA, which builds
application-specific I/O, memory, communications, and control functions onto the
picoJAVA core. microJAVA processors are expected to cost anywhere from $25 to $100,
which makes them good candidates for a wide range of electronic devices such as telecommunications
equipment and other nonnetwork applications such as printers and video games.
UltraJAVA
Sun's high-end Java microprocessor offering is called UltraJAVA. It is designed
to encompass the very fastest Java processors available. The UltraJAVA processor
line includes support for advanced graphics by virtue of Sun's Visual Instruction
Set (VIS), which defines high- performance hardware graphics extensions. Not surprisingly,
the UltraJAVA line of processors is primarily targeting high-end 3D graphics and
multimedia applications. Even with an expected cost starting at $100, the UltraJAVA
processor line may still be a bargain.
Summary
In this chapter, you broke away from the programming aspects of Java and learned
about some new technologies based on the Java framework. The first of these is the
standard extension APIs, which are planned to expand Java in a variety of directions.
These APIs will no doubt boost the appeal of Java to new levels because developers
will have much more reusable code to leverage when building custom applications and
applets. Although these new APIs ultimately mean more learning curves for developers,
they also result in less time spent writing code when that code is best suited to
a standard extension. Knowing this, many developers will be forced to rethink their
current plans based on the availability of the standard extension APIs because there's
no need to reinvent the wheel if it's already in the works.
You also learned about JavaOS, a new operating system based entirely on the Java
virtual machine. You then took a look at the new Java microprocessors, which aim
to be the first physical Java implementation on silicon. Although JavaOS and Java
microprocessors may not directly impact your Java development efforts in the immediate
future, they will no doubt play a significant role in Java reaching its maturity
as a technology with widespread application. That's reason enough for me to stay
informed about the status of these technologies!
|