Java was created in 1991 by James Gosling, Mike Sheridan, and Patrick Naughton of Sun Microsystems and was released in 1995 as a core component of Sun Microsystems’ Java Platform. Initially called Oak, in honor of the tree outside Gosling's window, its name was changed to Java because there was already a language called Oak.
The original motivation for Java was the need for platform independent language that could be embedded in various consumer electronic products like toasters and refrigerators. One of the first projects developed using Java was a personal hand-held remote control named Star 7.
At about the same time, the World Wide Web and the Internet were gaining popularity. Gosling et. al. realized that Java could be used for Internet programming. Principles
There were five primary goals in the creation of the Java language:
It should be "simple, object-oriented and familiar".
It should be "robust and secure".
It should be "architecture-neutral and portable".
It should execute with "high performance".
It should be "interpreted, threaded, and dynamic".
Nature of the Java Language
A programming language
As a programming language, Java can create all kinds of applications that you could create using any conventional programming language.
A development environment
As a development environment, Java technology provides you with a large suite of tools: a compiler, an interpreter, a documentation generator, a class file packaging tool, and so on.
An application environment
Java technology applications are typically general-purpose programs that run on any machine where the Java runtime environment (JRE) is installed.
A deployment environment
There are two main deployment environments: First, the JRE supplied by the Java 2 Software Development Kit (SDK) contains the complete set of class files for all the Java technology packages, which includes basic language classes, GUI component classes, and so on. The other main deployment environment is on your web browser. Most commercial browsers supply a Java technology interpreter and runtime environment.
Some Features of Java:
The Java Virtual Machine
The Java Virtual Machine is an imaginary machine that is implemented by emulating software on a real machine. The JVM provides the hardware platform specifications to which you compile all Java technology code. This specification enables the Java software to be platform-independent because the compilation is done for a generic machine known as the JVM.
A bytecode is a special machine language that can be understood by the Java Virtual Machine (JVM). The bytecode is independent of any particular computer hardware, so any computer with a Java interpreter can execute the compiled Java program, no matter what type of computer the program was compiled on.
Many programming languages allow a programmer to allocate memory during runtime. However, after using that allocated memory, there should be a way to deallocate that memory block in order for other programs to use it again. In C, C++ and other languages the programmer is responsible for this. This can be difficult at times since there can be instances wherein the programmers forget to deallocate memory and therefore result to what we call memory leaks.
In Java, the programmer is freed from the burden of having to deallocate that memory themselves by having what we call the garbage collection thread. The garbage collection thread is responsible for freeing any memory that can be freed. This happens automatically during the lifetime of the Java program.
Code security is attained in Java through the implementation of its Java Runtime Environment (JRE). The JRE runs code compiled for a JVM and performs class loading (through the class loader), code verification (through the bytecode verifier) and finally code execution.