SlideShare a Scribd company logo
The Future is Nigh
News In the Upcoming Java 7




                              1
Remember Java EE 5?
                    Ease of Development Focus
                Major Revamp of Programming Model
               EJB™ 3.0 support for POJOs means less
                learn, less to code and less to maintain
              New Java™ Persistence API makes object/
                relational mapping cleaner and easier
             New and updated Web Services (JAX-WS 2.0
             and JAXB 2.0) simplifies SOA implementation
              JavaServer™ Faces 1.2 facilitates building
                  Web 2.0 Applications with AJAX
               Annotations often eliminates the need for
                       deployment descriptors
             Supported by NetBeans™ 5.5 Enterprise Pack
                             Get the SDK:
               http://java.sun.com/javaee/downloads
                                                           2
History of Enterprise Java
                                                                Ease of
                                                              Development
                                                               Java EE 5
                                                                Ease of
                                               Web Services   Development,
                                                              Annotations,
                                                J2EE 1.4        EJB 3.0
                                                               Persistence
                                                  Web
                                Robustness      Services,     API, New and
                                                              Updated Web
                                               Management,
                                 J2EE 1.3
                 Enterprise                                     Services
                                               Deployment,
                    Java           CMP,          Async.
                  Platform       Connector      Connector
                                Architecture
                 J2EE 1.2
                Servlet, JSP,
                 EJB, JMS,
                 RMI/IIOP
  JPE Project




                                                                             3
Theme for Java EE 6



         Rightsizing
    >                  <
        the Platform

                           4
Rightsizing
• “Ease of development is good, but…
  … the platform still feels too big.”
 > Feedback: we want less bloat
• Reduce size, without losing focus
• Make the platform fit a particular class of applications
  well
• Increase flexibility of deployment




                                                             5
New in Java EE 6
• Profiles
• Pruning
• Extensibility
• More ease of development




                             6
Pruning
• Make some components optional
• Send a strong message to application developers
• Same rules as Java SE apply:
 > “pruned now, optional in next release”
• Likely candidates for pruning:
 > EJB Entity Beans—Replaced by JPA
 > JAX-RPC—Replaced by JAX-WS
 > JAXR—Used Infrequently
 > JSR-88— Used Infrequently, not used by applications



                                                         7
!
“Java is boring”
Things We Like With
the Java Language
    Automatic Memory Management (GC)
•
    Strong Typing
•
    Object-Oriented
•
    No Pointers
•
    WORA
•
    Run-Time Optimization
•
    Rich Class Library
•
    Static Typing (well, sometimes…)
•
    Simple, Clean and Expressive
•
Things We Like With
the JVM
    Automatic Memory Management (GC)
•
    Strong Typing
•
    Object-Oriented
•
    No Pointers
•
    WORA
•
    Run-Time Optimization
•
    Rich Class Library
•
    Static Typing (well, sometimes…)
•
    Simple, Clean and Expressive
•
Languages For the JVM?
    Infiqs, Java+, BDC Scheme, Armed Bear Common Lisp (ABCL), Lili, Jatha, Bigloo,
  SISC, Lisp, PS3I, Scheme package, HotScheme, webLISP, Jaja, JScheme, Skij, Kawa,
     Jscheme, LispkitLISP Compiler, Lambda Calculus Interpreter, The UncommonLisp
 Interpreter, uts, Grasshopper, Testalgo2, Mapyrus, MaVerickBASIC, CONVERT, JBasic,
  HotTEA, JavaBasic, COCOA, TSR-80 Model 1 BASIC, StarLogo, AJLogo, Turtle Tracks,
 rLogo, Yoyo, K.U.Leuven JCHR, TermWare, Drools, XProlog, tuProlog, PROLOG+CG, DGKS
  Prolog, JLog, Java Internet Prolog, NetProlog, CKI Prolog, JavaLog, Jinni, LLPj,
    LL, W-Prolog, jProlog, JESS-Java Expers System Shell, javalog, MINERVA, Kiev,
   Bruce, SmallWorld, SmalltalkJVM, Talks2, Bistro, G, Groovy, Nice, Scala, Anvil,



   http://www.robert-tolksdorf.de/
          vmlanguages.html
  SmallWorld, SmalltalkJVM, Talks2, Bistro, G, Groovy, Nice, Scala, Anvil, Ephedra,
  dSelf, Hojo, foo, Correlate, MetaJ, Demeter/Java, Bolero, Sather, PERCobol, Ada,
     JGNAT, FScript, Sleep, WLShell, Bambookit, JudoScript, JRuby, ObjectScript,
      Jickle, Yoix, Simkin, BeanShell, Dawn, DynamicJava, W4F, Netscript, Rhino,
   PolyJsp, Resin, Iava, WebL, FESI, iScript, Jython, Pnuts, Yassl, Janino, JAsCo,
    Join Java, Kanaputs, Jam, JEX, JMatch, Javassist, Jiazzi, ArchJava, MultiJava,
  Gilgul, dejay, Guarana, AspectJ, PolyJ, xkjc, Jass, Borneo, GJ, Jamie, Scriptic,
  OpenJava, Kiev, JavaParty, JAVAR, JAVAB, Pizza, myForth, Delta Forth, FIJI, Misty
     Beach Forth, AMPC, Snobol3, Processing, Qexo, Frink, ANTLR, JavaCC, ZigZag,
 ComponentPascal, JOMP, Tea, Tiger, perljvm, f2j, Oberon, Luck, Occam, E, Assembler
