SlideShare a Scribd company logo
Chapter 1
The Java Story
Foundational Java
Key Elements and Practical Programming
Foundational Java
• These materials come from Chapter 1 of
‘Foundational Java’ by David Parsons
– Springer, London, 2012
– ISBN (Print) : 978-1-4471-2478-8
– ISBN (Online) : 978-1-4471-2479-5
Java
• Major global programming language
– desk top, web and enterprise systems
– embedded in mobile phones, Blu-ray players etc.
• ‘virtual machine’ supports a family of related
languages
– Scala, Groovy, versions of Ruby and Python
• Came to wide attention via the web in 1995
– Popularity riding on the explosion of interest in the
Internet and World Wide Web in the mid 1990s
A Brief History of Java
• Started as Sun Microsystems prject to build the ‘Star7’
Personal Digital Assistant (PDA)
– Intended to control all the electronic devices in the home
– Needed to work on various pieces of hardware, from
televisions to toasters
• The Star7 language was called ‘Oak’
– Later changed to Java for trademark reasons
• Moved onto the web with the ‘HotJava’ browser
– able to run small Java programs (known as ‘applets’) within
its window
• Java has since matured into one of the key
technologies of global software development
Characteristics of Java
• simple
• object-oriented
• distributed
• robust
• secure
• architecture neutral
• portable
• high performance
• multithreaded
• dynamic
Simple
• ‘C++ without the knives, guns and clubs’.
• One major simplification in Java is the way
that memory is managed, using largely
automatic processes rather than requiring the
programmer to do this
Object-oriented
• Object-oriented languages have become
common since the 1990s
• Data and processes are ‘encapsulated’
together to provide objects that have both
state (data) and behaviour (processes)
• Easier to model the behaviour of the real-
world things that we are trying to reflect in
software
Distributed
• Trend towards making the machine on the desk
less important then the network it is connected
to
• Java is designed for network programming:
– Common Internet protocols
• HTTP (Hyper Text Transfer Protocol)
• FTP (File Transfer Protocol)
– Socket communication
– Remote method invocation (RMI)
– Web services
Robust
• Does not behave unpredictably or fail due to
programmer error
• Removes the risks of memory pointers from code:
– Manipulating memory that has not been correctly
allocated can crash a program
– Failing to free up memory that has been finished with
leads to ‘memory leaks’ where a program can
eventually run out of memory
• Java has only ‘references’ to objects, not pointers
• Garbage collector automatically recovers memory
from objects that are no longer needed
Secure
• Security systems built into Java ensure that
the code, once written, is not easy to tamper
with
• Restrictions placed on what Java applets can
do when they are running inside browser
Architecture Neutral
• ‘write once, run anywhere’
• Combines a compiler and an interpreter
• The Java compiler does not convert the source code
into an executable for a specific environment
– it compiles into ‘byte code’
• Byte code can be run on a Java Virtual Machine (JVM),
software that interprets the byte code to run on a
specific computer
• The same byte code can run on different systems
• Each platform needs to have its own virtual machine
The Java Virtual Machine
• The Java virtual machine (JVM) allows the
same byte code to be run on different
platforms and operating systems.
Java
source
code
Java
compiler
Java byte
code
Java
virtual
machine
Java
virtual
machine
Java
virtual
machine
Portable
• Architecture neutrality
• Portable definitions of data types
– e.g. all ‘int’ data types are thirty-two bits long
• Java types are also always signed
– can contain both positive and negative numbers
– no ‘unsigned’ types
High performance
• Just-in-time (JIT) compilers speed up the
interpretation process
• Native compilers
• Java chips
– embedded in electronic devices
• HotSpot compiler optimises code while it is
running
Multithreaded
• Java makes it easier for programmers to write
multithreaded programs that are more
efficient than single threaded programs
(where only one thing can be happening at
any one time)
• Even where the operating system itself is not
multithreaded, Java code can be written that
uses multiple threads of control
Dynamic
• Java can dynamically change the resources it
is using at run time
• Useful in a distributed environment
– programs can be flexible in terms of size and
behaviour
• Easy to locate objects at run time, even when
they are in different places
The JDK and the JRE
• Java installations come in two forms
• Java Software Development Kit (JDK)
– for writing Java programs
– includes the Java compiler (javac)
• Java Runtime Environment (JRE)
– includes the Java Virtual Machine and supporting
libraries for running Java code
– no compiler or other development tools
• A Java Integrated Development Environment
(IDE) may include the necessary tools
Java Versions
Version Year Highlights
1.0 1995 First public version
1.1 1996 Event handling mechanism for user interfaces
1.2 (Java 2
platform)
1998 Collections Framework, Swing GUI libraries. Java split into
three editions
1.3 2000 Updates to existing features, including better sound
support
1.4 2002 Performance and security improvements, XML
processing, new input/output libraries
5.0 (change in
version style)
2004 Generics, annotations, autoboxing, features similar to C#
6 2007 Web services, Java to XML Binding. Update 10 made
major changes to JRE footprint.
7 2011 Improvements to several areas including security, and
better support for RIAs and dynamic languages
Major Milestones
• Java became open source in 2006
• Sun Microsystems was acquired by Oracle
Corporation in 2010
Java APIs
• Core Java syntax (keywords and fundamental libraries)
+ Java application programming interfaces (APIs).
• Some of the more specialised libraries (often known as
the Java extensions) are not provided with the
standard edition of the JDK
• Java Standard Edition, (Java SE)
– Desktop applications, all the core libraries
• Java Enterprise Edition (Java EE)
– client server programming
• Java Micro Edition (Java ME)
– small or embedded devices
Learning Java
• To program in Java successfully we need to
understand object-oriented concepts
• Java has a rich syntax and wide ranging APIs
• It can be used for all kinds of programming, from
writing a command line utility to building a
distributed client server system or a complex
multithreaded real-time system
• Continues to evolve and provides programmers
with the tools for coding a host of applications in
all kinds of contexts
Some Questions…
• What's the difference between the JDK and
the JRE?
• What is byte code?
• If Java is cross platform, why do I have to
download different versions of it for Windows,
Mac, Linux etc?
• Why is Java popular as a programming
language?
For More Information…
• See the Foundational Java page on the
Springer web site
– http://link.springer.com/book/10.1007/978-1-
4471-2479-5/page/1
• Download code and other support materials
from ‘introjava.com’
– http://www.introjava.com/

