10. 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.
14. 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
15. Java Language
• Static typed
• Strict & rigid syntax
It's hard to say language X is better than language Y.
Use the right tool.
16. Java is good for ...
Big Teams Long-term projects
The key is maintainability.
Code readability
Find good developers
High-profile projects
17. Core Libraries
• Java core libraries are weak
– Collections
– IO
– Date/Time
• Rely on communities
– Apache Commons XXX
• Problems
– Version conflicts
– Jar hell
– Dependency management
20. 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
21. 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
24. Java Community Process
Develop standard technical specifications for Java
technology
Java Specification Request (JSR) - Changes to make
http://jcp.org/en/procedures/overview
25. 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
26. 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
27. What Happened Behind Java SE 7 JSR
JSR 336 JavaTMSE7ReleaseContents
Final Approval Ballot
http://jcp.org/en/jsr/results?id=5225
29. 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
32. 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/
34. 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
39. Most of the performance issues are caused by
programming errors
•Bad algorithms
•Careless memory usage
•I/O operations
•Threading issues, dead lock
40. 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
42. 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/
46. 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/
47. 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
48. 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