More Related Content
Similar to The Forces Driving Java (20)
More from Steve Elliott (6)
The Forces Driving Java
- 1. The Forces Driving Java
Steve Elliott
Oracle UK
November 2012
1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 2. The following is intended to outline our general product
direction. It is intended for information purposes only, and
may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality,
and should not be relied upon in making purchasing
decisions. The development, release, and timing of any
features or functionality described for Oracle s products
remains at the sole discretion of Oracle.
2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 3. 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 4. The Highlander Fallacy
“There can be only one”
4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 5. The Highlander Fallacy
“There can be only one”
“This, of course, is a classic example of what I
have called the Highlander Fallacy, which
briefly stated is the principle that there can be
only one. If any two technologies can be
described using the same set of words, then
there is no need for both of them, and only one
will survive. I call this a fallacy because, to use a
technical term, it is total crap.”
Jim Waldo
http://blogs.law.harvard.edu/waldo
5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 6. “If someone claims to have the perfect programming language,
he is either a fool, a salesman or both”
“There are only two kinds of programming languages :
those people complain about and those nobody uses”
“ How do you pronounce ‘Bjarne Stroustrup’ ?
It can be difficult for non-Scandinavians. The best suggestion I
heard yet was “start by saying it a few times in Norwegian then
stuff a potato down your throat and do it again” J
Bjarne Stroustup
6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 7. "Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the universe trying to build bigger and better idiots.
So far, the universe is winning."
- Rick Cook
7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 9. Web
Cloud Multi-tenancy Big Data Technologies User
Interface
NoSQL Modularity
Developer Tools Deployment
CI
DevOps Embedded
C Mobile
Performance Devices
Monitoring
Management JVM
Tuning Community
Hardware Governance
Concurrency
Language Evolution Evolution Open Source
Threads
Polyglot Programming
9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 10. Hardware Evolution
§ Pipelining, Superscalar, OoO execution…
§ Multi Core, Hyperthreading, Crypto…
§ Caches, Memory Hierarchy / Disk / SSD…
§ GPU processing
§ Networking
§ etc etc etc
10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 11. Hardware Evolution
Know your system
§ Herb Sutter
– The free lunch is over
– Welcome to the jungle
§ Jason Robert Carey Patterson
– Modern Microprocessors – A 90 minute guide
§ Ulrich Drepper
– What every programmer should know about memory
§ Cliff Click
– A crash course in modern hardware
§ Martin Thompson (Mechanical Sympathy), Peter Lawrey, Kirk Pepperdine,
Jevgeni Kabanov (Do you really get memory?) and many more…
11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 12. Why Lambdas for Java?
12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 13. 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 14. 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 15. Language Evolution / Polyglot Programming
15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 16. 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 17. Influences on Java
(née GreenTalk/Oak : 1991-92)
Simula Modula Self (Hotspot) Ceylon
Algol Groovy
C VB Scheme
B C++ Scala Kotlin
Python
BCPL Haskell
occam Clojure
PL/M Ruby
Coral
LISP Smalltalk LiveScript/JavaScript
Ada TypeScript
PHP
BASIC Pascal (p-code) Go
Erlang Java
Forth Mesa Cedar Fantom
Perl
Fortran Dart
Objective C
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
http://en.wikipedia.org/wiki/Timeline_of_programming_languages
http://hopl.murdoch.edu.au/
17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 18. 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 19. The Da Vinci Machine Project
Polyglot Programming
Ceylon
Seph
Nashorn
InvokeDynamic
Virtual Machine
19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 20. Project
Nashorn
20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 21. 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 22. 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 23. Performance
§ JVM
§ Throughput / Latency
§ Monitoring / Instrumentation
§ Tuning
§ …
23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 24. 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 25. G1 – Garbage First
Recommended Use Cases
§ Supported for production use since 7u4
§ Large heaps with GC latency requirements
– Typically ~6GB or larger heaps
– Stable and predictable GC latencies below 0.5 seconds
§ Applications that have
– more than 50% live data on the heap
– varied object allocation rate
– undesired long GC or compaction pauses (greater than 0.5s)
25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 26. Performance Features
HotSpot JVM: Partial Perm Gen Removal
§ Partial Permanent Generation removal in JDK 7
– Interned Strings moved to Java heap
§ First step: Full removal in JDK 8
§ My be necessary to adjust GC tuning
– Interned Strings now in heap
– Applications with high GC time
– Applications with high interned String count
– Larger heap size may be needed
26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 27. Java Diagnostic Commands
JDK Introspection
§ Complete tool chain
– Framework for easy implementation and integration
– Command line tool, jcmd
§ jcmd
– List running Java processes
§ jcmd <pid> help
– List all available commands, currently ~15 different commands
27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 28. 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 29. Modularity / Deployment
§ Modules
– Jigsaw
– OSGi
– Project Penrose
§ Deployment
– Enterprise, Web, App Store model
§ Build Systems / CI / Devops…
– Maven, Gradle, Hudson etc
29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 30. 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 31. 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 32. 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 33. 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 34. 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 35. 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 36. 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 37. UI / Web
§ JavaFX
§ Websocket / JSON (Java EE)
§ HTML5
§ Mobile
37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 38. JavaFX Update
OpenJFX Linux Developer JavaFX 2.1 for JavaFX 2.2 for
project created Preview OS X Linux
Scene Builder 1.0
Dec 11 Jan 12 Apr 12 Aug 12
NetBeans 7.2 Linux/ARM Dev
with FX 2.1 and Preview
Scene Builder Scene Builder
integration Linux Dev Preview
38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 39. Avatar
• Applications based on Thin Server Architecture
• Incubator for HTML5/JavaScript clients with Java EE
– Learn by experimenting
– Identify targets for standardization, e.g. WebSocket (now), Server-
Sent Event (Future)
• End-to-end framework: Client and Server
– A-la-carte, not all or nothing
39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 40. Introducing Project Easel – Advanced Tooling
for HTML 5
• Provides the foundation for tooling support for
Project Avatar.
• Consume Java EE based services with today’s
popular JavaScript frameworks
40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 41. Angry Bids Demo
Auction
HTTP
Items restMod Java EE
el
HTML5 Server
Infrastructure
Server-Sent Event JPA
pushModel JAX-RS
Live Bid SSE
Database
WebSocket
EL
ket
ebSocdel
W etMo ...
sock
Chat
41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 42. 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 44. 44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 45. 45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 47. Roadmaps
47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 48. 48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 49. JDK 8
Innovation Java for Everyone Client
• Lambda aka Closures • Profiles for constrained devices • Deployment enhancements
• Language Interop • JSR 310 - Date & Time APIs • JavaFX 8
• Nashorn • Non-Gregorian calendars • Public UI Control API
• Unicode 6.1 • Java SE Embedded support
• ResourceBundle. • Enhanced HTML5 support
• BCP47 locale matching • 3D shapes and attributes
Core Libraries • Globalization & Accessibility • Printing
• Parallel operations for core
collections APIs
• Improvements in functionality
• Improved type inference Tools Security
• Limited doPrivilege
• Compiler control & logging
• NSA Suite B algorithm support
• JSR 308 - Annotations on
• SNI Server Side support
General Goodness Java Type
• DSA updated to FIPS186-3
• JVM enhancements • Native app bundling
• AEAD JSSE CipherSuites
• No PermGen limitations • App Store Bundling tools
• Performance lmprovements
49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 50. 50 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 51. JavaFX 2.2 and Beyond
HTTP Live Streaming
Embedded SwingNode Linux
Printing 1080p
Writeable Image Multi-Touch
Pagination Mac
ComboBox
Scene Builder SWT
for Linux
Advanced Cells h.264
i18n
Rich Text Complex Text
3D Native Deployment
Canvas
Snapshot
Performance 3rd Party Controls
Accessibility ColorPicker ARM
51 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 52. To Java SE 9 and Beyond!
Project Sumatra – Java for GPUs Improved Integration with Native
Lang Enhancements Cloud OpenJFX
Resource Management Self Tuning JVM
Optimizations Generic Lang Interoperability
Multi-Tenancy Support Ease of use
Jigsaw Unified Type System
Ports: Power PC/AIX Data Structure Optimizations
Penrose
52 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 53. Roadmap
Java SE
7u6 Major Serviceability JDK 8 JDK 9
• JRE on Mac complete improvements • Lambda • Jigsaw
• JavaFX 2.2 integration • Java Flight Recorder in JDK • Complete JVM Convergence • Interoperability
• Linux ARM V6/V7 • Native memory tracking • JavaScript Interop • Optimizations
• JavaFX on Mac and Linux • Java Discovery Protocol • JavaFX 8 • Cloud
– Public UI Control API • Ease of Use
• App Stores Packaging tools
– Java SE Embedded support • JavaFX JSR
• Last Public Release of JDK 6 – Enhanced HTML5 support
2012 2013 2014 2015
NetBeans IDE 7.2 NetBeans IDE 7.3 NetBeans IDE 8 NetBeans IDE 9
• Support for JDK 7 on Mac • Scene Builder 1.1 support • JDK 8 support • JDK 9 support
• Support for JavaFX on • Scene Builder 2.0 support • Scene Builder 3.0 support
Mac and Linux Scene Builder 1.1
• Linux support Scene Builder 2.0 SceneBuilder 3.0
Scene Builder 1.0 • JavaFX 8 support • JavaFX 9 support
• Windows and Mac • Enhanced Java IDE support
53 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 54. Roadmap
Embedded Java
NetBeans IDE 7.2 Java Embedded Suite 7.1 Java SE Embedded 8 Java Embedded 9
• ME Embedded support • Sync with latest JDK and • Complete JVM convergence • JDK9
GlassFish • Additional compact profiles • Modularity based on
• Optimizations and additional • JavaFX for Embedded Jigsaw
Java Embedded Suite 7 platform support Java Embedded Suite 8 • Additional Embedded
• SE Embedded 7 • Additional enterprise middleware device APIs
integrations • Ease of Development
• GlassFish for Embedded
• Flight Recorder/Mission Control
• Java DB
2012 2013 2014 2015
Java ME Embedded 3.2 Java ME Embedded 3.3 Java ME Embedded 8 NetBeans IDE 9
• Microcontroller support • Enhanced device access • Java ME 8 • Java ME/SE 9
• Device Access APIs • Footprint optimization & • Standardized Embedded API Embedded support
configuration tools • New on-device debugging • Jigsaw support
Java ME SDK 3.2 architecture
• Improved developer
• Embedded emulator NetBeans IDE 8
tooling & experience
• Eclipse integration • Java ME/SE 8 Embedded
support
54 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 55. Java EE Past, Present, & Future Simplicity
& HTML5
Java EE 7
Lightweight
Ease of JMS 2.0,
Development Java EE 6 Batch,
JCache, TX
Java EE 5 Pruning, Interceptors
Web Services Extensibility
Robustness Ease of Dev, HTML5:
Enterprise J2EE 1.4 WebSocket,
CDI, JAX-RS
Java Platform J2EE 1.3 Web Ease of JSON
Services Development,
J2EE 1.2 Mgmt, Annotations,
Web Profile Web Profile
JPE Servlet, JSP, CMP, Deployment, EJB 3.0, JPA,
EJB, JMS Connector JSF, Updated Servlet 3.0,
Project Async
Web Services
RMI/IIOP Architecture Connector EJB 3.1 Lite JAX-RS 2.0
May 1998 Dec 1999 Sep 20110 Nov 2003 May 2006 Dec 2009 Q2 2013
10 specs 13 specs 20 specs 23 specs 28 specs 33+ specs
55 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 56. 56 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 57. 57 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 58. 58 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 59. Java EE 7 – Candidate JSRs
JAX-RS
JSP 2.2 JSF 2.2 2.0
EL 3.0 Java Caching API
Portable (JSR 107)
Extensions
Bean Validation 1.1
Servlet 3.1
Batch Applications
(JSR 352)
Common
Interceptors 1.1 CDI 1.1
Annotations 1.1
Java API for JSON
(JSR 353)
Managed Beans 1.0 EJB 3.2
Connector Java API for WebSocket
JPA 2.1 JTA 1.2 JMS 2.0 (JSR 356)
1.6
New Major Updated
Release
59 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 60. Java EE 7 – Specification Status
✔ ✔ ✔ ✔
JAX-RS
JSP 2.2 JSF 2.2 2.0
EL 3.0 Java Caching API
Portable (JSR 107)
Extensions ✔
Bean Validation 1.1
Servlet 3.1 ✔
Batch Applications
Common
✔ (JSR 352)
Interceptors 1.1 CDI 1.1 ✔
Annotations 1.1
Java API for JSON
✔ (JSR 353)
Managed Beans 1.0 EJB 3.2
✔
Connector
✔ ✔ Java API for WebSocket
JPA 2.1 JTA 1.2 JMS 2.0 (JSR 356)
1.6
✔ Early/Public Drafts Available
60 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 61. Java EE 7 – Implementation Status
4.0
download.java.net/glassfish/4.0/promoted/
61 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 62. Java EE 8 and beyond
Standards-based cloud programming model
§ Deliver cloud architecture Storage NoSQL
JSON-B Concurrency
§ Multi tenancy for SaaS applications Java
State
Management EE 7
§ Incremental delivery of JSRs Avatar
PaaS
§ Modularity based on Jigsaw (SE 9) Enablement
Multi-
tenancy
62 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 63. 63 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 64. 64 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 65. References
§ Herb Sutter
– http://www.gotw.ca/publications/concurrency-ddj.htm
– http://herbsutter.com/welcome-to-the-jungle
§ Jason Robert Carey Patterson
– http://www.lighterra.com/papers/modernmicroprocessors
§ Ulrich Drepper
– http://lwn.net/Articles/250967
§ Cliff Click
– http://www.infoq.com/presentations/click-crash-course-modern-hardware
§ James Gosling
– http://dl.acm.org/citation.cfm?id=620728
65 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
- 66. Acknowledgments
§ Much of the content of this presentation is taken from various
JavaOne and Oracle OpenWorld 2012 slide decks.
§ Thanks to..
Hasan Rizvi, Georges Saab, Henrik Stahl, Nandini Ramani, Cameron Purdy, Mark Reinhold,
Brian Goetz, Richard Bair, ArunGupta, Simon Ritter, Tomas Nilsson, Marcus Lagergren, Marcus Hirt,
Staffan Friberg, David Keenan, Scott Kovatch, John Clingan, John Rose, Milton Smith, Joe Darcy,
Stuart Marks…and anybody else I missed.
§ Thanks also..
– James Gosling – ‘The Feel of Java’ and a lot more J
– John Rose / JVM Languages Summit – ‘Vitruvian Duke’ graphic
– Jim Waldo – ‘Highlander Fallacy’ reference
– Bjarne Stroustup - quotes
– http://www.junauza.com/2010/12/top-50-programming-quotes-of-all-time.html
66 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.