More Related Content

What's hot

Java byte code presentation
Java byte code presentationJava byte code presentation
Java byte code presentation
Mahnoor Hashmi
 
Java JVM
Java JVMJava JVM
History of java
History of javaHistory of java
History of java
Mani Sarkar
 
Java 1
Java 1Java 1
JRE , JDK and platform independent nature of JAVA
JRE , JDK and platform independent nature of JAVAJRE , JDK and platform independent nature of JAVA
JRE , JDK and platform independent nature of JAVA
Mehak Tawakley
 
QSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and JitQSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and Jit
Qspiders - Software Testing Training Institute
 
Features of JAVA Programming Language.
Features of JAVA Programming Language.Features of JAVA Programming Language.
Features of JAVA Programming Language.
Bhautik Jethva
 
Java virtual machine
Java virtual machineJava virtual machine
Java virtual machine
Nikhil Sharma
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
Eberhard Wolff
 
JDK,JRE,JVM
JDK,JRE,JVMJDK,JRE,JVM
JDK,JRE,JVM
Cognizant
 
Java introduction
Java introductionJava introduction
Java introduction
Kuppusamy P
 
Java-java virtual machine
Java-java virtual machineJava-java virtual machine
Java-java virtual machine
Surbhi Panhalkar
 
Maven and versioning
Maven and versioningMaven and versioning
Maven and versioning
KadarkaraiSelvam
 
