Java Notes
Java Notes
What is Java?
Java is an object-oriented, class-based, concurrent, secured and general-purpose computer-
programming language. It is a widely used robust technology.
Java was developed by Sun Microsystems (which is now the subsidiary of Oracle) in the year
1995. James Gosling is known as the father of Java. Before Java, its name was Oak. Since
Oak was already a registered company, so James Gosling and his team changed the name
from Oak to Java.
As Java is close to C++ and C#, it makes it easy for programmers to switch to Java or vice versa
History of Java
The history of Java is very interesting. Java was originally designed for interactive television,
but it was too advanced technology for the digital cable television industry at the time. The
history of Java starts with the Green Team. Java team members (also known as Green
Team), initiated this project to develop a language for digital devices such as set-top boxes,
televisions, etc. However, it was best suited for internet programming. Later, Java
technology was incorporated by Netscape.
The principles for creating Java programming were "Simple, Robust, Portable, Platform-
independent, Secured, High Performance, Multithreaded, Architecture Neutral, Object-
Oriented, Interpreted, and Dynamic". Java was developed by James Gosling, who is known
as the father of Java, in 1995. James Gosling and his team members started the project in
the early '90s.
Currently, Java is used in internet programming, mobile devices, games, e-business
solutions, etc. Following are given significant points that describe the history of Java.
1) James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project
in June 1991. The small team of sun engineers called Green Team.
2) Initially it was designed for small, embedded systems in electronic appliances like set-top
boxes.
3) Firstly, it was called "Greentalk" by James Gosling, and the file extension was .gt.
4) After that, it was called Oak and was developed as a part of the Green project.
5) Why Oak? Oak is a symbol of strength and chosen as a national tree of many countries
like the U.S.A., France, Germany, Romania, etc.
According to James Gosling, "Java was one of the top choices along with Silk". Since Java
was so unique, most of the team members preferred Java than other names.
8) Java is an island in Indonesia where the first coffee was produced (called Java coffee). It is
a kind of espresso bean. Java name was chosen by James Gosling while having a cup of
coffee nearby his office.
11) In 1995, Time magazine called Java one of the Ten Best Products of 1995.
12) JDK 1.0 was released on January 23, 1996. After the first release of Java, there have
been many additional features added to the language. Now Java is being used in Windows
applications, Web applications, enterprise applications, mobile applications, cards, etc. Each
new version adds new features in Java.
Features of Java
Simple
Java is very easy to learn, and its syntax is simple, clean and easy to understand.
According to Sun Microsystem, Java language is a simple programming language
because:
o Java syntax is based on C++ (so easier for programmers to learn it after C++).
o Java has removed many complicated and rarely-used features, for example, explicit
pointers, operator overloading, etc.
o There is no need to remove unreferenced objects because there is an Automatic
Garbage Collection in Java.
PREPINSTA :
1. Object
2. Class
3. Inheritance
4. Polymorphism
5. Abstraction
6. Encapsulation
PREPINSTA :
There are two types of platforms software-based and hardware-based. Java provides
a software-based platform.
The Java platform differs from most other platforms in the sense that it is a software-
based platform that runs on top of other hardware-based platforms. It has two
components:
1. Runtime Environment
2. API(Application Programming Interface)
Java code can be executed on multiple platforms, for example, Windows, Linux, Sun
Solaris, Mac/OS, etc. Java code is compiled by the compiler and converted into
bytecode. This bytecode is a platform-independent code because it can be run on
multiple platforms, i.e., Write Once and Run Anywhere (WORA).
PREPINSTA :
Secured
Java is best known for its security. With Java, we can develop virus-free systems. Java
is secured because:
o No explicit pointer
o Java Programs run inside a virtual machine sandbox
AD
Java language provides these securities by default. Some security can also be
provided by an application developer explicitly through SSL, JAAS, Cryptography, etc.
PREPINSTA :
Java codes are converted into byte codes which are implemented on JVM.
It also performs the tasks of a security manager which kept updated via
internet. It is responsible to throw exceptions.
For example it raises an OutofBoundary exception in the case of arrays when
the user tries to access the index higher than allocated memory.
It is also strongly typed language.
Robust
The English mining of Robust is strong. Java is robust because:
PREPINSTA :
Early identification and checking for errors can be achieved by the help of
garbage collector and exception handler.
Also a variable cannot be declared without having a data type. All the data
types are pre defined as a part of programming language.
The advantage of being a strongly typed language is that it imposes a set of
stringent set of rules on the user which guarantees consistency of the output
Architecture-neutral
Java is architecture neutral because there are no implementation dependent features,
for example, the size of primitive types is fixed.
In C programming, int data type occupies 2 bytes of memory for 32-bit architecture
and 4 bytes of memory for 64-bit architecture. However, it occupies 4 bytes of
memory for both 32 and 64-bit architectures in Java.
Portable
Java is portable because it facilitates you to carry the Java bytecode to any platform.
It doesn't require any implementation.
PREPINSTA:
High-performance
Java is faster than other traditional interpreted programming languages because Java
bytecode is "close" to native code. It is still a little bit slower than a compiled
language (e.g., C++). Java is an interpreted language that is why it is slower than
compiled languages, e.g., C, C++, etc.
AD
Distributed
Java is distributed because it facilitates users to create distributed applications in
Java. RMI and EJB are used for creating distributed applications. This feature of Java
makes us able to access files by calling the methods from any machine on the
internet.
Multi-threaded
A thread is like a separate program, executing concurrently. 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 a common memory area. Threads are important for multi-media, Web
applications, etc.
PREPINSTA:
Dynamic
Java is a dynamic language. It supports the dynamic loading of classes. It means
classes are loaded on demand. It also supports functions from its native languages,
i.e., C and C++.
Memory allocation
Management of allocation and de allocation of the objects in java is done by
either assigning them to heap or stack for easy access and easily restoring
the data.
Disadvantages of Java
1. Slow and Inferior Performance
It is memory consuming and of significantly low performance.
Slow performance due to extra level of compilation and abstraction of JVM and more
memory consuming due to the functioning of garbage collector.
No backup facility. It is much focused on storing the data than backing up the
data.
2. Complex Codes
In java the codes are generally complex in comparison to other languages.
Java has succeeded to become a manageable language but compromised the ease
of understanding for the user.
Application
According to Sun, 3 billion devices run Java. There are many devices where Java is
currently used. Some of them are as follows:
1) Standalone Application
2) Web Application
An application that runs on the server side and creates a dynamic page is called a
web application. Currently, Servlet, JSP, Struts, Spring, Hibernate, JSF, etc.
technologies are used for creating web applications in Java.
3) Enterprise Application
In Java, the main point here is that the JVM depends on the operating system – so if
you are running Mac OS X you will have a different JVM than if you are running
Windows or some other operating system. This fact can be verified by trying to
download the JVM for your particular machine – when trying to download it, you will
be given a list of JVMs corresponding to different operating systems, and you will
obviously pick whichever JVM is targeted for the operating system that you are
running. So we can conclude that JVM is platform-dependent and it is the reason
why Java is able to become “Platform Independent”.
2. Run Time
The bytecode generated by the compiler will be executed by Java Virtual Machine
(JVM).
To run, the main class file (the class that contains the method main) is passed to the
JVM, and then goes through three main stages before the final machine code is
executed.
2.1 Classloader
Java class loader is an abstract class which loads classes from various sources.
It is a part of the Java Runtime Environment that dynamically loads Java classes into
the Java Virtual Machine. The Java run time system does not need to know about
files and file systems because of class loaders.
Java classes aren’t loaded into memory all at once, but when required by an
application. At this point, the Java ClassLoader is called by the JRE and these
ClassLoaders load classes into memory dynamically.
A JVM Bytecode Verifier acts a gatekeeper of sorts whose main task is to check if
the loaded bytecode are valid and do not violate any rules of security.
it ensures that code passed to the Java interpreter is in a fit state to be executed and
can run without fear of breaking the Java interpreter.
The following are some of the checks carried out:
o Variables are initialized before they are used.
o Method calls match the types of object references.
o Rules for accessing private data and methods are not violated.
o The run time stack does not overflow.
o It doesn’t forge pointers.
o It doesn’t violate access restrictions.
o It accesses objects as what they are.
If any of the above checks fails, the verifier doesn’t allow the class to be
loaded.
This step involves reading the bytecode stream and carrying out the execution of the
program which is done by the conversion of byte code into machine code.
A JVM is, in effect, a bytecode interpreting machine running on a hardware machine.
This interpreting stage has an overhead and slows the program execution
performance of Java applications. Java bytecode is extremely compact, allowing it to
be easily delivered over a network.