SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
<Insert Picture Here>




Java SE 7: The Platform Evolves
Terrence Barr
Senior Technologist, Mobile & Embedded Technologies
Email: terrence.barr@oracle.com
Blog: terrencebarr.wordpress.com
Disclaimer

The preceding 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.



                                                      3
                                                      3
Agenda
• Context
  • Priorities, Evolution, Communities
• Java SE 7
  •   Language Changes: Project Coin
  •   Library Changes: NIO2, Fork/Join
  •   JVM Changes: The DaVinci Machine
  •   Miscellaneous Updates, Platform/OS Support
• Java SE 8
  • Project Jigsaw: Modularizing the Java Platform
  • Project Lambda: Closures and More
• Java SE Products
• Wrap-Up

                                                     4
                                                     4
Context

          5
          5
Priorities for the Java Platforms

                Grow Developer Base

                Grow Adoption

                Increase Competitiveness

                Adapt to change
Java Communities
Definitions
 Java Standard Edition (Java SE) vs.
 Java Development Kit (JDK)
• Java SE                        • Java Development Kit
  • Definition of the software     • Oracle's implementation of
    platform                         Java SE
     • Specification documents     • Additional features not in
     • Implementation                the spec
     • Test suite (TCK)            • Tools and documentation
  • Implemented by several         • Deployment and
    groups                           management capabilities
  • Produced in the JCP            • Performance features
                                   • Produced in the OpenJDK
                                     project




                                                                  8
                                                                  8
How Java Evolves and Adapts




             Community Development of
            Java Technology Specifications
JCP Reforms

• Developers’ voice in the Executive Committee
  •   SOUJava
  •   Goldman Sachs
  •   London JavaCommunity
  •   Alex Terrazas
• JCP starting a program of reform
  • JSR 348: Towards a new version of the JCP
OpenJDK @ Oracle: One Year On
•   Clear commitment from Oracle
•   Roadmap for releases in 2011, 2012
•   JVM strategy for HotSpot & JRockit
•   Increased industry participation
•   Moving the Java SE platform forward again
•   Rebooting governance & retooling infrastructure
•   We're hiring!




                                                      11
                                                      11
Java SE 7

            12
            12
Evolving the Language
From “Evolving the Java Language” - JavaOne 2005
• Java language principles
  –   Reading is more important than writing
  –   Code should be a joy to read
  –   The language should not hide what is happening
  –   Code should do what it seems to do
  –   Simplicity matters
  –   Every “good” feature adds more “bad” weight
  –   Sometimes it is best to leave things out
• One language: with the same meaning everywhere
  • No dialects
• We will evolve the Java language
  • But cautiously, with a long term view
  • “first do no harm”            also “Growing a Language” - Guy Steele 1999
                                     “The Feel of Java” - James Gosling 1997

                                                                          13
                                                                          13
So you want to change the language?




                                      14
                                      14
Java SE 7 Release Contents

• JSR-336: Java SE 7 Release Contents
• Java Language
   • Project Coin (JSR-334)
• Class Libraries
   • NIO2 (JSR-203)
   • Fork-Join framework, ParallelArray (JSR-166y)
• Java Virtual Machine
   • The DaVinci Machine project (JSR-292)
   • invokedynamic bytecode
• Miscellaneous Things


                                                     15
                                                     15
Small
Section Divider
                          <Insert Picture Here>




      Language
      Changes
           Project Coin
                                          16
                                           16
coin, n. A piece of small change
coin, v. To create new language




                                   17
                                   17
Project Coin Constraints

• Small language changes
   • Small in specification, implementation, testing
   • No new keywords!
   • Wary of type system changes
• Coordinate with larger language changes
   – Project Lambda
   – Modularity
• One language, one javac




                                                       18
                                                       18
Better Integer Literal

• Binary literals

  int mask = 0b101010101010;


• With underscores for clarity

  int mask = 0b1010_1010_1010;
  long big = 9_223_783_036_967_937L;




                                       19
                                       19
String Switch Statement

• Today case label includes integer constants and enum
  constants
• Strings are constants too (immutable)




                                                         20
                                                         20
Discriminating Strings Today

int monthNameToDays(String s, int year) {

   if("April".equals(s) || "June".equals(s) ||
         "September".equals(s)
||"November".equals(s))
      return 30;

  if("January".equals(s) || "March".equals(s) ||
     "May".equals(s) || "July".equals(s) ||
     "August".equals(s) || "December".equals(s))
        return 31;

  if("February".equals(s))
     ...


                                                   21
                                                   21
Strings in Switch Statements
int monthNameToDays(String s, int year) {
  switch(s) {
    case "April": case "June":
    case "September": case "November":
      return 30;

    case "January": case "March":
    case "May": case "July":
    case "August": case "December":
      return 31;

    case "February”:
      ...
    default:
      ...

                                            22
                                            22
Simplifying Generics

• Pre-generics
List strList = new ArrayList();




                                  23
                                  23
Simplifying Generics

• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();




                                              24
                                              24
Simplifying Generics

• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();
List<Map<String, List<String>> strList =
  new ArrayList<Map<String, List<String>>();




                                              25
                                              25
Diamond Operator

• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();
List<Map<String, List<String>> strList =
  new ArrayList<Map<String, List<String>>();
• With diamond (<>) compiler infers type
List<String> strList = new ArrayList<>();
List<Map<String, List<String>> strList =
  new ArrayList<>();


                                              26
                                              26
Copying a File

InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);

byte[] buf = new byte[8192];
int n;

while (n = in.read(buf)) >= 0)
  out.write(buf, 0, n);




                                                 27
                                                 27
Copying a File (Better, but wrong)

InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);

try {
  byte[] buf = new byte[8192];
  int n;
  while (n = in.read(buf)) >= 0)
    out.write(buf, 0, n);
} finally {
  in.close();
  out.close();
}


                                                 28
                                                 28
Copying a File (Correct, but complex)
InputStream in = new FileInputStream(src);
try {
  OutputStream out = new FileOutputStream(dest);
  try {
    byte[] buf = new byte[8192];
    int n;
    while (n = in.read(buf)) >= 0)
      out.write(buf, 0, n);
  } finally {
    out.close();
  }
} finally {
  in.close();
}

                                                   29
                                                   29
Copying a File (Correct, but complex)
InputStream in = new FileInputStream(src);
try {
  OutputStream out = new FileOutputStream(dest);
  try {
    byte[] buf = new byte[8192];
    int n;
    while (n = in.read(buf)) >= 0)
      out.write(buf, 0, n);
  } finally {
    out.close();
  }
} finally {                     Exception thrown from
                               potentially three places.
  in.close();
                            Details of first two could be lost
}

                                                             30
                                                                 30
Automatic Resource Management

try (InputStream in = new FileInputStream(src),
     OutputStream out = new FileOutputStream(dest))
{
  byte[] buf = new byte[8192];
  int n;
  while (n = in.read(buf)) >= 0)
    out.write(buf, 0, n);
}




                                                 31
                                                  31
The Details

• Compiler desugars try-with-resources into nested try-
  finally blocks with variables to track exception state