Core java environment setup and details
Core java environment setup and detailsCore java environment setup and details
Core java environment setup and details
e-visionlabs
 
Architecture diagram of jvm
Architecture diagram of jvmArchitecture diagram of jvm
Architecture diagram of jvm
home
 
Java introduction
Java introductionJava introduction
Java introduction
NAVEENA ESWARAN
 

What's hot (20)

Java byte code presentation
Java byte code presentationJava byte code presentation
Java byte code presentation
 
Java JVM
Java JVMJava JVM
Java JVM
 
Java features
Java featuresJava features
Java features
 
History of java
History of javaHistory of java
History of java
 
Evolution Of Java
Evolution Of JavaEvolution Of Java
Evolution Of Java
 
Java 1
Java 1Java 1
Java 1
 
JRE , JDK and platform independent nature of JAVA
JRE , JDK and platform independent nature of JAVAJRE , JDK and platform independent nature of JAVA
JRE , JDK and platform independent nature of JAVA
 
QSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and JitQSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and Jit
 
Features of JAVA Programming Language.
Features of JAVA Programming Language.Features of JAVA Programming Language.
Features of JAVA Programming Language.
 
Java virtual machine
Java virtual machineJava virtual machine
Java virtual machine
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
 
JDK,JRE,JVM
JDK,JRE,JVMJDK,JRE,JVM
JDK,JRE,JVM
 
Java introduction
Java introductionJava introduction
Java introduction
 
JVM
JVMJVM
JVM
 
Java-java virtual machine
Java-java virtual machineJava-java virtual machine
Java-java virtual machine
 
Maven and versioning
Maven and versioningMaven and versioning
Maven and versioning
 
Features of java
Features of javaFeatures of java
Features of java
 
Core java environment setup and details
Core java environment setup and detailsCore java environment setup and details
Core java environment setup and details
 
Architecture diagram of jvm
Architecture diagram of jvmArchitecture diagram of jvm
Architecture diagram of jvm
 
Java introduction
Java introductionJava introduction
Java introduction
 

Similar to The Java Story

Java Introduction
Java IntroductionJava Introduction
Java Introduction
sunmitraeducation
 
1 java introduction
1 java introduction1 java introduction
1 java introduction
abdullah al mahamud rosi
 
1 java intro
1 java intro1 java intro
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
Philippe Riand
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
Infoviaan Technologies
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
UzairSaeed18
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
RajeshSukte1
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
CDSukte
 
Java Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,CoimbatoreJava Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,Coimbatore
Gateway Software Solutions
 
java completed units.docx
java completed units.docxjava completed units.docx
java completed units.docx
SATHYAKALAKSKPRCASBS
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
AliyaJav
 
java full 1 (Recovered).docx
java full 1 (Recovered).docxjava full 1 (Recovered).docx
java full 1 (Recovered).docx
SATHYAKALAKSKPRCASBS
 
Basic javaprogramming(session1)
Basic javaprogramming(session1)Basic javaprogramming(session1)
Basic javaprogramming(session1)Barm Bannasan
 
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptxChapter-1 Introduction.pptx
Chapter-1 Introduction.pptx
SumanBhandari40
 
unit1.pptx
unit1.pptxunit1.pptx
unit1.pptx
PrasadKalal4
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentals
Om Ganesh
 
Java buzzwords
Java buzzwordsJava buzzwords
Java buzzwords
ramesh517
 
01 java 2 micro edition
01 java 2 micro edition01 java 2 micro edition
01 java 2 micro edition
corneliuskoo
 

Similar to The Java Story (20)

Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
1 java introduction
1 java introduction1 java introduction
1 java introduction
 
1 java intro
1 java intro1 java intro
1 java intro
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
Java Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,CoimbatoreJava Training at Gateway Software Solutions,Coimbatore
Java Training at Gateway Software Solutions,Coimbatore
 
