A Brief History of Object-Oriented
Programming
Object-Oriented Programming
Outline
 A Brief History Object-Oriented Programming
 The History of Java
 Client-Side Computing
• Bytecode Interpreters and Just-In-Time Compilers
• Security Issues
• Specialization of Interfaces
 The White Paper Description
• Java Is Simple
• Java Is Object-Oriented
• Java Is Network Savvy
• Java Is Interpreted
• Java Is Robust
Outline
• Java Is Secure
• Java Is Architecture Neutral
• Java Is Portable
• Java Is High-Performance
• Java Is Multithreaded
• Java Is Dynamic
A Brief History Object-Oriented
Programming
 All the major concepts were developed in the 1960s as part
of a language called Simula
 Alan Kay and his group developed a programming
language named Smalltalk in the 1970s
 Bjarne Stroustrup developed an extension to the C
language that eventually evolved to the language C++
 Explosion of the research in object-oriented programming
techniques began
 In the first major conference on object-oriented
programming, in 1986, there were dozens of languages
 These included Eiffel, Objective-C, Actor, Object Pascal,
and various Lisp dialects
 Object-oriented programming became mainstream
The History of Java
 Originally names as Oak and was developed in 1991 by
James Gosling.
 Intended as a language for use in embedded customer
electronic applications
 This determined the characteristics of the language
 Two of the most important features size and reliability
 Processors in embedded systems are very small, possessing
small memory, thus the language must be able to translate
into very concise encoding
 Embedded systems should almost never fail and should
respond to exceptional and erroneous conditions
Client-Side Computing
 Internet a classic example of a client/server system
 A person working at own computer is a client
 The client application communicates over the Internet with
another computer, server
 Dynamic behavior by executing programs
 In the past programs executed on the server
 The key idea in client-side is that the server transmits the
program to the client to execute locally
Bytecode Interpreters and Just-In-Time
Compilers
 Client computer must be able to execute the program
 Java translates program into bytecode, a machine code for
a virtual machine
 Bytecode is transmitted to clients
 Client computer must use either interpreter or JIT
compiler
 Interpreter reads and executes bytecode one by one as
needed
 Just-In-Time compiler translates bytecode to machine code
of the client computer
Security Issues
 Java has a security manager that limits the actions
performed by the programs from a server
 No file system access
 No transmission of information across internet to machines
other than client or server
Specialization of Interfaces
 Programs at the server is structured in terms of generic
classes, such as window and button
 These classes are the same regardless of the system used
 At run-time these components create peer components for
the client system and is used
Java Is Simple
 Simpler than C++
 Many keywords have been eliminated
 No preprocessor
 Much larger library of high-level development tools
 No operator overloading
 No independent functions
 No global variables
 No goto statement
 No structures
 No pointers
Java Is Object-Oriented
 The only unit of programming is the class description
 No functions or variables exist outside of class boundaries
 Other languages have object-oriented features on top of the
non-object-oriented language
 Forces all programs into object-oriented structure
 Many benefits of object-oriented design is realized
Java Is Network Savvy
 Designed with Internet in mind
 It is possible to construct programs that do not deal with
Internet
 Provides a rich set of tools for programming across a
network
 Classes for describing URLs
 Classes for making connections between client and server
computers
 Classes for execution in controlled environments such as
web browsers
Java Is Interpreted
 Java programs are compiled into byte-code that can be
stored on any type machine
 Interpreter is used to read byte-code and execute it
 Generally slower in execution
 A JIT compiler is used to translate byte-code into actual
machine code instructions
 This way makes them run as fast as compiled programs in
the traditional languages
Java Is Robust
 Extensive use of exception-handling
 Statements generate exceptions not erroneous operations
 The semantics insist that you must deal with this possibility
 Programmers are forced into thinking about potential
sources of error
 Automatic memory management, or garbage collection
 If programmers forget to release memory resources once
finished with them, applications will eventually fail
 Java run-time system automatically detects and recovers
memory that is no longer being used by the program
 Simplifies the programmer’s task and is more reliable
Java Is Secure
 Eliminating pointers removed the most common source of
programming errors
 Array index values are checked for validity
 Java is the first layer in a multilevel security system
 Byte-codes are examined before executed for errors
 Programs are severely restricted in the type operations they
can perform
 Computers are safe when running java programs brought
over the network
Java Is Architecture Neutral
 Java byte-code does not correspond to an machine
 A java program is the same on all machines
 Although C++ is a standard language, the libraries needed
to perform activities differ considerably from platform to
another
 Java hides application-specific details under a layer of
abstraction in the standard java library
Java Is Portable
 Because the library hides architecture-specific concepts
 Because byte-codes are the same regardless of the machine
 Java programs possess unparalleled degree of portability
 The exact program can be compiled on one system, then
executed on many different types of systems
Java Is High-Performance
 Initially heavy performance penalty
 The technology of java execution has rapidly evolved
 JIT compilers allow platform-independent java programs
to be executed with the nearly same run-time performance
as conventional compiled languages
Java Is Multithreaded
 One of the first languages designed for the possibility of
multiple threads of execution running in one program
 It is easy to set up multitasking
 The coordination of these parallel processes is relatively
easy
Java Is Dynamic
 Moving java programs across the Internet and executing
them on local computers, permits dynamic behavior

