Java is a general-purpose computer programming language that is concurrent, class-based and object-oriented.
Java was developed by James Gosling in 1991 at Sun Microsystems(now owned by Oracle Corporation).
Sun Microsystems released the first public implementation as Java 1.0 in 1995.
The language was initially called Oak,Later the project went by the name Green and was finally renamed Java.
According to Sun Microsystems, Java language is very simple to learn and code because:
Syntax is based on C++ (so its is easier for programmers to learn it after C++).
Remove so many confusing and/or rarely-used features e.g., explicit pointers, operator overloading,virtual concepts etc.
Do not need to bother about un-referenced object, that will be removed automatically by Garbage Collector.
Java is an object oriented programming language. It supports all principles of Object Oriented Programming :
1. AbstractionJava is based on the concept of WORA (write once run anywhere).
The target of Java is to write a program once and then run this program on multiple operating systems.
Java code requires both compiler & interpreter.
When you compile a java source code it produce a bytecode ( .class file).
This bytecode is for Java Virtual Machine ( JVM ), not for real machine.
JVM is specific to a platform & produce platform specific machine code.
In Java you don't need to care of de-allocation of garbage (un-referenced objects).
JVM delegates the job of garbage collection to a thread, called garbage collector, working of garbage collector is monitored & controlled by JVM itself.
Multi-threading helps in achieving Multi-tasking.
Java has language-level support of Multi-Threading.
A thread is an independent path of execution.
Multi-threading saves wastage of CPU cycles. It makes the application more productive & responsive.
Java is strongly typed language (that is, all variables must be assigned an explicit data type).
Java has language-level support for exception handling.
Java automatically checks the array boundary. It's not the case of its predecessors languages.
There are lack of pointers that avoids security problem.
There is automatic garbage collection in java.
Elimination of direct memory pointer & automatic array limit checking prevents rouge programs from reaching into section of memory where they shouldn't.
Untrusted programs are restricted to run inside the JVM. Access to the platform can be strictly controlled by a security manager.
Code is checked for pathologies by class loader and a bytecode verifier.
In Java there is no dependent features e.g. size of primitive data type is fixed for all type Architecture (32 bit or 64 bit). Hence, Java compiler generates an architecture-neutral file format, which makes the compiled code executable on any architectural machine, with the presence of Java runtime system.
Since, java is architecture-neutral and having no implementation dependent aspects, makes Java portable. You may carry the java bytecode to any platform.
You can create a distributed application with the help of JAVA. You may access by calling the methods from any machine on the internet.