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