java full 1.docx
java full 1.docxjava full 1.docx
java full 1.docx
 
java full.docx
java full.docxjava full.docx
java full.docx
 
java completed units.docx
java completed units.docxjava completed units.docx
java completed units.docx
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
 
java full 1 (Recovered).docx
java full 1 (Recovered).docxjava full 1 (Recovered).docx
java full 1 (Recovered).docx
 
Basic javaprogramming(session1)
Basic javaprogramming(session1)Basic javaprogramming(session1)
Basic javaprogramming(session1)
 
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptxChapter-1 Introduction.pptx
Chapter-1 Introduction.pptx
 
unit1.pptx
unit1.pptxunit1.pptx
unit1.pptx
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentals
 
Java buzzwords
Java buzzwordsJava buzzwords
Java buzzwords
 
01 java 2 micro edition
01 java 2 micro edition01 java 2 micro edition
01 java 2 micro edition
 

More from David Parsons

Applying Theories in Mobile Learning Research
Applying Theories in Mobile Learning ResearchApplying Theories in Mobile Learning Research
Applying Theories in Mobile Learning Research
David Parsons
 
Exploring Mobile Affordances in the Digital Classroom
Exploring Mobile Affordances in the Digital ClassroomExploring Mobile Affordances in the Digital Classroom
Exploring Mobile Affordances in the Digital Classroom
David Parsons
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
David Parsons
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game Engines
David Parsons
 
Planning Poker
Planning PokerPlanning Poker
Planning Poker
David Parsons
 
Creating game like activities in agile software engineering education
Creating game like activities in agile software engineering educationCreating game like activities in agile software engineering education
Creating game like activities in agile software engineering education
David Parsons
 
Localizing mobile learning policy for maximum return on investment and stakeh...
Localizing mobile learning policy for maximum return on investment and stakeh...Localizing mobile learning policy for maximum return on investment and stakeh...
Localizing mobile learning policy for maximum return on investment and stakeh...
David Parsons
 
Cloud Analytics - Using cloud based services to analyse big data
Cloud Analytics - Using cloud based services to analyse big dataCloud Analytics - Using cloud based services to analyse big data
Cloud Analytics - Using cloud based services to analyse big data
David Parsons
 
M learning Devices in Education
M learning Devices in EducationM learning Devices in Education
M learning Devices in Education
David Parsons
 
Jam today - Embedding BYOD into Classroom Practice
Jam today - Embedding BYOD into Classroom PracticeJam today - Embedding BYOD into Classroom Practice
Jam today - Embedding BYOD into Classroom Practice
David Parsons
 
An Introduction to MusicXML
An Introduction to MusicXMLAn Introduction to MusicXML
An Introduction to MusicXML
David Parsons
 
Naked Objects and Groovy Grails
Naked Objects and Groovy GrailsNaked Objects and Groovy Grails
Naked Objects and Groovy Grails
David Parsons
 
Designing mobile games for engagement and learning
Designing mobile games for engagement and learningDesigning mobile games for engagement and learning
Designing mobile games for engagement and learning
David Parsons
 
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
David Parsons
 
Interaction on the Move
Interaction on the MoveInteraction on the Move
Interaction on the Move
David Parsons
 

More from David Parsons (15)

Applying Theories in Mobile Learning Research
Applying Theories in Mobile Learning ResearchApplying Theories in Mobile Learning Research
Applying Theories in Mobile Learning Research
 
Exploring Mobile Affordances in the Digital Classroom
Exploring Mobile Affordances in the Digital ClassroomExploring Mobile Affordances in the Digital Classroom
Exploring Mobile Affordances in the Digital Classroom
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game Engines
 
Planning Poker
Planning PokerPlanning Poker
Planning Poker
 
Creating game like activities in agile software engineering education
Creating game like activities in agile software engineering educationCreating game like activities in agile software engineering education
Creating game like activities in agile software engineering education
 