Categories
    Precompilers: 10            COBOL: 1
•                           •
    Tcl: 3                      Ada: 2
•                           •
    Functional: 6               Scripting: 27
•                           •
    LISP & Co.: 21              Extended Java: 31
•                           •
    BASIC: 11                   Forth: 5
•                           •
    Logo: 5                     Assemblers: 4
•                           •
    Logic Programming: 19
•
    Eiffel: 1
•
                                          203
    Smalltalk: 4
•
    Various: 53
•
“Big” Changes from Sun
• Modularization
 > JSR-294
 > Project Jigsaw
 > JSR-277
• JVM Support for Dynamic Languages
 > JSR-292
 > invokedynamic
• New I/O 2
 > JSR-203
 > True asynchronous I/O
 > new file i/o
                                      13
More “Big” Changes from Sun
• Language Changes
 > Safe rethrow
 > Null dereference expressions
 > Better type inference
 > Multi-Catch
• Swing Application Framework
 > JSR-296
• Forward Port of Java 6u10 Features
 > Java Kernal
 > Quickstarter
 > New Applet plug-in
                                       14
“Small” Changes from Sun
• SCTP (Stream Control Transmission Protocol)
• SDP (Sockets Direct Protocol)
• Upgrade Class Loader Architecture
• Method for Closing a URLClassLoader
• Unicode 5.0 Support
• XRender Pipeline for Java2D
• Swing Updates



                                                15
“Fast” Changes from Sun
• G1 (Garbage First) Garbage Collector
 > Shorter pause times
 > Replaces Concurrent mark and sweep (hopefully)
• Compressed pointer 64 bit VM
• MVM-Lite
 > Multiple Virtual Machine
 > Isolation
 > “kill -9” on a Java application




                                                    16
Other Changes
• Annotations on Java Types
 > JSR-308
 > Driven by Prof. Michael Ernst and Mahmood Ali
 > ex. @NonNull
• Concurrency and Collections Updates
 > JSR-166
 > Fork/Join
 > Phasers
 > LinkedTransferQueue
 > ConcurrentReferenceHashMap
 > Fences

                                                   17
Not in Java™7 (partial list)
• Closures
 > No consensus around a single proposal
• Reified Generics
• 1st Class Properties
• Operator Overloading
• BigDecimal Syntax
• JSR-295 Beans Binding



                                           18
Superpackages
superpackage example.bar.lib {

    // member packages
    member package example.bar.lib;

    // member superpackages
    member superpackage example.bar.lib.net, example.bar.lib.xml;

    // list of exported types
     export example.bar.lib.Table;

    export superpackage example.bar.lib.net;
}




                                                                    19
> invokedynamic <
JVM Architecture
                     class loader
                     subsystem




                                                         native
     method                Java              pc
              heap                                       method
      area                stacks          registers
                                                         stacks

                     runtime data areas




  execution
                       native method                  native method
  engine
                         interface                       libraries
4 Bytecodes for Method Invocation
    invokevirtual
•
    invokeinterface
•
    invokestatic
•
    invokespecial
•
invokevirtual
 • General form:
   > invokevirtual TargetObjectType.methodDescriptor
   > MethodDescriptor:
              methodName(ArgTypes) ReturnType
 • Very close to Java programming language semantics
   > Only overloading (and generics) left to javac
   > Single inheritance, single dispatch, statically typed
 • Verifier ensures types are correct


invokevirtual TargetType.method(ArgType) ReturnType
Dynamically Typed Languages
• Anything can be passed to a function/method
  > No type information at compile time
  > No type information at byte code generation time (even
    when doing Just-in-Time generation)
  > Type information only at run time
And Here the Troubles Begin
    Consider a trivial snippet of code in a dynamically typed
    language:
newSize(c)
    // Collection has grown; figure out the next increment
    // in size
{
    return   c.size() * c.growthFactor();
}
And Here the Troubles Begin
    Consider a trivial snippet of code in a dynamically typed
    language:
newSize(c)
    // Collection has grown; figure out the next increment
    // in size
{
                        c.growthFactor()
    return   c.size() * c.growthFactor();
}
And Here the Troubles Begin
    Consider a trivial snippet of code in a dynamically typed
    language:
newSize(c)
    // Collection has grown; figure out the next increment
    // in size
{
                        c.growthFactor()
    return   c.size() * c.growthFactor();
}



invokevirtual UknownType.growthFactor() UnknownReturnType
And Here the Troubles Begin
    Solution: synthetic interfaces

newSize(c)
    // Collection has grown; figure out the next increment
    // in size
{
    return
        ((Interface91)((Interface256) c).size()) *
        (Interface91) ((Interface42) c).growthFactor();
}
And Here the Troubles Begin
    Solution: synthetic interfaces

