The Evolution of Java
Upcoming SlideShare
Loading in...5

The Evolution of Java



The evolution history of Java. What Java is good for? The rising of dynamic languages in JVM.

The evolution history of Java. What Java is good for? The rising of dynamic languages in JVM.



Total Views
Views on SlideShare
Embed Views



7 Embeds 409 236
http://localhost 94 69 3 3 2 2


Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

The Evolution of Java The Evolution of Java Presentation Transcript

  • The Evolution of JavaFu Cheng
  • Author of Understanding the Java 7 Author of 40+ technical articles on
  • We talk about ...
  • Java is …A Programming LanguageJust like C/C++, Ruby, Python and many others
  • Java is ...A Programming PlatformLanguage + Libraries + VM
  • Java is ...Popular
  • Java is ... - maybe not old enough
  • Java is ...Object-OrientedNearly everything is a object
  • Java is ...Easy to learn
  • Java is ...(Maybe) too easy to learnThe Perils of JavaSchoolsby Joel SpolskyJava is not, generally, a hard enoughprogramming language that it can beused to discriminate between greatprogrammers and mediocre programmers.
  • Java is …JDK 1.01996 1997 1998 2004 20062000 2002 2011JDK 1.1J2SE 1.2J2SE 1.3J2SE 1.4J2SE 5.0Java SE 6Java SE 7 evolving
  • Java has ...Strong Platform Medium languageWeak core libraries
  • Popular Platform• Desktop– 850M PCs, 2011• Mobile– Android– Java ME• Enterprise– LinkedIn– Ebay– Paypal– AOL– Alibaba– Netflix
  • 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 syntaxIts hard to say language X is better than language Y.Use the right tool.
  • Java is good for ...Big Teams Long-term projectsThe key is maintainability.Code readabilityFind good developersHigh-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
  • Top 10 Reasons The Ruby Programming Language Sucks-MatzSee Ruby
  • Why Java Succeeded
  • Compile Once, Run AnywhereJava Source Code(.java)Java Byte Code(.class)CompileJava CompilerJVMWin *Nix MacJava LanguageSpecificationJVMSpecificationRun
  • Class loader• Javas true invention• Load code from remoteand execute locally• Core technique behindJava Applet• Java applet boostedJava’s spreading in dotcom ageNASA World Wind applet
  • How Java Evolves
  • Java Community ProcessOpenJDK+
  • Java Community ProcessDevelop standard technical specifications for JavatechnologyJava Specification Request (JSR) - Changes to make
  • MemberExecutive Committee(EC)- Individuals- Companies- Organizations- Major stakeholders- Representative cross-section ofthe Java CommunityJSRsGame of big playersEclipse 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, andSAP
  • What Happened Behind Java SE 7 JSRJSR 336 JavaTMSE7ReleaseContentsFinal Approval Ballot
  • Those Voted Yes Said ...
  • Licensing Terms of TCK• Technology Compatibility Kit (TCK) is used to testcompatibility of Java implementation.• Oracle only wants to license the use of TCK in the OpenJDKcontext• Apache Software Foundation, Doug Lea and Tim Peierlsresigned from JCP EC in protest over this issue.– Apache Harmony Project - retried alreadyOracle ... has essentially turned the JCPinto a rubber-stamp organization for Java SE 7Alex Handy
  • Evolution Areas of JavaProductivity Performance Modularization
  • Productivity
  • Averaging over the lifetime of the project, a programmerspends about 10-20% of his time writing code, and mostprogrammers write about 10-12 lines of code per day thatgoes into the final product, regardless of their skill level.
  • 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 expressionsExample of lambda expression
  • Performance
  • Java is NOT slow
  • Benchmark Result 1
  • Benchmark Result 2
  • Most of the performance issues are caused byprogramming 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 wasintroduced in Java 1.3• Each Java release has performanceimprovementsJVM in OpenJDK = HotSpot + JRockit
  • Modularization
  • Why you need Swing library for an application server?Project JigsawDesign and implement astandard module system for theJava SE platform, and to applythat system to the platform itselfand to the JDK
  • JVM Languages
  • Rise of Dynamic JVM LanguagesAnd more ...
  • Source code Java byte codeJVMCompileRunJythonJRubyGroovyScalaClojure...
  • the Da Vinci Machine ProjectExtend the JVM with first-class architecturalsupport for languagesother than Java,especially dynamiclanguages.
  • Meet invokedynamic• A new JVM instruction introduced in JSR 292for Java SE 7• Allow extremely fast dynamic invocationthrough method handles• Improve performance of dynamic JVMlanguages
  • Polyglot and poly-paradigmprogrammingUse the right language to solve problems in differentcomponents business logicAdmin tasksWeb developmentConcurrent programming
  • What should Java developers do?
  • Learn more about Java platformLearn more JVM internals, class loading, byte code spec, etc.
  • Keep an eye on Java languageUse new features and enhancements to increase productivity
  • Embrace dynamic JVM languagesLearn new dynamic JVM languages to make your life easier
  • Java may not be a good programming languageJava platform is a good platform to work onIt’s evolving slowlyANDBUT