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