the evolution of java
DESCRIPTION
The evolution history of Java. What Java is good for? The rising of dynamic languages in JVM.TRANSCRIPT
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 JavaSchoolsby Joel Spolsky
Java is not, generally, a hard enoughprogramming 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 readabilityFind 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 J
ava Applet• Java applet boosted Jav
a’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
MemberExecutive Committee
(EC)
- Individuals- Companies- Organizations
- Major stakeholders- Representative cross-section of the Java Community
JSRs
Game of big players
Eclipse FoundationHPIBMIntelNokiaOracleRed HatSAPTwitterand 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 S
AP
What Happened Behind Java SE 7 JSR
JSR 336 JavaTM SE 7 Release Contents
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 intr
oduced in Java 1.3• Each Java release has performance improvem
ents
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
CompileRun
JythonJRubyGroovyScalaClojure...
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 logicAdmin 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