SlideShare une entreprise Scribd logo
1  sur  84
What‟s New()
                  What‟s Next()

©Copyright 2011
Now()

 11:11
11/11/11
Disclaimer
I am just an ordinary developer
I don‟t work for Oracle
Mattias Karlsson

              Avega Group




Twitter: @matkar
www.Linkedin/in/mattiask
Javaforum
Javaforum




 www.jforum.se
Biggest news?
Java 7 is GA
History
JDK/YEAR                Comment
Feb 1997                Retooling of the AWT event model, inner
JDK 1.1                 classes added, JavaBeans and JDBC.

Dec 1998                Reflection, a Collections framework, Java
J2SE 1.2 (Playground)   Swing API Java Plug-in, JIT compiler.

May 2000                HotSpot JVM, JavaSound, JNDI and JPDA
J2SE 1.3 (Kestrel)
Feb 2002                RegEx, exception chaining, XML parser and
Java SE 1.4 (Merlin)    XSLT (JAXP), Java Web Start

Sep 2004                for-each loop, generics, autoboxing and var-
Java SE 5 (Tiger)       args

Dec 2006                scripting languages with the JVM, VB lang
Java SE 6 (Mustang)     support. Annotations (JSR 269)
Java SE 7




Started in Aug 2006
Why was 7 delayed
•   Open Sourcing JDK
•   Conflicts Blocking JCP
•   Sun Finance
•   JavaFX
•   Oracle Deal
Trouble in paradise
•   James Gosling leaving Oracle
•   Oracle vs Google
•   Apache leaving JCP
•   Doug Lea, Bob Lee leaving JCP
Java 7
                        Plan A,
           JDK 7
                        Late 2012


”It„s been clear for some time that the
most recent JDK 7 development
schedule is, to put it mildly, Unrealistic”

(Mark Reinhold, 8 Sep 2010)
Plan B (Mark R)
8 Sep 2010 ”Re-thinking JDK 7”
20 Sep 2010 ”It‟s time for…Plan B”
10 Oct 2010 ”Plan B: The details”
Plan B
             JDK 8
                 7

           Late 2012




Mid 2011               Late 2012
Plan B

          New garbage collector G1

          Library changes

          Enhancements to the JVM

  JDK 7   Language changes (Coin)

          Concurrency and collections
JSR 336   NIO.2
JSR 336 approval
Performance
G1 Garbage collector
•   Still considered experimental

•   Leads to much smaller pause times

•   Parallelism and Concurrency

•   Generational

•   Compaction

•   Predictability (over CMS)
Using G1
•    Replace CMS (Concurrent mark sweep) GC

•    Enable with:
-XX:+UnlockExperimentalVMOptions –XX:+UseG1GC

•    GC Paus time goal:
-XX:MaxGCPauseMillis=50




    www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html
Benchmarks
    •   Test 1. Add 5 Million String values (each calculated with
        some complex Math arithmetic)

    •   Test 2. ArrayList <String> with 5 Million insertions (with
        values from Test1)

    •    Test 3. HashMap <String, Integer> with 5 million keys,
        values. Each key, value pair is being calculated via
        concurrent thread)

    •   Test 4. Printing 5 million items of ArrayList


http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/
Performance



http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/
Performance


            Java 6 18% faster then Java 5
            Java 7 46% faster then Java 6
http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/
Concurrency Matters Again
10,000000
1,000,000             Transistors

  100,000
   10,000
    1,000                           Clock (MHz)
      100
       10
        1
       1970   1980   1990     2000     2010
Fork/Join
 Java 7 concurrency
     JSR 166y
JSR 166y Fork/Join
•   similar to MapReduce
•   useful for a certain class of problems
JSR 166y Fork/Join
Result solve(Problem problem) {

        if (problem is small enough)
          directly solve problem
        else {
         split problem into independent parts
         fork new subtasks to solve each part
         join all subtasks
         compose result from subresults
    }
}
JSR 166y Fork/Join
•   Create one ForkJoinPool
•   Wrap code in ForkJoinTask
•   Subclass RecursiveAction or RecursiveTask<E>
•   Need to override compute() method




