SlideShare una empresa de Scribd logo
1 de 66
Descargar para leer sin conexión
The Forces Driving Java
    Steve Elliott
    Oracle UK
    November 2012



1   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The Highlander Fallacy

    “There can be only one”




4   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
“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.
"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.
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.
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.
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.
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.
Why Lambdas for Java?




12   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
13   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
14   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Language Evolution / Polyglot Programming




15   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
16   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The Da Vinci Machine Project
Polyglot Programming


                                                                                   Ceylon
                                                                            Seph
                                                                                                     Nashorn




                                                                                            InvokeDynamic

                                                    Virtual Machine
19   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Project
                                                                            Nashorn



20   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
21   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
22   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Performance

 §  JVM
 §  Throughput / Latency
 §  Monitoring / Instrumentation
 §  Tuning
 §  …




23   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
24   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
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.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
31   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
32   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
33   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
34   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
35   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
36   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
UI / Web

 §  JavaFX
 §  Websocket / JSON (Java EE)
 §  HTML5
 §  Mobile




37   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
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.
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.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
http://spoofzu.blogspot.co.uk
43   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
44   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
45   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
http://www.oracle.com/technetwork/java/seccodeguide-139067.html




  46   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Roadmaps




47   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
48   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
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.
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.
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.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
57   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
58   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
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.
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.
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   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
64   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
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.
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.

Más contenido relacionado

La actualidad más candente

Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Introduction to OSLC
Introduction to OSLCIntroduction to OSLC
Introduction to OSLCopenservices
 
Introduction to OSLC and Linked Data
Introduction to OSLC and Linked DataIntroduction to OSLC and Linked Data
Introduction to OSLC and Linked Dataopenservices
 
Oop Overview
Oop OverviewOop Overview
Oop Overviewphananhvu
 
invokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language Featureinvokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language FeatureDanHeidinga
 

La actualidad más candente (7)

Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Introduction to OSLC
Introduction to OSLCIntroduction to OSLC
Introduction to OSLC
 
20111007 activiti
20111007 activiti20111007 activiti
20111007 activiti
 
Introduction to OSLC and Linked Data
Introduction to OSLC and Linked DataIntroduction to OSLC and Linked Data
Introduction to OSLC and Linked Data
 
JDT
JDTJDT
JDT
 
Oop Overview
Oop OverviewOop Overview
Oop Overview
 
invokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language Featureinvokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language Feature
 

Similar a The Forces Driving Java

JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesKris Mok
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachPROIDEA
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8jclingan
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
10 interesting things about java
10 interesting things about java10 interesting things about java
10 interesting things about javakanchanmahajan23
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformThomas Wuerthinger
 
Scala Introduction - Meetup Scaladores RJ
Scala Introduction - Meetup Scaladores RJScala Introduction - Meetup Scaladores RJ
Scala Introduction - Meetup Scaladores RJRodrigo Lima
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...qedanne
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...scalaconfjp
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Pratima Parida
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Pratima Parida
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationFredrik Öhrström
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
HTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaHTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaJAX London
 
Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiCédric Hüsler
 
Session 02 - Elements of Java Language
Session 02 - Elements of Java LanguageSession 02 - Elements of Java Language
Session 02 - Elements of Java LanguagePawanMM
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardCharles Moulliard
 

Similar a The Forces Driving Java (20)

ETL in Clojure
ETL in ClojureETL in Clojure
ETL in Clojure
 
JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple Languages
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
 
Java 8
Java 8Java 8
Java 8
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
10 interesting things about java
10 interesting things about java10 interesting things about java
10 interesting things about java
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 
Scala Introduction - Meetup Scaladores RJ
Scala Introduction - Meetup Scaladores RJScala Introduction - Meetup Scaladores RJ
Scala Introduction - Meetup Scaladores RJ
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
 
Java 2 computer science.pptx
Java 2 computer science.pptxJava 2 computer science.pptx
Java 2 computer science.pptx
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)
 
Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)Java Semimar Slide (Cetpa)
Java Semimar Slide (Cetpa)
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
HTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun GuptaHTML5 Websockets and Java - Arun Gupta
HTML5 Websockets and Java - Arun Gupta
 
Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGi
 
Session 02 - Elements of Java Language
Session 02 - Elements of Java LanguageSession 02 - Elements of Java Language
Session 02 - Elements of Java Language
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
 

Más de Steve Elliott

Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.
Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.
Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.Steve Elliott
 
Java Update - Bristol JUG. Part 1 - Java SE.
Java Update - Bristol JUG. Part 1 - Java SE.Java Update - Bristol JUG. Part 1 - Java SE.
Java Update - Bristol JUG. Part 1 - Java SE.Steve Elliott
 
The Ghosts of Java Past, Present and Yet To Come
The Ghosts of Java Past, Present and Yet To ComeThe Ghosts of Java Past, Present and Yet To Come
The Ghosts of Java Past, Present and Yet To ComeSteve Elliott
 
London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015Steve Elliott
 
Docklands jug-aug15-sde
Docklands jug-aug15-sdeDocklands jug-aug15-sde
Docklands jug-aug15-sdeSteve Elliott
 
Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mSteve Elliott
 

Más de Steve Elliott (6)

Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.
Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.
Java Update - Bristol JUG. Part 2 - Java EE / Java in the Cloud.
 
Java Update - Bristol JUG. Part 1 - Java SE.
Java Update - Bristol JUG. Part 1 - Java SE.Java Update - Bristol JUG. Part 1 - Java SE.
Java Update - Bristol JUG. Part 1 - Java SE.
 
The Ghosts of Java Past, Present and Yet To Come
The Ghosts of Java Past, Present and Yet To ComeThe Ghosts of Java Past, Present and Yet To Come
The Ghosts of Java Past, Present and Yet To Come
 
London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015London Java Community (LJC) Open Meeting Keynote - Nov 2015
London Java Community (LJC) Open Meeting Keynote - Nov 2015
 
Docklands jug-aug15-sde
Docklands jug-aug15-sdeDocklands jug-aug15-sde
Docklands jug-aug15-sde
 
Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3m
 

Último

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

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.
  • 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. 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.
  • 43. http://spoofzu.blogspot.co.uk 43 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. 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.