HostedDB - Dedicated UNIX Servers

-->
Internet Security Professional Reference:Java Security
Previous Table of Contents Next


At the same time that FirstPerson was losing the race for interactive television, the World Wide Web was winning the bandwidth race on the Internet. There was no doubt about it—the web was big and getting bigger. In September of 1994, after realizing the potential of Oak and the World Wide Web, Naughton and Jonathan Payne finished WebRunner, later to be renamed HotJava. Soon, Arthur Van Hoff, who had joined the Sun team a year before, implemented the Java compiler in Java itself, wherein Gosling’s original compiler had been implemented in C. This showed that Java was a full-featured language and not merely an oversimplified toy.

On May 23, 1995, the Java environment was formally announced by Sun at SunWorld ’95.

It took four years and an evolution of purpose for Java to enter the Internet mainstream. Netscape Communications, maker of the popular web browser Netscape Navigator, has incorporated Java into its software. In addition, 3D standards such as VRML may use Java for interactive behavior. With its potential in future applications such as intelligent agents, Java is almost certainly destined to be the most overreaching technology of the Internet in the next decade.

Of course, Java’s infusion on the Internet is not the end of the Java mission. Sun sees Java’s success on the Internet as the first step in employing Java in interactive television set-top boxes, hand-held devices, and other consumer electronics products—exactly where Java began four years ago. Its portable nature and robust design enable it to be used for cross-platform development and in stringent environments such as consumer electronics.

Main Features of the Java Environment

The Java technology is actually a group of technologies:

  The language for developing the code necessary for applications
  The architecture for running the applications that have been developed
  The tools necessary to build, compile, and run those applications of which Java is comprised

The Java language is meant to be object-oriented, familiar, and simple. The Java architecture provides a portable, high-performance, robust runtime environment within which the Java language can be used. In addition, the Java tools give the programmer and end user the programs they need to develop the Java code and essential classes for providing advanced, dynamic content over heterogeneous networked environments. To understand Java is to understand each of these components and how they fit in relation to all the others.

Security in Java is implemented in many ways and can be seen in three aspects of the Java architecture.

  Keep it simple. The Java language, being similar to C++, provides the programmer with a familiar language to program in, reducing errors that might crop up from completely new syntactical rules. At the same time, the language diverges from C++ in areas that create most of the problems in programming in C++.
  Double-check. Just because a program downloaded from the Net is in Java bytecode doesn’t necessarily mean it was compiled with a standard Java compiler. Rather than relying on a single point of protection, the runtime environment double-checks the code, and provides other safety mechanisms for program isolation from the client system.
  Limit access. The Java interpreter, whether stand-alone or on a web browser, can limit system access that an applet has no matter what it is trying to do. By isolating memory space and file space, the interpreter makes sure, whether intentional or not, that the Java executables stay in line.

In the description of the different Java architecture features to follow, it is important to keep these goals in mind and look at the overall design of Java and how it relates to these security issues.

The Java language is familiar, being derived from C++. It uses automatic garbage collection and thread synchronization—not a hack of procedural programs to provide object-oriented behavior. As will be discussed, Java is an evolution of, but not a direct extension of, C++. It was initially found that extending C++ would not be enough to provide the necessary development environment for distributed computing; therefore, Java is a new language in its own right. Even though it is familiar, the new features of the language add simplification to the programmer’s job by adding advanced features such as automatic garbage collection and thread synchronization. This means that the language has thrown away the vestiges of procedural programming in order to create true object-oriented behavior from the foundation. The Java language provides the qualities necessary for rapid, powerful programming on today’s advanced systems.

The Java architecture, or the runtime environment that the language and JVM provide, is portable and architecturally neutral; high performance with its dynamic, threaded capabilities; and robust with its compile-time checking and secure interactions. Java provides an interpreted environment in which architecturally neutral code can be run across a heterogeneous network of machines. This, however, does not preclude Java from being a high-performance environment. On the contrary, Java provides near native code speed, with the added benefit of dynamic linking and threaded execution. In addition, Java provides a robust atmosphere with stringent security features and code verification. The Java architecture provides the framework for high-performance distributed computing across divergent platforms such as the Internet.

The Beta Java Development Kit (JDK) includes the Java Appletviewer, Java interpreter, and Java compiler, along with class libraries to support programming for these environments. The Java Appletviewer is used to test Java applets. Both Netscape Navigator and Microsoft’s Internet Explorer support Java applets, and can be used in place of the HotJava browser. The Java interpreter is the standalone runtime system for Java applications. It can be used for running platform-independent code on a variety of machines in a robust, high-performance manner. The Java compiler enables programmers to develop the machine-independent Java bytecode necessary for running under the browser and interpreter environments. Java also comes with a substantial list of class libraries for both the browser and interpreter environments, providing the programmer with a host of useful routines from the outset. The Java tools enable content developers to get under way quickly and easily by providing all the programs necessary for creating Java programs.


Previous Table of Contents Next