Download Java - IT Knowledge Base

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Java
By Ajay Tripathi
Pre requisites…..
 C and C++
 OOP
 Internet and WWW
History
 Phase I





Introduction of C++ in 1979
And became the stock programming
language in the 90’s.
Standardized in Nov. 1997.
Success Reasons?
It enhanced an existing successful
language like C instead of building an
entirely a new language.
PHASE 2 (GUI)
 Object orientation permits reusable
code, hence a Graphical User interface GUI
(E.g. MS-Windows).
 GUI has enormously expanded the
number of computer-users.
 Object oriented programming
(OOP) with GUI is the “grand consensus
of the computer industry”.
PHASE III (Internet)

Internet stared in the 1960’s as a way to maintain communications
in the event of a nuclear attack.

Success of ARPANET inspired NSFNET.

In 1983, TCP/IP became the official protocol which connected
ARPANET and NSFNET.

This collection of connected networks came to be called the
Internet.

By 1990, 3000 networks and 200,000 computers were connected to
the Internet. By 1992, there were 1 million hosts.

The hosts had diverse hardware and operating systems like
DOS/Windows, UNIX, and MacOS.

How to share information easily across different computer
platforms?
PHASE IV (WWW)
 To simplify sharing of documents and data across the
Internet, WWW invented in 1989 at CERN, Geneva.
 WWW is an architectural framework for viewing documents
stored across thousands of machines connected to the
Internet.
 The scattered document seems like a single document
using a browser to view hypertext, which contains
hyperlinks.
 However, this concerned passive text or document files,
and users on the www could not share executable
programs.
 How to incorporate interactive programs on the Web?
 How to share executable programs across platforms?
Java
Evolution
In 1990, Sun Microsystems started a project called Green.


Objective: to develop software for consumer electronics.

Sun best known for its popular Unix workstation, Solaris OS, and
NetworkFile System (NFS).

Project was assigned to James Gosling, a veteran of classic
network software design. Others included Patrick Naughton, Chris
Warth, Ed Frank, and Mike Sheridan.

The team started writing programs in C++ for embedding into
toasters, washing machines, VCR’s, PDA’s (Personal Digital
Assistants).

Aim was to make these appliances more “intelligent”. But they
soon realized...
 C++ is powerful, but also dangerous.
– The power and popularity of C derived from the extensive
use of pointers.
– However, any incorrect use of pointers can cause
memory leaks, leading the program to crash.
– In a complex program, such memory leaks are often hard
to detect.
 Robustness is essential
– Users have come to expect that Windows may crash or
that a program running under Windows may crash.(“This
program has performed an illegal operation and will be
shut down”)
– However, users do not expect toasters to crash, or
washing machines to crash.
– A design for consumer electronics has to be robust.
 Replacing pointers by references, and automating memory
management was the proposed solution.
 Oak: Hence, the team built a new programming
language called Oak, which
– avoided potentially dangerous constructs in C++,
such as pointers, pointer arithmetic, operator
overloading, etc.
– introduced automatic memory management, freeing
the programmer to concentrate on other things.
 Architecture neutrality (Platform independence)
– Many different CPU’s are used as controllers.
Hardware chips are evolving rapidly. As better chips
become available, older chips become obsolete and
their production is stopped.
– Manufacturers of toasters and washing machines
would like to use the chips available off the shelf, and
would not like to reinvest in compiler development
every two-three years.
– So, the software and programming language had to
be architecture neutral.
 It was soon realized that these design goals of consumer
electronics perfectly suited an ideal programming
language for the Internet and WWW, which should be:
– object-oriented (& support GUI)– robust– architecture
neutral
 Internet programming presented a BIG business
opportunity much bigger than programming for consumer
electronics.
– Java was “re-targeted” for the Internet.
 The team was expanded to include Bill Joy (developer of
Unix), Arthur van Hoff, JonathanPayne, Frank Yellin, Tim
Lindholm etc.
 In 1994, an early web browser called WebRunner was
written in Oak. WebRunner was later renamed HotJava.
 In 1995, Oak was renamed Java.
– A common story is that the name Java relates to the
place from where the development team got its coffee.
– The name Java survived the trade mark search.