Localizing mobile learning policy for maximum return on investment and stakeh...
Localizing mobile learning policy for maximum return on investment and stakeh...Localizing mobile learning policy for maximum return on investment and stakeh...
Localizing mobile learning policy for maximum return on investment and stakeh...
 
Cloud Analytics - Using cloud based services to analyse big data
Cloud Analytics - Using cloud based services to analyse big dataCloud Analytics - Using cloud based services to analyse big data
Cloud Analytics - Using cloud based services to analyse big data
 
M learning Devices in Education
M learning Devices in EducationM learning Devices in Education
M learning Devices in Education
 
Jam today - Embedding BYOD into Classroom Practice
Jam today - Embedding BYOD into Classroom PracticeJam today - Embedding BYOD into Classroom Practice
Jam today - Embedding BYOD into Classroom Practice
 
An Introduction to MusicXML
An Introduction to MusicXMLAn Introduction to MusicXML
An Introduction to MusicXML
 
Naked Objects and Groovy Grails
Naked Objects and Groovy GrailsNaked Objects and Groovy Grails
Naked Objects and Groovy Grails
 
Designing mobile games for engagement and learning
Designing mobile games for engagement and learningDesigning mobile games for engagement and learning
Designing mobile games for engagement and learning
 
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
The Impact of Methods and Techniques on Outcomes from Agile Software Developm...
 
Interaction on the Move
Interaction on the MoveInteraction on the Move
Interaction on the Move
 

Recently uploaded

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 

Recently uploaded (20)

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

