History of Java
The history of Java
starts from Green team. Java team members also known as Green Team, initiated a
task to develop a language for digital devices such as set-top boxes,
televisions etc.
James Gosling, Mike
Sheridan and Patrick Naughton initiated the Java language project in June 1991.
The small team of Sun engineers called Green Team.
Firstly it was
called Greentalk by James Gosling and file extension was .gt.
After that, it was
called Oak. Oak is symbol of strength and chosen as national tree of many
countries like U.S.A., France, Germany, Romania etc.
In 1995, Oak was
renamed as Java because it was already a trademark by Oak Technologies.
Java was originally
developed by James Gosling at Sun Microsystems and released in 1995 as a core
component of Sun Microsystems’ Java platform. The language derives much of its
syntax from C and C++, but it has fewer low-level facilities than either of
them.
Features of Java
Simple :
Java language is
simple because its syntax is based on C++. If you already understand the basic
concepts of object-oriented programming, learning Java will be even easier. If
you are experienced C++ programmer, then moving to Java will require very
little effort. Because Java inherits the C/C++ syntax and many of the object-oriented
features of C++.
Object-oriented :
Object-oriented
means we organize our software as a combination of different types of objects
that incorporates both data and behavior. All program code and data reside
within object and classes. The object model in Java is simple and easy extend.
Secure :
Java does not allow
one to directly access and manipulate the computer memory as the case in C or
C++ with the use of pointers. The use of pointers can provide speed but some
time prove dangerous of direct memory manipulation of memory addresses.
Java programs run
inside virtual machine sandbox.
A Java sandbox is an
area inside the memory. Outside which a Java program can’t make calls to Java
resources such as APIs. Java sandbox consists of three components.
Classloader : It
adds security by separating the package for the classes of the local file
system from those that are imported from network sources.
Bytecode Verifier :
It checks the code fragments for illegal code that can violate access right to
objects.
Security Manager :
It determines what resources a class can access such as reading and writing to
the local disk.
Portable :
Java programs can be
easily moved from one computer to another. Java compiler generates byte code
instruction, we may carry the java byte code to any platform.
Robust :
Robust means strong.
Java uses a strong management. Java provides exception handling to manage
errors. To gain reliability, java has strict compile time and run time checking
for codes. To better understand how java is robust, consider two main reasons
for program failure: memory management mistakes and mishandled exceptional
conditions.
Multithreaded :
A thread is like a
separate program. We can write Java programs that deal with many tasks at once
by defining multiple threads. The main advantage of multi-threading is that it doesn’t
occupy memory for each thread. It shares common memory area.
Architecture-neutral :
There is no
implementation dependant features e.g., size of primitive data types is fixed.
In C language, int
data type occupies 2 bytes of memory for 32-bit architecture and 4 bytes of
memory for 644-bit architecture. But in Java, it occupies 4 bytes of memory for
both 32 and 64 bit architectures.
Interpreted:
Usually a computer language
is either compiled or interpreted. Java combines these approaches thus making Java
a two-stage system. Java compiler translates source code into byte code
instruction. Byte codes are not machine instructions and so java interpreter
generates machine code that can be directly executed by the machine that is
running the java program. So we can say that java is both a compiled and an interpreted
language.
High performance:
Java is faster than traditional
interpretation since byte code close to native code.
Distributed:
We can create
distributed applications in java. Java is designed for the distributed environment
of the Internet, because it handles TCP/IP protocols. Java also supports Remote
Method Invocation (RMI). This feature enables a program to invoke methods across
a network.