newSize(c)
    // Collection has grown; figure out the next increment
    // in size
{
    return
        ((Interface91)((Interface256) c).size()) *
        (Interface91) ((Interface42) c).growthFactor();
}
invokeinterface Interface42.growthFactor() Object
Solution: invokedynamic
A loosely typed invokevirtual
• Target need not be statically known to implement
  method descriptor given in instruction
  > No need for a host of synthetic interfaces
• Actual arguments need not be statically known to match
  method descriptor
  > Instead, cast at invocation time to ensure integrity
• Will be added to the Java Virtual Machine as of Java7
  (Dolphin)
  invokedynamic Anyclass.growthFactor() Object
invokedynamic, Cont.
• The JVM won’t traverse the type hierarchy
  > delegated to a plug-in written by the language designer
  > every language has it’s own rules for inheritance and
    delegation
  > enables multiple inheritance
  > enables prototype based languages
Only a Partial Solution
• No direct support for multiple inheritance or multiple
  dispatch
  > General support is hard—each language has its own rules
• Calling Java platform libraries from scripting languages
  brings additional problems
  > How do you resolve overloading?
• However, invokedynamic is a useful primitive in most of
  these complex scenarios as well
invokedynamic
              /**
                * Syntactic marker interface for class-
                * based dynamic method selection.
                */
              package java.dyn;
              public interface Dynamic {
                   // empty
              }

// Running example Java code which exercises Draft invokedynamic
class MyCaller {
    Object myMethod(Object x, Object y, int z) {
        // x . invokedynamic[quot;alphaquot;,(Object,int)Object] (y, z)
        return ((Dynamic)x).alpha(y, z);
    }
}
Safe Re-Throw




  void someMethod() throws X1,X2 {
     try { /* Something that can throw X1,X2 */ }
     catch (Throwable e) {
       logger.log(e);
       throw e; // Error: Unreported exception Throwable
    }
  }

                                                           31
Safe Re-Throw
  void m() throws X1,X2 {
     try { /* Something that can throw X1,X2 */ }
     catch (final Throwable e) {
        logger.log(e);
        throw e; // Compiles OK; can throw X1,X2
     }
  }


  void someMethod() throws X1,X2 {
     try { /* Something that can throw X1,X2 */ }
     catch (Throwable e) {
       logger.log(e);
       throw e; // Error: Unreported exception Throwable
    }
  }

                                                           31
Null-Dereference Expression



     T x = null;
     if( a != null ) {
         B b = a.b();
             if( b != null ) {
                 C c = b.c();
                      if( c != null ) {
                          x = c.x();
                      }
             }
     }
                                          32
Null-Dereference Expression

     T x = a?.b()?.c()?.x();

     T x = null;
     if( a != null ) {
         B b = a.b();
             if( b != null ) {
                 C c = b.c();
                      if( c != null ) {
                          x = c.x();
                      }
             }
     }
                                          32
Better Type Inference




Map<String,Integer> m = new HashMap<String,Integer>();




                                                         33
Better Type Inference

Map<String,Integer> m = new HashMap<>();




Map<String,Integer> m = new HashMap<String,Integer>();




                                                         33
Multi-Catch




         try { ...   }
         catch( X1   e ) { foo(); }
         catch( X2   e ) { foo(); }
         catch( X3   e ) { bar(); }



                                      34
Multi-Catch

       try { ... }
       catch( X1, X2 e ) { foo(); }
       catch( X3 e ) { bar(); }


          try { ...   }
          catch( X1   e ) { foo(); }
          catch( X2   e ) { foo(); }
          catch( X3   e ) { bar(); }



                                       34
Annotations on Java Types




    void foo(Bar x) {
        x.fum(); // Potential NullPointerException
    }




                                                     35
Annotations on Java Types

    void foo(@NonNull Bar x) {
        x.fum(); // Statically Checked
    }


    void foo(Bar x) {
        x.fum(); // Potential NullPointerException
    }




                                                     35
NIO 2

import java.nio.file.*;

Path home= Path.get(quot;/home/gusquot;);
Path profile= home.resolve(quot;.bash_profilequot;);

// Backup existing file
profile.copyTo(home.resolve(quot;.bash_profile.backupquot;));

// Append useful stuff to the profile
WritableByteChannel ch= profile.newSeekableByteChannel(APPEND);
try {
    appendStuff(ch);
} finally {
    ch.close();
}


                                                           36
Concurrency and Collections
• Doug Lea, Josh Bloch, et. al
• Fork/Join framework
• Phasers — Generalized barriers
• LinkedTransferQueue — Generalized Queue
• ConcurrentReferenceHashMap
• Fences — Fine-grained read/write ordering




                                              37
Java 7 Release




           Early 2010
Closures



 Primary:
    ClosureLiteral
 ClosureLiteral:
    { FormalParametersopt => BlockStatementsopt Expressionopt }




                                                                  39
Closures, examples

 {int x, int y => x+y}


 {int,int=>int} plus = {int x, int y => x+y};




                                                40
Closures, further example


public class DeepThought {

        // { => int } means a function with no arguments and return type int
        static { => int } answer = { => 42 };

        public static void main(String[] args) {
        int i = answer.invoke();
        System.out.println(i);
    }
}




                                                                        41
SUN LABS PROJECT:



   Maxine Open Source Research VM
    • GNU General Public License version 2
        > License-compatible with OpenJDK™

    • Currently builds on JDK 1.6 release
    • Not a fully compliant Java™ Virtual Machine (yet)

    • Alpha release source code:

        https://maxine.dev.java.net/



                                                          42
