SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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 2011Arun 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 CloudArun Gupta
 
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 2011Arun 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 2012Arun Gupta
 
Java 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kolliparaJava 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kolliparaManjula 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 2010Arun 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 2010Arun Gupta
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG sessionMani Sarkar
 
JCP & The Future of Java
JCP & The Future of JavaJCP & The Future of Java
JCP & The Future of JavaHeather 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 9C4Media
 
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 CloudArun Gupta
 
Hinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoHinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoStephen Chin
 
Introduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeansIntroduction to Enterprise JavaBeans
Introduction to Enterprise JavaBeansPasqualino 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) #JJUGYuji Kubota
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration BackendArun Gupta
 

Was ist angesagt? (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
 

Andere mochten auch

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 RMIyubao 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 MongoDBStone Gao
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsAlex Snaps
 
Introduction To Apache Mesos
Introduction To Apache MesosIntroduction To Apache Mesos
Introduction To Apache MesosJoe Stein
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcacheHyeonSeok 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
 
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 NettyErsin 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 introductionRaphael Stary
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查bluedavy lin
 

Andere mochten auch (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常见问题排查
 

Ähnlich wie New Features of Java7 SE

Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture TrendsSrini Penchikala
 
GlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseGlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseLudovic Champenois
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusArun Gupta
 
Net Beans61 Ide
Net Beans61 IdeNet Beans61 Ide
Net Beans61 Idesatyajit_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 IndiaArun 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 WorkshopArun 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 2010Arun 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 SFJUGMarakana 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 2010Arun 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 2010Arun 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 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 FutureIndicThreads
 
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 & JavaFXPaul Bakker
 
Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewEugene Bogaart
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introductionejlp12
 

Ähnlich wie 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
 

Kürzlich hochgeladen

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 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
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Kürzlich hochgeladen (20)

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 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
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

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