Objective
In this Java tutorial, we are going to learn about java evolution, development of Java language, java features, Java frameworks, and Java support systems. Java tutorial covers various development tools, classes in Java programming, and Java methods which comprises the Java environment. This tutorial on java will help you get a quick insight into the Java programming language and thus, help you learn java language.

Introduction to Java Programming Language
Java Programming is a general-purpose object-oriented programming language, designed for the development of software for consumer electronic devices such as TVs, VCRs, toasters, etc.

Java is a platform neutral language, which means it is not tied to any particular hardware or operating system. It guarantees users to ‘write once, run anywhere’. Java language is supported by almost every operating system such as Sun Solaris, RedHat, Windows etc.

Java programming language was developed by Sun Microsystems of the USA in 1991, it was originally called Oak by James Gosling, who was one of the inventors of the language. The main goal for the developers was to make the language highly reliable, portable and simple.

The team for the development of Java language included Patrick Naughton, who discovered that the existing languages such as C and C++ had some major drawbacks in terms of reliability and portability. They modeled the new language Java on C and C++ while removing some features which they considered as constraints. This made Java a really simple, portable and powerful language. To learn java basics, let’s revise Java syntax.

** History of Java**
There is a chronicle of events that occurred during the whole course of development of the Java language e.

1990-A team of Sun Microsystems programmers decided to develop a special software to manipulate consumer electronic devices. The team headed by James Gosling
1991-The team studied various languages present at that time, viz., C and C++ and announced the new language to be “Oak”.
1992-The team at Sun known as Green Project demonstrated the application of their new language. For example, to control a list of home appliances using a hand device with the tiny touchscreen.
1993-The World Wide Web came to the internet and transformed the text-based Internet into the graphical rich environment. The Green Project team came up with an idea of developing Web applets (tiny programs) that could run on all types of computers connected to the internet.
1994-The team developed a web browser called “HotJava” to locate and run applet programs on the internet. This made it immensely popular amongst the internet users.
1995-Oak was renamed as “Java”, due to some legal snags. Java is a name, no acronym.
1996-Java programming was established as the leader for internet programming and also as a general-purpose object-oriented programming language. Sun releases Java Development Kit 1.0.
1997-Sun releases Java Development Kit 1.1 (JDK 1.1)
1998-Sun releases the Java 2 with version 1.2 of the Software Development Kit (SD K 1.2)
1999-Sun releases Java 2 platform, Standard Edition (J2SE) and Enterprise Edition (J2EE)
2000-Release ofJ2SE with SDK 1.3.
2002-The release of J2SE with SDK 1.4.
2004-The release of J2SE with JDK 5.0 (instead of JDK 1.5), known as J2SE 5.0.
2006- The release of Java SE 6.
2011- The release of Java SE 7.
2014- The release of Java SE 8.
2017- The release of Java SE 9.

Features of Java Programming

The main goal of the inventors was to design a language which could offer solutions to the problems encountered in modern programming. The goal being the language to be reliable, portable and distributed and at the same time simple, compact and interactive.

** Compiled and Interpreted**

Java language combines both of these approaches thus making Java a two-stage system. This approach was never offered before, as any language before was either compiled or interpreted.

Firstly, Java compiler translates source code into bytecode instructions, bytecodes are not machine instructions.

Secondly, Java interpreter generates machine code that can be directly executed by the machine that is running the Java program.

**Independent and Portable **

Java programs can be easily moved from one system to another, anywhere and anytime. Changes or any upgrade in the operating system, processors and system resources will not force any changes in Java programs.

Java programming ensures portability in two ways: firstly, Java compiler generates bytecode instructions that can be implemented on any machine, and secondly, the size of the primitive data types are machine independent.

Object-oriented

Almost everything in Java language is an object, which makes it a true object-oriented language. All program code and data reside within objects and classes. Java comes with an extensive set of classes, arranged in packages, which are used in program inheritance.

Robust and Secure

Java language provides many safeguards to ensure reliable code. It has strict run-time checking for data types. It is designed as a garbage collected language, i.e., it captures series errors and eliminates any risk of crashing the system.

Java systems verify all the memory access and thus ensures that no virus is communicated with an applet.

Distributed

Java programming facilitates both, sharing of data and programs. Java applications can open and access remote objects on Internet as easily as on any local system.

Simple, Small and Familiar

Java is a simplified version of C++, which is why it is familiar and yet different as it eliminates all the redundant and unreliable code. For example, Java does not use pointers, preprocessor header files, and many others. It also eliminates operator overloading and multiple inheritances in Java.

Multithreaded and Interactive

Multithreaded means handling different tasks simultaneously. Java language supports multithreaded programs, which means that we need not have to wait for one task to finish for another to start. This feature of java greatly improves the interactive performance of graphical applications.

High Performance

Java programming performance is very impressive considering the fact that is an interpreted language, mainly because of the bytecodes. Java architecture is designed to reduce overheads.

** Dynamic and Extensible**

Java is a dynamic language, it is capable of dynamically linking in new class libraries, methods, and objects. It can also determine the type of class through query.

Ease of Development

Java 2 standard edition (J2SE) 5.0 supports features such as Generics, Enhanced for loop, Autoboxing or unboxing, Typesafe enums, varargs, Static import and Annotation. These java features make it easy for the Java programmer by shifting the responsibility of creating the reusable code to the compiler, and also the resulting code is free from bugs.

Scalability and Performance

J2SE 5.0 improves the startup time and reducing the amount of memory used in Java 2 runtime environment.