SUN LABS PROJECT:



   Maxine Platforms

   • Supported:
       > Solaris™ Operating System / SPARC® Technology
       > Solaris / x64
       > Mac OS X / x64
       > Xen / x64
                                    • Under development:
                                          Solaris OS / x32
                                      >
               • Contemplated:            Linux / x64
                                      >
                        Xen / x32
                    >
                                          Linux / x32
                                      >
                        ARM
                    >
                                          Mac OS X / x32
                                      >
                        PowerPC
                    >
                        Windows
                    >

                                                             43
SUN LABS PROJECT:



   Conventional vs. Meta-Circular

                                                          Applications
                    Applications



                                                                           JDK
                                   JDK
  Java Language                                Java
                                                      Meta-Circular VM
      Conventional                             Language
          VM                                                               Native
                                    Native
                                                                          Libraries
                                   Libraries

              C/C++ etc.                                                 C/C++ etc.



                                                                                      44
SUN LABS PROJECT:



   Meta-Circular VM Design

   • The VM is written in the same language it executes

   • The VM uses JDK packages
     and implements their downcalls into the VM

   • Built around an optimizing compiler (not an interpreter)

   • The optimizing compiler in the VM translates itself


                                                                45
The Lisp Read-Eval-Print-Loop
(defun eval (e a)
  (cond
   ((atom? e) (assoc e a))
   ((atom? (car e))
    (cond
     ((eq (car e) 'quote) (cadr e))
     ((eq (car e) 'atom?) (atom?     (eval (cadr e) a)))
     ((eq (car e) 'eq)     (eq     (eval (cadr e) a)
                                 (eval (caddr e) a)))
     ((eq (car e) 'car)    (car    (eval (cadr e) a)))
     ((eq (car e) 'cdr)    (cdr    (eval (cadr e) a)))
     ((eq (car e) 'cons) (cons     (eval (cadr e) a)
                                 (eval (caddr e) a)))
     ((eq (car e) 'cond) (evcon (cdr e) a))
     ('t (eval (cons (assoc (car e) a)
                (cdr e))
          a))))
   ((eq (caar e) 'label)
    (eval (cons (caddr e) (cdr e))
     (cons (list (cadar e) (car e)) a)))
   ((eq (caar e) 'lambda)
    (eval (caddar e)
     (append (pair (cadar e)
                     (evlis (cdr e) a))
            a))) ) )
SUN LABS PROJECT:



 Multi-Language Potential
  •   Fortress
      JRuby
  •
  •   Jython
      JavaScript
  •
  •   Java FX

  • All of the above already have Java implementations
  • Let's reuse scalable managed runtime investment
  • No need for Java bytecode (or extensions thereof)

                                                         47
Contribute!
<fritzon@sun.com>




                    48

More Related Content

What's hot

Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
Stephan Janssen
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
Arun Gupta
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the Cloud
Arun Gupta
 
Real World Technologies
Real World TechnologiesReal World Technologies
Real World Technologies
José Maria Silveira Neto
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
Arun Gupta
 
Why should i switch to Java SE 7
Why should i switch to Java SE 7Why should i switch to Java SE 7
Why should i switch to Java SE 7Vinay H G
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Arun Gupta
 
Java 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kolliparaJava 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kollipara
Manjula Kollipara
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
Arun Gupta
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Arun Gupta
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
Mani Sarkar
 
JCP & The Future of Java
JCP & The Future of JavaJCP & The Future of Java
JCP & The Future of Java
Heather VanCura
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nationArun Gupta
 
Migrating Speedment to Java 9
Migrating Speedment to Java 9Migrating Speedment to Java 9
Migrating Speedment to Java 9
C4Media
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the Cloud
Arun Gupta
 
Hinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoHinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile Dojo
Stephen Chin
 
Introduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeansIntroduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeans
Pasqualino Imbemba
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
Arun Gupta
 

What's hot (20)

Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the Cloud
 
Real World Technologies
Real World TechnologiesReal World Technologies
Real World Technologies
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting Grails
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
Why should i switch to Java SE 7
Why should i switch to Java SE 7Why should i switch to Java SE 7
Why should i switch to Java SE 7
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
 
Java 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kolliparaJava 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kollipara
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
 
JCP & The Future of Java
JCP & The Future of JavaJCP & The Future of Java
JCP & The Future of Java
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nation
 
Migrating Speedment to Java 9
Migrating Speedment to Java 9Migrating Speedment to Java 9
Migrating Speedment to Java 9
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the Cloud
 
Hinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoHinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile Dojo
 
Introduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeansIntroduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeans
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 

Viewers also liked

Java您不知道的5件事 雷腾(l.t)
Java您不知道的5件事   雷腾(l.t) Java您不知道的5件事   雷腾(l.t)
Java您不知道的5件事 雷腾(l.t)
oleone
 
关于培训
关于培训关于培训
关于培训Bing Li
 
RMI 框架&Spring RMI
RMI 框架&Spring RMIRMI 框架&Spring RMI
RMI 框架&Spring RMI
yubao fu
 
ActiveDirect - Talk Directly with ActiveRecord using Ext.Direct and Rack Mid...
ActiveDirect - Talk Directly with ActiveRecord  using Ext.Direct and Rack Mid...ActiveDirect - Talk Directly with ActiveRecord  using Ext.Direct and Rack Mid...
ActiveDirect - Talk Directly with ActiveRecord using Ext.Direct and Rack Mid...
Stone Gao
 
Challenges with MongoDB
Challenges with MongoDBChallenges with MongoDB
Challenges with MongoDB
Stone Gao
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
Alex Snaps
 
Introduction To Apache Mesos
Introduction To Apache MesosIntroduction To Apache Mesos
Introduction To Apache Mesos
Joe Stein
 
Netty
NettyNetty
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
HyeonSeok Choi
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.toleone
 
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
VMware Tanzu
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionColdFusionConference
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
Satish Mohan
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
Raffael Schmid
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with Netty
Ersin Er
 
Apache HBase Application Archetypes
Apache HBase Application ArchetypesApache HBase Application Archetypes
Apache HBase Application ArchetypesCloudera, Inc.
 
Netty - a pragmatic introduction
Netty - a pragmatic introductionNetty - a pragmatic introduction
Netty - a pragmatic introduction
Raphael Stary
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
bluedavy lin
 

Viewers also liked (19)

Java您不知道的5件事 雷腾(l.t)
Java您不知道的5件事   雷腾(l.t) Java您不知道的5件事   雷腾(l.t)
Java您不知道的5件事 雷腾(l.t)
 
关于培训
关于培训关于培训
关于培训
 
RMI 框架&Spring RMI
RMI 框架&Spring RMIRMI 框架&Spring RMI
RMI 框架&Spring RMI
 
ActiveDirect - Talk Directly with ActiveRecord using Ext.Direct and Rack Mid...
ActiveDirect - Talk Directly with ActiveRecord  using Ext.Direct and Rack Mid...ActiveDirect - Talk Directly with ActiveRecord  using Ext.Direct and Rack Mid...
ActiveDirect - Talk Directly with ActiveRecord using Ext.Direct and Rack Mid...
 
Challenges with MongoDB
Challenges with MongoDBChallenges with MongoDB
Challenges with MongoDB
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
 
Introduction To Apache Mesos
Introduction To Apache MesosIntroduction To Apache Mesos
Introduction To Apache Mesos
 
Netty
NettyNetty
Netty
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
 
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
Hadoop - Just the Basics for Big Data Rookies (SpringOne2GX 2013)
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
 
Spring Batch Introduction
Spring Batch IntroductionSpring Batch Introduction
Spring Batch Introduction
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with Netty
 
Apache HBase Application Archetypes
Apache HBase Application ArchetypesApache HBase Application Archetypes
Apache HBase Application Archetypes
 
Netty - a pragmatic introduction
Netty - a pragmatic introductionNetty - a pragmatic introduction
Netty - a pragmatic introduction
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 

Similar to New Features of Java7 SE

Java EE 6 Aquarium Paris
Java EE 6 Aquarium ParisJava EE 6 Aquarium Paris
Java EE 6 Aquarium Paris
Alexis Moussine-Pouchkine
 
Java EE 6
Java EE 6Java EE 6
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture Trends
Srini Penchikala
 
GlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseGlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for Eclipse
Ludovic Champenois
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexus
Arun Gupta
 
Net Beans61 Ide
Net Beans61 IdeNet Beans61 Ide
Net Beans61 Ide
satyajit_t
 
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 IndiaJava EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Arun Gupta
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
Arun Gupta
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Arun Gupta
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUG
Marakana Inc.
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010
Arun Gupta
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Arun Gupta
 
Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Arun Gupta
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
 
Java EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The FutureJava EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The Future
IndicThreads
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
Paul Bakker
 
Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 Overview
Eugene Bogaart
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
ejlp12
 

Similar to New Features of Java7 SE (20)

Java EE 6 Aquarium Paris
Java EE 6 Aquarium ParisJava EE 6 Aquarium Paris
Java EE 6 Aquarium Paris
 
Java EE 6
Java EE 6Java EE 6
Java EE 6
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture Trends
 
GlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseGlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for Eclipse
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexus
 
Net Beans61 Ide
Net Beans61 IdeNet Beans61 Ide
Net Beans61 Ide
 
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 IndiaJava EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUG
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010
 
Java E
Java EJava E
Java E
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
 
Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
Java EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The FutureJava EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The Future
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
 
Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 Overview
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 

Recently uploaded

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 

Recently uploaded (20)

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

New Features of Java7 SE

  • 1. The Future is Nigh News In the Upcoming Java 7 1
  • 2. Remember Java EE 5? Ease of Development Focus Major Revamp of Programming Model EJB™ 3.0 support for POJOs means less learn, less to code and less to maintain New Java™ Persistence API makes object/ relational mapping cleaner and easier New and updated Web Services (JAX-WS 2.0 and JAXB 2.0) simplifies SOA implementation JavaServer™ Faces 1.2 facilitates building Web 2.0 Applications with AJAX Annotations often eliminates the need for deployment descriptors Supported by NetBeans™ 5.5 Enterprise Pack Get the SDK: http://java.sun.com/javaee/downloads 2
  • 3. History of Enterprise Java Ease of Development Java EE 5 Ease of Web Services Development, Annotations, J2EE 1.4 EJB 3.0 Persistence Web Robustness Services, API, New and Updated Web Management, J2EE 1.3 Enterprise Services Deployment, Java CMP, Async. Platform Connector Connector Architecture J2EE 1.2 Servlet, JSP, EJB, JMS, RMI/IIOP JPE Project 3
  • 4. Theme for Java EE 6 Rightsizing > < the Platform 4
  • 5. Rightsizing • “Ease of development is good, but… … the platform still feels too big.” > Feedback: we want less bloat • Reduce size, without losing focus • Make the platform fit a particular class of applications well • Increase flexibility of deployment 5
  • 6. New in Java EE 6 • Profiles • Pruning • Extensibility • More ease of development 6
  • 7. Pruning • Make some components optional • Send a strong message to application developers • Same rules as Java SE apply: > “pruned now, optional in next release” • Likely candidates for pruning: > EJB Entity Beans—Replaced by JPA > JAX-RPC—Replaced by JAX-WS > JAXR—Used Infrequently > JSR-88— Used Infrequently, not used by applications 7
  • 9. Things We Like With the Java Language Automatic Memory Management (GC) • Strong Typing • Object-Oriented • No Pointers • WORA • Run-Time Optimization • Rich Class Library • Static Typing (well, sometimes…) • Simple, Clean and Expressive •
  • 10. Things We Like With the JVM Automatic Memory Management (GC) • Strong Typing • Object-Oriented • No Pointers • WORA • Run-Time Optimization • Rich Class Library • Static Typing (well, sometimes…) • Simple, Clean and Expressive •
  • 11. Languages For the JVM? Infiqs, Java+, BDC Scheme, Armed Bear Common Lisp (ABCL), Lili, Jatha, Bigloo, SISC, Lisp, PS3I, Scheme package, HotScheme, webLISP, Jaja, JScheme, Skij, Kawa, Jscheme, LispkitLISP Compiler, Lambda Calculus Interpreter, The UncommonLisp Interpreter, uts, Grasshopper, Testalgo2, Mapyrus, MaVerickBASIC, CONVERT, JBasic, HotTEA, JavaBasic, COCOA, TSR-80 Model 1 BASIC, StarLogo, AJLogo, Turtle Tracks, rLogo, Yoyo, K.U.Leuven JCHR, TermWare, Drools, XProlog, tuProlog, PROLOG+CG, DGKS Prolog, JLog, Java Internet Prolog, NetProlog, CKI Prolog, JavaLog, Jinni, LLPj, LL, W-Prolog, jProlog, JESS-Java Expers System Shell, javalog, MINERVA, Kiev, Bruce, SmallWorld, SmalltalkJVM, Talks2, Bistro, G, Groovy, Nice, Scala, Anvil, http://www.robert-tolksdorf.de/ vmlanguages.html SmallWorld, SmalltalkJVM, Talks2, Bistro, G, Groovy, Nice, Scala, Anvil, Ephedra, dSelf, Hojo, foo, Correlate, MetaJ, Demeter/Java, Bolero, Sather, PERCobol, Ada, JGNAT, FScript, Sleep, WLShell, Bambookit, JudoScript, JRuby, ObjectScript, Jickle, Yoix, Simkin, BeanShell, Dawn, DynamicJava, W4F, Netscript, Rhino, PolyJsp, Resin, Iava, WebL, FESI, iScript, Jython, Pnuts, Yassl, Janino, JAsCo, Join Java, Kanaputs, Jam, JEX, JMatch, Javassist, Jiazzi, ArchJava, MultiJava, Gilgul, dejay, Guarana, AspectJ, PolyJ, xkjc, Jass, Borneo, GJ, Jamie, Scriptic, OpenJava, Kiev, JavaParty, JAVAR, JAVAB, Pizza, myForth, Delta Forth, FIJI, Misty Beach Forth, AMPC, Snobol3, Processing, Qexo, Frink, ANTLR, JavaCC, ZigZag, ComponentPascal, JOMP, Tea, Tiger, perljvm, f2j, Oberon, Luck, Occam, E, Assembler
  • 12. Categories Precompilers: 10 COBOL: 1 • • Tcl: 3 Ada: 2 • • Functional: 6 Scripting: 27 • • LISP & Co.: 21 Extended Java: 31 • • BASIC: 11 Forth: 5 • • Logo: 5 Assemblers: 4 • • Logic Programming: 19 • Eiffel: 1 • 203 Smalltalk: 4 • Various: 53 •
  • 13. “Big” Changes from Sun • Modularization > JSR-294 > Project Jigsaw > JSR-277 • JVM Support for Dynamic Languages > JSR-292 > invokedynamic • New I/O 2 > JSR-203 > True asynchronous I/O > new file i/o 13
  • 14. More “Big” Changes from Sun • Language Changes > Safe rethrow > Null dereference expressions > Better type inference > Multi-Catch • Swing Application Framework > JSR-296 • Forward Port of Java 6u10 Features > Java Kernal > Quickstarter > New Applet plug-in 14
  • 15. “Small” Changes from Sun • SCTP (Stream Control Transmission Protocol) • SDP (Sockets Direct Protocol) • Upgrade Class Loader Architecture • Method for Closing a URLClassLoader • Unicode 5.0 Support • XRender Pipeline for Java2D • Swing Updates 15
  • 16. “Fast” Changes from Sun • G1 (Garbage First) Garbage Collector > Shorter pause times > Replaces Concurrent mark and sweep (hopefully) • Compressed pointer 64 bit VM • MVM-Lite > Multiple Virtual Machine > Isolation > “kill -9” on a Java application 16
  • 17. Other Changes • Annotations on Java Types > JSR-308 > Driven by Prof. Michael Ernst and Mahmood Ali > ex. @NonNull • Concurrency and Collections Updates > JSR-166 > Fork/Join > Phasers > LinkedTransferQueue > ConcurrentReferenceHashMap > Fences 17
  • 18. Not in Java™7 (partial list) • Closures > No consensus around a single proposal • Reified Generics • 1st Class Properties • Operator Overloading • BigDecimal Syntax • JSR-295 Beans Binding 18
  • 19. Superpackages superpackage example.bar.lib { // member packages member package example.bar.lib; // member superpackages member superpackage example.bar.lib.net, example.bar.lib.xml; // list of exported types export example.bar.lib.Table; export superpackage example.bar.lib.net; } 19
  • 21. JVM Architecture class loader subsystem native method Java pc heap method area stacks registers stacks runtime data areas execution native method native method engine interface libraries
  • 22. 4 Bytecodes for Method Invocation invokevirtual • invokeinterface • invokestatic • invokespecial •
  • 23. invokevirtual • General form: > invokevirtual TargetObjectType.methodDescriptor > MethodDescriptor: methodName(ArgTypes) ReturnType • Very close to Java programming language semantics > Only overloading (and generics) left to javac > Single inheritance, single dispatch, statically typed • Verifier ensures types are correct invokevirtual TargetType.method(ArgType) ReturnType
  • 24. Dynamically Typed Languages • Anything can be passed to a function/method > No type information at compile time > No type information at byte code generation time (even when doing Just-in-Time generation) > Type information only at run time
  • 25. And Here the Troubles Begin Consider a trivial snippet of code in a dynamically typed language: newSize(c) // Collection has grown; figure out the next increment // in size { return c.size() * c.growthFactor(); }
  • 26. And Here the Troubles Begin Consider a trivial snippet of code in a dynamically typed language: newSize(c) // Collection has grown; figure out the next increment // in size { c.growthFactor() return c.size() * c.growthFactor(); }
  • 27. And Here the Troubles Begin Consider a trivial snippet of code in a dynamically typed language: newSize(c) // Collection has grown; figure out the next increment // in size { c.growthFactor() return c.size() * c.growthFactor(); } invokevirtual UknownType.growthFactor() UnknownReturnType
  • 28. And Here the Troubles Begin Solution: synthetic interfaces newSize(c) // Collection has grown; figure out the next increment // in size { return ((Interface91)((Interface256) c).size()) * (Interface91) ((Interface42) c).growthFactor(); }
  • 29. And Here the Troubles Begin Solution: synthetic interfaces newSize(c) // Collection has grown; figure out the next increment // in size { return ((Interface91)((Interface256) c).size()) * (Interface91) ((Interface42) c).growthFactor(); } invokeinterface Interface42.growthFactor() Object
  • 30. Solution: invokedynamic A loosely typed invokevirtual • Target need not be statically known to implement method descriptor given in instruction > No need for a host of synthetic interfaces • Actual arguments need not be statically known to match method descriptor > Instead, cast at invocation time to ensure integrity • Will be added to the Java Virtual Machine as of Java7 (Dolphin) invokedynamic Anyclass.growthFactor() Object
  • 31. invokedynamic, Cont. • The JVM won’t traverse the type hierarchy > delegated to a plug-in written by the language designer > every language has it’s own rules for inheritance and delegation > enables multiple inheritance > enables prototype based languages
  • 32. Only a Partial Solution • No direct support for multiple inheritance or multiple dispatch > General support is hard—each language has its own rules • Calling Java platform libraries from scripting languages brings additional problems > How do you resolve overloading? • However, invokedynamic is a useful primitive in most of these complex scenarios as well
  • 33. invokedynamic /** * Syntactic marker interface for class- * based dynamic method selection. */ package java.dyn; public interface Dynamic { // empty } // Running example Java code which exercises Draft invokedynamic class MyCaller { Object myMethod(Object x, Object y, int z) { // x . invokedynamic[quot;alphaquot;,(Object,int)Object] (y, z) return ((Dynamic)x).alpha(y, z); } }
  • 34. Safe Re-Throw void someMethod() throws X1,X2 { try { /* Something that can throw X1,X2 */ } catch (Throwable e) { logger.log(e); throw e; // Error: Unreported exception Throwable } } 31
  • 35. Safe Re-Throw void m() throws X1,X2 { try { /* Something that can throw X1,X2 */ } catch (final Throwable e) { logger.log(e); throw e; // Compiles OK; can throw X1,X2 } } void someMethod() throws X1,X2 { try { /* Something that can throw X1,X2 */ } catch (Throwable e) { logger.log(e); throw e; // Error: Unreported exception Throwable } } 31
  • 36. Null-Dereference Expression T x = null; if( a != null ) { B b = a.b(); if( b != null ) { C c = b.c(); if( c != null ) { x = c.x(); } } } 32
  • 37. Null-Dereference Expression T x = a?.b()?.c()?.x(); T x = null; if( a != null ) { B b = a.b(); if( b != null ) { C c = b.c(); if( c != null ) { x = c.x(); } } } 32
  • 38. Better Type Inference Map<String,Integer> m = new HashMap<String,Integer>(); 33
  • 39. Better Type Inference Map<String,Integer> m = new HashMap<>(); Map<String,Integer> m = new HashMap<String,Integer>(); 33
  • 40. Multi-Catch try { ... } catch( X1 e ) { foo(); } catch( X2 e ) { foo(); } catch( X3 e ) { bar(); } 34
  • 41. Multi-Catch try { ... } catch( X1, X2 e ) { foo(); } catch( X3 e ) { bar(); } try { ... } catch( X1 e ) { foo(); } catch( X2 e ) { foo(); } catch( X3 e ) { bar(); } 34
  • 42. Annotations on Java Types void foo(Bar x) { x.fum(); // Potential NullPointerException } 35
  • 43. Annotations on Java Types void foo(@NonNull Bar x) { x.fum(); // Statically Checked } void foo(Bar x) { x.fum(); // Potential NullPointerException } 35
  • 44. NIO 2 import java.nio.file.*; Path home= Path.get(quot;/home/gusquot;); Path profile= home.resolve(quot;.bash_profilequot;); // Backup existing file profile.copyTo(home.resolve(quot;.bash_profile.backupquot;)); // Append useful stuff to the profile WritableByteChannel ch= profile.newSeekableByteChannel(APPEND); try { appendStuff(ch); } finally { ch.close(); } 36
  • 45. Concurrency and Collections • Doug Lea, Josh Bloch, et. al • Fork/Join framework • Phasers — Generalized barriers • LinkedTransferQueue — Generalized Queue • ConcurrentReferenceHashMap • Fences — Fine-grained read/write ordering 37
  • 46. Java 7 Release Early 2010
  • 47. Closures Primary: ClosureLiteral ClosureLiteral: { FormalParametersopt => BlockStatementsopt Expressionopt } 39
  • 48. Closures, examples {int x, int y => x+y} {int,int=>int} plus = {int x, int y => x+y}; 40
  • 49. Closures, further example public class DeepThought { // { => int } means a function with no arguments and return type int static { => int } answer = { => 42 }; public static void main(String[] args) { int i = answer.invoke(); System.out.println(i); } } 41
  • 50. SUN LABS PROJECT: Maxine Open Source Research VM • GNU General Public License version 2 > License-compatible with OpenJDK™ • Currently builds on JDK 1.6 release • Not a fully compliant Java™ Virtual Machine (yet) • Alpha release source code: https://maxine.dev.java.net/ 42
  • 51. SUN LABS PROJECT: Maxine Platforms • Supported: > Solaris™ Operating System / SPARC® Technology > Solaris / x64 > Mac OS X / x64 > Xen / x64 • Under development: Solaris OS / x32 > • Contemplated: Linux / x64 > Xen / x32 > Linux / x32 > ARM > Mac OS X / x32 > PowerPC > Windows > 43
  • 52. SUN LABS PROJECT: Conventional vs. Meta-Circular Applications Applications JDK JDK Java Language Java Meta-Circular VM Conventional Language VM Native Native Libraries Libraries C/C++ etc. C/C++ etc. 44
  • 53. SUN LABS PROJECT: Meta-Circular VM Design • The VM is written in the same language it executes • The VM uses JDK packages and implements their downcalls into the VM • Built around an optimizing compiler (not an interpreter) • The optimizing compiler in the VM translates itself 45
  • 54. The Lisp Read-Eval-Print-Loop (defun eval (e a) (cond ((atom? e) (assoc e a)) ((atom? (car e)) (cond ((eq (car e) 'quote) (cadr e)) ((eq (car e) 'atom?) (atom? (eval (cadr e) a))) ((eq (car e) 'eq) (eq (eval (cadr e) a) (eval (caddr e) a))) ((eq (car e) 'car) (car (eval (cadr e) a))) ((eq (car e) 'cdr) (cdr (eval (cadr e) a))) ((eq (car e) 'cons) (cons (eval (cadr e) a) (eval (caddr e) a))) ((eq (car e) 'cond) (evcon (cdr e) a)) ('t (eval (cons (assoc (car e) a) (cdr e)) a)))) ((eq (caar e) 'label) (eval (cons (caddr e) (cdr e)) (cons (list (cadar e) (car e)) a))) ((eq (caar e) 'lambda) (eval (caddar e) (append (pair (cadar e) (evlis (cdr e) a)) a))) ) )
  • 55. SUN LABS PROJECT: Multi-Language Potential • Fortress JRuby • • Jython JavaScript • • Java FX • All of the above already have Java implementations • Let's reuse scalable managed runtime investment • No need for Java bytecode (or extensions thereof) 47