SlideShare una empresa de Scribd logo
1 de 53
The Evolution of Java
Fu Cheng
Author of Understanding the Java 7 Author of 40+ technical articles on
We talk about ...
Java is …
A Programming Language
Just like C/C++, Ruby, Python and many others
Java is ...
A Programming Platform
Language + Libraries + VM
Java is ...
Popular
Java is ...
http://en.wikipedia.org/wiki/History_of_programming_languages
Old - maybe not old enough
Java is ...
Object-Oriented
Nearly everything is a object
Java is ...
Easy to learn
Java is ...
(Maybe) too easy to learn
The Perils of JavaSchools
by Joel Spolsky
Java is not, generally, a hard enough
programming language that it can be
used to discriminate between great
programmers and mediocre programmers.
Java is …
JDK 1.0
1996 1997 1998 2004 20062000 2002 2011
JDK 1.1
J2SE 1.2
J2SE 1.3
J2SE 1.4
J2SE 5.0
Java SE 6
Java SE 7
http://en.wikipedia.org/wiki/Java_(programming_language)#Versions
Slowly evolving
Java has ...
Strong Platform Medium language
Weak core libraries
Popular Platform
• Desktop
– 850M PCs, 2011
• Mobile
– Android
– Java ME
• Enterprise
– LinkedIn
– Ebay
– Paypal
– AOL
– Alibaba
– Netflix
http://w3techs.com/technologies/details/pl-java/all/all
JVM
• Shield applications from OS layer details
– Threading using java.lang.Thread
• Provide runtime support for applications
– Basic types and operators
– Object model
– Unicode support
– Dynamic linkage
– Garbage collection
– Memory model
– Access control
Java Language
• Static typed
• Strict & rigid syntax
It's hard to say language X is better than language Y.
Use the right tool.
Java is good for ...
Big Teams Long-term projects
The key is maintainability.
Code readability
Find good developers
High-profile projects
Core Libraries
• Java core libraries are weak
– Collections
– IO
– Date/Time
• Rely on communities
– Apache Commons XXX
• Problems
– Version conflicts
– Jar hell
– Dependency management
http://www.slideshare.net/vishnu/the-top-10-reasons-the-ruby-programming-language-sucks
The Top 10 Reasons The Ruby Programming Language Sucks
-Matz
See Ruby
Why Java Succeeded
Compile Once, Run Anywhere
Java Source Code
(.java)
Java Byte Code
(.class)Compile
Java Compiler
JVM
Win *Nix Mac
Java Language
Specification
JVM
Specification
Run
Class loader
• Java's true invention
• Load code from remote
and execute locally
• Core technique behind
Java Applet
• Java applet boosted
Java’s spreading in dot
com age
NASA World Wind applet
How Java Evolves
Java Community Process
OpenJDK
+
Java Community Process
Develop standard technical specifications for Java
technology
Java Specification Request (JSR) - Changes to make
http://jcp.org/en/procedures/overview
Member
Executive Committee
(EC)
- Individuals
- Companies
- Organizations
- Major stakeholders
- Representative cross-section of
the Java Community
JSRs
Game of big players
Eclipse Foundation
HP
IBM
Intel
Nokia
Oracle
Red Hat
SAP
Twitter
and more ...
submit approve
OpenJDK
• Open-source implemenation of Java SE
• Reference implementation of JCP JSRs
• Base of other Java SE implementations
• Oracle collaboration with Red Hat, IBM, Apple, and
SAP
What Happened Behind Java SE 7 JSR
JSR 336 JavaTMSE7ReleaseContents
Final Approval Ballot
http://jcp.org/en/jsr/results?id=5225
Those Voted 'Yes' Said ...
http://jcp.org/en/jsr/results?id=5225
Licensing Terms of TCK
• Technology Compatibility Kit (TCK) is used to test
compatibility of Java implementation.
• Oracle only wants to license the use of TCK in the OpenJDK
context
• Apache Software Foundation, Doug Lea and Tim Peierls
resigned from JCP EC in protest over this issue.
– Apache Harmony Project - retried already
Oracle ... has essentially turned the JCP
into a rubber-stamp organization for Java SE 7
Alex Handy
Evolution Areas of Java
Productivity Performance Modularization
Productivity
Averaging over the lifetime of the project, a programmer
spends about 10-20% of his time writing code, and most
programmers write about 10-12 lines of code per day that
goes into the final product, regardless of their skill level.
http://automagical.rationalmind.net/2010/08/17/some-lesser-known-truths-about-programming/
http://www.codinghorror.com/blog/2005/08/are-all-programming-languages-the-same.html
Lines of Code
Java is improving
• Java SE 5
– Enhanced for loop
• Java SE 7
– try-with-resources
– Diamond operator
• Java SE 8
– List & Map literals
– Lambda expressions
Example of lambda expression
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
Performance
Java is NOT slow
Benchmark Result 1
http://blog.cfelde.com/2010/06/c-vs-java-performance/
Benchmark Result 2
http://readwrite.com/2011/06/06/cpp-go-java-scala-performance-benchmark
Most of the performance issues are caused by
programming errors
•Bad algorithms
•Careless memory usage
•I/O operations
•Threading issues, dead lock
Java is improving
• Performance was not good prior to Java 1.3
• Performance improved since HotSpot was
introduced in Java 1.3
• Each Java release has performance
improvements
JVM in OpenJDK = HotSpot + JRockit
Modularization
Why you need Swing library for an application server?
Project Jigsaw
Design and implement a
standard module system for the
Java SE platform, and to apply
that system to the platform itself
and to the JDK
http://openjdk.java.net/projects/jigsaw/
JVM Languages
Rise of Dynamic JVM Languages
And more ...
https://en.wikipedia.org/wiki/List_of_JVM_languages
Source code Java byte code
JVM
Compile
Run
Jython
JRuby
Groovy
Scala
Clojure
...
the Da Vinci Machine Project
Extend the JVM with first-
class architectural
support for languages
other than Java,
especially dynamic
languages.
http://openjdk.java.net/projects/mlvm/
Meet 'invokedynamic'
• A new JVM instruction introduced in JSR 292
for Java SE 7
• Allow extremely fast dynamic invocation
through method handles
• Improve performance of dynamic JVM
languages
http://jcp.org/en/jsr/detail?id=292
Polyglot and poly-paradigm
programming
Use the right language to solve problems in different
components
http://polyglotprogramming.com/papers/PolyglotPolyParadigm.pdf
Core business logic
Admin tasks
Web development
Concurrent programming
What should Java developers do?
Learn more about Java platform
Learn more JVM internals, class loading, byte code spec, etc.
Keep an eye on Java language
Use new features and enhancements to increase productivity
Embrace dynamic JVM languages
Learn new dynamic JVM languages to make your life easier
Java may not be a good programming language
Java platform is a good platform to work on
It’s evolving slowly
AND
BUT

