SlideShare a Scribd company logo
The History and Evolution of Java
Lecture-1
Tamjid Rahman
Faculty
Stamford University
Java
• Java is first and foremost a programming language.
• Computer language innovation and development
occurs for two fundamental reasons:
– To adapt to changing environments and uses
– To implement refinements and improvements in the art
of programming
• The development of Java was driven by both
elements in nearly equal measure.
Java’s Lineage
• Java is related to C++, which is a direct descendant
of C.
• Much of the character of Java is inherited from
these two languages.
• From C, Java derives its syntax. Many of Java’s
object oriented features were influenced by C++.
In fact, several of Java’s defining characteristics
come from—or are responses to—its predecessors.
• Each innovation in language design was driven by
the need to solve a fundamental problem that the
preceding languages could not solve.
• Java is no exception.
The Creation of Java
• Java was conceived by James Gosling, Patrick
Naughton, Chris Warth, Ed Frank, and Mike Sheridan
at Sun Microsystems, Inc. in 1991.
• It took 18 months to develop the first working
version.
• This language was initially called “Oak,” but was
renamed “Java” in 1995.
• The original impetus for Java was not the Internet!
• Instead, the primary motivation was the need for a
platform-independent (that is, architecture-neutral)
language that could be used to create software to be
embedded in various consumer electronic devices,
such as microwave ovens and remote controls.
The Creation of Java (cont…)
• Many different types of CPUs are used as controllers. The
trouble with C and C++ (and most other languages) is that they
are designed to be compiled for a specific target.
• Although it is possible to compile a C++ program for just about
any type of CPU, to do so requires a full C++ compiler targeted
for that CPU.
• The problem is that compilers are expensive and time-
consuming to create.
• An easier—and more cost-efficient—solution was needed.
• In an attempt to find such a solution, Gosling and others began
work on a portable, platform-independent language that could
be used to produce code that would run on a variety of CPUs
under differing environments.
• This effort ultimately led to the creation of Java.
How Java Changed the Internet
• Java had a profound effect on the Internet.
• Besides applet, Java also addressed some of the
thorniest issues associated with the Internet:
portability and security.
• Let’s look more closely at each of these-
How Java Changed the Internet-Applets (cont…)
• An applet is a special kind of Java program that is designed
to be transmitted over the Internet and automatically executed
by a Java-compatible web browser.
• Furthermore, an applet is downloaded on demand, without
further interaction with the user.
• If the user clicks a link that contains an applet, the applet will
be automatically downloaded and run in the browser.
• Applets are intended to be small programs.
• They are typically used to display data provided by the
server, handle user input, or provide simple functions, such as
a loan calculator, that execute locally, rather than on the
server.
• In essence, the applet allows some functionality to be moved
from the server to the client.
How Java Changed the Internet-Applets (cont…)
• The creation of the applet changed Internet programming
because it expanded the universe of objects that can move
about freely in cyberspace.
• The applet is a dynamic, self-executing program. Such a
program is an active agent on the client computer, yet it is
initiated by the server.
• As desirable as dynamic, networked programs are, they also
present serious problems in the areas of security and
portability.
• Obviously, a program that downloads and executes
automatically on the client computer must be prevented from
doing harm.
• It must also be able to run in a variety of different
environments and under different operating systems.
• As you will see, Java solved these problems in an effective
and elegant way. Let’s look a bit more closely at each.
How Java Changed the Internet-Security
• Every time we download a “normal” program, we are taking
a risk, because the code we are downloading might contain a
virus, Trojan horse, or other harmful code.
• At the core of the problem is the fact that malicious code can
cause its damage because it has gained unauthorized access
to system resources.
• In order for Java to enable applets to be downloaded and
executed on the client computer safely, it was necessary to
prevent an applet from launching such an attack.
• Java achieved this protection by confining an applet to the
Java execution environment and not allowing it access to
other parts of the computer.
• The ability to download applets with confidence that no harm
will be done and that no security will be breached may have
been the single most innovative aspect of Java.
How Java Changed the Internet-Portability
• Portability is a major aspect of the Internet because
there are many different types of computers and
operating systems connected to it.
• If a Java program were to be run on virtually any
computer connected to the Internet, there needed to be
some way to enable that program to execute on
different systems.
• It is not practical to have different versions of the
applet for different computers.
• The same code must work on all computers.
• Therefore, some means of generating portable
executable code was needed.
• Java has the same mechanism that helps ensure
security also helps create portability.
Java’s Magic: The Bytecode
• The key that allows Java to solve both the security and the
portability problems is that the output of a Java compiler is
not executable code. Rather, it is bytecode.
• Bytecode is a highly optimized set of instructions designed
to be executed by the Java run-time system, which is called
the Java Virtual Machine (JVM).
• In essence, the original JVM was designed as an interpreter
for bytecode.
• Many modern languages are designed to be compiled into
executable code because of performance concerns.
• However, the fact that a Java program is executed by the
JVM helps solve the major problems associated with web-
based programs.
Java’s Magic: The Bytecode (cont…)
• Translating a Java program into bytecode makes it much
easier to run a program in a wide variety of environments
because only the JVM needs to be implemented for each
platform.
• The fact that a Java program is executed by the JVM also
helps to make it secure.
• Because the JVM is in control, it can contain the program
and prevent it from generating.
• Because bytecode has been highly optimized, the use of
bytecode enables the JVM to execute programs much faster
than you might expect.
• HotSpot technology provides a Just-In-Time (JIT) compiler
for bytecode.
Java’s Magic: The Bytecode (cont…)
• A JIT compiler compiles code as it is needed,
during execution.
• Furthermore, not all sequences of bytecode are
compiled—only those that will benefit from
compilation.
• The remaining code is simply interpreted.
• However, the just-in-time approach still yields a
significant performance boost.
• Even when dynamic compilation is applied to
bytecode, the portability and safety features still
apply, because the JVM is still in charge of the
execution environment.
The Java Buzzwords
• The key considerations were summed up by the
Java team in the following list of buzzwords:
– Simple. Java was designed to be easy for the
professional programmer to learn and use effectively.
Assuming that anyone has some programming
experience, (s)he will not find Java hard to master.
– Object-Oriented. Although influenced by its
predecessors, Java was not designed to be source-code
compatible with any other language. This allowed the
Java team the freedom to design with a blank slate. One
outcome of this was a clean, usable, pragmatic
approach to objects. The object model in Java is simple
and easy to extend.
The Java Buzzwords (cont…)
–Robust. The ability to create robust programs was given a
high priority in the design of Java. To gain reliability, Java
restricts us in a few key areas to force us to find our
mistakes early in program development. At the same time,
Java frees us from having to worry about many of the
most common causes of programming errors. Because
Java is a strictly typed language, it checks our code at
compile time. However, it also checks your code at run
time. To better understand how Java is robust, consider
two of the main reasons for program failure: memory
management mistakes and mishandled exceptional
conditions (that is, run-time errors). Memory management
can be a difficult, tedious task in traditional programming
environments.
The Java Buzzwords (cont…)
– For example, in C/C++, the programmer will often
manually allocate and free all dynamic memory. This
sometimes leads to problems, because programmers
will either forget to free memory that has been
previously allocated or, worse, try to free some memory
that another part of their code is still using. Java
virtually eliminates these problems by managing
memory allocation and deallocation for you. (In fact,
deallocation is completely automatic, because Java
provides garbage collection for unused objects.)
Exceptional conditions in traditional environments
often arise in situations such as division by zero or “file
not found,” and they must be managed with clumsy and
hard-to-read constructs. Java helps in this area by
providing object-oriented exception handling.
The Java Buzzwords (cont…)
– Multithreaded. Java was designed to meet the real-
world requirement of creating interactive, networked
programs. To accomplish this, Java supports
multithreaded programming, which allows you to write
programs that do many things simultaneously.
– Architecture-Neutral. A central issue for the Java
designers was that of code longevity and portability.
The Java designers made several hard decisions in the
Java language and the Java Virtual Machine in an
attempt to alter this situation. Their goal was “write
once; run anywhere, any time, forever.” To a great
extent, this goal was accomplished.
The Java Buzzwords (cont…)
– Interpreted and High Performance. Java enables the
creation of cross-platform programs by bytecode which
was carefully designed so that it would be easy to
translate directly into native machine code for very high
performance by using a just-in-time compiler. Java run-
time systems that provide this feature lose none of the
benefits of the platform-independent code.
– Distributed. Java is designed for the distributed
environment of the Internet because it handles TCP/IP
protocols.
– Dynamic. Java programs carry with them substantial
amounts of run-time type information that is used to
verify and resolve accesses to objects at run time. This
makes it possible to dynamically link code in a safe and
Lec 1-of-oop2