Additional features were added to make Java
– secure
– multithreaded (concurrent)
– distributed and dynamic
– high performance
Security:
- Is a key feature on the Internet. It should be possible to specify
what system resources the program can access.
– In the sandbox policy remote applets are not trusted to access
any local resources,
– while local applications are trusted to access all resources.
– This can be modified, by allowing digitally signed applets
selective access.
Multiple threads:
- C and C++ support multiple threads, using fork(),
– this feature is NOT a part of the ANSI/ISO standard, and is
available only on UNIX.
– DOS support is available for the spawn...and exec... family of
functions. These features are not much used.
- But concurrency is essential on the internet, since download
times are uncertain, so one process should not block all others.
– Threads also needed for e.g. animation.
Distributed:
– The ultimate vision of OOP is to have
objects stored on different computers to
interact with each other. That is, a user can
assemble a program different parts of which
are stored on different computers.
Dynamic:
– Java is both compiled and interpreted.
– Thus, source code is compiled to
bytecode.
– The Java Virtual Machine loads and links
parts of the code dynamically at runtime.
– Hence it carries substantial run time type
information on objects.
– Hence, It supports late binding.
 High performance
– Though Java uses an interpreter, it also
has a compiler, which generates machineindependent bytecodes.
– Optimization can take place at this stage
to ensure that Java programs can match the
speed of programs in compiled languages
like C++.
– Where speed cannot be traded off for
platform independence, Java provides
“native method support”, for code written in
languages like C/C++, and compiled for
specific platforms.
SUN MICROSYSTEM OFFICIAL
DEFINITION OF JAVA
 Java is a simple, small, object oriented,
distributed, interpreted, robust, secure,
architecture neutral, portable, high
performance, multithreaded and dynamic
language.
Simple
 Java is close to C/C++
 Eliminate several poorly understood, confusing
and rarely used features of C++ like multiple
inheritance, operator overloading, header files,
pointer arithmetic, structures, unions, multi
dimensional arrays, etc.
 Java programmers need not to worry about
memory mgt, it has its own memory mgt.
 It has embedded auto garbage collection for
memory mgt.
Small
 Goal of Java was to produce programs
that run on small machines.
 Most of Java programs can run on
machine that has 4MB of RAM.
Object Oriented
 Focuses on defining data as objects and
the methods that may be applied to
those objects.
Distributed
 Support client server applications.
 Share both information and data processing
workload either on server or on client.
 Objects in Java can be loaded from local
machine or remote machine.
 Java applications easily communicate with
TCP/IP protocols like HTTP and FTP.
 Multiple designers at multiple locations can
collaborate on a single project.
Interpreted and Compiled
 JVM interprets 20% of Java code.
 A programmer first compiles Java source code
into byte code using Java compiler. This byte
code is binary and architecture neutral.
 This byte code is not complete until interpreted
by a Java run time environment usually Java
enabled browser.
 Since each Java run time environment is for a
specific platform the byte code is going to work
on that specific platform.
 The downside of this is that it takes longer time
to load.
Robust
 The more robust a programming environment
is, the less likely it is to cause the computer to
‘crash’ and the more likely it is to be bug free.
 Strongly typed language i.e. extensive data
type checking is done at compile time.
 Java programs cant cause crash because it
does not have permission to access all of the
computers memory.
 Java programs can access only restricted area
of memory.
Secure
 Java programs are always contained under the
complete control of the operating system and its
run time environment (JVM).
 Java byte codes are verified by the Java
compiler.
 These byte codes are not platform specific and
contain extra information. This information can
be used to verify the programs legality and
security violations.
Architecture Neutral
 It can work on multiple networks, variety
of CPUs and various O/S.
 Java compiler generates an architecture
neutral codes. That can be run on a
number of O/S and H/W platforms
provided that system is running a JVM.
Portable
 Java compiler is written in Java and run
time environment is written in ANSI C.
 The Java interpreter can execute Java
byte code on any machine to which the
interpreter has been ported.
 Developers are need not to worry about
Java for Unix, Java for Windows, Java
for Novell Netware, Java for Sun Solaris.
Multi-Threaded
 Java users don’t have to wait for the
application to finish one task before
beginning another.
Dynamic
 Run time linking with objects.
Java Features: Summary
• Simple
• Secure
• Portable
• Object-oriented
• Robust
• Multithreaded
• Architecture-neutral
• Interpreted
• High-performance
• Distributed
• Dynamic