2-Lec - History of OOP and Java (1) .ppt

  • 1.
    A Brief Historyof Object-Oriented Programming Object-Oriented Programming
  • 2.
    Outline  A BriefHistory Object-Oriented Programming  The History of Java  Client-Side Computing • Bytecode Interpreters and Just-In-Time Compilers • Security Issues • Specialization of Interfaces  The White Paper Description • Java Is Simple • Java Is Object-Oriented • Java Is Network Savvy • Java Is Interpreted • Java Is Robust
  • 3.
    Outline • Java IsSecure • Java Is Architecture Neutral • Java Is Portable • Java Is High-Performance • Java Is Multithreaded • Java Is Dynamic
  • 4.
    A Brief HistoryObject-Oriented Programming  All the major concepts were developed in the 1960s as part of a language called Simula  Alan Kay and his group developed a programming language named Smalltalk in the 1970s  Bjarne Stroustrup developed an extension to the C language that eventually evolved to the language C++  Explosion of the research in object-oriented programming techniques began  In the first major conference on object-oriented programming, in 1986, there were dozens of languages  These included Eiffel, Objective-C, Actor, Object Pascal, and various Lisp dialects  Object-oriented programming became mainstream
  • 5.
    The History ofJava  Originally names as Oak and was developed in 1991 by James Gosling.  Intended as a language for use in embedded customer electronic applications  This determined the characteristics of the language  Two of the most important features size and reliability  Processors in embedded systems are very small, possessing small memory, thus the language must be able to translate into very concise encoding  Embedded systems should almost never fail and should respond to exceptional and erroneous conditions
  • 6.
    Client-Side Computing  Interneta classic example of a client/server system  A person working at own computer is a client  The client application communicates over the Internet with another computer, server  Dynamic behavior by executing programs  In the past programs executed on the server  The key idea in client-side is that the server transmits the program to the client to execute locally
  • 7.
    Bytecode Interpreters andJust-In-Time Compilers  Client computer must be able to execute the program  Java translates program into bytecode, a machine code for a virtual machine  Bytecode is transmitted to clients  Client computer must use either interpreter or JIT compiler  Interpreter reads and executes bytecode one by one as needed  Just-In-Time compiler translates bytecode to machine code of the client computer
  • 8.
    Security Issues  Javahas a security manager that limits the actions performed by the programs from a server  No file system access  No transmission of information across internet to machines other than client or server
  • 9.
    Specialization of Interfaces Programs at the server is structured in terms of generic classes, such as window and button  These classes are the same regardless of the system used  At run-time these components create peer components for the client system and is used
  • 10.
    Java Is Simple Simpler than C++  Many keywords have been eliminated  No preprocessor  Much larger library of high-level development tools  No operator overloading  No independent functions  No global variables  No goto statement  No structures  No pointers
  • 11.
    Java Is Object-Oriented The only unit of programming is the class description  No functions or variables exist outside of class boundaries  Other languages have object-oriented features on top of the non-object-oriented language  Forces all programs into object-oriented structure  Many benefits of object-oriented design is realized
  • 12.
    Java Is NetworkSavvy  Designed with Internet in mind  It is possible to construct programs that do not deal with Internet  Provides a rich set of tools for programming across a network  Classes for describing URLs  Classes for making connections between client and server computers  Classes for execution in controlled environments such as web browsers
  • 13.
    Java Is Interpreted Java programs are compiled into byte-code that can be stored on any type machine  Interpreter is used to read byte-code and execute it  Generally slower in execution  A JIT compiler is used to translate byte-code into actual machine code instructions  This way makes them run as fast as compiled programs in the traditional languages
  • 14.
    Java Is Robust Extensive use of exception-handling  Statements generate exceptions not erroneous operations  The semantics insist that you must deal with this possibility  Programmers are forced into thinking about potential sources of error  Automatic memory management, or garbage collection  If programmers forget to release memory resources once finished with them, applications will eventually fail  Java run-time system automatically detects and recovers memory that is no longer being used by the program  Simplifies the programmer’s task and is more reliable
  • 15.
    Java Is Secure Eliminating pointers removed the most common source of programming errors  Array index values are checked for validity  Java is the first layer in a multilevel security system  Byte-codes are examined before executed for errors  Programs are severely restricted in the type operations they can perform  Computers are safe when running java programs brought over the network
  • 16.
    Java Is ArchitectureNeutral  Java byte-code does not correspond to an machine  A java program is the same on all machines  Although C++ is a standard language, the libraries needed to perform activities differ considerably from platform to another  Java hides application-specific details under a layer of abstraction in the standard java library
  • 17.
    Java Is Portable Because the library hides architecture-specific concepts  Because byte-codes are the same regardless of the machine  Java programs possess unparalleled degree of portability  The exact program can be compiled on one system, then executed on many different types of systems
  • 18.
    Java Is High-Performance Initially heavy performance penalty  The technology of java execution has rapidly evolved  JIT compilers allow platform-independent java programs to be executed with the nearly same run-time performance as conventional compiled languages
  • 19.
    Java Is Multithreaded One of the first languages designed for the possibility of multiple threads of execution running in one program  It is easy to set up multitasking  The coordination of these parallel processes is relatively easy
  • 20.
    Java Is Dynamic Moving java programs across the Internet and executing them on local computers, permits dynamic behavior