More Related Content

PPT
J2ee strutswithhibernate-140121221332-phpapp01
PPTX
1 java introduction
PPTX
Introduction to java
PPTX
Java vs .Net
PPTX
JAVA INTRODUCTION - 1
PPTX
Java Presentation
ODP
3978 Why is Java so different... A Session for Cobol/PLI/Assembler Developers
PPTX
Java (1)
J2ee strutswithhibernate-140121221332-phpapp01
1 java introduction
Introduction to java
Java vs .Net
JAVA INTRODUCTION - 1
Java Presentation
3978 Why is Java so different... A Session for Cobol/PLI/Assembler Developers
Java (1)

What's hot (19)

PDF
History of Java 1/2
PPTX
Java fundamentals
PPT
Java1 in mumbai
PDF
Lec 3 01_aug13
PDF
Java introduction
PPTX
Java ms harsha
PPTX
Features of java unit 1
PPTX
Java training in bangalore
PPT
Sadiq786
PPTX
HTML for beginners
PDF
What's Inside a JVM?
PDF
History of java
PPTX
Java introduction
PPTX
Java history 01
PPTX
Features of java 02
PPTX
Chapter 1 java
PDF
Top 10 Dying Programming Languages in 2020 | Edureka
PPTX
BP207 - Meet the Java Application Server You Already Own – IBM Domino
History of Java 1/2
Java fundamentals
Java1 in mumbai
Lec 3 01_aug13
Java introduction
Java ms harsha
Features of java unit 1
Java training in bangalore
Sadiq786
HTML for beginners
What's Inside a JVM?
History of java
Java introduction
Java history 01
Features of java 02
Chapter 1 java
Top 10 Dying Programming Languages in 2020 | Edureka
BP207 - Meet the Java Application Server You Already Own – IBM Domino
Ad

