21-04-2012, 11:13 AM
OBJECT ORIENTED PROGRAMMING
OBJECT ORIENTED PROGRAMMING.ppt (Size: 213.5 KB / Downloads: 57)
Java History
Computer language innovation and development occurs for two fundamental reasons:
1) to adapt to changing environments and uses
2) to implement improvements in the art of programming
The development of Java was driven by both in equal measures.
Many Java features are inherited from the earlier languages:
B C C++ Java
Before Java: C
Designed by Dennis Ritchie in 1970s.
Before C: BASIC, COBOL, FORTRAN, PASCAL
C- structured, efficient, high-level language that could replace assembly code when creating systems programs.
Designed, implemented and tested by programmers.
Before Java: C++
Designed by Bjarne Stroustrup in 1979.
Response to the increased complexity of programs and respective improvements in the programming paradigms and methods:
1) assembler languages
2) high-level languages
3) structured programming
4) object-oriented programming (OOP)
OOP – methodology that helps organize complex programs through the use of inheritance, encapsulation and polymorphism.
C++ extends C by adding object-oriented features.
Java: History
In 1990, Sun Microsystems started a project called Green.
Objective: to develop software for consumer electronics.
Project was assigned to James Gosling, a veteran of classic network software design. Others included Patrick Naughton, ChrisWarth, Ed Frank, and Mike Sheridan.
The team started writing programs in C++ for embedding into
– toasters
– washing machines
– VCR’s
Aim was to make these appliances more “intelligent”.
Java: History (contd.)
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.
Java: History (contd.)
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.
Java: History (contd)
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, Jonathan Payne, 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.
Java History
Designed by James Gosling, Patrick Naughton, Chris Warth, Ed Frank and Mike Sheridan at Sun Microsystems in 1991.
The original motivation is not Internet: platform-independent software embedded in consumer electronics devices.
With Internet, the urgent need appeared to break the fortified positions of Intel, Macintosh and Unix programmer communities.
Java as an “Internet version of C++”? No.
Java was not designed to replace C++, but to solve a different set of problems.
The Java Buzzwords
The key considerations were summed up by the Java team in the following list of buzzwords:
Simple
Secure
Portable
Object-oriented
Robust
Multithreaded
Architecture-neutral
Interpreted
High performance
Distributed
Dynamic
simple – Java is designed to be easy for the professional programmer to learn and use.
object-oriented: a clean, usable, pragmatic approach to objects, not restricted by the need for compatibility with other languages.
Robust: restricts the programmer to find the mistakes early, performs compile-time (strong typing) and run-time (exception-handling) checks, manages memory automatically.
Multithreaded: supports multi-threaded programming for writing program that perform concurrent computations
Architecture-neutral: Java Virtual Machine provides a platform independent environment for the execution of Java byte code
Interpreted and high-performance: Java programs are compiled into an intermediate representation – byte code:
a) can be later interpreted by any JVM
b) can be also translated into the native machine code for efficiency.
Distributed: Java handles TCP/IP protocols, accessing a resource through its URL much like accessing a local file.
Dynamic: substantial amounts of run-time type information to verify and resolve access to objects at run-time.
Secure: programs are confined to the Java execution environment and cannot access other parts of the computer.
Portability: Many types of computers and operating systems are in use throughout the world—and many are connected to the Internet.
For programs to be dynamically downloaded to all the various types of platforms connected to the Internet, some means of generating portable executable code is needed. The same mechanism that helps ensure security also helps create portability.
Indeed, Java's solution to these two problems is both elegant and efficient.