Más contenido relacionado

La actualidad más candente

Oop c++class(final).ppt
Oop c++class(final).pptOop c++class(final).ppt
Oop c++class(final).ppt
Alok Kumar
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
aitrichtech
 

La actualidad más candente (20)

Core java slides
Core java slidesCore java slides
Core java slides
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
What is java?
What is java? What is java?
What is java?
 
Training on Core java | PPT Presentation | Shravan Sanidhya
Training on Core java | PPT Presentation | Shravan SanidhyaTraining on Core java | PPT Presentation | Shravan Sanidhya
Training on Core java | PPT Presentation | Shravan Sanidhya
 
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
 
Features of java
Features of javaFeatures of java
Features of java
 
Java virtual machine
Java virtual machineJava virtual machine
Java virtual machine
 
Core java
Core javaCore java
Core java
 
Oop c++class(final).ppt
Oop c++class(final).pptOop c++class(final).ppt
Oop c++class(final).ppt
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for Designers
 
Summer training presentation on "CORE JAVA".
Summer training presentation on "CORE JAVA".Summer training presentation on "CORE JAVA".
Summer training presentation on "CORE JAVA".
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
Core java
Core java Core java
Core java
 
Java presentation
Java presentationJava presentation
Java presentation
 
Exception Handling in JAVA
Exception Handling in JAVAException Handling in JAVA
Exception Handling in JAVA
 
Java Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsJava Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and Streams
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
Finalize() method
Finalize() methodFinalize() method
Finalize() method
 
java Features
java Featuresjava Features
java Features
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
 

Similar a The Evolution of Java

JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptx
Murugesh33
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
Adil Jafri
 
Java chapter 1 basic introduction Unit-1.pptx
Java chapter  1 basic introduction Unit-1.pptxJava chapter  1 basic introduction Unit-1.pptx
Java chapter 1 basic introduction Unit-1.pptx
noosdysharma
 

Similar a The Evolution of Java (20)

Java Basics
Java BasicsJava Basics
Java Basics
 
Java platform
Java platformJava platform
Java platform
 
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
 
01. Introduction to programming with java
01. Introduction to programming with java01. Introduction to programming with java
01. Introduction to programming with java
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptx
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptx
 
Trends and future of java
Trends and future of javaTrends and future of java
Trends and future of java
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
Curso de Programación Java Intermedio
Curso de Programación Java IntermedioCurso de Programación Java Intermedio
Curso de Programación Java Intermedio
 
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themes
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themesJava 8 Launch Event - Past, Present and Future of Java and Java 8 key themes
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themes
 
Pi j1.1 what-is-java
Pi j1.1 what-is-javaPi j1.1 what-is-java
Pi j1.1 what-is-java
 
Java8 launch at AMIS Services / First8
Java8 launch at AMIS Services / First8Java8 launch at AMIS Services / First8
Java8 launch at AMIS Services / First8
 
OOP - Lecture02 - Introduction to Java.pptx
OOP - Lecture02 - Introduction to Java.pptxOOP - Lecture02 - Introduction to Java.pptx
OOP - Lecture02 - Introduction to Java.pptx
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggerated
 
A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVM
 
01-Introduction.ppt
01-Introduction.ppt01-Introduction.ppt
01-Introduction.ppt
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolution
 
OOP Lecture 1-Intro to Java.pptx
OOP Lecture 1-Intro to Java.pptxOOP Lecture 1-Intro to Java.pptx
OOP Lecture 1-Intro to Java.pptx
 
Java chapter 1 basic introduction Unit-1.pptx
Java chapter  1 basic introduction Unit-1.pptxJava chapter  1 basic introduction Unit-1.pptx
Java chapter 1 basic introduction Unit-1.pptx
 

Más de Fu Cheng (6)

Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
Java SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsJava SE 7 New Features and Enhancements
Java SE 7 New Features and Enhancements
 
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
 
Java类加载器
Java类加载器Java类加载器
Java类加载器
 
Ajax应用开发最佳实践
Ajax应用开发最佳实践Ajax应用开发最佳实践
Ajax应用开发最佳实践
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 

Último

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

The Evolution of Java