Viewers also liked (12)

DOCX
MGT 311 Final Exam 2015 version
PPTX
Presentation rp
PDF
humanistilehti7
PDF
Программа i-Camp. Языковой лагерь для молодежи
DOCX
Итоговое сочинение по литературе. Направление 3: Любовь.
PPTX
Nikola tesla
PDF
Airport_TraficMgmt_DBtier_RO
PPTX
Telelvision Menu 2016
PPTX
Tugas bahasa indonesia
PDF
Xu hướng thiết kế lịch năm 2016
DOC
Project Charter Template
PDF
Programa Joves Qualificats
MGT 311 Final Exam 2015 version
Presentation rp
humanistilehti7
Программа i-Camp. Языковой лагерь для молодежи
Итоговое сочинение по литературе. Направление 3: Любовь.
Nikola tesla
Airport_TraficMgmt_DBtier_RO
Telelvision Menu 2016
Tugas bahasa indonesia
Xu hướng thiết kế lịch năm 2016
Project Charter Template
Programa Joves Qualificats
Ad

Similar to Lec 1-of-oop2 (20)

PPTX
OOP-JAVA-UNIT-1-PPT updated.pptx object oriented programming language using java
PPTX
Object Oriented concept-JAVA-Module-1-PPT.pptx
PPTX
MODULE_1_The History and Evolution of Java.pptx
PPTX
PPT
Java ppt-class_Introduction_class_Objects.ppt
PPT
Java ppt-class_basic data types methods definitions
PPT
2-Lec - History of OOP and Java (1) .ppt
PPTX
Unit1- OOPJ Chapter-1 Object Oriented Programming JAVA.pptx
PPTX
java basics concepts and the keywords needed
PPTX
basic core java up to operator
PPTX
Java Introduction
PPTX
UNIT 1 Programming in java Bsc program.pptx
PPT
Introduction to Core Java feature and its characteristics
DOCX
java full 1.docx
DOCX
java full.docx
DOCX
java completed units.docx
PPTX
1.Intro--Why Java.pptx
PPTX
Introduction to Java Part-2
DOCX
java full 1 (Recovered).docx
PPTX
Object Oriented Programming Part 1 of Unit 1
OOP-JAVA-UNIT-1-PPT updated.pptx object oriented programming language using java
Object Oriented concept-JAVA-Module-1-PPT.pptx
MODULE_1_The History and Evolution of Java.pptx
Java ppt-class_Introduction_class_Objects.ppt
Java ppt-class_basic data types methods definitions
2-Lec - History of OOP and Java (1) .ppt
Unit1- OOPJ Chapter-1 Object Oriented Programming JAVA.pptx
java basics concepts and the keywords needed
basic core java up to operator
Java Introduction
UNIT 1 Programming in java Bsc program.pptx
Introduction to Core Java feature and its characteristics
java full 1.docx
java full.docx
java completed units.docx
1.Intro--Why Java.pptx
Introduction to Java Part-2
java full 1 (Recovered).docx
Object Oriented Programming Part 1 of Unit 1

Recently uploaded (20)

PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Transform Your Business with a Software ERP System
PPTX
history of c programming in notes for students .pptx
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
System and Network Administration Chapter 2
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
top salesforce developer skills in 2025.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Understanding Forklifts - TECH EHS Solution
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Transform Your Business with a Software ERP System
history of c programming in notes for students .pptx
wealthsignaloriginal-com-DS-text-... (1).pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
System and Network Administration Chapter 2
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
How to Choose the Right IT Partner for Your Business in Malaysia
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Which alternative to Crystal Reports is best for small or large businesses.pdf
PTS Company Brochure 2025 (1).pdf.......
top salesforce developer skills in 2025.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Operating system designcfffgfgggggggvggggggggg
Odoo POS Development Services by CandidRoot Solutions
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Understanding Forklifts - TECH EHS Solution

Lec 1-of-oop2

  • 1. The History and Evolution of Java Lecture-1 Tamjid Rahman Faculty Stamford University
  • 2. Java • Java is first and foremost a programming language. • Computer language innovation and development occurs for two fundamental reasons: – To adapt to changing environments and uses – To implement refinements and improvements in the art of programming • The development of Java was driven by both elements in nearly equal measure.
  • 3. Java’s Lineage • Java is related to C++, which is a direct descendant of C. • Much of the character of Java is inherited from these two languages. • From C, Java derives its syntax. Many of Java’s object oriented features were influenced by C++. In fact, several of Java’s defining characteristics come from—or are responses to—its predecessors. • Each innovation in language design was driven by the need to solve a fundamental problem that the preceding languages could not solve. • Java is no exception.
  • 4. The Creation of Java • Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. in 1991. • It took 18 months to develop the first working version. • This language was initially called “Oak,” but was renamed “Java” in 1995. • The original impetus for Java was not the Internet! • Instead, the primary motivation was the need for a platform-independent (that is, architecture-neutral) language that could be used to create software to be embedded in various consumer electronic devices, such as microwave ovens and remote controls.
  • 5. The Creation of Java (cont…) • Many different types of CPUs are used as controllers. The trouble with C and C++ (and most other languages) is that they are designed to be compiled for a specific target. • Although it is possible to compile a C++ program for just about any type of CPU, to do so requires a full C++ compiler targeted for that CPU. • The problem is that compilers are expensive and time- consuming to create. • An easier—and more cost-efficient—solution was needed. • In an attempt to find such a solution, Gosling and others began work on a portable, platform-independent language that could be used to produce code that would run on a variety of CPUs under differing environments. • This effort ultimately led to the creation of Java.
  • 6. How Java Changed the Internet • Java had a profound effect on the Internet. • Besides applet, Java also addressed some of the thorniest issues associated with the Internet: portability and security. • Let’s look more closely at each of these-
  • 7. How Java Changed the Internet-Applets (cont…) • An applet is a special kind of Java program that is designed to be transmitted over the Internet and automatically executed by a Java-compatible web browser. • Furthermore, an applet is downloaded on demand, without further interaction with the user. • If the user clicks a link that contains an applet, the applet will be automatically downloaded and run in the browser. • Applets are intended to be small programs. • They are typically used to display data provided by the server, handle user input, or provide simple functions, such as a loan calculator, that execute locally, rather than on the server. • In essence, the applet allows some functionality to be moved from the server to the client.
  • 8. How Java Changed the Internet-Applets (cont…) • The creation of the applet changed Internet programming because it expanded the universe of objects that can move about freely in cyberspace. • The applet is a dynamic, self-executing program. Such a program is an active agent on the client computer, yet it is initiated by the server. • As desirable as dynamic, networked programs are, they also present serious problems in the areas of security and portability. • Obviously, a program that downloads and executes automatically on the client computer must be prevented from doing harm. • It must also be able to run in a variety of different environments and under different operating systems. • As you will see, Java solved these problems in an effective and elegant way. Let’s look a bit more closely at each.
  • 9. How Java Changed the Internet-Security • Every time we download a “normal” program, we are taking a risk, because the code we are downloading might contain a virus, Trojan horse, or other harmful code. • At the core of the problem is the fact that malicious code can cause its damage because it has gained unauthorized access to system resources. • In order for Java to enable applets to be downloaded and executed on the client computer safely, it was necessary to prevent an applet from launching such an attack. • Java achieved this protection by confining an applet to the Java execution environment and not allowing it access to other parts of the computer. • The ability to download applets with confidence that no harm will be done and that no security will be breached may have been the single most innovative aspect of Java.
  • 10. How Java Changed the Internet-Portability • Portability is a major aspect of the Internet because there are many different types of computers and operating systems connected to it. • If a Java program were to be run on virtually any computer connected to the Internet, there needed to be some way to enable that program to execute on different systems. • It is not practical to have different versions of the applet for different computers. • The same code must work on all computers. • Therefore, some means of generating portable executable code was needed. • Java has the same mechanism that helps ensure security also helps create portability.
  • 11. Java’s Magic: The Bytecode • The key that allows Java to solve both the security and the portability problems is that the output of a Java compiler is not executable code. Rather, it is bytecode. • Bytecode is a highly optimized set of instructions designed to be executed by the Java run-time system, which is called the Java Virtual Machine (JVM). • In essence, the original JVM was designed as an interpreter for bytecode. • Many modern languages are designed to be compiled into executable code because of performance concerns. • However, the fact that a Java program is executed by the JVM helps solve the major problems associated with web- based programs.
  • 12. Java’s Magic: The Bytecode (cont…) • Translating a Java program into bytecode makes it much easier to run a program in a wide variety of environments because only the JVM needs to be implemented for each platform. • The fact that a Java program is executed by the JVM also helps to make it secure. • Because the JVM is in control, it can contain the program and prevent it from generating. • Because bytecode has been highly optimized, the use of bytecode enables the JVM to execute programs much faster than you might expect. • HotSpot technology provides a Just-In-Time (JIT) compiler for bytecode.
  • 13. Java’s Magic: The Bytecode (cont…) • A JIT compiler compiles code as it is needed, during execution. • Furthermore, not all sequences of bytecode are compiled—only those that will benefit from compilation. • The remaining code is simply interpreted. • However, the just-in-time approach still yields a significant performance boost. • Even when dynamic compilation is applied to bytecode, the portability and safety features still apply, because the JVM is still in charge of the execution environment.
  • 14. The Java Buzzwords • The key considerations were summed up by the Java team in the following list of buzzwords: – Simple. Java was designed to be easy for the professional programmer to learn and use effectively. Assuming that anyone has some programming experience, (s)he will not find Java hard to master. – Object-Oriented. Although influenced by its predecessors, Java was not designed to be source-code compatible with any other language. This allowed the Java team the freedom to design with a blank slate. One outcome of this was a clean, usable, pragmatic approach to objects. The object model in Java is simple and easy to extend.
  • 15. The Java Buzzwords (cont…) –Robust. The ability to create robust programs was given a high priority in the design of Java. To gain reliability, Java restricts us in a few key areas to force us to find our mistakes early in program development. At the same time, Java frees us from having to worry about many of the most common causes of programming errors. Because Java is a strictly typed language, it checks our code at compile time. However, it also checks your code at run time. To better understand how Java is robust, consider two of the main reasons for program failure: memory management mistakes and mishandled exceptional conditions (that is, run-time errors). Memory management can be a difficult, tedious task in traditional programming environments.
  • 16. The Java Buzzwords (cont…) – For example, in C/C++, the programmer will often manually allocate and free all dynamic memory. This sometimes leads to problems, because programmers will either forget to free memory that has been previously allocated or, worse, try to free some memory that another part of their code is still using. Java virtually eliminates these problems by managing memory allocation and deallocation for you. (In fact, deallocation is completely automatic, because Java provides garbage collection for unused objects.) Exceptional conditions in traditional environments often arise in situations such as division by zero or “file not found,” and they must be managed with clumsy and hard-to-read constructs. Java helps in this area by providing object-oriented exception handling.
  • 17. The Java Buzzwords (cont…) – Multithreaded. Java was designed to meet the real- world requirement of creating interactive, networked programs. To accomplish this, Java supports multithreaded programming, which allows you to write programs that do many things simultaneously. – Architecture-Neutral. A central issue for the Java designers was that of code longevity and portability. The Java designers made several hard decisions in the Java language and the Java Virtual Machine in an attempt to alter this situation. Their goal was “write once; run anywhere, any time, forever.” To a great extent, this goal was accomplished.
  • 18. The Java Buzzwords (cont…) – Interpreted and High Performance. Java enables the creation of cross-platform programs by bytecode which was carefully designed so that it would be easy to translate directly into native machine code for very high performance by using a just-in-time compiler. Java run- time systems that provide this feature lose none of the benefits of the platform-independent code. – Distributed. Java is designed for the distributed environment of the Internet because it handles TCP/IP protocols. – Dynamic. Java programs carry with them substantial amounts of run-time type information that is used to verify and resolve accesses to objects at run time. This makes it possible to dynamically link code in a safe and