epubjs
Version:
Render ePub documents in the browser, across many devices
120 lines (119 loc) • 15.2 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>A Java Road Map</title><link rel="stylesheet" href="core.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"/></head><body><div class="sect1" title="A Java Road Map"><div class="titlepage"><div><div><h1 class="title"><a id="learnjava3-CHP-1-SECT-9"/>A Java Road Map</h1></div></div></div><p>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.
The following sections constitute a road map that imposes some order on
Java’s past, present, and future.</p><div class="sect2" title="The Past: Java 1.0–Java 1.6"><div class="titlepage"><div><div><h2 class="title"><a id="learnjava3-CHP-1-SECT-9.1"/>The Past: Java 1.0–Java 1.6</h2></div></div></div><p><a id="idx10014" class="indexterm"/> <a id="idx10019" class="indexterm"/> <a id="idx10021" class="indexterm"/> <a id="idx10047" class="indexterm"/>Java 1.0 provided the basic framework for Java
development: the language itself plus packages that let you write
applets and simple applications. Although 1.0 is officially obsolete,
there are still a lot of applets in existence that conform to its
API.</p><p>Java 1.1 superseded 1.0, incorporating major improvements in the
<a id="I_indexterm1_id635098" class="indexterm"/><a id="I_indexterm1_id635103" class="indexterm"/>Abstract Window Toolkit (AWT) package (Java’s original GUI
facility), a new event pattern, new language facilities such as
reflection and inner classes, and many other critical features. Java 1.1
is the version that was supported natively by most versions of Netscape
and Microsoft Internet Explorer for many years. For various political
reasons, the browser world was frozen in this condition for a long time.
This version of Java is still considered a sort of baseline for applets,
although even this will fall away as Microsoft drops support for Java in
its platforms.</p><p><a id="I_indexterm1_id635117" class="indexterm"/> <a id="I_indexterm1_id635123" class="indexterm"/> <a id="I_indexterm1_id635130" class="indexterm"/>Java 1.2, dubbed “Java 2” by Sun, was a major release in
December 1998. It provided many improvements and additions, mainly in
terms of the set of APIs that were bundled into the standard
distributions. The most notable additions were the inclusion of the
Swing GUI package as a core API and a new, full-fledged 2D drawing API.
Swing is Java’s advanced user interface toolkit with capabilities far
exceeding the old AWT’s. (Swing, AWT, and some other packages have been
variously called the JFC, or Java Foundation Classes.) Java 1.2 also
added a proper Collections API to Java.</p><p>Java 1.3, released in early 2000, added minor features but was
primarily focused on performance. With version 1.3, Java got
significantly faster on many platforms and Swing received many bug
fixes. In this timeframe, Java enterprise APIs such as Servlets and
Enterprise JavaBeans also matured.</p><p><a id="I_indexterm1_id635148" class="indexterm"/> <a id="I_indexterm1_id635158" class="indexterm"/>Java 1.4, released in 2002, integrated a major new set of
APIs and many long-awaited features. This included language assertions,
regular expressions, preferences and logging APIs, a new I/O system for
high-volume applications, standard support for XML, fundamental
improvements in AWT and Swing, and a greatly matured Java Servlets API
for web applications.</p><p><a id="I_indexterm1_id635174" class="indexterm"/> <a id="I_indexterm1_id635182" class="indexterm"/> <a id="I_indexterm1_id635193" class="indexterm"/>Java 5, released in 2004, was a major release that
introduced many long-awaited language syntax enhancements including
generics, typesafe enumerations, the enhanced for-loop, variable
argument lists, static imports, autoboxing and unboxing of primitives,
as well as advanced metadata on classes. A new concurrency API provided
powerful threading capabilities, and APIs for formatted printing and
parsing similar to those in C were added. RMI has also been overhauled
to eliminate the need for compiled stubs and skeletons. There were also
major additions in the standard XML APIs.</p><p>Java 6, released in late 2006, was a relatively minor release that
added no new syntactic features to the Java language, but bundled new
extension APIs such as those for XML and web services.<a id="I_indexterm1_id635209" class="indexterm"/><a id="I_indexterm1_id635216" class="indexterm"/><a id="I_indexterm1_id635223" class="indexterm"/><a id="I_indexterm1_id635230" class="indexterm"/></p></div><div class="sect2" title="The Present: Java 7"><div class="titlepage"><div><div><h2 class="title"><a id="learnjava3-CHP-1-SECT-9.2"/>The Present: Java 7</h2></div></div></div><p><a id="idx10020" class="indexterm"/> <a id="idx10048" class="indexterm"/>This book includes all the latest and greatest
improvements through the final release of Java 7. This release adds some
minor language syntax enhancements such as those to improve exception
handling and resource management. It also includes some major API
updates, such as a completely new filesystem API and additions to many
others.</p><p>This edition of the book is the first since the Java 5 release and
therefore has been completely overhauled to incorporate all of the
changes from the Java 6 and Java 7 releases.</p><p>Here’s a brief overview of the most important features of the
current core Java API:<a id="I_indexterm1_id635280" class="indexterm"/><a id="I_indexterm1_id635286" class="indexterm"/></p><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>JDBC (Java Database Connectivity)</em></span></span></dt><dd><p>A general facility for interacting with databases
(introduced in Java 1.1).<a id="I_indexterm1_id635300" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>RMI (Remote Method Invocation)</em></span></span></dt><dd><p>Java’s distributed objects system. RMI lets you call methods
on objects hosted by a server running somewhere else on the
network (introduced in Java 1.1).</p></dd><dt><span class="term"><span class="emphasis"><em>Java Security</em></span></span></dt><dd><p>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.<a id="I_indexterm1_id635329" class="indexterm"/><a id="I_indexterm1_id635334" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>JFC (Java Foundation Classes)</em></span></span></dt><dd><p>A catch-all for a number of 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.<a id="I_indexterm1_id635354" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Java 2D</em></span></span></dt><dd><p>Part of JFC; enables high-quality graphics, font
manipulation, and printing.<a id="I_indexterm1_id635368" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Internationalization</em></span></span></dt><dd><p>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 in Java
1.1).<a id="I_indexterm1_id635386" class="indexterm"/><a id="I_indexterm1_id635391" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>JNDI (Java Naming and Directory
Interface)</em></span></span></dt><dd><p>A general service for looking up resources. JNDI unifies
access to directory services, such as LDAP, Novell’s NDS, and
others.</p></dd></dl></div><p>The following are “standard extension” APIs. Some, such as those
for working with XML and web services, are bundled with the standard
edition of Java; some must be downloaded separately and deployed with
your application or server.<a id="I_indexterm1_id635414" class="indexterm"/></p><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>JavaMail</em></span></span></dt><dd><p>A uniform API for writing email software.<a id="I_indexterm1_id635428" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Java 3D</em></span></span></dt><dd><p>A facility for developing applications with 3D
graphics.<a id="I_indexterm1_id635441" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Java Media</em></span></span></dt><dd><p><a id="I_indexterm1_id635453" class="indexterm"/> <a id="I_indexterm1_id635459" class="indexterm"/> <a id="I_indexterm1_id635465" class="indexterm"/>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.<a id="I_indexterm1_id635475" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Java Servlets</em></span></span></dt><dd><p>A facility that lets you write server-side web applications
in Java.<a id="I_indexterm1_id635488" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Java Cryptography</em></span></span></dt><dd><p>Actual implementations of cryptographic algorithms. (This
package was separated from Java Security for legal
reasons.)<a id="I_indexterm1_id635502" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>JavaHelp</em></span></span></dt><dd><p>A facility for writing help systems and incorporating them
in Java programs.<a id="I_indexterm1_id635516" class="indexterm"/><a id="I_indexterm1_id635521" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Enterprise JavaBeans</em></span></span></dt><dd><p>A component architecture for building distributed
server-side applications.<a id="I_indexterm1_id635535" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>Jini</em></span></span></dt><dd><p>An interesting distributed component technology that is
designed to enable distributed computing, discovery, and
rendezvous of devices ranging from software tools to hardware and
household appliances.<a id="I_indexterm1_id635550" class="indexterm"/></p></dd><dt><span class="term"><span class="emphasis"><em>XML/XSL</em></span></span></dt><dd><p>Tools for creating and manipulating XML documents,
validating them, mapping them to and from Java objects, and
transforming them with stylesheets.</p></dd><dt><span class="term"><span class="emphasis"><em>Web services</em></span></span></dt><dd><p>Tools for creating and deploying Java-based SOAP web
services.</p></dd></dl></div><p>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.<a id="I_indexterm1_id635578" class="indexterm"/><a id="I_indexterm1_id635585" class="indexterm"/></p></div><div class="sect2" title="The Future"><div class="titlepage"><div><div><h2 class="title"><a id="learnjava3-CHP-1-SECT-9.3"/>The Future</h2></div></div></div><p><a id="idx10011" class="indexterm"/> <a id="I_indexterm1_id635609" class="indexterm"/>Changes in Java have become less frequent as Java has
matured over the years, but Java continues to be one of the most popular
platforms for application development. This is especially true in the
areas of web services, web application frameworks, and XML tools. While
Java has not dominated mobile platforms in the way it seemed destined
to, the Java language and core APIs are used to program for Google’s
Android mobile OS, which is used on billions of devices around the
world. In the Microsoft camp, the Java-derived C# language has taken
over much .NET development and brought the core Java syntax and patterns
to those platforms.</p><p>Probably the most exciting areas of change in Java today are found
in the trend toward lighter weight, simpler frameworks for business and
the integration of the Java platform with dynamic languages for
scripting web pages and extensions. There is much more interesting work
to come.<a id="I_indexterm1_id635636" class="indexterm"/></p></div><div class="sect2" title="Availability"><div class="titlepage"><div><div><h2 class="title"><a id="learnjava3-CHP-1-SECT-9.4"/>Availability</h2></div></div></div><p><a id="idx10003" class="indexterm"/> <a id="idx10008" class="indexterm"/> <a id="idx10016" class="indexterm"/>You have several choices for Java development environments
and runtime systems. Oracle’s <a id="I_indexterm1_id635685" class="indexterm"/>Java Development Kit (JDK) is available for Mac OS X,
Windows, and Linux. Visit <a class="ulink" href="http://java.sun.com">Oracle’s Java
website</a> at for more
information about obtaining the latest JDK. This book’s online content
is available at <a class="ulink" href="http://oreil.ly/Java_4E">http://oreil.ly/Java_4E</a>.</p><p><a id="I_indexterm1_id635717" class="indexterm"/>There is also a whole array of popular Java Integrated
Development Environments. We’ll discuss two in this book: IBM’s <a class="ulink" href="http://eclipse.org">Eclipse</a> and the <a class="ulink" href="http://netbeans.org">Oracle NetBeans IDE</a>. These all-in-one
development environments let you write, test, and package software with
advanced tools at your fingertips. While Eclipse is unquestionably the
most popular and is open source, this author’s preferred IDE is Intellij
IDEA by JetBrains, which now also has a free community
edition.<a id="I_indexterm1_id635742" class="indexterm"/><a id="I_indexterm1_id635749" class="indexterm"/><a id="I_indexterm1_id635756" class="indexterm"/></p></div></div></body></html>