HostedDB - Dedicated UNIX Servers

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


Java’s Functionality

The Java language changes the passive nature of the Internet and World Wide Web by enabling architecturally neutral code to be dynamically loaded and run on a heterogeneous network of machines such as the Internet. Java provides this functionality by incorporating the following characteristics into its architecture. These features make Java the most promising contender for soon becoming the major protocol for the Internet.

  Portable. Java can run on any machine that has the Java interpreter ported to it. This is an important feature for a language used on the Internet where any platform could be sitting at the business end of an Ethernet card.
  Robust. The features of the language and runtime environment ensure that the code functions properly. This results primarily from the push for portability and the need for solid applications that do not bring down a system when a user stumbles across a home page with a small animation.
  Secure. In addition to protecting the client against unintentional attacks, the Java environment must protect it against intentional ones as well. The Internet is all too familiar with Trojan horses, viruses, and worms to allow just any application to be downloaded and run.
  Object-oriented. The language is object-oriented at the foundations of the language and allows the inheritance and reuse of code both in a static and dynamic fashion.
  Dynamic. The dynamic nature of Java, which is an extension of its object-oriented design, allows for runtime extensibility.
  High performance. The Java language supports several high-performance traits such as multithreading, just-in-time compiling, and native code usage.
  Easy. The language itself can be considered a derivative of C and C++, so it is familiar. At the same time, the environment takes over many of the error-prone tasks from the programmer such as pointers and memory management.
  Supported. Java has gained the support of several software developers. This support includes inclusion of the Java runtime engine in several web browsers from Netscape, Microsoft, and Quarterdeck among others. In addition, several vendors such as Oracle are working on inexpensive Internet terminals that use Java as their primary environment. Development tools are also being developed by Borland, Metrowerks, and Symantec.

The job of providing dynamic content for the Internet is daunting, but the protocol that succeeds will become as universal as e-mail or HTML is today.

At the time of this writing, Java version 1.1 is the current version. (It can be downloaded, along with documentation, from their WWW site at www.javasoft.com.) Version 1.1 includes support for several new features, among which is the support for JavaBeans, a technology that gives vendors another way to add increased functionality to Java applications. Perhaps the most interesting enhancement from a security standpoint is the new capability to “sign” Java applications to verify their origin. Although browsers from Netscape and Microsoft do not support the signing feature as of this writing, the HotJava browser from Sun does.

Java Is Portable

The Java programming language provides portability in several ways. Two of these ways are as follows:

  The Java language is interpreted. This means that every computer it runs on must have a program to convert the Java codes into native machine code.
  The Java language does not enable a particular machine to implement different sizes for fundamental types such as integers or bytes.

By executing in an interpreter environment, the Java code need not conform to any single hardware platform. The Java compiler that creates the executable programs from source code compiles for a target machine that does not physically exist—the Java Virtual Machine (JVM). The JVM is a specification for a hypothetical processor that can run Java code. The traditional problem with interpreters has always been their lack of performance. Java attempts to overcome this by compiling to an intermediate stage and converting the source code to bytecode, which can then be efficiently converted into native code for a particular processor.

In addition to specifying a virtual machine code specification to ensure portability, the Java language also makes sure that data takes up the same amount of space in all implementations. On the other hand, C programming language types change, depending upon the underlying hardware and operating system. An integer that occupied 16 bits under Windows 3.1, for example, now takes up 32 bits on Windows 95. The same problem exists across processor platforms, in which computers such as the DEC Alpha are 64 bits, while others, such as Intel’s 486, are only 32 bits. By creating a single standard for data size, Java makes sure that programs are hardware-independent.

These features and others ensure that Java is capable of running on any machine for which the interpreter is ported. Thus, once a single application has been ported, the developer and user have the benefit of every program written for Java.


Previous Table of Contents Next