The Java Story

  • 1. Chapter 1 The Java Story Foundational Java Key Elements and Practical Programming
  • 2. Foundational Java • These materials come from Chapter 1 of ‘Foundational Java’ by David Parsons – Springer, London, 2012 – ISBN (Print) : 978-1-4471-2478-8 – ISBN (Online) : 978-1-4471-2479-5
  • 3. Java • Major global programming language – desk top, web and enterprise systems – embedded in mobile phones, Blu-ray players etc. • ‘virtual machine’ supports a family of related languages – Scala, Groovy, versions of Ruby and Python • Came to wide attention via the web in 1995 – Popularity riding on the explosion of interest in the Internet and World Wide Web in the mid 1990s
  • 4. A Brief History of Java • Started as Sun Microsystems prject to build the ‘Star7’ Personal Digital Assistant (PDA) – Intended to control all the electronic devices in the home – Needed to work on various pieces of hardware, from televisions to toasters • The Star7 language was called ‘Oak’ – Later changed to Java for trademark reasons • Moved onto the web with the ‘HotJava’ browser – able to run small Java programs (known as ‘applets’) within its window • Java has since matured into one of the key technologies of global software development
  • 5. Characteristics of Java • simple • object-oriented • distributed • robust • secure • architecture neutral • portable • high performance • multithreaded • dynamic
  • 6. Simple • ‘C++ without the knives, guns and clubs’. • One major simplification in Java is the way that memory is managed, using largely automatic processes rather than requiring the programmer to do this
  • 7. Object-oriented • Object-oriented languages have become common since the 1990s • Data and processes are ‘encapsulated’ together to provide objects that have both state (data) and behaviour (processes) • Easier to model the behaviour of the real- world things that we are trying to reflect in software
  • 8. Distributed • Trend towards making the machine on the desk less important then the network it is connected to • Java is designed for network programming: – Common Internet protocols • HTTP (Hyper Text Transfer Protocol) • FTP (File Transfer Protocol) – Socket communication – Remote method invocation (RMI) – Web services
  • 9. Robust • Does not behave unpredictably or fail due to programmer error • Removes the risks of memory pointers from code: – Manipulating memory that has not been correctly allocated can crash a program – Failing to free up memory that has been finished with leads to ‘memory leaks’ where a program can eventually run out of memory • Java has only ‘references’ to objects, not pointers • Garbage collector automatically recovers memory from objects that are no longer needed
  • 10. Secure • Security systems built into Java ensure that the code, once written, is not easy to tamper with • Restrictions placed on what Java applets can do when they are running inside browser
  • 11. Architecture Neutral • ‘write once, run anywhere’ • Combines a compiler and an interpreter • The Java compiler does not convert the source code into an executable for a specific environment – it compiles into ‘byte code’ • Byte code can be run on a Java Virtual Machine (JVM), software that interprets the byte code to run on a specific computer • The same byte code can run on different systems • Each platform needs to have its own virtual machine
  • 12. The Java Virtual Machine • The Java virtual machine (JVM) allows the same byte code to be run on different platforms and operating systems. Java source code Java compiler Java byte code Java virtual machine Java virtual machine Java virtual machine
  • 13. Portable • Architecture neutrality • Portable definitions of data types – e.g. all ‘int’ data types are thirty-two bits long • Java types are also always signed – can contain both positive and negative numbers – no ‘unsigned’ types
  • 14. High performance • Just-in-time (JIT) compilers speed up the interpretation process • Native compilers • Java chips – embedded in electronic devices • HotSpot compiler optimises code while it is running
  • 15. Multithreaded • Java makes it easier for programmers to write multithreaded programs that are more efficient than single threaded programs (where only one thing can be happening at any one time) • Even where the operating system itself is not multithreaded, Java code can be written that uses multiple threads of control
  • 16. Dynamic • Java can dynamically change the resources it is using at run time • Useful in a distributed environment – programs can be flexible in terms of size and behaviour • Easy to locate objects at run time, even when they are in different places
  • 17. The JDK and the JRE • Java installations come in two forms • Java Software Development Kit (JDK) – for writing Java programs – includes the Java compiler (javac) • Java Runtime Environment (JRE) – includes the Java Virtual Machine and supporting libraries for running Java code – no compiler or other development tools • A Java Integrated Development Environment (IDE) may include the necessary tools
  • 18. Java Versions Version Year Highlights 1.0 1995 First public version 1.1 1996 Event handling mechanism for user interfaces 1.2 (Java 2 platform) 1998 Collections Framework, Swing GUI libraries. Java split into three editions 1.3 2000 Updates to existing features, including better sound support 1.4 2002 Performance and security improvements, XML processing, new input/output libraries 5.0 (change in version style) 2004 Generics, annotations, autoboxing, features similar to C# 6 2007 Web services, Java to XML Binding. Update 10 made major changes to JRE footprint. 7 2011 Improvements to several areas including security, and better support for RIAs and dynamic languages
  • 19. Major Milestones • Java became open source in 2006 • Sun Microsystems was acquired by Oracle Corporation in 2010
  • 20. Java APIs • Core Java syntax (keywords and fundamental libraries) + Java application programming interfaces (APIs). • Some of the more specialised libraries (often known as the Java extensions) are not provided with the standard edition of the JDK • Java Standard Edition, (Java SE) – Desktop applications, all the core libraries • Java Enterprise Edition (Java EE) – client server programming • Java Micro Edition (Java ME) – small or embedded devices
  • 21. Learning Java • To program in Java successfully we need to understand object-oriented concepts • Java has a rich syntax and wide ranging APIs • It can be used for all kinds of programming, from writing a command line utility to building a distributed client server system or a complex multithreaded real-time system • Continues to evolve and provides programmers with the tools for coding a host of applications in all kinds of contexts
  • 22. Some Questions… • What's the difference between the JDK and the JRE? • What is byte code? • If Java is cross platform, why do I have to download different versions of it for Windows, Mac, Linux etc? • Why is Java popular as a programming language?
  • 23. For More Information… • See the Foundational Java page on the Springer web site – http://link.springer.com/book/10.1007/978-1- 4471-2479-5/page/1 • Download code and other support materials from ‘introjava.com’ – http://www.introjava.com/