SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
1
<Insert Picture
     Here>




Future of Java EE
Jerome Dochez
Glassfish Architect
The following is intended to outline our general product
 direction. It is intended for information purposes, and
  may not be incorporated into any contract. It is not a
     commitment to deliver any material, code, or
 functionality, and should not be relied upon in making
                    purchasing decisions.


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



                                                           3
Java EE and… the Cloud?


• Containers are back in vogue!




                                  4
Java EE and… the Cloud?


•   We have containers...
•   We have services… injectable services…
•   We scale to large clusters…
•   We have a security model…




                                             5
Java EE for the Cloud


• Tighter requirements for resource and
  state management
• Better isolation between applications
• Potential standard APIs for NRDBMS,
  caching, other
• Common management and monitoring
  interfaces
• Evolution, not revolution


                                          6
Better Packaging for the Cloud


• Apps are versioned
• Multiple versions can coexist
• Must deal with data versioning,
  upgrades, etc.
• Need ability to specify QoS properties
• Apps both expose and connect to
  services



                                           7
Cloud Platform


                          Application




 Java      Persistence                   Queueing
                                                       …
Service     Service                          Service




                      State Management




                      Virtualization Layer




                                                           8
Cloud Platform
                                               Application




Code            Code   Code                                                       QoS
                                    Schema        Migration        Security                     …
Module      Module     Module                                                 Information




         Java                   Persistence                   Queueing
                                                                                            …
       Service                   Service                          Service




                                           State Management




                                           Virtualization Layer




                                                                                                    9
Cloud Platform


Application   Application         Application




     Java           Persistence                    Queueing
                                                                 …
    Service           Service                          Service




                                State Management




                                Virtualization Layer




                                                                     10
Cloud Platform


Application   Application         Application             Application   Application




     Java           Persistence                    Queueing
                                                                           …
    Service           Service                          Service




                                State Management




                                Virtualization Layer




                                                                                      11
Cloud Platform
                      Managed Environment




Application   Application         Application             Application   Application




     Java           Persistence                    Queueing
                                                                           …
    Service           Service                          Service




                                State Management




                                Virtualization Layer




                                                                                      12
Demo Application



          JSF      EJB/
Browser            CDI        JPA


                                      Database
            EJB
           Timer
                   REST       JPA
                   Client

                      Jersey Client
                          API
Modularity


•   Build on Java SE work
•   Applications made of modules
•   Dependencies are explicit
•   Versioning is built-in
•   Classloaders straightened out




                                    14
Modular Applications


 demo.app
    demo-web-1.0.3




                       15
Modular Applications


 demo.app
                     twitter-client-2.3.0

    demo-web-1.0.3

                     demo-persist-1.4.0




                                            16
Modular Applications


 demo.app
                       twitter-client-2.4.0
  demo-web-1.0.3
                       demo-persist-1.4.0
            requires                            requires


                       requires



      javaee-web-7.0      jpa-2.1             jax-rs-2.0




                                                           17
Modular Applications


 demo.app
                       twitter-client-2.3.0
  demo-web-1.0.3
                       demo-persist-1.4.0
            requires                            requires


                       requires



      javaee-web-7.0      jpa-2.1             jax-rs-2.0




                                                           18
Modular Applications


 demo.app
                          twitter-client-2.3.0
  demo-web-1.0.3
                          demo-persist-1.4.0
                                                   requires


                          requires



      javaee-web-7.0         jpa-2.1             jax-rs-2.0




             implements


 gf-appserver-4.0.1
        …
        …
         …
         …


                                                              19
Modular Applications


 demo.app
                          twitter-client-2.3.0
  demo-web-1.0.3
                          demo-persist-1.4.0




      javaee-web-7.0        jpa-2.1                 jax-rs-2.0




             implements              implements


 gf-appserver-4.0.1                               implements
                          eclipselink-2
        …
        …
         …
         …                   jersey-2.0




                                                                 20
Modular Applications


 demo.app
                       twitter-client-2.4.0    jax-rs-2.1
  demo-web-1.0.4
                       demo-persist-1.4.0     jersey-2.1.1




      javaee-web-7.0     jpa-2.1




 gf-appserver-4.0.1
                       eclipselink-2
        …
        …
         …
         …


                                                             21
Modular Applications


 demo.app
                       twitter-client-2.4.0        jax-rs-2.1
  demo-web-1.0.4
                       demo-persist-1.4.0        jersey-2.1.1




      javaee-web-7.0     jpa-2.1              jax-rs-2.1




 gf-appserver-4.1.5
                       eclipselink-2
        …
        …
         …
         …             jersey-2.1.5


                                                                22
JSF 2.1: short term


•   Transient State Saving
•   UIData Transient state saving
•   XML view cleanup
•   Facelets Cache API
•   “XML free” in specification




                                    23
JSF 2.2


• HTML5
   – semantic tags
   – support of browser feature detection
   – HTML5 for components
   – Audio and video
   – Standardize popular API (Trinidad’s page
     resolver, ADF ApplicationContectManager)
   – JSR-276, tools support
   – Enhancements to existing features
      • mobile renderkits
      • composite components

                                                24
JMS


• Resolve ambiguities and uncertainties in the
  APIS
   – Remove complexities in the existing API
   – Incomplete and optional integration in Java EE env.
• Standardize common vendor extensions/
  features
• Integration with other specs and non-Java
  languages
• Expand JMS spec with new developments in
  messaging
                                                      25
Web Tier


•   Web socket support
•   Standard JSON API
•   HTML5 support
•   NIO.2-based web container




                                26
Web Socket Sample
(with Grizzly WebSocket API)
public class ChatApplication
          extends WebSocketApplication<ChatWebSocket> {

protected ChatWebSocket createWebSocket(Connection c,
                                ServerWebSocketMeta m)
        { return new ChatWebSocket(c, m, this); }


    public void onMessage(ChatWebSocket s, DataFrame frame) {
        String msg = frame.getAsText();
        s.sendJson(s.getUser(), msg);
    }
    public void onClose(ChatWebSocket s) {
        s.sendJson(“system”, s.getUser() + “ left the chat”);
    }
}

                                                                27
Async Web Sample (Atmosphere)
Java EE 8

   @Path("/{topic}")
   @Produces("text/plain;charset=ISO-8859-1")
   public class PubSub {
     private @PathParam("topic") Broadcaster topic;


     @GET @Suspend
     public Broadcastable subscribe() {
         return new Broadcastable("",topic); }


     @POST @Broadcast
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     public Broadcastable publish(
                @FormParam("message") String message) {
         return new Broadcastable(message,topic);
     }
                                                          28
Java Persistence 2.1


• Build on functionality added in JPA 2.0
• Features largely driven by community input
• Infilling for
  – Improved standardization
  – Improved flexibility




                                        2
Java Persistence 2.1 Candidate Features
O/R Mapping and Modeling

• Converters / custom types
• “Fetch” plans / profiles
• Additional mapping metadata
• User-defined naming strategies
• More flexibility in use of generated values
• Immutable attributes; readonly entities
• More flexible XML descriptors




                                           3
Java Persistence 2.1 Candidate Features
API Enhancements

• Additional event listeners and callbacks
• Improved control of persistence context
  synchronization
• Support for dynamic definition of persistence unit
• Extension of Metamodel API to ORM
• Methods for dirty detection
• Additional unwrap methods




                                           4
Java Persistence 2.1 Candidate Features
Enhancements to Query Functionality

• Support for stored procedures
• Additional built-in functions
• Database and vendor function invocation
  support
• Downcasting
• Outer joins with ON conditions
• Update and delete criteria queries
• Mapping between JPQL and criteria queries
• Improved result type mapping for native
  queries
                                       5
JPA 2.1 Rollout


• Targeted as part of Java EE 7 + standalone
• Plan to file JSR this year
 – Expert Group formation in January 2011
• Timelines for Java EE 7 may impact contents
  of JPA 2.1
 – Expert Group will need to prioritize
 – Community input a very important factor here
     jsr-317-feedback@sun.com




                                                  6
JAX-RS status

• JAX-RS 1.0: 18th October 2008
• JAX-RS 1.1: 23rd November 2009
 – Aligned with Java EE 6, but not in the Web profile!
• JAX-RS 2.0: Future<?>
 – Draft JSR 12th November 2010
 – Like to submit to JCP in December
 – http://bit.ly/bkXtay
• Implementations
 – Apache CXF, Apache Wink, eXo, Jersey, RESTEasy,
   Restlet, Triaxrs

                                                    1
                                                         34
The Future<?>

• JAX-RS 1.0 is 2 years old
• JAX-RS implementations have innovated in that
  2 year period... and other frameworks
 – Play, SiteBricks, Scalate, Spring, VRaptor
• JAX-RS 2.0 should take innovations that work
  well and standardize
 – Premature standardization is a root of evil




                                                 2
                                                     35
List<Future<?>>

• Client API
 – Low level builder pattern
 – High level response matching
• Model View Controller
 – Using JSPs and Scalate
• Asynchronous interactions
 – Using Atmosphere for HTTP streaming




                                         3
                                             36
List<Future<?>>

• Hypermedia
• Improved @Inject integration
• Parameter validation
 – Using Bean Validation API (JSR-303)
• Improve ease of use
 – DRY
 – Convention over configuration




                                         4
                                             37
Improved @Inject integration

• JAX-RS was specified before JSR 330 was
  started
• Use @Inject for all injection targets
 – Some progress made with CDI integration
• Enable injection targets for methods that JAX-
  RS runtime invokes
 – resource methods, sub-resource methods and sub-
   resource locators




                                              5
                                                     38
Standard injection declarations

public class Foo {
  @Context UriInfo ui;

    @Context
    public setRequest(Request r) { … }

    public Foo(@QueryParam("x") int x) { … }
}




                                          6
                                               39
Replace @Context with @Inject

public class Foo {
  @Inject UriInfo ui;

    @Inject
    public setRequest(Request r) { … }

    @Inject
    public Foo(@QueryParam("x") int x) { … }

    @Inject SomeOtherDependency o;
}




                                          7
                                               40
Replace @Context with @Inject

public class Foo {
  @Inject UriInfo ui;

    @Inject
    public setRequest(Request r) { … }

    @Inject
    public Foo(@QueryParam int x) { … }

    @Inject SomeOtherDependency o;
}




                                          8
                                              41
Supported now with CDI

@RequestScoped
public class Foo {
  @Inject UriInfo ui;

    @Inject
    public setRequest(Request r) { … }

    public Foo() {}
    @Inject
    public Foo(@QueryParam("x") int x) { … }

    @Inject SomeOtherDependency o;
}



                                          9
                                               42
Targets for invoked methods

public class Foo {
  @Inject SomeOtherDependency o;

    @GET
    public String post(
      String s, // Request entity is not annotated
      @Context UriInfo ui,
      @? SomeOtherDependency o) { ... }
}




                                          1
                                          0     43
Targets for invoked methods

public class Foo {
  @Inject SomeOtherDependency o;

    @GET
    public String post(
      String s, // Request entity is not annotated
      @Context UriInfo ui,

     @?    SomeOtherDependency o) { ... }
}




                                            1
                                            1   44
Annotate non-entity parameters?

public class Foo {
  @Inject SomeOtherDependency o;

    @GET
    public String post(
      String s,
      @InjectParam UriInfo ui,
      @InjectParam SomeOtherDependency o) { ... }
}




                                          1
                                          2     45
Annotate entity parameter?

public class Foo {
  @Inject SomeOtherDependency o;

    @GET
    public String post(
      @Entity String s,
      UriInfo ui,
      SomeOtherDependency o) { ... }
}




                                       1
                                       3   46
Future<Future<?>>


• Asynchronous interactions with the Atmosphere
  framework
 – Long polling, HTTP streaming and WebSocket
 – Leverages JAX-RS and Jersey for a high-level
   programming model




                                                  1
                                                  4   47
Pub/Sub example

@Path("/{topic}")
  @Produces("text/plain")
  public class PubSub {
    private @PathParam("topic") Broadcaster topic;

     @Suspend @GET
     public Broadcastable subscribe() {
       return new Broadcastable(topic);
     }

     @Broadcast @POST
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     public Broadcastable publish(
         @FormParam("message") String message) {
       return new Broadcastable(message, topic);
     }
 }

                                               1
                                               5        48
Questions?


• Send feedback
• JSR 311
 – dev@jsr311.dev.java.net
 – http://jsr311.dev.java.net/
 – Note: project will transition from CollabNet to Kenai
   infrastructure at the end of the month
• Jersey
 – users@jersey.java.net
 – http://jersey.java.net/



                                                     1
                                                     6     49

Contenu connexe

Tendances

6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-sIBM
 
Dan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaDan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaCodecamp Romania
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Arun Gupta
 
03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training BookChuong Nguyen
 
5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-rameshIBM
 
vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsVMware vFabric
 
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Arun Gupta
 
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
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoMohd Safian
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
Systems Resource Management with NetIQ AppManager
Systems Resource Management with NetIQ AppManagerSystems Resource Management with NetIQ AppManager
Systems Resource Management with NetIQ AppManagerAdvanced Logic Industries
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformService2Media
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application serverRohit Kelapure
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudArun Gupta
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationArun Gupta
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 
Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Arun Gupta
 
WAS Support & Monitoring Tools
WAS Support & Monitoring ToolsWAS Support & Monitoring Tools
WAS Support & Monitoring ToolsRoyal Cyber Inc.
 

Tendances (20)

6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s6 develop web20_with_rad-tim_frnacis_sarika-s
6 develop web20_with_rad-tim_frnacis_sarika-s
 
Sail Fin Webinar Overview
Sail Fin Webinar OverviewSail Fin Webinar Overview
Sail Fin Webinar Overview
 
Dan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaDan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with Java
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
 
03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book
 
5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh5 rqm gdd-sharmila-ramesh
5 rqm gdd-sharmila-ramesh
 
vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS Apps
 
Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011Java EE 7 at JAX London 2011 and JFall 2011
Java EE 7 at JAX London 2011 and JFall 2011
 
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
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs Railo
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
Systems Resource Management with NetIQ AppManager
Systems Resource Management with NetIQ AppManagerSystems Resource Management with NetIQ AppManager
Systems Resource Management with NetIQ AppManager
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle Platform
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application server
 
V fabric overview
V fabric overviewV fabric overview
V fabric overview
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE Application
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 
Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011
 
WAS Support & Monitoring Tools
WAS Support & Monitoring ToolsWAS Support & Monitoring Tools
WAS Support & Monitoring Tools
 

En vedette

Top 50 de herramientas web para el aprendizaje
Top 50 de herramientas web para el aprendizajeTop 50 de herramientas web para el aprendizaje
Top 50 de herramientas web para el aprendizajeFernández Gorka
 
Universidad nacional ecológica israel mendoza completar
Universidad nacional ecológica israel mendoza completarUniversidad nacional ecológica israel mendoza completar
Universidad nacional ecológica israel mendoza completarIsrael Mendoza Mendez
 
Sesión 1 introdución online
Sesión 1 introdución onlineSesión 1 introdución online
Sesión 1 introdución onlineIsmael Bermúdez
 
جاى بذبيحة حمد
جاى بذبيحة حمدجاى بذبيحة حمد
جاى بذبيحة حمدMera Louis
 
Возможности сервиса
Возможности сервисаВозможности сервиса
Возможности сервисаcbwTest
 
Literature letter graphic organizer
Literature letter graphic organizerLiterature letter graphic organizer
Literature letter graphic organizermlabuski
 
InvestigacióN 6to AñO B
InvestigacióN 6to AñO BInvestigacióN 6to AñO B
InvestigacióN 6to AñO Bgueste28c9ac
 
Google Analytics as Database of Record
Google Analytics as Database of RecordGoogle Analytics as Database of Record
Google Analytics as Database of RecordDavy Tollenaere
 
Social Media Strategies for highly sucessful Virtual Events
Social Media Strategies for highly sucessful Virtual EventsSocial Media Strategies for highly sucessful Virtual Events
Social Media Strategies for highly sucessful Virtual EventsSociety3
 
Intro to vc funding june 2015
Intro to vc funding june 2015Intro to vc funding june 2015
Intro to vc funding june 2015Expara
 
PLACA MADRE Y SUS COMPONENTES
PLACA MADRE Y SUS COMPONENTESPLACA MADRE Y SUS COMPONENTES
PLACA MADRE Y SUS COMPONENTESMartin Beltran
 
Intervenciones grupales positivas para los alumnos con tdah
Intervenciones grupales positivas para los alumnos con tdahIntervenciones grupales positivas para los alumnos con tdah
Intervenciones grupales positivas para los alumnos con tdahFundación CADAH TDAH
 
Getting Started With Virtualization
Getting Started With VirtualizationGetting Started With Virtualization
Getting Started With VirtualizationBill Kalarness
 
Colin Searls presentation
Colin Searls presentationColin Searls presentation
Colin Searls presentationColin Searls
 
9.2 Group 3 Apps for Good competition entry 2015
9.2 Group 3 Apps for Good competition entry 20159.2 Group 3 Apps for Good competition entry 2015
9.2 Group 3 Apps for Good competition entry 2015scorkery
 
Internet
InternetInternet
Internet_NaXo0_
 
Political knowledge 2007
Political knowledge 2007Political knowledge 2007
Political knowledge 2007crrccenters
 

En vedette (20)

Top 50 de herramientas web para el aprendizaje
Top 50 de herramientas web para el aprendizajeTop 50 de herramientas web para el aprendizaje
Top 50 de herramientas web para el aprendizaje
 
10 porques-igualdad
10 porques-igualdad10 porques-igualdad
10 porques-igualdad
 
Universidad nacional ecológica israel mendoza completar
Universidad nacional ecológica israel mendoza completarUniversidad nacional ecológica israel mendoza completar
Universidad nacional ecológica israel mendoza completar
 
Sesión 1 introdución online
Sesión 1 introdución onlineSesión 1 introdución online
Sesión 1 introdución online
 
جاى بذبيحة حمد
جاى بذبيحة حمدجاى بذبيحة حمد
جاى بذبيحة حمد
 
Возможности сервиса
Возможности сервисаВозможности сервиса
Возможности сервиса
 
Literature letter graphic organizer
Literature letter graphic organizerLiterature letter graphic organizer
Literature letter graphic organizer
 
InvestigacióN 6to AñO B
InvestigacióN 6to AñO BInvestigacióN 6to AñO B
InvestigacióN 6to AñO B
 
Google Analytics as Database of Record
Google Analytics as Database of RecordGoogle Analytics as Database of Record
Google Analytics as Database of Record
 
Social Media Strategies for highly sucessful Virtual Events
Social Media Strategies for highly sucessful Virtual EventsSocial Media Strategies for highly sucessful Virtual Events
Social Media Strategies for highly sucessful Virtual Events
 
Intro to vc funding june 2015
Intro to vc funding june 2015Intro to vc funding june 2015
Intro to vc funding june 2015
 
PLACA MADRE Y SUS COMPONENTES
PLACA MADRE Y SUS COMPONENTESPLACA MADRE Y SUS COMPONENTES
PLACA MADRE Y SUS COMPONENTES
 
Intervenciones grupales positivas para los alumnos con tdah
Intervenciones grupales positivas para los alumnos con tdahIntervenciones grupales positivas para los alumnos con tdah
Intervenciones grupales positivas para los alumnos con tdah
 
Vanvasa resort
Vanvasa resortVanvasa resort
Vanvasa resort
 
Getting Started With Virtualization
Getting Started With VirtualizationGetting Started With Virtualization
Getting Started With Virtualization
 
Colin Searls presentation
Colin Searls presentationColin Searls presentation
Colin Searls presentation
 
9.2 Group 3 Apps for Good competition entry 2015
9.2 Group 3 Apps for Good competition entry 20159.2 Group 3 Apps for Good competition entry 2015
9.2 Group 3 Apps for Good competition entry 2015
 
พิชิตชัยชาญ วรรณบุตร
พิชิตชัยชาญ  วรรณบุตรพิชิตชัยชาญ  วรรณบุตร
พิชิตชัยชาญ วรรณบุตร
 
Internet
InternetInternet
Internet
 
Political knowledge 2007
Political knowledge 2007Political knowledge 2007
Political knowledge 2007
 

Similaire à Java one brazil_keynote_dochez

TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 javatwo2011
 
Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Abhik Biswas
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceOW2
 
Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architectureRamnivas Laddad
 
Eclipse & die Microsoft cloud
Eclipse & die Microsoft cloudEclipse & die Microsoft cloud
Eclipse & die Microsoft cloudPatric Boscolo
 
Cloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteCloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteRamnivasLaddad
 
Applications at Scale
Applications at ScaleApplications at Scale
Applications at ScaleServiceMesh
 
Building Java Apps on Heroku and Force.com
Building Java Apps on Heroku and Force.comBuilding Java Apps on Heroku and Force.com
Building Java Apps on Heroku and Force.comSalesforce Developers
 
NIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudNIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudKristian Nese
 
Java EE7: Developing for the Cloud
Java EE7: Developing for the CloudJava EE7: Developing for the Cloud
Java EE7: Developing for the CloudDmitry Buzdin
 
Terence Barr - what's new in m&e - 24mai2011
Terence Barr - what's new in m&e - 24mai2011Terence Barr - what's new in m&e - 24mai2011
Terence Barr - what's new in m&e - 24mai2011Agora Group
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Alexandre Morgaut
 
VMware vFabric - CIO Webinar - Al Sargent
VMware vFabric - CIO Webinar - Al SargentVMware vFabric - CIO Webinar - Al Sargent
VMware vFabric - CIO Webinar - Al SargentVMware vFabric
 
Patterns of Cloud Applications Using Microsoft Azure Services Platform
Patterns of Cloud Applications Using Microsoft Azure Services PlatformPatterns of Cloud Applications Using Microsoft Azure Services Platform
Patterns of Cloud Applications Using Microsoft Azure Services PlatformDavid Chou
 
Building i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadinBuilding i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadinJoonas Lehtinen
 
Continuous delivery on the cloud
Continuous delivery on the cloudContinuous delivery on the cloud
Continuous delivery on the cloudAnand B Narasimhan
 
DevOps for Mobile - DevOpsDays, NY, 2013
DevOps for Mobile - DevOpsDays, NY, 2013DevOps for Mobile - DevOpsDays, NY, 2013
DevOps for Mobile - DevOpsDays, NY, 2013Sanjeev Sharma
 
DevOps як System Administration 2.0
DevOps як System Administration 2.0DevOps як System Administration 2.0
DevOps як System Administration 2.0SoftServe
 

Similaire à Java one brazil_keynote_dochez (20)

TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
 
Gfp Launch Sailfin Whatis Sreeram
Gfp Launch Sailfin Whatis SreeramGfp Launch Sailfin Whatis Sreeram
Gfp Launch Sailfin Whatis Sreeram
 
Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScience
 
Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architecture
 
Eclipse & die Microsoft cloud
Eclipse & die Microsoft cloudEclipse & die Microsoft cloud
Eclipse & die Microsoft cloud
 
Cloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteCloud Foundry Open Tour Keynote
Cloud Foundry Open Tour Keynote
 
Applications at Scale
Applications at ScaleApplications at Scale
Applications at Scale
 
Building Java Apps on Heroku and Force.com
Building Java Apps on Heroku and Force.comBuilding Java Apps on Heroku and Force.com
Building Java Apps on Heroku and Force.com
 
NIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudNIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private Cloud
 
Java EE7: Developing for the Cloud
Java EE7: Developing for the CloudJava EE7: Developing for the Cloud
Java EE7: Developing for the Cloud
 
Terence Barr - what's new in m&e - 24mai2011
Terence Barr - what's new in m&e - 24mai2011Terence Barr - what's new in m&e - 24mai2011
Terence Barr - what's new in m&e - 24mai2011
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
 
VMware vFabric - CIO Webinar - Al Sargent
VMware vFabric - CIO Webinar - Al SargentVMware vFabric - CIO Webinar - Al Sargent
VMware vFabric - CIO Webinar - Al Sargent
 
Patterns of Cloud Applications Using Microsoft Azure Services Platform
Patterns of Cloud Applications Using Microsoft Azure Services PlatformPatterns of Cloud Applications Using Microsoft Azure Services Platform
Patterns of Cloud Applications Using Microsoft Azure Services Platform
 
Building i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadinBuilding i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadin
 
Continuous delivery on the cloud
Continuous delivery on the cloudContinuous delivery on the cloud
Continuous delivery on the cloud
 
DevOps for Mobile - DevOpsDays, NY, 2013
DevOps for Mobile - DevOpsDays, NY, 2013DevOps for Mobile - DevOpsDays, NY, 2013
DevOps for Mobile - DevOpsDays, NY, 2013
 
DevOps як System Administration 2.0
DevOps як System Administration 2.0DevOps як System Administration 2.0
DevOps як System Administration 2.0
 

Java one brazil_keynote_dochez

  • 1. 1
  • 2. <Insert Picture Here> Future of Java EE Jerome Dochez Glassfish Architect
  • 3. The following is intended to outline our general product direction. It is intended for information purposes, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle's products remains at the sole discretion of Oracle. 3
  • 4. Java EE and… the Cloud? • Containers are back in vogue! 4
  • 5. Java EE and… the Cloud? • We have containers... • We have services… injectable services… • We scale to large clusters… • We have a security model… 5
  • 6. Java EE for the Cloud • Tighter requirements for resource and state management • Better isolation between applications • Potential standard APIs for NRDBMS, caching, other • Common management and monitoring interfaces • Evolution, not revolution 6
  • 7. Better Packaging for the Cloud • Apps are versioned • Multiple versions can coexist • Must deal with data versioning, upgrades, etc. • Need ability to specify QoS properties • Apps both expose and connect to services 7
  • 8. Cloud Platform Application Java Persistence Queueing … Service Service Service State Management Virtualization Layer 8
  • 9. Cloud Platform Application Code Code Code QoS Schema Migration Security … Module Module Module Information Java Persistence Queueing … Service Service Service State Management Virtualization Layer 9
  • 10. Cloud Platform Application Application Application Java Persistence Queueing … Service Service Service State Management Virtualization Layer 10
  • 11. Cloud Platform Application Application Application Application Application Java Persistence Queueing … Service Service Service State Management Virtualization Layer 11
  • 12. Cloud Platform Managed Environment Application Application Application Application Application Java Persistence Queueing … Service Service Service State Management Virtualization Layer 12
  • 13. Demo Application JSF EJB/ Browser CDI JPA Database EJB Timer REST JPA Client Jersey Client API
  • 14. Modularity • Build on Java SE work • Applications made of modules • Dependencies are explicit • Versioning is built-in • Classloaders straightened out 14
  • 15. Modular Applications demo.app demo-web-1.0.3 15
  • 16. Modular Applications demo.app twitter-client-2.3.0 demo-web-1.0.3 demo-persist-1.4.0 16
  • 17. Modular Applications demo.app twitter-client-2.4.0 demo-web-1.0.3 demo-persist-1.4.0 requires requires requires javaee-web-7.0 jpa-2.1 jax-rs-2.0 17
  • 18. Modular Applications demo.app twitter-client-2.3.0 demo-web-1.0.3 demo-persist-1.4.0 requires requires requires javaee-web-7.0 jpa-2.1 jax-rs-2.0 18
  • 19. Modular Applications demo.app twitter-client-2.3.0 demo-web-1.0.3 demo-persist-1.4.0 requires requires javaee-web-7.0 jpa-2.1 jax-rs-2.0 implements gf-appserver-4.0.1 … … … … 19
  • 20. Modular Applications demo.app twitter-client-2.3.0 demo-web-1.0.3 demo-persist-1.4.0 javaee-web-7.0 jpa-2.1 jax-rs-2.0 implements implements gf-appserver-4.0.1 implements eclipselink-2 … … … … jersey-2.0 20
  • 21. Modular Applications demo.app twitter-client-2.4.0 jax-rs-2.1 demo-web-1.0.4 demo-persist-1.4.0 jersey-2.1.1 javaee-web-7.0 jpa-2.1 gf-appserver-4.0.1 eclipselink-2 … … … … 21
  • 22. Modular Applications demo.app twitter-client-2.4.0 jax-rs-2.1 demo-web-1.0.4 demo-persist-1.4.0 jersey-2.1.1 javaee-web-7.0 jpa-2.1 jax-rs-2.1 gf-appserver-4.1.5 eclipselink-2 … … … … jersey-2.1.5 22
  • 23. JSF 2.1: short term • Transient State Saving • UIData Transient state saving • XML view cleanup • Facelets Cache API • “XML free” in specification 23
  • 24. JSF 2.2 • HTML5 – semantic tags – support of browser feature detection – HTML5 for components – Audio and video – Standardize popular API (Trinidad’s page resolver, ADF ApplicationContectManager) – JSR-276, tools support – Enhancements to existing features • mobile renderkits • composite components 24
  • 25. JMS • Resolve ambiguities and uncertainties in the APIS – Remove complexities in the existing API – Incomplete and optional integration in Java EE env. • Standardize common vendor extensions/ features • Integration with other specs and non-Java languages • Expand JMS spec with new developments in messaging 25
  • 26. Web Tier • Web socket support • Standard JSON API • HTML5 support • NIO.2-based web container 26
  • 27. Web Socket Sample (with Grizzly WebSocket API) public class ChatApplication extends WebSocketApplication<ChatWebSocket> { protected ChatWebSocket createWebSocket(Connection c, ServerWebSocketMeta m) { return new ChatWebSocket(c, m, this); } public void onMessage(ChatWebSocket s, DataFrame frame) { String msg = frame.getAsText(); s.sendJson(s.getUser(), msg); } public void onClose(ChatWebSocket s) { s.sendJson(“system”, s.getUser() + “ left the chat”); } } 27
  • 28. Async Web Sample (Atmosphere) Java EE 8 @Path("/{topic}") @Produces("text/plain;charset=ISO-8859-1") public class PubSub { private @PathParam("topic") Broadcaster topic; @GET @Suspend public Broadcastable subscribe() { return new Broadcastable("",topic); } @POST @Broadcast @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public Broadcastable publish( @FormParam("message") String message) { return new Broadcastable(message,topic); } 28
  • 29. Java Persistence 2.1 • Build on functionality added in JPA 2.0 • Features largely driven by community input • Infilling for – Improved standardization – Improved flexibility 2
  • 30. Java Persistence 2.1 Candidate Features O/R Mapping and Modeling • Converters / custom types • “Fetch” plans / profiles • Additional mapping metadata • User-defined naming strategies • More flexibility in use of generated values • Immutable attributes; readonly entities • More flexible XML descriptors 3
  • 31. Java Persistence 2.1 Candidate Features API Enhancements • Additional event listeners and callbacks • Improved control of persistence context synchronization • Support for dynamic definition of persistence unit • Extension of Metamodel API to ORM • Methods for dirty detection • Additional unwrap methods 4
  • 32. Java Persistence 2.1 Candidate Features Enhancements to Query Functionality • Support for stored procedures • Additional built-in functions • Database and vendor function invocation support • Downcasting • Outer joins with ON conditions • Update and delete criteria queries • Mapping between JPQL and criteria queries • Improved result type mapping for native queries 5
  • 33. JPA 2.1 Rollout • Targeted as part of Java EE 7 + standalone • Plan to file JSR this year – Expert Group formation in January 2011 • Timelines for Java EE 7 may impact contents of JPA 2.1 – Expert Group will need to prioritize – Community input a very important factor here jsr-317-feedback@sun.com 6
  • 34. JAX-RS status • JAX-RS 1.0: 18th October 2008 • JAX-RS 1.1: 23rd November 2009 – Aligned with Java EE 6, but not in the Web profile! • JAX-RS 2.0: Future<?> – Draft JSR 12th November 2010 – Like to submit to JCP in December – http://bit.ly/bkXtay • Implementations – Apache CXF, Apache Wink, eXo, Jersey, RESTEasy, Restlet, Triaxrs 1 34
  • 35. The Future<?> • JAX-RS 1.0 is 2 years old • JAX-RS implementations have innovated in that 2 year period... and other frameworks – Play, SiteBricks, Scalate, Spring, VRaptor • JAX-RS 2.0 should take innovations that work well and standardize – Premature standardization is a root of evil 2 35
  • 36. List<Future<?>> • Client API – Low level builder pattern – High level response matching • Model View Controller – Using JSPs and Scalate • Asynchronous interactions – Using Atmosphere for HTTP streaming 3 36
  • 37. List<Future<?>> • Hypermedia • Improved @Inject integration • Parameter validation – Using Bean Validation API (JSR-303) • Improve ease of use – DRY – Convention over configuration 4 37
  • 38. Improved @Inject integration • JAX-RS was specified before JSR 330 was started • Use @Inject for all injection targets – Some progress made with CDI integration • Enable injection targets for methods that JAX- RS runtime invokes – resource methods, sub-resource methods and sub- resource locators 5 38
  • 39. Standard injection declarations public class Foo { @Context UriInfo ui; @Context public setRequest(Request r) { … } public Foo(@QueryParam("x") int x) { … } } 6 39
  • 40. Replace @Context with @Inject public class Foo { @Inject UriInfo ui; @Inject public setRequest(Request r) { … } @Inject public Foo(@QueryParam("x") int x) { … } @Inject SomeOtherDependency o; } 7 40
  • 41. Replace @Context with @Inject public class Foo { @Inject UriInfo ui; @Inject public setRequest(Request r) { … } @Inject public Foo(@QueryParam int x) { … } @Inject SomeOtherDependency o; } 8 41
  • 42. Supported now with CDI @RequestScoped public class Foo { @Inject UriInfo ui; @Inject public setRequest(Request r) { … } public Foo() {} @Inject public Foo(@QueryParam("x") int x) { … } @Inject SomeOtherDependency o; } 9 42
  • 43. Targets for invoked methods public class Foo { @Inject SomeOtherDependency o; @GET public String post( String s, // Request entity is not annotated @Context UriInfo ui, @? SomeOtherDependency o) { ... } } 1 0 43
  • 44. Targets for invoked methods public class Foo { @Inject SomeOtherDependency o; @GET public String post( String s, // Request entity is not annotated @Context UriInfo ui, @? SomeOtherDependency o) { ... } } 1 1 44
  • 45. Annotate non-entity parameters? public class Foo { @Inject SomeOtherDependency o; @GET public String post( String s, @InjectParam UriInfo ui, @InjectParam SomeOtherDependency o) { ... } } 1 2 45
  • 46. Annotate entity parameter? public class Foo { @Inject SomeOtherDependency o; @GET public String post( @Entity String s, UriInfo ui, SomeOtherDependency o) { ... } } 1 3 46
  • 47. Future<Future<?>> • Asynchronous interactions with the Atmosphere framework – Long polling, HTTP streaming and WebSocket – Leverages JAX-RS and Jersey for a high-level programming model 1 4 47
  • 48. Pub/Sub example @Path("/{topic}") @Produces("text/plain") public class PubSub { private @PathParam("topic") Broadcaster topic; @Suspend @GET public Broadcastable subscribe() { return new Broadcastable(topic); } @Broadcast @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public Broadcastable publish( @FormParam("message") String message) { return new Broadcastable(message, topic); } } 1 5 48
  • 49. Questions? • Send feedback • JSR 311 – dev@jsr311.dev.java.net – http://jsr311.dev.java.net/ – Note: project will transition from CollabNet to Kenai infrastructure at the end of the month • Jersey – users@jersey.java.net – http://jersey.java.net/ 1 6 49