Jump to content

Java (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 211.28.96.69 (talk) at 12:28, 29 January 2003. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The Java language is an object-oriented programming language created by James Gosling and other engineers at Sun Microsystems. It was officially announced on May 23, 1995, at SunWorld. The Java programming platform is based upon the language, the Java virtual machine, and the Java API. Java is a trademark of Sun Microsystems.

Overview

There were four primary goals in the creation of the Java language:

  • It is object-oriented.
  • It is independent of the host platform (more or less)
  • It contains language facilities and libraries for networking.
  • It is designed to execute code from remote sources securely.

Object orientation

The first characteristic, object orientation, refers to a modern method of programming and language design. Its purpose is to make large software projects easier to manage and to improve quality and reduce the number of failed projects.

Platform independence

The second characteristic, platform independence, means that programs written in the Java language must run similarly on diverse hardware. One should be able to write a program once and run it anywhere. This is achieved by compiling Java language code "halfway" to bytecode--simplified machine instructions that conform to a set standard. The code is then run on a virtual machine, a program written in native code on the host hardware that translates generic Java bytecode into usable code on the hardware. Further, standardized libraries are provided to allow access to features of the host machines (such as graphics and networking) in unified ways. The Java language also includes support for multi-threaded programs--a necessity for many networking applications.

The first implementations of the language used an interpreted virtual machine to achieve portability, and many implementations still do. These implementations produce programs that run more slowly than the fully-compiled programs created by the typical C++ compiler and some later Java language compilers, so the language suffered a reputation for producing slow programs. More recent implementations of the Java VM produce programs that run much faster, using multiple techniques.

The first of these is to simply compile directly into native code like a more traditional compiler, skipping bytecodes entirely. This achieves great performance, but at the expense of portability. Another technique, the just-in-time compiler or "JIT", compiles the Java bytecodes into native code at the time the program is run. More sophisticated VMs even use dynamic recompilation, in which the VM can analyze the behavior of the running program and selectively recompile and optimize critical parts of the program. Both of these techniques allow the program to take advantage of the speed of native code without losing portability.

Portability is a technically difficult goal to achieve, and Java's success at that goal is a matter of some controversy. Although it is indeed possible to write programs for the Java platform that behave consistently across many host platforms, the large number of available platforms with small errors or inconsistencies led some to parody Sun's "Write once, run anywhere" slogan as "Write once, debug everywhere".

Secure execution of remote code

The Java platform was one of the first systems to provide wide support for the execution of code from remote sources. An applet could run within a user's browser, executing code downloaded from a remote HTTP server. The remote code runs in a highly restricted "sandbox", which protects the user from misbehaving or malicious code; publishers could apply for a certificate that they could use to digitally sign applets as "safe", giving them permission to break out of the sandbox and access the local filesystem and network, presumably under user control.


Evaluation

In most people's opinions, Java technology delivers reasonably well on all these goals. The language is not, however, without drawbacks. Some features of C++ that the Java language lacks, such as hardware-specific data types, low-level pointers to arbitrary memory addresses, or programming methods like operator overloading, can be abused or misused by programmers but are also powerful tools. (However, Java technology includes Java Native Interface, a way to call native code from Java language code.) Some programmers also complain about its lack of multiple inheritance, a powerful feature of C++ and other object-oriented languages. The Java language separates inheritance of type and implementation, allowing inheritance of multiple type definitions through interfaces, but only single inheritance of type implementation via class hierarchies. This allows most of the benefits of multiple inheritance while avoiding many of its dangers. In addition, through the use of concrete classes, abstract classes, as well as interfaces, a Java language programmer has the option of choosing full, partial, or zero implementation for the object type he defines, thus ensuring maximum flexibilty in application design.

There are some who believe that for certain projects, object orientation makes work harder instead of easier (this particular complaint is not unique to the Java language but applies to other object-oriented languages as well).


The language

An example of a hello world program in the Java language follows:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}


control structures

Loops

while (Boolean expression) {
    statement(s)
}


do {
    statement(s)
} while (Boolean expression);


for (initialisation ; termination condition ; incrementing expr) {
    statement(s)
}


If-then-statements

if (Boolean expression) {
    statement(s)
}


if (Boolean expression) {
    statement(s)
} else {
    statement(s)
}


With else if arbitrarily complex if-then-constructions may be built.

if (Boolean expression) {
    statement(s)
} else if (Boolean expression) {
    statement(s)
} else if (Boolean expression) {
    statement(s)
} else {
    statement(s)
}


switch (integer expression) {
    case constant integer expr:
         statement(s)
         break;
    ...
    default:
         statement(s)
         break;
}


handling of exceptions

try {
    statement(s)
} catch (exception type) {
    statement(s)
} catch (exception type) {
    statement(s)
} finally {
    statement(s)
}


Goto statements

It is possible to put a label before any statement

myLabel: aJavaStatement;

The command

break;

terminate the current loop.


The label may be used to jump out of a inner for, while or do-loop

break myLabel;

A continue-expression terminates the current interation step and starts the next one

continue;

In addition with

continue label;

program control may be handed directly to an outer loop.


The statement

return;

terminates a method.

With

return aValue;

aValue may be given back to the calling method.


Versions

  • JDK 1.0, 1996 Solaris, Win, MacOS Classic, Linux
  • JDK 1.1, 1997 Solaris, Win, MacOS Classic, Linux
  • JDK 1.2, 1998 Solaris, Win, Linux, ?
  • JDK 1.3, 2000 Solaris, Win, MacOX X, Linux
  • JDK 1.4, 2002 Solaris, Win, Linux

Java was initially released as the Java Development Kit 1.0 (JDK 1.0). This included the Java runtime (the virtual machine and the class libraries), and the development tools (e.g. the Javac compiler). Later, Sun also provided a runtime-only package, called the Java Runtime Environment (JRE). The first name stuck, however, so usually people refer to a particular version of Java by its JDK version (e.g. JDK 1.4). The JDKs of version 1.2 and later versions are often called Java 2 as well. For example, the official name of JDK 1.4 is The Java(TM) 2 Platform, Standard Edition version 1.4.

The language as such has been stable since JDK 1.0; the class libraries that come with the JDK got larger and have changed in some parts. Extensions and architectures closely tied to the Java programming language include: J2EE, J2ME, JNDI, JSML, JDBC, JAIN, JDMK, Jini, Jiro, JXTA, JavaSpaces, JMI.

Interpreted version

There is an interpreted version of Java called beanshell which may be used as a shell scripting language. The interpreter may be embedded in a Java application to make it scriptable.

How to program in Java

Programming in Java is a specialization of How to program in object-oriented languages.

The Java programming language is an object-oriented language with syntax similar to C and C++. To the experienced object-oriented programmer, some points should be emphasized:

1. Java supports only single inheritance of classes, but allows multiple inheritance of interfaces.

2. Java has a very large class library (called the Java API) similar to Smalltalk, supporting many different features, from basic collection data-types to complex security issues.

3. Java runs in a virtual machine.

It is not difficult to learn Java, however it is a long process to master the use of the Java API. Most users will start with classes like String and ArrayList.

A good starting point for learning Java is the Sun tutorial on Java Programming, found at http://java.sun.com/docs/books/tutorial/.

See also


External links: