Since its public introduction a little more than a year ago, tremendous hype
and fanfare have surrounded the Java programming language. Rumors, speculation,
and confusion have all followed the wave of Java publicity. Is it secure? Is it
just for the Web? Is it robust? As Windows NT 5.0 takes shape, Microsoft is
preparing an important place for Java and other Web-related technologies (for
information on NT 5.0, see the list of related Windows NT Magazine articles
on page 116). To understand Java for what it is and what it isn't, you have to
know a little bit about Java's origins and cut through the myths.
Java's Reason for Being
Java is a general-purpose OOP language, but many users associate it with the
Internet. The Internet connection came relatively late in Java's gestation and
was not its original purpose. Sun Microsystems developed Java while working on
projects for intelligent appliance such as personal digital assistants. James
Gosling led the development group, which started its work in C++, but became
frustrated with some of C++'s limitations.
Beginning in 1990, the development group began working on a new language,
the Object Application Kernel (OAK). Because OAK was already a registered trade
name, Sun Microsystems renamed its new language Java. Like most technology
developments, Java has origins in other languages. C and C++ contribute the
most, but Smalltalk, Objective-C, Eiffel, Ada, ML, and SNOBOL also have elements
in Java.
Various technologies claim to compete with, complement, or associate with
Java. For example, Netscape's JavaScript is unrelated to Java the language, but
both products carry a similar name. Microsoft positions its ActiveX components
to compete with Java, but ActiveX is not a programming language. The truth is
that nothing is quite like Java.
Truth About Java
Many claims have been made about Java as a language. By examining these
claims, you can begin to better understand Java's place in the world of
development technologies.
Simple. Java is the simplest OOP language to learn. By
comparison, the learning curves for other OOP languages such as C++ and non-OOP
languages such as C are very steep. What will happen to Java after the standards
committees take hold of it is difficult to say. Despite its simplicity, Java is
an OOP language, so you need to gain some understanding of object-oriented
concepts.
| What it is, and what it isn't |
Efficient. The claim that Java is efficient is debatable
because Java is an interpreted language, and the Java interpreter uses the Java
Virtual Machine (JVM). You can interpret Java to run on any operating system or
Web browser, so a Java program will typically run between 2 and 20 times slower
than an equivalent C++ program. However, for an interpreted language, this
performance is considered efficient.
Several companies (including Borland and Symantec but excluding Sun
Microsystems) recently deployed a relatively new concept to help with Java's
runtime efficiency: Just-In-Time (JIT) compilation, which involves invoking a
compiler at runtime from within the JVM on precompiled Java byte codes
that have had all dynamic bindings resolved. The JIT compiler re-compiles the
interpreted byte codes into machine code, which speeds subsequent execution.
Technologies such as JIT, advances in general-purpose computing hardware such as
the Pentium Pro, and the Sun Microsystems announcement of Java silicon
(processors that execute Java directly) will make Java a more effective
general-purpose computing language. The first examples of Java silicon and the
JavaStation are due out in 1997.
Small. The Java language is small. The number of keywords
and language constructs is limited compared with other development languages.
The compiled code that Java produces is also compact relative to the number of
input source lines, which makes it good for quick downloading across the
Internet.
Architecture Neutral. Java's language characteristics are
absolute across all platforms, which makes Java programs extremely portable.
Java does away with the 16-, 32-, 64-bit conundrum because the basic data types
are the same size regardless of platform. So, for example, you can write a Java
program on Windows NT that will run on a Solaris SPARC machine without so much
as a recompile. This portability includes graphics programs. Anyone who has had
to architect and construct portable graphics code, even with a helper toolkit,
will appreciate Java's portability.
Secure. Java's claim to be a secure language is in dispute
because hackers have successfully cracked its security mechanism dozens of
times. Sun Microsystems is revising Java to use independently verifiable digital
signatures to enhance Java's security. These enhanced features will be part of
the next major release of the language.
Robust. Several of Java's elements make it one of the most
robust languages ever developed. Because Java has no undefined states, you're
less likely to encounter a protection fault or clobbered memory. In contrast,
when a program written in C or C++ references a pointer to an invalid memory
location, the language does not define what action to take and the program can
become unstable. Java also has a well-designed exception mechanism that performs
many checks at compile time. The exception mechanism can catch and easily handle
runtime exceptions. In addition, the lack of pointers combined with extensive
compile time analysis eliminates many traditional coding errors, making for very
solid code.
Multithreaded. Java contains embedded support for
multithreaded programming. Some of the support is in the language in the form of
keywords supporting mutual exclusion locks and semaphores, both of which are
necessary for effective multithreaded programming. Some of the support is in the
class library that comes with the language. Although multithreaded programming
is inherently difficult, Java's support for it makes it simpler than ever before
by providing an easy-to-use language and library mechanisms.
International. All character and string data types in Java
are Unicode. Unicode is a standard that supports wide characters capable of
representing any one of the natural languages (you can find complete information
about Unicode at http://www.unicode.org).
Java's Future
Because of its presence on and off the Web, Java is aiming to become a
dominant application development language in the next few years and figures to
play an important role in NT 5.0. The application development community,
including NT development shops, will largely determine Java's success. For more
information on Java, see the box, "Java Resources."