Java is a recently developed, concurrent, class-based, object-oriented programming and runtime environment, consisting of:
A programming language
An API specification
A virtual machine specification
Java has the following characteristics:
Object oriented - Java provides the basic object technology of C++ with some enhancements and some deletions.
Architecture neutral - Java source code is compiled into architecture-independent object code. The object code is interpreted by a Java Virtual Machine (JVM) on the target architecture.
Portable - Java implements additional portability standards. For example, ints are always 32-bit, 2's-complemented integers. User interfaces are built through an abstract window system that is readily implemented in Solaris and other operating environments.
Distributed - Java contains extensive TCP/IP networking facilities. Library routines support protocols such as HyperText Transfer Protocol (HTTP) and file transfer protocol (FTP).
Robust - Both the Java compiler and the Java interpreter provide extensive error checking. Java manages all dynamic memory, checks array bounds, and other exceptions.
Secure - Features of C and C++ that often result in illegal memory accesses are not in the Java language. The interpreter also applies several tests to the compiled code to check for illegal code. After these tests, the compiled code causes no operand stack over- or underflows, performs no illegal data conversions, performs only legal object field accesses, and all opcode parameter types are verified as legal.
High performance - Compilation of programs to an architecture independent machine-like language, results in a small efficient interpreter of Java programs. The Java environment also compiles the Java bytecode into native machine code at runtime.
Multithreaded - Multithreading is built into the Java language. It can improve interactive performance by allowing operations, such as loading an image, to be performed while continuing to process user actions.
Dynamic - Java does not link invoked modules until runtime.
Simple - Java is similar to C++, but with most of the more complex features of C and C++ removed.
Java does not provide:
Programmer-controlled dynamic memory