download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
class Sum extends RecursiveTask<Long> {
    static final int SEQUENTIAL_THRESHOLD = 1000;
    Sum(int[] arr, int lo, int hi) {
        array = arr; low = lo; high = hi;
    }
    protected Long compute() {
        if(high - low <= SEQUENTIAL_THRESHOLD) {
            long sum = 0;
            for(int i=low; i < high; ++i)
                  sum += array[i];
            return sum;
         } else {
            int mid = low + (high - low) / 2;
            Sum left = new Sum(array, low, mid);
            Sum right = new Sum(array, mid, high);
            invokeAll(left, right);
            return right.join() + left.join();
         }
     }
}
DEMO
Fork/Join Java 7
   JSR 166y
Still too complicated?
mutable state, locks and visible by default is outdated
java.util.concurrent helps, but can only go so far


move from explicit to implicit parallelism
Other JVM Languages
           (free to innovate)

Scala/Akka
• Powerful actors model
• Parallel Collections


Clojure
•   Immutable by default
•   Thread-isolation by default
•   STM subsystem
•   Multiple concurrency models
Coin
JSR 334
Project Coin
A set of small language changes
   should be added to JDK 7
           (OpenJDK)
Strings in switch

Add the ability to switch on string values
analogous to the existing ability to switch
on values of the primitive types.
Strings in switch
String s = ...
switch(s) {
 case "quux":
    processQuux(s);
    // fall-through
 case "bar":
    processFooOrBar(s);
    break;
  case "baz":
     processBaz(s);
  default:
    processDefault(s);
    break;
}
Improved Exception
              Handling

•   Catching multiple exception types
    •   A single catch clause can now catch
        more than one exception types
•   Improved checking for re-thrown
    exceptions
Improved Exception
             Handling
try {
   doWork(file);
} catch (IOException|SQLException ex) {
   throw ex;*
}


try {
   doWork(file);
} catch (final Throwable t) {
   throw t; // ExceptionA or ExceptionB
}
Underscore in numbers


public static void main(String... args) {
  // THE OLD WAY
  int oldBillion = 1000000000;

    // THE NEW WAY
    int newBillion = 1_000_000_000;
}
Automatic Resource Management
 •   A *resource* is as an object that used to be closed
     manually

     •   java.io.InputStream
     •   OutputStream
     •   Reader, Writer
     •   java.sql.Connection, Statement, ResultSet
 •   When the statement completes, whether normally or
     abruptly, all of its resources are closed automatically.
Pre Java 7
public void copy(String src, String dest) throws IOEx{
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest);
    try {
      byte[] buf = new byte[8 * 1024];
      int n;
      while ((n = in.read(buf)) >= 0)
        out.write(buf, 0, n);
   } finally {
      in.close();
      out.close();
   }
}
Pre Java 7
public void copy(String src, String dest) throws IOEx{
   InputStream in = new FileInputStream(src);
   try {
      OutputStream out = new FileOutputStream(dest);
      try {
         byte[] buf = new byte[8 * 1024];
         int n;
         while ((n = in.read(buf)) >= 0)
            out.write(buf, 0, n);
      } finally {
         out.close();
      }
   } finally {
      in.close();
   }
}
Automatic Resource Management
public void copy(String src, String dest) throws IOEx{
    try ( InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dest)){
       byte[] buf = new byte[8 * 1024];
       int n;
       while ((n = in.read(buf)) >= 0)
          out.write(buf, 0, n);
    }
      //in and out closes automagically
}
Improved Type Inference for
     Generic Instance
Improved Type Inference for
      Generic Instance

Map<String, List<String>> anagrams =
  new HashMap<String, List<String>>();



Map<String, List<String>> anagrams =
  new HashMap<>();
NIO.2
Network and File System
       JSR 203
NIO.2
     Network and File System – JSR 203



•   java.io.File
•   java.nio.file.Path
•   java.nio.file.FileSystem
•   Other Usefull Methods
Pre Java 7
URL url = new URL("http://www.blog.se/?page_id=1");
try (
  FileOutputStream fos =
    new FileOutputStream(new File("output.txt"));
  InputStream is = url.openStream() ){
  byte[] buf = new byte[4096];
  int len;
  while ((len = is.read(buf)) > 0){
    fos.write(buf, 0, len);
  }
} catch (IOException e){
  e.printStackTrace();
}
NIO.2
        Network and File System – JSR 203
URL url = new URL("http://www.blog.se/?page_id=1");
try (InputStream in = url.openStream()) {
  Files.copy(in, Paths.get("output.txt"));
}
catch(IOException ex){
  ex.printStackTrace();
}
Da Vinci Machine Project
Da Vinci Machine Project

