History
- Java is a programming language created by James Gosling from Sun Microsystems in 1991. The first publicly available version of Java (Java 1.0) was released in 1995.
 - Over time new enhanced versions of Java have been released. The current version of Java is Java 1.7 which is also known as Java 7.
 -  From the Java programming language the Java platform evolved.                   The Java platform allows that the program code is written in other                   languages than                   the Java programming language and still runs on the                   Java virtual                   machine.
 
. Java Virtual machine
- The Java virtual machine (JVM) is a software implementation of a computer that executes programs like a real machine.
 - The Java virtual machine is written specifically for a specific operating system, e.g. for Linux a special implementation is required as well as for Windows.
 -                    Java programs are compiled by the Java compiler into so-called                   bytecode. The Java virtual machine interprets this                   bytecode                   and                   executes                   the Java program.
 
Java Runtime Environment vs. Java Development Kit
- Java comes in two flavors, the Java Runtime Environment (JRE) and the Java Development Kit (JDK).
 - The Java runtime environment (JRE) consists of the JVM and the Java class libraries and contains the necessary functionality to start Java programs.
 -  The JDK                   contains in addition the development tools necessary to                   create Java programs. The JDK consists therefore of a                   Java compiler,                   the                   Java                   virtual machine, and the Java class libraries.
 
Characteristics of Java
The target of Java is to write a program once and then run this program on multiple operating systems.
Java has the following properties:
-                          
Platform independent: Java programs use the Java virtual machine as abstraction and do not access the operating system directly. This makes Java programs highly portable. A Java program which is standard complaint and follows certain rules can run unmodified on all supported platforms, e.g. Windows or Linux.
 -                          
Object-orientated programming language: Except the primitive data types, all elements in Java are objects.
 -                          
Strongly-typed programming language: Java is strongly-typed, e.g. the types of the used variables must be pre-defined and conversion to other objects is relatively strict, e.g. must be done in most cases by the programmer.
 -                          
Interpreted and compiled language: Java source code is transferred into the bytecode format which does not depend on the target platform. These bytecode instructions will be interpreted by the Java Virtual machine (JVM). The JVM contains a so called Hotspot-Compiler which translates performance critical bytecode instructions into native code instructions.
 -                          
Automatic memory management: Java manages the memory allocation and de-allocation for creating new objects. The program does not have direct access to the memory. The so-called garbage collector deletes automatically objects to which no active pointer exists.
 
 The Java syntax is similar to C++. Java is case sensitive,                   e.g.                   the variables myValue and myvalue will be treated as different                   variables.
Development Process with Java
The programmer writes Java source code in a text editor which supports plain text. Normally the programmer uses an Integrated Development Environment (IDE) for programming. An IDE supports the programmer in the task of writing code, e.g. it provides auto-formating of the source code, highlighting of the important keywords, etc.
                   At some point the programmer (or the IDE) calls the Java                   compiler                   (javac). The Java compiler creates the                   bytecode                   instructions.                   . These instructions are                   stored in                   .class                   files and can be executed by the Java Virtual Machine.
Classpath
                   The                   classpath                   defines where the Java compiler and Java runtime look                   for                   .class                   files to                   load. This instructions can be used in the Java program.                                   
                   For                   example if you want to use an external Java                   library                   you have to                   add                   this                   library to your classpath to use it in your                   program.
Your first Java program
The following Java program is developed under Microsoft Windows. The process on other operating system should be similar but is not covered in this description.
                   Select a new directory which will contain                   your Java code. I                   will use                   the                   c:\temp\java                   which will be called                   javadir                   in the following description.                                   
Open a text editor which supports plain text, e.g. Notepad under Windows and write the following source code. You can start Notepad via → → and by pressing enter.
Save the source code in your                   javadir                   directory with the                                      HelloWorld.java                   filename. The name of a Java source                   file must always equals                   the class                   name (within the source code)                   and end                   with the                   .java                   extension. In this example                   the                   filename must be                   HelloWorld.java                   because                   the                   class is called                   HelloWorld.