Your SlideShare is downloading. ×
  • Like
The Forces Driving Java
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

The Forces Driving Java

  • 2,692 views
Published

Presentation for London Java Community Open Conference. …

Presentation for London Java Community Open Conference.
22nd November 2012.
Steve Elliott - Oracle UK.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • This ppt is all about Java
    thanks
    Are you sure you want to
    Your message goes here
  • Changed some slide backgrounds (including title) to make them easier to read with slideshare colour scheme. Added reference urls and acknowledgment slides at end. No other slides / numbering changed.
    Are you sure you want to
    Your message goes here
  • Many thanks!
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,692
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
67
Comments
3
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. The Forces Driving Java Steve Elliott Oracle UK November 20121 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/waldo5 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 Stroustup6 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 Cook7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. http://www.junauza.com/2010/12/top-50-programming-quotes-of-all-time.html 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. WebCloud Multi-tenancy Big Data Technologies User Interface NoSQL Modularity Developer Tools Deployment CI DevOps Embedded C MobilePerformance DevicesMonitoringManagement JVMTuning Community Hardware Governance ConcurrencyLanguage Evolution Evolution Open Source ThreadsPolyglot 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 etc10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. Hardware EvolutionKnow 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 Programming15 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 C57 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 ProjectPolyglot Programming Ceylon Seph Nashorn InvokeDynamic Virtual Machine19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Project Nashorn20 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 FirstRecommended 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 FeaturesHotSpot 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 needed26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Java Diagnostic CommandsJDK 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 commands27 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 etc29 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 §  Mobile37 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 Preview38 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 nothing39 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 frameworks40 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 Chat41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 42. 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 43. http://spoofzu.blogspot.co.uk43 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.
  • 46. http://www.oracle.com/technetwork/java/seccodeguide-139067.html 46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 47. Roadmaps47 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 lmprovements49 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 StreamingEmbedded SwingNode Linux Printing 1080p Writeable Image Multi-Touch Pagination Mac ComboBoxScene Builder SWT for Linux Advanced Cells h.264 i18n Rich Text Complex Text 3D Native Deployment Canvas SnapshotPerformance 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 NativeLang Enhancements Cloud OpenJFXResource Management Self Tuning JVM Optimizations Generic Lang Interoperability Multi-Tenancy Support Ease of use Jigsaw Unified Type SystemPorts: 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 support53 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 support54 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 ProfileJPE 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.0May 1998 Dec 1999 Sep 20110 Nov 2003 May 2006 Dec 2009 Q2 2013 10 specs 13 specs 20 specs 23 specs 28 specs 33+ specs55 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 Release59 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 Available60 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- tenancy62 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=62072865 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.html66 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.