• Suppressed exceptions are recorded for posterity
  using a new facillity of Throwable
• API support in JDK 7
   • New superinterface java.lang.AutoCloseable
   • All AutoCloseable and by extension java.io.Closeable
     types useable with try-with-resources
   • anything with a void close() method is a candidate
   • JDBC 4.1 retrofitted as AutoCloseable too



                                                            32
                                                            32
More Informative Backtraces

java.io.IOException
     at Suppress.write(Suppress.java:19)
     at Suppress.main(Suppress.java:8)
     Suppressed: java.io.IOException
         at Suppress.close(Suppress.java:24)
         at Suppress.main(Suppress.java:9)
     Suppressed: java.io.IOException
         at Suppress.close(Suppress.java:24)
         at Suppress.main(Suppress.java:9)




                                               33
                                               33
Varargs Warnings

class Test {
   public static void main(String... args) {
      List<List<String>> monthsInTwoLanguages =
        Arrays.asList(Arrays.asList("January",
                                    "February"),
                      Arrays.asList("Gennaio",
                                    "Febbraio" ));
   }
}

Test.java:7: warning:
[unchecked] unchecked    generic array creation
for varargs parameter    of type List<String>[]

          Arrays.asList(Arrays.asList("January",
                        ^
1   warning
                                                     34
                                                     34
Heap Pollution – JLSv3 4.12.2.1

• A variable of a parameterized type refers to an object
  that is not of that parameterized type
• For example, the variable of type List<String>[]
  might point to an array of Lists where the Lists did
  not contain strings
• Reports possible locations of ClassCastExceptions
  at runtime
• A consequence of erasure
• Possibly properly addressed by reification in the future



                                                             35
                                                             35
Varargs Warnings Revised

• New mandatory compiler warning at suspect varargs
  method declarations
• By applying an annotation at the declaration,
  warnings at the declaration and call sites can be
  suppressed
• @SuppressWarnings(value = “unchecked”)
• @SafeVarargs




                                                      36
                                                      36
Exceptions Galore
try {
   ...
} catch(ClassNotFoundException cnfe) {
   doSomethingClever(cnfe);
   throw cnfe;
} catch(InstantiationException ie) {
   log(ie);
   throw ie;
} catch(NoSuchMethodException nsme) {
   log(nsme);
   throw nsme;
} catch(InvocationTargetException ite) {
   log(ite);
   throw ite;
}


                                           37
                                           37
Multi-Catch
try {
   ...
} catch (ClassCastException e) {
  doSomethingClever(e);
  throw e;
} catch(InstantiationException |
      NoSuchMethodException |
      InvocationTargetException e) {
   log(e);
   throw e;
}




                                       38
                                       38
More Precise Rethrow
 try {
    // Reflective operations calling Class.forName,
    // Class.newInstance, Class.getMethod,
    // Method.invoke, etc.
 } catch(ReflectiveOperationException e) {
    //e means any of the subtype thrown from try {}
    log(e);
                            ReflectiveOperationException
    throw e;
 }
       ClassNotFoundException

          InstantiationException

           NoSuchMethodException

     InvocationTargetException


http://download.java.net/jdk7/docs/api/java/lang/ReflectiveOperationException.html39
                                                                                  39
40
40
New I/O 2 (NIO2) Libraries
 JSR 203

• Original Java I/O APIs presented challenges for
  developers
  •   Not designed to be extensible
  •   Many methods do not throw exceptions as expected
  •   rename() method works inconsistently
  •   Developers want greater access to file metadata
• Java NIO2 solves these problems




                                                         41
                                                         41
Java NIO2 Features
• Path is a replacement for File
  • Biggest impact on developers
• Better directory support
  • list() method can stream via iterator
  • Entries can be filtered using regular expressions in API
• Symbolic link support
• java.nio.file.Filesystem
  • interface to a filesystem (FAT, ZFS, Zip archive, network, etc)
• java.nio.file.attribute package
  • Access to file metadata




                                                                      42
                                                                      42
Path Class
• Equivalent of java.io.File in the new API
   – Immutable
• Have methods to access and manipulate Path
• Few ways to create a Path
   – From Paths and FileSystem

//Make a reference to the path
Path home = Paths.get(“/home/fred”);
//Resolve tmp from /home/fred -> /home/fred/tmp
Path tmpPath = home.resolve(“tmp”);
//Create a relative path from tmp -> ..
Path relativePath = tmpPath.relativize(home)
File file = relativePath.toFile();


                                                  43
                                                  43
File Operation – Copy, Move

• File copy is really easy
   – With fine grain control
Path src = Paths.get(“/home/fred/readme.txt”);
Path dst = Paths.get(“/home/fred/copy_readme.txt”);
Files.copy(src, dst,
      StandardCopyOption.COPY_ATTRIBUTES,
      StandardCopyOption.REPLACE_EXISTING);
• File move is supported
   – Optional atomic move supported
Path src = Paths.get(“/home/fred/readme.txt”);
Path dst = Paths.get(“/home/fred/readme.1st”);
Files.move(src, dst, StandardCopyOption.ATOMIC_MOVE);


                                                  44
                                                      44
Directories
• DirectoryStream iterate over entries
   – Scales to large directories
   – Uses less resources
   – Smooth out response time for remote file systems
   – Implements Iterable and Closeable for productivity
• Filtering support
   – Build-in support for glob, regex and custom filters

Path srcPath = Paths.get(“/home/fred/src”);
try (DirectoryStream<Path> dir =
      srcPath.newDirectoryStream(“*.java”)) {
   for (Path file: dir)
      System.out.println(file.getName());
}


                                                           45
                                                           45
The Free Lunch Is Over!




                                 Image courtesy of
                                 Herb Sutter



 Image courtesy of Herb Sutter                 46
                                               46
Concurrency in Java

• Pre-Java SE 5
  • Thread, Runnable, monitor synchronization
  • Low level, must write a lot of tricky code yourself
• Java SE 5
  • JSR 166, 166x: Executor framework, Callable, Future, Lock,
    synchronizers, concurrent collections
  • Best for coarse-grain tasks, with interdependent shared data
• Java SE 7
  • JSR 166y: Fork/Join framework, build on JSR166, 166x
  • Best for fine-grained, independent tasks and data
  • Efficient use of processor cycles, including work stealing


                                                                   47
                                                                   47
Key Classes
• ForkJoinPool
   – Executor service for running ForkJoinTask
• ForkJoinTask
   – The base class for forkjoin task
• RecursiveAction
   – A subclass of ForkJoinTask
   – A recursive resultless task
   – Implements compute() abstract method to perform
     calculation
• RecursiveTask
   – Similar to RecursiveAction but returns a result




                                                       48
                                                       48
Fork Join Algorithm
• Near always recursive
       –  Probably not efficient unless it is
• Designed for task that can be broken down into
 smaller pieces
      –   Eg. Fibonacci number fib(10) = fib(9) + fib(8)
 Result solve(Problem problem)
   if (problem is small) {
     directly solve problem
   } else {
     split problem into independent parts
     fork new subtasks to solve each part
     join all subtasks
     compose result from sub-results
   }
 }

                                                           49
                                                           49
ForkJoin Example – Fibonacci
public class Fibonacci extends RecursiveTask<Integer> {
  private final int number;
  public Fibonacci(int n) { number = n; }

    @Override protected Integer compute() {
      switch (number) {
        case 0: return (0);
        case 1: return (1);
        default:
          Fibonacci f1 = new Fibonacci(number – 1);
           Fibonacci f2 = new Fibonacci(number – 2);
            f1.fork(); f2.fork();
            return (f1.join() + f2.join());
      }
    }
}




                                                          50
                                                          50
ForkJoin Example – Fibonacci

ForkJoinPool pool = new ForkJoinPool();
Fibonacci r = new Fibonacci(10);
pool.submit(r);

while (!r.isDone()) {
   //Do some work
   ...
}

System.out.println("Result of fib(10) = " + r.get());




                                                        51
                                                        51
Client Libraries

•   Nimbus Look and Feel
•   Platform APIs for shaped and translucent windows
•   JLayer (formerly from Swing labs)
•   Optimized 2D rendering




                                                       52
                                                       52
Nimbus Look and Feel
• Better than Metal for cross platform look-and-feel
• Introduced in Java SE 6u10, now part of Swing
• Not the default L&F




                                                       53
                                                       53
JLayer component
Easy enrichment for Swing components




                                       54
                                       54
JLayer component
    The universal decorator

• Transparent decorator for a Swing component
• Controls the painting of its subcomponents
• Catches all input and focus events for the whole hierarchy


   // wrap your component with JLayer
   JLayer<JPanel> layer = new JLayer<JPanel>(panel);

   // custom ui provides all extra functionality
   layer.setUI(myLayerUI);

   // add the layer as usual component
   frame.add(layer);



                                                               55
                                                               55
Miscellaneous Updates

• Security
    • Eliptic curve cryptography
    • TLS 1.2
•   JAXP 1.4.4 (Java API for XML processing)
•   JAX-WS 2.2 (Java API for XML Web Services)
•   JAXB 2.2 (Java Architecture for XML Binding)
•   ClassLoader architecture changes
•   close() for URLClassLoader
•   Javadoc support for CSS
•   and more: http://openjdk.java.net/projects/jdk7/features/#f352


                                                                     56
                                                                     56
The DaVinci Machine Project (JSR-292)
(A multi-language renaissance for the JVM)




                   Better



                                             57
                                             57
Languages Like Virtual Machines

• Programming languages need runtime support
   •   Memory management / Garbage collection
   •   Concurrency control
   •   Security
   •   Reflection
   •   Debugging integration
   •   Standard libraries
• Compiler writers have to build these from scratch
• Targeting a VM allows reuse of infrastructure




                                                      58
                                                      58
JVM Specification

“The Java virtual machine knows
      nothing about the Java
programming language, only of a
particular binary format, the class
            file format.”
            1.2 The Java Virtual Machine Spec.


                                             59
                                                 59
Languages Running on the JVM
                                                                 Tea
 Zigzag                                   JESS                     Jickle     iScript
               Modula-2                                  Lisp
        Correlate           Nice
                                                 CAL
                                                                 JudoScript
                                                                            JavaScript
                      Simkin                Drools   Basic
 Icon     Groovy                 Eiffel
                                               v-language               Pascal Luck
                       Prolog        Mini
               Tcl                                      PLAN       Hojo
Rexx                 JavaFX Script                                              Scala
                                                               Funnel
          Tiger      Anvil                             Yassl                Oberon
                                                                               FScript
   E                         Smalltalk
          Logo
             Tiger                                  JHCR           JRuby
  Ada           G                                  Scheme
                      Clojure
                                                               Phobos
 Processing WebL Dawn                             TermWare
                                                                                 Sather
                                                                              Sleep
                    LLP                                            Pnuts      Bex Script
       BeanShell      Forth                       PHP
                                C#
                                     Yoix            SALSA ObjectScript
             Jython                               Piccola
                                                                                                60

                                                                                           60
                                                                                           60
InvokeDynamic Bytecode

• JVM currently has four ways to invoke method
  • Invokevirtual, invokeinterface, invokestatic, invokespecial
• All require full method signature data
• InvokeDynamic will use method handle
  • Effectively an indirect pointer to the method
• When dynamic method is first called bootstrap code
  determines method and creates handle
• Subsequent calls simply reference defined handle
• Type changes force a re-compute of the method
  location and an update to the handle
  • Method call changes are invisible to calling code


                                                                  61
                                                                  61
CallSite and MethodHandle
• invokedynamic linked to a CallSite
   – CallSite can be linked or unlinked
   – CallSite holder of MethodHandle
• MethodHandle is a directly executable reference to
 an underlying method, constructor, field
  – Can transform arguments and return type
  – Transformation – conversion, insertion, deletion, substitution




                                                                     62
                                                                     62
invokedynamic Illustrated
this[method_name](x, y)
invokedynamic
  [#bootstrapMethod]
  .this_method_name                     1. Invoke bootstrap


                                                 class LangaugeRuntime {
                                   2. Produces       bootstrapMethod(info) {
                                   CallSite              ...
  3.Complete linkage
                                                         return new
                                                 CallSite();
                        CallSite                     }


                                               class AClass {
                                                   aMethod(x, y) {
               4. Invokes method         Method        ...
                 implementation          Handle    }



                                                                               63
                                                                               63
JDK 7 Platform Support
• Windows x86
    • Server 2008, Server 2008 R2, 7 & 8 (when it GAs)
    • 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
• Apple OSX x86
    • Well underway - will be supported post-GA, detailed plan TBD

Note: JDK 7 should run on pretty much any Windows/Linux/Solaris.
  These configurations are the ones primarily tested by Oracle, and
  for which we provide commercial support.



                                                                      64
                                                                      64
Java SE 8

            65
            65
Java SE 8
        Project Jigsaw (JSR-294)
        Modularising the Java Platform



        Project Lambda (JSR 335)
        Closures and lambda expressions
        Better support for multi-core processors

        More Project Coin
        Small Language Changes



                                                   66
                                                   66
The Modular Java Platform
• Enables escape from “JAR Hell”
   – Eliminates class path
   – Package modules for automatic download & install
   – Generate native packages – deb, rpm, ips, etc
• Enables significant performance
 improvements
  – Incremental download → fast classloading
  – Optimise module content during installation
• Platform scalability – down to small devices
   – Well-specified SE subsets can fit into small devices




                                                            67
                                                            67
module-info.java


Entry point    Module name
                             Version

module com.foo @ 1.0.0 {
   class com.foo.app.Main
   requires org.bar.lib @ 2.1-alpha;
   requires edu.baz.util @ 5.2_11;
   provides com.foo.app.lib @ 1.0.0;

}
                 Dependency
    Virtual module

                                       68
                                       68
Project Lambda
 Closures and more
 openjdk.java.net/projects/lambda

• Lambda expressions
   – Way of defining anonymous methods
     without interface workaround
• SAM (Single Abstract Method)
  conversion with target typing
• Method references
• Library enhancements for internal
  iteration




                                         69
                                         69
Hypothetical Internal Iteration
double highestScore = students
       .filter(new Predicate<Student>() {
          public boolean isTrue(Student s) {
              return s.gradYear == 2010;
          }})
       .map(new Extractor<Student,Double>() {
          public Double extract(Student s) {
              return s.score;
          }})
       .max();
• Not inherently serial
   – students traversal not determined by developer
   – Looks like a functional language
• Anonymous inner class!


                                                      70
                                                      70
Introducing Lambda Expressions

double highestScore = students
      .filter(#{ Student s -> s.gradYear == 2010 })
      .map(#{ Student s -> s.score })
      .max();


   • Lambda expressions introduced with #
      – Signal to the JVM to defer execution of the code
      – Body may be an expression
   • Lambda expression are not syntactic sugar for
    anonymous inner class
     – Implemented with MethodHandle from JSR-292



                                                           71
                                                           71
Products

           72
           72
JVM Convergence – Forward looking
     Project “HotRockit”


JDK 7 GA – 07/11       JDK 7u2                JDK 7uX                  JDK 8 GA

• Hotspot 21           • Hotspot 22           • Hotspot 23             • Hotspot24
• Java SE 7 Support    • Performance          • More performance       • Java SE 8 Support
• Rebranding           • Enable large heaps   • Improved command       • All performance
• Improved JMX           with reasonable        line servicability       features from
                         latencies              (jcmd)                   JRockit ported
  Agent
                                              • Enable large heaps     • All servicability
• Command line
                                                with consistent          features from
  servicability tool                            reasonable latencies     JRockit ported
  (jrcmd)
                                              • No PermGen                • Compiler controls
                                                                         • Verbose logging
                                                  --- Premium ---         --- Premium ---
    --- Premium ---
                                              • Complete JRockit       • JRockit Mission
• Improved JRockit
                                                Flight Recorder          Control Memleak
  Mission Control                               Support                  Tool Support
  Console support
                                                                       • Soft Real Time GC
New Java SE Products




                       74
                       74
Wrap-Up

          75
          75
JavaOne San Francisco
Oct 2-6, 2011
• More Community Focus
  •   Standalone conference, dedicated venues
  •   New keynote hall, large exhibition hall (~50 exhibitors)
  •   Mason Street Cafe, 'Hang-Out Zones” throughout conference
  •   Gatherings, events, parties, and networking opportunities
  •   Easier to navigate, better signage and information
• Lots of High-Quality Content
  •   7 tracks, >400 Keynotes/Sessions/BOFs/HOLs
  •   Deep technical content from the experts
  •   ~60% industry content, ~40% Oracle
  •   Plus: Java University
• Register Now!

                                                                  76
                                                                  76
Conclusion

• Java SE 7
  • Incremental changes - Evolutionary, not revolutionary
  • Good solid set of features to make developers life easier
• Java SE 8
  • Major new features: Modularisation and Closures
  • More smaller features to be defined
  • Release: Scheduled for 2nd half of 2012
• Java Evolution Continues
  • Grow and adapt to the changing world of IT
  • Oracle and its partners are committed to a vibrant and
    evolving Java ecosystem



                                                                77
                                                                77
Resources


        Java SE Home Page
    
        http://www.oracle.com/technetwork/java/javase/overview/index.html

        JDK 7 download
    
        http://www.oracle.com/technetwork/java/javase/downloads/index.html

        JDK 7 + NetBeans 7.0.1 download
    
        http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-
        netbeans-download-432126.html

        JDK 7 Launch Event and Information
    
        http://terrencebarr.wordpress.com/2011/07/28/java-se-7-now-
        generally-available/

        The Java Spotlight Podcast
    
        http://www.thejavaspotlight.org/


                                                                             78
                                                                             78
79
79
Java se-7-evolves-toulouse-jug-2001-09-14

Weitere ähnliche Inhalte

Was ist angesagt?

Scalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBScalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBWilliam Candillon
 
Breaking the-database-type-barrier-replicating-across-different-dbms
Breaking the-database-type-barrier-replicating-across-different-dbmsBreaking the-database-type-barrier-replicating-across-different-dbms
Breaking the-database-type-barrier-replicating-across-different-dbmsLinas Virbalas
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Rittercatherinewall
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQLlyonjug
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in PostgresEDB
 
Deployment in Oracle SOA Suite and in Oracle BPM Suite
Deployment in Oracle SOA Suite and in Oracle BPM SuiteDeployment in Oracle SOA Suite and in Oracle BPM Suite
Deployment in Oracle SOA Suite and in Oracle BPM SuiteLonneke Dikmans
 
Couchbase Korea User Group 2nd Meetup #2
Couchbase Korea User Group 2nd Meetup #2Couchbase Korea User Group 2nd Meetup #2
Couchbase Korea User Group 2nd Meetup #2won min jang
 
Briefly: Scala Implicits, Pimp My Library and Java Interop
Briefly: Scala Implicits, Pimp My Library and Java InteropBriefly: Scala Implicits, Pimp My Library and Java Interop
Briefly: Scala Implicits, Pimp My Library and Java Interopbwmcadams
 
Cassandra 3.0 - JSON at scale - StampedeCon 2015
Cassandra 3.0 - JSON at scale - StampedeCon 2015Cassandra 3.0 - JSON at scale - StampedeCon 2015
Cassandra 3.0 - JSON at scale - StampedeCon 2015StampedeCon
 
MongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataMongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataSteven Francia
 
Java FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideJava FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideStephen Chin
 
BASTA 2013: Custom OData Provider
BASTA 2013: Custom OData ProviderBASTA 2013: Custom OData Provider
BASTA 2013: Custom OData ProviderRainer Stropek
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVMKoichi Sakata
 
BGOUG15: JSON support in MySQL 5.7
BGOUG15: JSON support in MySQL 5.7BGOUG15: JSON support in MySQL 5.7
BGOUG15: JSON support in MySQL 5.7Georgi Kodinov
 
Hjelp, vi skal kode funksjonelt i Java!
Hjelp, vi skal kode funksjonelt i Java!Hjelp, vi skal kode funksjonelt i Java!
Hjelp, vi skal kode funksjonelt i Java!Fredrik Vraalsen
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Sunghyouk Bae
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Rubysbeam
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainersSunghyouk Bae
 
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB Rakuten Group, Inc.
 

Was ist angesagt? (20)

Cassandra NoSQL
Cassandra NoSQLCassandra NoSQL
Cassandra NoSQL
 
Scalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBScalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDB
 
Breaking the-database-type-barrier-replicating-across-different-dbms
Breaking the-database-type-barrier-replicating-across-different-dbmsBreaking the-database-type-barrier-replicating-across-different-dbms
Breaking the-database-type-barrier-replicating-across-different-dbms
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in Postgres
 
Deployment in Oracle SOA Suite and in Oracle BPM Suite
Deployment in Oracle SOA Suite and in Oracle BPM SuiteDeployment in Oracle SOA Suite and in Oracle BPM Suite
Deployment in Oracle SOA Suite and in Oracle BPM Suite
 
Couchbase Korea User Group 2nd Meetup #2
Couchbase Korea User Group 2nd Meetup #2Couchbase Korea User Group 2nd Meetup #2
Couchbase Korea User Group 2nd Meetup #2
 
Briefly: Scala Implicits, Pimp My Library and Java Interop
Briefly: Scala Implicits, Pimp My Library and Java InteropBriefly: Scala Implicits, Pimp My Library and Java Interop
Briefly: Scala Implicits, Pimp My Library and Java Interop
 
Cassandra 3.0 - JSON at scale - StampedeCon 2015
Cassandra 3.0 - JSON at scale - StampedeCon 2015Cassandra 3.0 - JSON at scale - StampedeCon 2015
Cassandra 3.0 - JSON at scale - StampedeCon 2015
 
MongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataMongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous Data
 
Java FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideJava FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's Guide
 
BASTA 2013: Custom OData Provider
BASTA 2013: Custom OData ProviderBASTA 2013: Custom OData Provider
BASTA 2013: Custom OData Provider
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVM
 
BGOUG15: JSON support in MySQL 5.7
BGOUG15: JSON support in MySQL 5.7BGOUG15: JSON support in MySQL 5.7
BGOUG15: JSON support in MySQL 5.7
 
Hjelp, vi skal kode funksjonelt i Java!
Hjelp, vi skal kode funksjonelt i Java!Hjelp, vi skal kode funksjonelt i Java!
Hjelp, vi skal kode funksjonelt i Java!
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
 
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
 

Andere mochten auch

Java SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsJava SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsFu Cheng
 
What's New in spring-security-core 2.0
What's New in spring-security-core 2.0What's New in spring-security-core 2.0
What's New in spring-security-core 2.0Burt Beckwith
 
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring SecurityJohn Lewis
 
What's Coming in Spring 3.0
What's Coming in Spring 3.0What's Coming in Spring 3.0
What's Coming in Spring 3.0Matt Raible
 
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)DevelopIntelligence
 
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013Aaron Parecki
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2Aaron Parecki
 
Spring Security
Spring SecuritySpring Security
Spring SecurityBoy Tech
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMakoto Kakuta
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2Rodrigo Cândido da Silva
 
JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2Rodrigo Cândido da Silva
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Matt Raible
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerJAX London
 
OAuth for your API - The Big Picture
OAuth for your API - The Big PictureOAuth for your API - The Big Picture
OAuth for your API - The Big PictureApigee | Google Cloud
 
Spring security integrate with mule
Spring security integrate with muleSpring security integrate with mule
Spring security integrate with muleSon Nguyen
 

Andere mochten auch (20)

Java SE 7 New Features and Enhancements
Java SE 7 New Features and EnhancementsJava SE 7 New Features and Enhancements
Java SE 7 New Features and Enhancements
 
What's New in spring-security-core 2.0
What's New in spring-security-core 2.0What's New in spring-security-core 2.0
What's New in spring-security-core 2.0
 
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring Security
 
What's Coming in Spring 3.0
What's Coming in Spring 3.0What's Coming in Spring 3.0
What's Coming in Spring 3.0
 
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
 
The State of OAuth2
The State of OAuth2The State of OAuth2
The State of OAuth2
 
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013
Using ArcGIS with OAuth 2.0 - Esri DevSummit Dubai 2013
 
Spring security
Spring securitySpring security
Spring security
 
Java 7 New Features
Java 7 New FeaturesJava 7 New Features
Java 7 New Features
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Spring Security 3
Spring Security 3Spring Security 3
Spring Security 3
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuth
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
 
JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
 
Spring security
Spring securitySpring security
Spring security
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave Syer
 
OAuth for your API - The Big Picture
OAuth for your API - The Big PictureOAuth for your API - The Big Picture
OAuth for your API - The Big Picture
 
Spring security integrate with mule
Spring security integrate with muleSpring security integrate with mule
Spring security integrate with mule
 

Ähnlich wie Java se-7-evolves-toulouse-jug-2001-09-14

Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mSteve Elliott
 
Java Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.EasyJava Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.Easyroialdaag
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment, Inc.
 
The Why and How of Scala at Twitter
The Why and How of Scala at TwitterThe Why and How of Scala at Twitter
The Why and How of Scala at TwitterAlex Payne
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part IIEugene Lazutkin
 
Introduction to Scala language
Introduction to Scala languageIntroduction to Scala language
Introduction to Scala languageAaqib Pervaiz
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevMattias Karlsson
 
Building DSLs with Scala
Building DSLs with ScalaBuilding DSLs with Scala
Building DSLs with ScalaMohit Jaggi
 
Kotlin for Android Developers - 1
Kotlin for Android Developers - 1Kotlin for Android Developers - 1
Kotlin for Android Developers - 1Mohamed Nabil, MSc.
 
Building microservices with Kotlin
Building microservices with KotlinBuilding microservices with Kotlin
Building microservices with KotlinHaim Yadid
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiSoftware Guru
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformationLars Marius Garshol
 
Rafael Bagmanov «Scala in a wild enterprise»
Rafael Bagmanov «Scala in a wild enterprise»Rafael Bagmanov «Scala in a wild enterprise»
Rafael Bagmanov «Scala in a wild enterprise»e-Legion
 
Scala final ppt vinay
Scala final ppt vinayScala final ppt vinay
Scala final ppt vinayViplav Jain
 

Ähnlich wie Java se-7-evolves-toulouse-jug-2001-09-14 (20)

Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3m
 
Java Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.EasyJava Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.Easy
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8
 
The Why and How of Scala at Twitter
The Why and How of Scala at TwitterThe Why and How of Scala at Twitter
The Why and How of Scala at Twitter
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part II
 
Introduction to Scala language
Introduction to Scala languageIntroduction to Scala language
Introduction to Scala language
 
Unit 1
Unit 1Unit 1
Unit 1
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
Java days gbg online
Java days gbg onlineJava days gbg online
Java days gbg online
 
Building DSLs with Scala
Building DSLs with ScalaBuilding DSLs with Scala
Building DSLs with Scala
 
Kotlin for Android Developers - 1
Kotlin for Android Developers - 1Kotlin for Android Developers - 1
Kotlin for Android Developers - 1
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
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
 
Building microservices with Kotlin
Building microservices with KotlinBuilding microservices with Kotlin
Building microservices with Kotlin
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformation
 
Rafael Bagmanov «Scala in a wild enterprise»
Rafael Bagmanov «Scala in a wild enterprise»Rafael Bagmanov «Scala in a wild enterprise»
Rafael Bagmanov «Scala in a wild enterprise»
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
Scala final ppt vinay
Scala final ppt vinayScala final ppt vinay
Scala final ppt vinay
 

Kürzlich hochgeladen

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
 
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
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
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
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"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
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Kürzlich hochgeladen (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
 
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
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
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 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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"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
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Java se-7-evolves-toulouse-jug-2001-09-14

  • 1.
  • 2. <Insert Picture Here> Java SE 7: The Platform Evolves Terrence Barr Senior Technologist, Mobile & Embedded Technologies Email: terrence.barr@oracle.com Blog: terrencebarr.wordpress.com
  • 3. Disclaimer The preceding 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. 3 3
  • 4. Agenda • Context • Priorities, Evolution, Communities • Java SE 7 • Language Changes: Project Coin • Library Changes: NIO2, Fork/Join • JVM Changes: The DaVinci Machine • Miscellaneous Updates, Platform/OS Support • Java SE 8 • Project Jigsaw: Modularizing the Java Platform • Project Lambda: Closures and More • Java SE Products • Wrap-Up 4 4
  • 5. Context 5 5
  • 6. Priorities for the Java Platforms Grow Developer Base Grow Adoption Increase Competitiveness Adapt to change
  • 8. Definitions Java Standard Edition (Java SE) vs. Java Development Kit (JDK) • Java SE • Java Development Kit • Definition of the software • Oracle's implementation of platform Java SE • Specification documents • Additional features not in • Implementation the spec • Test suite (TCK) • Tools and documentation • Implemented by several • Deployment and groups management capabilities • Produced in the JCP • Performance features • Produced in the OpenJDK project 8 8
  • 9. How Java Evolves and Adapts Community Development of Java Technology Specifications
  • 10. JCP Reforms • Developers’ voice in the Executive Committee • SOUJava • Goldman Sachs • London JavaCommunity • Alex Terrazas • JCP starting a program of reform • JSR 348: Towards a new version of the JCP
  • 11. OpenJDK @ Oracle: One Year On • Clear commitment from Oracle • Roadmap for releases in 2011, 2012 • JVM strategy for HotSpot & JRockit • Increased industry participation • Moving the Java SE platform forward again • Rebooting governance & retooling infrastructure • We're hiring! 11 11
  • 12. Java SE 7 12 12
  • 13. Evolving the Language From “Evolving the Java Language” - JavaOne 2005 • Java language principles – Reading is more important than writing – Code should be a joy to read – The language should not hide what is happening – Code should do what it seems to do – Simplicity matters – Every “good” feature adds more “bad” weight – Sometimes it is best to leave things out • One language: with the same meaning everywhere • No dialects • We will evolve the Java language • But cautiously, with a long term view • “first do no harm” also “Growing a Language” - Guy Steele 1999 “The Feel of Java” - James Gosling 1997 13 13
  • 14. So you want to change the language? 14 14
  • 15. Java SE 7 Release Contents • JSR-336: Java SE 7 Release Contents • Java Language • Project Coin (JSR-334) • Class Libraries • NIO2 (JSR-203) • Fork-Join framework, ParallelArray (JSR-166y) • Java Virtual Machine • The DaVinci Machine project (JSR-292) • invokedynamic bytecode • Miscellaneous Things 15 15
  • 16. Small Section Divider <Insert Picture Here> Language Changes Project Coin 16 16
  • 17. coin, n. A piece of small change coin, v. To create new language 17 17
  • 18. Project Coin Constraints • Small language changes • Small in specification, implementation, testing • No new keywords! • Wary of type system changes • Coordinate with larger language changes – Project Lambda – Modularity • One language, one javac 18 18
  • 19. Better Integer Literal • Binary literals int mask = 0b101010101010; • With underscores for clarity int mask = 0b1010_1010_1010; long big = 9_223_783_036_967_937L; 19 19
  • 20. String Switch Statement • Today case label includes integer constants and enum constants • Strings are constants too (immutable) 20 20
  • 21. Discriminating Strings Today int monthNameToDays(String s, int year) { if("April".equals(s) || "June".equals(s) || "September".equals(s) ||"November".equals(s)) return 30; if("January".equals(s) || "March".equals(s) || "May".equals(s) || "July".equals(s) || "August".equals(s) || "December".equals(s)) return 31; if("February".equals(s)) ... 21 21
  • 22. Strings in Switch Statements int monthNameToDays(String s, int year) { switch(s) { case "April": case "June": case "September": case "November": return 30; case "January": case "March": case "May": case "July": case "August": case "December": return 31; case "February”: ... default: ... 22 22
  • 23. Simplifying Generics • Pre-generics List strList = new ArrayList(); 23 23
  • 24. Simplifying Generics • Pre-generics List strList = new ArrayList(); • With Generics List<String> strList = new ArrayList<String>(); 24 24
  • 25. Simplifying Generics • Pre-generics List strList = new ArrayList(); • With Generics List<String> strList = new ArrayList<String>(); List<Map<String, List<String>> strList = new ArrayList<Map<String, List<String>>(); 25 25
  • 26. Diamond Operator • Pre-generics List strList = new ArrayList(); • With Generics List<String> strList = new ArrayList<String>(); List<Map<String, List<String>> strList = new ArrayList<Map<String, List<String>>(); • With diamond (<>) compiler infers type List<String> strList = new ArrayList<>(); List<Map<String, List<String>> strList = new ArrayList<>(); 26 26
  • 27. Copying a File InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n); 27 27
  • 28. Copying a File (Better, but wrong) InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); try { byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n); } finally { in.close(); out.close(); } 28 28
  • 29. Copying a File (Correct, but complex) InputStream in = new FileInputStream(src); try { OutputStream out = new FileOutputStream(dest); try { byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n); } finally { out.close(); } } finally { in.close(); } 29 29
  • 30. Copying a File (Correct, but complex) InputStream in = new FileInputStream(src); try { OutputStream out = new FileOutputStream(dest); try { byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n); } finally { out.close(); } } finally { Exception thrown from potentially three places. in.close(); Details of first two could be lost } 30 30
  • 31. Automatic Resource Management try (InputStream in = new FileInputStream(src), OutputStream out = new FileOutputStream(dest)) { byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n); } 31 31
  • 32. The Details • Compiler desugars try-with-resources into nested try- finally blocks with variables to track exception state • Suppressed exceptions are recorded for posterity using a new facillity of Throwable • API support in JDK 7 • New superinterface java.lang.AutoCloseable • All AutoCloseable and by extension java.io.Closeable types useable with try-with-resources • anything with a void close() method is a candidate • JDBC 4.1 retrofitted as AutoCloseable too 32 32
  • 33. More Informative Backtraces java.io.IOException at Suppress.write(Suppress.java:19) at Suppress.main(Suppress.java:8) Suppressed: java.io.IOException at Suppress.close(Suppress.java:24) at Suppress.main(Suppress.java:9) Suppressed: java.io.IOException at Suppress.close(Suppress.java:24) at Suppress.main(Suppress.java:9) 33 33
  • 34. Varargs Warnings class Test { public static void main(String... args) { List<List<String>> monthsInTwoLanguages = Arrays.asList(Arrays.asList("January", "February"), Arrays.asList("Gennaio", "Febbraio" )); } } Test.java:7: warning: [unchecked] unchecked generic array creation for varargs parameter of type List<String>[] Arrays.asList(Arrays.asList("January", ^ 1 warning 34 34
  • 35. Heap Pollution – JLSv3 4.12.2.1 • A variable of a parameterized type refers to an object that is not of that parameterized type • For example, the variable of type List<String>[] might point to an array of Lists where the Lists did not contain strings • Reports possible locations of ClassCastExceptions at runtime • A consequence of erasure • Possibly properly addressed by reification in the future 35 35
  • 36. Varargs Warnings Revised • New mandatory compiler warning at suspect varargs method declarations • By applying an annotation at the declaration, warnings at the declaration and call sites can be suppressed • @SuppressWarnings(value = “unchecked”) • @SafeVarargs 36 36
  • 37. Exceptions Galore try { ... } catch(ClassNotFoundException cnfe) { doSomethingClever(cnfe); throw cnfe; } catch(InstantiationException ie) { log(ie); throw ie; } catch(NoSuchMethodException nsme) { log(nsme); throw nsme; } catch(InvocationTargetException ite) { log(ite); throw ite; } 37 37
  • 38. Multi-Catch try { ... } catch (ClassCastException e) { doSomethingClever(e); throw e; } catch(InstantiationException | NoSuchMethodException | InvocationTargetException e) { log(e); throw e; } 38 38
  • 39. More Precise Rethrow try { // Reflective operations calling Class.forName, // Class.newInstance, Class.getMethod, // Method.invoke, etc. } catch(ReflectiveOperationException e) { //e means any of the subtype thrown from try {} log(e); ReflectiveOperationException throw e; } ClassNotFoundException InstantiationException NoSuchMethodException InvocationTargetException http://download.java.net/jdk7/docs/api/java/lang/ReflectiveOperationException.html39 39
  • 40. 40 40
  • 41. New I/O 2 (NIO2) Libraries JSR 203 • Original Java I/O APIs presented challenges for developers • Not designed to be extensible • Many methods do not throw exceptions as expected • rename() method works inconsistently • Developers want greater access to file metadata • Java NIO2 solves these problems 41 41
  • 42. Java NIO2 Features • Path is a replacement for File • Biggest impact on developers • Better directory support • list() method can stream via iterator • Entries can be filtered using regular expressions in API • Symbolic link support • java.nio.file.Filesystem • interface to a filesystem (FAT, ZFS, Zip archive, network, etc) • java.nio.file.attribute package • Access to file metadata 42 42
  • 43. Path Class • Equivalent of java.io.File in the new API – Immutable • Have methods to access and manipulate Path • Few ways to create a Path – From Paths and FileSystem //Make a reference to the path Path home = Paths.get(“/home/fred”); //Resolve tmp from /home/fred -> /home/fred/tmp Path tmpPath = home.resolve(“tmp”); //Create a relative path from tmp -> .. Path relativePath = tmpPath.relativize(home) File file = relativePath.toFile(); 43 43
  • 44. File Operation – Copy, Move • File copy is really easy – With fine grain control Path src = Paths.get(“/home/fred/readme.txt”); Path dst = Paths.get(“/home/fred/copy_readme.txt”); Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING); • File move is supported – Optional atomic move supported Path src = Paths.get(“/home/fred/readme.txt”); Path dst = Paths.get(“/home/fred/readme.1st”); Files.move(src, dst, StandardCopyOption.ATOMIC_MOVE); 44 44
  • 45. Directories • DirectoryStream iterate over entries – Scales to large directories – Uses less resources – Smooth out response time for remote file systems – Implements Iterable and Closeable for productivity • Filtering support – Build-in support for glob, regex and custom filters Path srcPath = Paths.get(“/home/fred/src”); try (DirectoryStream<Path> dir = srcPath.newDirectoryStream(“*.java”)) { for (Path file: dir) System.out.println(file.getName()); } 45 45
  • 46. The Free Lunch Is Over! Image courtesy of Herb Sutter Image courtesy of Herb Sutter 46 46
  • 47. Concurrency in Java • Pre-Java SE 5 • Thread, Runnable, monitor synchronization • Low level, must write a lot of tricky code yourself • Java SE 5 • JSR 166, 166x: Executor framework, Callable, Future, Lock, synchronizers, concurrent collections • Best for coarse-grain tasks, with interdependent shared data • Java SE 7 • JSR 166y: Fork/Join framework, build on JSR166, 166x • Best for fine-grained, independent tasks and data • Efficient use of processor cycles, including work stealing 47 47
  • 48. Key Classes • ForkJoinPool – Executor service for running ForkJoinTask • ForkJoinTask – The base class for forkjoin task • RecursiveAction – A subclass of ForkJoinTask – A recursive resultless task – Implements compute() abstract method to perform calculation • RecursiveTask – Similar to RecursiveAction but returns a result 48 48
  • 49. Fork Join Algorithm • Near always recursive – Probably not efficient unless it is • Designed for task that can be broken down into smaller pieces – Eg. Fibonacci number fib(10) = fib(9) + fib(8) Result solve(Problem problem) if (problem is small) { directly solve problem } else { split problem into independent parts fork new subtasks to solve each part join all subtasks compose result from sub-results } } 49 49
  • 50. ForkJoin Example – Fibonacci public class Fibonacci extends RecursiveTask<Integer> { private final int number; public Fibonacci(int n) { number = n; } @Override protected Integer compute() { switch (number) { case 0: return (0); case 1: return (1); default: Fibonacci f1 = new Fibonacci(number – 1); Fibonacci f2 = new Fibonacci(number – 2); f1.fork(); f2.fork(); return (f1.join() + f2.join()); } } } 50 50
  • 51. ForkJoin Example – Fibonacci ForkJoinPool pool = new ForkJoinPool(); Fibonacci r = new Fibonacci(10); pool.submit(r); while (!r.isDone()) { //Do some work ... } System.out.println("Result of fib(10) = " + r.get()); 51 51
  • 52. Client Libraries • Nimbus Look and Feel • Platform APIs for shaped and translucent windows • JLayer (formerly from Swing labs) • Optimized 2D rendering 52 52
  • 53. Nimbus Look and Feel • Better than Metal for cross platform look-and-feel • Introduced in Java SE 6u10, now part of Swing • Not the default L&F 53 53
  • 54. JLayer component Easy enrichment for Swing components 54 54
  • 55. JLayer component The universal decorator • Transparent decorator for a Swing component • Controls the painting of its subcomponents • Catches all input and focus events for the whole hierarchy // wrap your component with JLayer JLayer<JPanel> layer = new JLayer<JPanel>(panel); // custom ui provides all extra functionality layer.setUI(myLayerUI); // add the layer as usual component frame.add(layer); 55 55
  • 56. Miscellaneous Updates • Security • Eliptic curve cryptography • TLS 1.2 • JAXP 1.4.4 (Java API for XML processing) • JAX-WS 2.2 (Java API for XML Web Services) • JAXB 2.2 (Java Architecture for XML Binding) • ClassLoader architecture changes • close() for URLClassLoader • Javadoc support for CSS • and more: http://openjdk.java.net/projects/jdk7/features/#f352 56 56
  • 57. The DaVinci Machine Project (JSR-292) (A multi-language renaissance for the JVM) Better 57 57
  • 58. Languages Like Virtual Machines • Programming languages need runtime support • Memory management / Garbage collection • Concurrency control • Security • Reflection • Debugging integration • Standard libraries • Compiler writers have to build these from scratch • Targeting a VM allows reuse of infrastructure 58 58
  • 59. JVM Specification “The Java virtual machine knows nothing about the Java programming language, only of a particular binary format, the class file format.” 1.2 The Java Virtual Machine Spec. 59 59
  • 60. Languages Running on the JVM Tea Zigzag JESS Jickle iScript Modula-2 Lisp Correlate Nice CAL JudoScript JavaScript Simkin Drools Basic Icon Groovy Eiffel v-language Pascal Luck Prolog Mini Tcl PLAN Hojo Rexx JavaFX Script Scala Funnel Tiger Anvil Yassl Oberon FScript E Smalltalk Logo Tiger JHCR JRuby Ada G Scheme Clojure Phobos Processing WebL Dawn TermWare Sather Sleep LLP Pnuts Bex Script BeanShell Forth PHP C# Yoix SALSA ObjectScript Jython Piccola 60 60 60
  • 61. InvokeDynamic Bytecode • JVM currently has four ways to invoke method • Invokevirtual, invokeinterface, invokestatic, invokespecial • All require full method signature data • InvokeDynamic will use method handle • Effectively an indirect pointer to the method • When dynamic method is first called bootstrap code determines method and creates handle • Subsequent calls simply reference defined handle • Type changes force a re-compute of the method location and an update to the handle • Method call changes are invisible to calling code 61 61
  • 62. CallSite and MethodHandle • invokedynamic linked to a CallSite – CallSite can be linked or unlinked – CallSite holder of MethodHandle • MethodHandle is a directly executable reference to an underlying method, constructor, field – Can transform arguments and return type – Transformation – conversion, insertion, deletion, substitution 62 62
  • 63. invokedynamic Illustrated this[method_name](x, y) invokedynamic [#bootstrapMethod] .this_method_name 1. Invoke bootstrap class LangaugeRuntime { 2. Produces bootstrapMethod(info) { CallSite ... 3.Complete linkage return new CallSite(); CallSite } class AClass { aMethod(x, y) { 4. Invokes method Method ... implementation Handle } 63 63
  • 64. JDK 7 Platform Support • Windows x86 • Server 2008, Server 2008 R2, 7 & 8 (when it GAs) • 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 • Apple OSX x86 • Well underway - will be supported post-GA, detailed plan TBD Note: JDK 7 should run on pretty much any Windows/Linux/Solaris. These configurations are the ones primarily tested by Oracle, and for which we provide commercial support. 64 64
  • 65. Java SE 8 65 65
  • 66. Java SE 8 Project Jigsaw (JSR-294) Modularising the Java Platform Project Lambda (JSR 335) Closures and lambda expressions Better support for multi-core processors More Project Coin Small Language Changes 66 66
  • 67. The Modular Java Platform • Enables escape from “JAR Hell” – Eliminates class path – Package modules for automatic download & install – Generate native packages – deb, rpm, ips, etc • Enables significant performance improvements – Incremental download → fast classloading – Optimise module content during installation • Platform scalability – down to small devices – Well-specified SE subsets can fit into small devices 67 67
  • 68. module-info.java Entry point Module name Version module com.foo @ 1.0.0 { class com.foo.app.Main requires org.bar.lib @ 2.1-alpha; requires edu.baz.util @ 5.2_11; provides com.foo.app.lib @ 1.0.0; } Dependency Virtual module 68 68
  • 69. Project Lambda Closures and more openjdk.java.net/projects/lambda • Lambda expressions – Way of defining anonymous methods without interface workaround • SAM (Single Abstract Method) conversion with target typing • Method references • Library enhancements for internal iteration 69 69
  • 70. Hypothetical Internal Iteration double highestScore = students .filter(new Predicate<Student>() { public boolean isTrue(Student s) { return s.gradYear == 2010; }}) .map(new Extractor<Student,Double>() { public Double extract(Student s) { return s.score; }}) .max(); • Not inherently serial – students traversal not determined by developer – Looks like a functional language • Anonymous inner class! 70 70
  • 71. Introducing Lambda Expressions double highestScore = students .filter(#{ Student s -> s.gradYear == 2010 }) .map(#{ Student s -> s.score }) .max(); • Lambda expressions introduced with # – Signal to the JVM to defer execution of the code – Body may be an expression • Lambda expression are not syntactic sugar for anonymous inner class – Implemented with MethodHandle from JSR-292 71 71
  • 72. Products 72 72
  • 73. JVM Convergence – Forward looking Project “HotRockit” JDK 7 GA – 07/11 JDK 7u2 JDK 7uX JDK 8 GA • Hotspot 21 • Hotspot 22 • Hotspot 23 • Hotspot24 • Java SE 7 Support • Performance • More performance • Java SE 8 Support • Rebranding • Enable large heaps • Improved command • All performance • Improved JMX with reasonable line servicability features from latencies (jcmd) JRockit ported Agent • Enable large heaps • All servicability • Command line with consistent features from servicability tool reasonable latencies JRockit ported (jrcmd) • No PermGen • Compiler controls • Verbose logging --- Premium --- --- Premium --- --- Premium --- • Complete JRockit • JRockit Mission • Improved JRockit Flight Recorder Control Memleak Mission Control Support Tool Support Console support • Soft Real Time GC
  • 74. New Java SE Products 74 74
  • 75. Wrap-Up 75 75
  • 76. JavaOne San Francisco Oct 2-6, 2011 • More Community Focus • Standalone conference, dedicated venues • New keynote hall, large exhibition hall (~50 exhibitors) • Mason Street Cafe, 'Hang-Out Zones” throughout conference • Gatherings, events, parties, and networking opportunities • Easier to navigate, better signage and information • Lots of High-Quality Content • 7 tracks, >400 Keynotes/Sessions/BOFs/HOLs • Deep technical content from the experts • ~60% industry content, ~40% Oracle • Plus: Java University • Register Now! 76 76
  • 77. Conclusion • Java SE 7 • Incremental changes - Evolutionary, not revolutionary • Good solid set of features to make developers life easier • Java SE 8 • Major new features: Modularisation and Closures • More smaller features to be defined • Release: Scheduled for 2nd half of 2012 • Java Evolution Continues • Grow and adapt to the changing world of IT • Oracle and its partners are committed to a vibrant and evolving Java ecosystem 77 77
  • 78. Resources  Java SE Home Page  http://www.oracle.com/technetwork/java/javase/overview/index.html  JDK 7 download  http://www.oracle.com/technetwork/java/javase/downloads/index.html  JDK 7 + NetBeans 7.0.1 download  http://www.oracle.com/technetwork/java/javase/downloads/jdk-7- netbeans-download-432126.html  JDK 7 Launch Event and Information  http://terrencebarr.wordpress.com/2011/07/28/java-se-7-now- generally-available/  The Java Spotlight Podcast  http://www.thejavaspotlight.org/ 78 78
  • 79. 79 79