Introduction to Java
JAVA was developed by James Gosling at Sun Microsystems Inc in the
year 1995, later acquired by Oracle Corporation. It is a simple programming
language. Java makes writing, compiling, and debugging programming easy. It helps to create reusable code and modular programs. Java is a class-based, object-oriented programming language and is designed to have as few implementation dependencies as possible. A general-purpose programming language made for developers to write once run anywhere that is compiled Java code can run on all platforms that support Java. Java applications are compiled to byte code that can run on any Java Virtual machine .The syntax of Java is similar to c/c++.
History of Java:
Java’s history is very interesting. It is a programming language created in
1991. James Gosling, Mike Sheridan, and Patrick Naughton, a team of Sun engineers
known as the Green team initiated the Java language in 1991. Sun
Microsystems released its first public implementation in 1996 as Java 1.0. It provides
no-cost -run-times on popular platforms. Java1.0 compiler was re-written in Java by
Arthur Van Hoff to strictly comply with its specifications. With the arrival of Java 2,
new versions had multiple configurations built for different types of platforms.
In 1997, Sun Microsystems approached the ISO standards body and later
formalized Java, but it soon withdrew from the process. At one time, Sun made
most of its Java implementations available without charge, despite their
proprietary software status. Sun generated revenue from Java through the selling
of licenses for specialized products such as the Java Enterprise System.
On November 13, 2006, Sun released much of its Java virtual machine as free,
open-source software. On May 8, 2007, Sun finished the process, making all of its
JVM’s core code available under open-source distribution terms.
The principles for creating java were simple, robust, secured, high performance,
portable, multi-threaded, interpreted, dynamic, etc. In 1995 Java was developed
by James Gosling, who is known as the Father of Java. Currently, Java is used in
mobile devices, internet programming, games, e-business, etc.
Why is it called JAVA?
After the name OAK, the team decided to give a new name to it and the suggested
words were Silk, Jolt, revolutionary, DNA, dynamic, etc. These all names were easy
to spell and fun to say, but they all wanted the name to reflect the essence of
technology. In accordance with James Gosling, Java the among the top names
along with Silk, and since java was a unique name so most of them preferred it.
Java is the name of an island in Indonesia where the first coffee(named java
coffee) was produced. And this name was chosen by James Gosling while having
coffee near his office. Note that Java is just a name, not an acronym.
Terms within Java programming languages:
1. Java Virtual Machine(JVM): This is generally referred to as JVM. There are
three execution phases of a program. They are written, compile and run the
program.
• Writing a program is done by a java programmer like you and me.
• The compilation is done by the JAVAC compiler which is a primary Java
compiler included in the Java development kit (JDK). It takes the Java program
as input and generates bytecode as output.
• In the Running phase of a program, JVM executes the bytecode generated by
the compiler.
Now, we understood that the function of Java Virtual Machine is to execute the
bytecode produced by the compiler. Every Operating System has a different JVM
but the output they produce after the execution of bytecode is the same across all
the operating systems. This is why Java is known as a platform-independent
language.
2. Bytecode in the Development process: As discussed, the Javac compiler of JDK
compiles the java source code into bytecode so that it can be executed by JVM. It is saved as .class file by the compiler. To view the bytecode, a disassembler
like javap can be used.
3. Java Development Kit(JDK): While we were using the term JDK when we learn
about bytecode and JVM. So, as the name suggests, it is a complete Java
development kit that includes everything including compiler, Java Runtime
Environment (JRE), java debuggers, java docs, etc. For the program to execute in
java, we need to install JDK on our computer in order to create, compile and run
the java program.
4. Java Runtime Environment (JRE): JDK includes JRE. JRE installation on our
computers allows the java program to run, however, we cannot compile it. JRE
includes a browser, JVM, applet supports, and plugins. For running the java
program, a computer needs JRE.
5. Garbage Collector: In Java, programmers can’t delete the objects. To delete or
recollect that memory JVM has a program called Garbage Collector. Garbage
Collectors can recollect the objects that are not referenced. So Java makes the life
of a programmer easy by handling memory management. However, programmers
should be careful about their code whether they are using objects that have been
used for a long time. Because Garbage cannot recover the memory of objects
being referenced.
6. ClassPath: The classpath is the file path where the java runtime and Java
compiler look for .class files to load. By default, JDK provides many libraries. If you
want to include external libraries they should be added to the classpath.
Key Features of Java
1. Platform Independent:
Compiler converts source code to bytecode and then the JVM executes the bytecode generated by the compiler. This bytecode can run on any platform be it Windows, Linux, or macOS which means if we compile a program on Windows, then we can run it on Linux and vice versa. Each operating system has a different JVM, but the output produced by all the OS is the same after the execution of bytecode. That is why we call java a platform-independent language.
2. Object-Oriented Programming Language:
Organizing the program in the terms of collection of objects is a way of object-oriented programming, each of which represents an instance of the class.
The four main concepts of Object-Oriented programming are:
• Abstraction
• Encapsulation
• Inheritance
• Polymorphism
3. Simple:
Java is one of the simple languages as it does not have complex features like pointers, operator overloading, multiple inheritances, and Explicit memory allocation.
4. Robust:
Java language is robust which means reliable. It is developed in such a
way that it puts a lot of effort into checking errors as early as possible, that is why
the java compiler is able to detect even those errors that are not easy to detect by
another programming language. The main features of java that make it robust are
garbage collection, Exception Handling, and memory allocation.
5. Secure: In java, we don’t have pointers, so we cannot access out-of-bound arrays i.e it shows ArrayIndexOutOfBound Exception if we try to do so. That’s why several security flaws like stack corruption or buffer overflow are impossible to exploit in Java. Also java programs run in an environment that is independent of the OS(operating system) environment which makes java programs more secure .
6. Distributed:
We can create distributed applications using the java programming language. Remote Method Invocation and Enterprise Java Beans are used for creating distributed applications in java. The java programs can be easily distributed on one or more systems that are connected to each other through an internet connection.
7. Multithreading: Java supports multithreading. It is a Java feature that allows concurrent execution of two or more parts of a program for maximum utilization of the CPU.
8. Portable:
As we know, java code written on one machine can be run on another machine. The platform-independent feature of java in which its platform-independent bytecode can be taken to any platform for execution makes java portable.
9. Dynamic flexibility:
Java being completely object-oriented gives us the flexibility to add classes, new methods to existing classes and even create new classes through sub-classes. Java even supports functions written in other languages such as C, C++ which are referred to as native methods.
10. Sandbox Execution:
Java programs run in a separate space that allows user to execute their applications without affecting the underlying system with help of a bytecode verifier. Bytecode verifier also provides additional security as its role is to check the code for any violation of access.