•   Support for dynamically typed languages
    •   Python, Ruby, Perl, Javascript, Groovy...

•   Implementations will be more efficient
•   JVM level support
    •   for such languages and their implementers
Charles Nutter
  co-leads Jruby project
  Engine Yard
JSR-292

invokedynamic
Method Handles
WTF?
Without invokedynamic
Four existing forms of method dispatch
  virtual, interface, special, super

JVM decides how they work
What if you don‟t fit?
invokedynamic
User-defined dispatch
Name, signature as usual
Additional bootstrap method handle
Bootstrap called first time to wire it up
JVM then optimizes like “real Java”
Method Handles
Super-awesome function pointers
  Faster than reflection
  Curry-able
  Still talking directly to JVM
Used by invokedynamic bootstrapping
invokedynamic

                                 bootstrap
                      1st time    method
invokedynamic
   bytecode     JVM

                                 target
                      2nd time
                                 method
Example


public static void print(String s) {
   System.out.println(s);
}
Example

public static void main(java.lang.String[]);
  Code:
    0: ldc           #9     // String Hello, invokedynamic!
    2: invokedynamic #18, 0 // InvokeDynamic #0:print:(Ljava/lang/String;)V
    7: return




    invokedynamic               bootstrap                    name and
       bytecode                  handle                      signature
Example

public static CallSite bootstrap(Lookup lookup,
                                 String name,
                                 MethodType signature{
   MethodHandle handle = lookup.findStatic(this_class, name, signature);
   CallSite site = new ConstantCallSite(handle);
   return site;
}
JVM languages to benefit from
          invokedynamic


•   These gains will vary:
    •   JRuby ?

    •   Clojure ?

•   Increasing its performance

•   Big potential wins
Other stuff in
•   TLS 1.2
•   Elliptic-curve cryptography (ECC)
•   JDBC 4.1
•   Binary literals
•   Better way to handle unsigned literals
•   Unicode 6.0
•   Locale enhancement
•   Support for IETF BCP 47 and UTR 35
Other stuff in

•   New platform APIs for 6u10 graphics features
•   Swing Nimbus look-and-feel
•   Swing JLayer component
•   Updated XML stack
Runtimes
Java 7 Runtimes
•   Windows x86
    •   Server 2008, Server 2008 R2, 7 & 8
    •   Windows Vista, XP
•   Linux x86
    •   Oracle Linux 5.5+, 6.x
    •   Red Hat Enterprise Linux 5.5+, 6.x
    •   SuSE Linux Enterprise Server 10.x, 11.x
    •   Ubuntu Linux 10.04 LTS, 11.04
•   Solaris x86/SPARC
    •   Solaris 10.9+, 11.x
Other runtimes
”The IBM SDK for Java V7 is now available for
the following platforms:” - 20 Sep 2011

•   AIX
•   Linux
•   z/OS
http://openjdk.java.net/projects/macosx-port/
Java 7 Tool Support
  NetBeans 7
  Eclipse 3.7 3.8 4.1 4.2
  IntelliJ 10.5
Whats.Next()
JVM Convergence
          Project “HotRockit”



HotSpot         HotRockit       JRockit
Plan B
Modularization (Jigsaw)
  Language and VM Support
  Platform Modularization
Project Lambda (JSR 335)
  Lambda Expressions for Java
Type Annotations (JSR 308)
                                  JDK 8
Project Coin part II
Date and Time API (JSR 310)
                                JSR 337
Plan B++
Project Nashorn
 New implementation of JavaScript
 Built from the ground up
 Leverage JVM and invoke dynamic
Java FX 3.0
  Open Sourced
  Bundled with Java 8                 JDK 8

                                    JSR 337
Schedule

May 2011: Expert Group formation
Sep 2011: Early Draft Review
Feb 2012: Public Review
May 2012: Proposed Final Draft
Oct 2012: Final Release              JDK 8

                                   JSR 337
Schedule

May 2011: Expert Group formation
Sep 2011: Early Draft Review
Feb 2012: Public Review
May 2012: Proposed Final Draft
Summer 2013: Final Release           JDK 8

                                   JSR 337
Schedule

   JDK 8, b10
Developer Preview
 Now Available!
                      JDK 8

                    JSR 337
jdk8.java.net
JCP.next
•   Using the process to improve the process
•   JSR 348
    •   Transparency
    •   Participation
    •   Agility
    •   Governance
•   A second JSR will be filed soon
    •   JavaSE and JavaME EC - merged
JCP, new
 members
  Twitter
Azul System
We‟re moving again
•   The JCP Dead Lock Needed to be Broken
•   OpenJDK is liberated (GPL)
•   JUG attendances are growing
•   Oracle marketing estimates 9-10 million devs
•   Dozens of new JVM languages
•   A Vibrant Java Ecosystem
Community
Summary
•   Java 7 is GA
•   Java 8 is on its way
•   The JVM Rocks
•   JCP.next
•   The community is very much alive!
Mattias Karlsson
                                            www.linkedin.com/in/mattiask
                                            twitter: @matkar
                                            mattias.karlsson@avegagroup.s
                                            e




                  Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names
                  appearing on the slides may be trademarks of their respective owners.

                  The development, release, and timing of any features or functionality described for Oracle„s
                  products remains at the sole discretion of Oracle and JCP

©Copyright 2011

Contenu connexe

Tendances

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaKeith Bennett
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machineLaxman Puri
 
Mastering java bytecode with ASM - GeeCON 2012
Mastering java bytecode with ASM - GeeCON 2012Mastering java bytecode with ASM - GeeCON 2012
Mastering java bytecode with ASM - GeeCON 2012Anton Arhipov
 
JRuby 9000 - Taipei Ruby User's Group 2015
JRuby 9000 - Taipei Ruby User's Group 2015JRuby 9000 - Taipei Ruby User's Group 2015
JRuby 9000 - Taipei Ruby User's Group 2015Charles Nutter
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyBruno Oliveira
 
DataMapper on Infinispan
DataMapper on InfinispanDataMapper on Infinispan
DataMapper on InfinispanLance Ball
 
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia Vladimir Ivanov
 
Java Performance Monitoring & Tuning
Java Performance Monitoring & TuningJava Performance Monitoring & Tuning
Java Performance Monitoring & TuningMuhammed Shakir
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011bobmcwhirter
 
JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesKris Mok
 
Mastering Java Bytecode - JAX.de 2012
Mastering Java Bytecode - JAX.de 2012Mastering Java Bytecode - JAX.de 2012
Mastering Java Bytecode - JAX.de 2012Anton Arhipov
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013Vladimir Ivanov
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRubyFrederic Jean
 
Java7 - Top 10 Features
Java7 - Top 10 FeaturesJava7 - Top 10 Features
Java7 - Top 10 FeaturesAndreas Enbohm
 
JRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMJRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMCharles Nutter
 

Tendances (19)

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 
Mastering java bytecode with ASM - GeeCON 2012
Mastering java bytecode with ASM - GeeCON 2012Mastering java bytecode with ASM - GeeCON 2012
Mastering java bytecode with ASM - GeeCON 2012
 
JRuby 9000 - Taipei Ruby User's Group 2015
JRuby 9000 - Taipei Ruby User's Group 2015JRuby 9000 - Taipei Ruby User's Group 2015
JRuby 9000 - Taipei Ruby User's Group 2015
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
 
DataMapper on Infinispan
DataMapper on InfinispanDataMapper on Infinispan
DataMapper on Infinispan
 
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
 
Java Performance Monitoring & Tuning
Java Performance Monitoring & TuningJava Performance Monitoring & Tuning
Java Performance Monitoring & Tuning
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple Languages
 
Scala
ScalaScala
Scala
 
Mastering Java Bytecode - JAX.de 2012
Mastering Java Bytecode - JAX.de 2012Mastering Java Bytecode - JAX.de 2012
Mastering Java Bytecode - JAX.de 2012
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
 
Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid Applications
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRuby
 
Java7 - Top 10 Features
Java7 - Top 10 FeaturesJava7 - Top 10 Features
Java7 - Top 10 Features
 
JRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVMJRuby 9000 - Optimizing Above the JVM
JRuby 9000 - Optimizing Above the JVM
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 

Similaire à Java 7 Key Features

New Features Of JDK 7
New Features Of JDK 7New Features Of JDK 7
New Features Of JDK 7Deniz Oguz
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Rittercatherinewall
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Agora Group
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Martijn Verburg
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing UpDavid Padbury
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lispelliando dias
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8marctritschler
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Marc Tritschler
 
JDK1.7 features
JDK1.7 featuresJDK1.7 features
JDK1.7 featuresindia_mani
 

Similaire à Java 7 Key Features (20)

New Features Of JDK 7
New Features Of JDK 7New Features Of JDK 7
New Features Of JDK 7
 
wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011
 
Java 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
 
Java
JavaJava
Java
 
Java 7 & 8 New Features
Java 7 & 8 New FeaturesJava 7 & 8 New Features
Java 7 & 8 New Features
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
Project Coin
Project CoinProject Coin
Project Coin
 
55j7
55j755j7
55j7
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
JDK1.7 features
JDK1.7 featuresJDK1.7 features
JDK1.7 features
 

Dernier

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Java 7 Key Features

  • 1. What‟s New() What‟s Next() ©Copyright 2011
  • 3. Disclaimer I am just an ordinary developer I don‟t work for Oracle
  • 4. Mattias Karlsson Avega Group Twitter: @matkar www.Linkedin/in/mattiask
  • 6.
  • 7.
  • 10. History JDK/YEAR Comment Feb 1997 Retooling of the AWT event model, inner JDK 1.1 classes added, JavaBeans and JDBC. Dec 1998 Reflection, a Collections framework, Java J2SE 1.2 (Playground) Swing API Java Plug-in, JIT compiler. May 2000 HotSpot JVM, JavaSound, JNDI and JPDA J2SE 1.3 (Kestrel) Feb 2002 RegEx, exception chaining, XML parser and Java SE 1.4 (Merlin) XSLT (JAXP), Java Web Start Sep 2004 for-each loop, generics, autoboxing and var- Java SE 5 (Tiger) args Dec 2006 scripting languages with the JVM, VB lang Java SE 6 (Mustang) support. Annotations (JSR 269)
  • 11. Java SE 7 Started in Aug 2006
  • 12. Why was 7 delayed • Open Sourcing JDK • Conflicts Blocking JCP • Sun Finance • JavaFX • Oracle Deal
  • 13. Trouble in paradise • James Gosling leaving Oracle • Oracle vs Google • Apache leaving JCP • Doug Lea, Bob Lee leaving JCP
  • 14.
  • 15. Java 7 Plan A, JDK 7 Late 2012 ”It„s been clear for some time that the most recent JDK 7 development schedule is, to put it mildly, Unrealistic” (Mark Reinhold, 8 Sep 2010)
  • 16. Plan B (Mark R) 8 Sep 2010 ”Re-thinking JDK 7” 20 Sep 2010 ”It‟s time for…Plan B” 10 Oct 2010 ”Plan B: The details”
  • 17. Plan B JDK 8 7 Late 2012 Mid 2011 Late 2012
  • 18. Plan B New garbage collector G1 Library changes Enhancements to the JVM JDK 7 Language changes (Coin) Concurrency and collections JSR 336 NIO.2
  • 21. G1 Garbage collector • Still considered experimental • Leads to much smaller pause times • Parallelism and Concurrency • Generational • Compaction • Predictability (over CMS)
  • 22. Using G1 • Replace CMS (Concurrent mark sweep) GC • Enable with: -XX:+UnlockExperimentalVMOptions –XX:+UseG1GC • GC Paus time goal: -XX:MaxGCPauseMillis=50 www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html
  • 23. Benchmarks • Test 1. Add 5 Million String values (each calculated with some complex Math arithmetic) • Test 2. ArrayList <String> with 5 Million insertions (with values from Test1) • Test 3. HashMap <String, Integer> with 5 million keys, values. Each key, value pair is being calculated via concurrent thread) • Test 4. Printing 5 million items of ArrayList http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/
  • 25. Performance Java 6 18% faster then Java 5 Java 7 46% faster then Java 6 http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5-1-6-1-7/
  • 26. Concurrency Matters Again 10,000000 1,000,000 Transistors 100,000 10,000 1,000 Clock (MHz) 100 10 1 1970 1980 1990 2000 2010
  • 27. Fork/Join Java 7 concurrency JSR 166y
  • 28. JSR 166y Fork/Join • similar to MapReduce • useful for a certain class of problems
  • 29. JSR 166y Fork/Join Result solve(Problem problem) { if (problem is small enough) directly solve problem else { split problem into independent parts fork new subtasks to solve each part join all subtasks compose result from subresults } }
  • 30. JSR 166y Fork/Join • Create one ForkJoinPool • Wrap code in ForkJoinTask • Subclass RecursiveAction or RecursiveTask<E> • Need to override compute() method download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
  • 31. class Sum extends RecursiveTask<Long> { static final int SEQUENTIAL_THRESHOLD = 1000; Sum(int[] arr, int lo, int hi) { array = arr; low = lo; high = hi; } protected Long compute() { if(high - low <= SEQUENTIAL_THRESHOLD) { long sum = 0; for(int i=low; i < high; ++i) sum += array[i]; return sum; } else { int mid = low + (high - low) / 2; Sum left = new Sum(array, low, mid); Sum right = new Sum(array, mid, high); invokeAll(left, right); return right.join() + left.join(); } } }
  • 33. Still too complicated? mutable state, locks and visible by default is outdated java.util.concurrent helps, but can only go so far move from explicit to implicit parallelism
  • 34. Other JVM Languages (free to innovate) Scala/Akka • Powerful actors model • Parallel Collections Clojure • Immutable by default • Thread-isolation by default • STM subsystem • Multiple concurrency models
  • 36. Project Coin A set of small language changes should be added to JDK 7 (OpenJDK)
  • 37. Strings in switch Add the ability to switch on string values analogous to the existing ability to switch on values of the primitive types.
  • 38. Strings in switch String s = ... switch(s) { case "quux": processQuux(s); // fall-through case "bar": processFooOrBar(s); break; case "baz": processBaz(s); default: processDefault(s); break; }
  • 39. Improved Exception Handling • Catching multiple exception types • A single catch clause can now catch more than one exception types • Improved checking for re-thrown exceptions
  • 40. Improved Exception Handling try { doWork(file); } catch (IOException|SQLException ex) { throw ex;* } try { doWork(file); } catch (final Throwable t) { throw t; // ExceptionA or ExceptionB }
  • 41. Underscore in numbers public static void main(String... args) { // THE OLD WAY int oldBillion = 1000000000; // THE NEW WAY int newBillion = 1_000_000_000; }
  • 42. Automatic Resource Management • A *resource* is as an object that used to be closed manually • java.io.InputStream • OutputStream • Reader, Writer • java.sql.Connection, Statement, ResultSet • When the statement completes, whether normally or abruptly, all of its resources are closed automatically.
  • 43. Pre Java 7 public void copy(String src, String dest) throws IOEx{ InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); try { byte[] buf = new byte[8 * 1024]; int n; while ((n = in.read(buf)) >= 0) out.write(buf, 0, n); } finally { in.close(); out.close(); } }
  • 44. Pre Java 7 public void copy(String src, String dest) throws IOEx{ InputStream in = new FileInputStream(src); try { OutputStream out = new FileOutputStream(dest); try { byte[] buf = new byte[8 * 1024]; int n; while ((n = in.read(buf)) >= 0) out.write(buf, 0, n); } finally { out.close(); } } finally { in.close(); } }
  • 45. Automatic Resource Management public void copy(String src, String dest) throws IOEx{ try ( InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)){ byte[] buf = new byte[8 * 1024]; int n; while ((n = in.read(buf)) >= 0) out.write(buf, 0, n); } //in and out closes automagically }
  • 46. Improved Type Inference for Generic Instance
  • 47. Improved Type Inference for Generic Instance Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); Map<String, List<String>> anagrams = new HashMap<>();
  • 48. NIO.2 Network and File System JSR 203
  • 49. NIO.2 Network and File System – JSR 203 • java.io.File • java.nio.file.Path • java.nio.file.FileSystem • Other Usefull Methods
  • 50. Pre Java 7 URL url = new URL("http://www.blog.se/?page_id=1"); try ( FileOutputStream fos = new FileOutputStream(new File("output.txt")); InputStream is = url.openStream() ){ byte[] buf = new byte[4096]; int len; while ((len = is.read(buf)) > 0){ fos.write(buf, 0, len); } } catch (IOException e){ e.printStackTrace(); }
  • 51. NIO.2 Network and File System – JSR 203 URL url = new URL("http://www.blog.se/?page_id=1"); try (InputStream in = url.openStream()) { Files.copy(in, Paths.get("output.txt")); } catch(IOException ex){ ex.printStackTrace(); }
  • 52. Da Vinci Machine Project
  • 53. Da Vinci Machine Project • Support for dynamically typed languages • Python, Ruby, Perl, Javascript, Groovy... • Implementations will be more efficient • JVM level support • for such languages and their implementers
  • 54. Charles Nutter co-leads Jruby project Engine Yard
  • 56. Without invokedynamic Four existing forms of method dispatch virtual, interface, special, super JVM decides how they work What if you don‟t fit?
  • 57. invokedynamic User-defined dispatch Name, signature as usual Additional bootstrap method handle Bootstrap called first time to wire it up JVM then optimizes like “real Java”
  • 58. Method Handles Super-awesome function pointers Faster than reflection Curry-able Still talking directly to JVM Used by invokedynamic bootstrapping
  • 59. invokedynamic bootstrap 1st time method invokedynamic bytecode JVM target 2nd time method
  • 60. Example public static void print(String s) { System.out.println(s); }
  • 61. Example public static void main(java.lang.String[]); Code: 0: ldc #9 // String Hello, invokedynamic! 2: invokedynamic #18, 0 // InvokeDynamic #0:print:(Ljava/lang/String;)V 7: return invokedynamic bootstrap name and bytecode handle signature
  • 62. Example public static CallSite bootstrap(Lookup lookup, String name, MethodType signature{ MethodHandle handle = lookup.findStatic(this_class, name, signature); CallSite site = new ConstantCallSite(handle); return site; }
  • 63.
  • 64. JVM languages to benefit from invokedynamic • These gains will vary: • JRuby ? • Clojure ? • Increasing its performance • Big potential wins
  • 65. Other stuff in • TLS 1.2 • Elliptic-curve cryptography (ECC) • JDBC 4.1 • Binary literals • Better way to handle unsigned literals • Unicode 6.0 • Locale enhancement • Support for IETF BCP 47 and UTR 35
  • 66. Other stuff in • New platform APIs for 6u10 graphics features • Swing Nimbus look-and-feel • Swing JLayer component • Updated XML stack
  • 68. Java 7 Runtimes • Windows x86 • Server 2008, Server 2008 R2, 7 & 8 • Windows Vista, XP • Linux x86 • Oracle Linux 5.5+, 6.x • Red Hat Enterprise Linux 5.5+, 6.x • SuSE Linux Enterprise Server 10.x, 11.x • Ubuntu Linux 10.04 LTS, 11.04 • Solaris x86/SPARC • Solaris 10.9+, 11.x
  • 69. Other runtimes ”The IBM SDK for Java V7 is now available for the following platforms:” - 20 Sep 2011 • AIX • Linux • z/OS
  • 71. Java 7 Tool Support NetBeans 7 Eclipse 3.7 3.8 4.1 4.2 IntelliJ 10.5
  • 73. JVM Convergence Project “HotRockit” HotSpot HotRockit JRockit
  • 74. Plan B Modularization (Jigsaw) Language and VM Support Platform Modularization Project Lambda (JSR 335) Lambda Expressions for Java Type Annotations (JSR 308) JDK 8 Project Coin part II Date and Time API (JSR 310) JSR 337
  • 75. Plan B++ Project Nashorn New implementation of JavaScript Built from the ground up Leverage JVM and invoke dynamic Java FX 3.0 Open Sourced Bundled with Java 8 JDK 8 JSR 337
  • 76. Schedule May 2011: Expert Group formation Sep 2011: Early Draft Review Feb 2012: Public Review May 2012: Proposed Final Draft Oct 2012: Final Release JDK 8 JSR 337
  • 77. Schedule May 2011: Expert Group formation Sep 2011: Early Draft Review Feb 2012: Public Review May 2012: Proposed Final Draft Summer 2013: Final Release JDK 8 JSR 337
  • 78. Schedule JDK 8, b10 Developer Preview Now Available! JDK 8 JSR 337 jdk8.java.net
  • 79. JCP.next • Using the process to improve the process • JSR 348 • Transparency • Participation • Agility • Governance • A second JSR will be filed soon • JavaSE and JavaME EC - merged
  • 80. JCP, new members Twitter Azul System
  • 81. We‟re moving again • The JCP Dead Lock Needed to be Broken • OpenJDK is liberated (GPL) • JUG attendances are growing • Oracle marketing estimates 9-10 million devs • Dozens of new JVM languages • A Vibrant Java Ecosystem
  • 83. Summary • Java 7 is GA • Java 8 is on its way • The JVM Rocks • JCP.next • The community is very much alive!
  • 84. Mattias Karlsson www.linkedin.com/in/mattiask twitter: @matkar mattias.karlsson@avegagroup.s e Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names appearing on the slides may be trademarks of their respective owners. The development, release, and timing of any features or functionality described for Oracle„s products remains at the sole discretion of Oracle and JCP ©Copyright 2011