Your SlideShare is downloading. ×
0
1   Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
The Java EE 7 Platform:Productivity++ andEmbracing HTML5Arun Gupta, Java EE & GlassFish Guy@arungupta
The preceding is intended to outline our general product direction. It is             intended for information purposes on...
Java EE 6 Platform                                                                           December 10, 20094   Copyrigh...
Java EE 6 – Key Statistics                §  50+ Million Java EE 6 Component Downloads                §  #1 Choice for E...
Java EE 7 Revised Scope           Productivity and HTML5           •  Higher Productivity                    –  Less Boile...
Java EE 7 – Candidate JSRs                                                                                  JAX-RS        ...
Java API for RESTful Web Services 2.0              •  Client API              •  Message Filters & Entity Interceptors    ...
Java API for RESTful Web Services 2.0           Client API - Now            // Get instance of Client            Client cl...
Java Message Service 2.0            Simplify the existing API            •  Less verbose            •  Reduce boilerplate ...
Java Message Service 2.0            Sending a Message using JMS 1.1            @Resource(lookup = "myConnectionFactory”)
 ...
Java Message Service 2.0            Sending message using JMS 2.0            @Inject
            JMSContext context;"     ...
Java API for JSON Processing 1.0            •  API to parse and generate JSON            •  Streaming API                 ...
Java API for JSON Processing 1.0           Streaming API – JsonParser          {"                      "firstName": "John"...
Java API for WebSocket 1.0           §  API for WebSocket Client/Endpoints                –  Annotation-driven (@WebSocke...
Java API for WebSocket 1.0          Hello World – POJO/Annotation-driven      import javax.websocket.*;
      
      @WebS...
Java API for WebSocket 1.0         Chat Server           @WebSocketEndpoint("/chat")"           public class ChatBean {"  ...
Java API for WebSocket 1.0         Chat Server (contd.)                        . . .
           
                        @...
Bean Validation 1.1           §  Open: Spec, Reference Implementation, TCK           §  Alignment with Dependency Inject...
Bean Validation 1.1            Method Parameter and Result Validation       public void placeOrder( 
     Built-in        ...
Batch Applications for the Java Platform 1.0           §  Suited for non-interactive, bulk-oriented and long-            ...
Batch Applications for the Java Platform 1.0         Concepts            •  Job: Entire batch process                     ...
Batch Applications for the Java Platform 1.0             Job Specification Language – Chunked Step<step id=”sendStatements...
Java Persistence API 2.1           §  Schema Generation           §  Unsynchronized Persistence Contexts           §  B...
Servlet 3.1           §  Non-blocking I/O           §  Protocol Upgrade           §  Security Enhancements25   Copyrigh...
Servlet 3.1         Non-blocking IO - Traditional         public class TestServlet extends HttpServlet
            protect...
Servlet 3.1         Non-blocking I/O: doGet Code Sample         AsyncContext context = request.startAsync();
         Serv...
Servlet 3.1         Non-blocking I/O: MyReadListener Code Sample         @Override
         public void onDataAvailable() ...
Concurrency Utilities for Java EE 1.0         Goals           §  Provide concurrency capabilities to Java EE application ...
Concurrency Utilities for Java EE 1.0         Defining ManagedExecutorService using JNDI           §  Recommended to bind...
Concurrency Utilities for Java EE 1.0         Submit Tasks to ManagedExecutorService using JNDI         public class TestS...
JavaServer Faces 2.2           §  Flow Faces           §  HTML5 Friendly Markup Support                     –  Pass thro...
Java EE 7 – Implementation Status                                                                            4.0          ...
Java EE 8 and Beyond            Standards-based cloud programming model           •  Deliver cloud architecture           ...
Adopt-a-JSR         How do I get started ? – glassfish.org/adoptajsr35   Copyright © 2013, Oracle and/or its affiliates. A...
Adopt-a-JSR         Participating JUGs36   Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Call to Action               •  Specs: javaee-spec.java.net               •  Implementation: glassfish.org               •...
Q&A38   Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
39   Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
40   Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Upcoming SlideShare
Loading in...5
×

The Java EE 7 Platform: Productivity++ & Embracing HTML5

5,452

Published on

The Java EE 7 Platform: Productivity++ & Embracing HTML5 at Jf

Published in: Technology

Transcript of "The Java EE 7 Platform: Productivity++ & Embracing HTML5"

  1. 1. 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  2. 2. The Java EE 7 Platform:Productivity++ andEmbracing HTML5Arun Gupta, Java EE & GlassFish Guy@arungupta
  3. 3. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  4. 4. Java EE 6 Platform December 10, 20094 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  5. 5. Java EE 6 – Key Statistics §  50+ Million Java EE 6 Component Downloads §  #1 Choice for Enterprise Developers §  #1 Application Development Platform §  Fastest implementation of a Java EE release5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  6. 6. Java EE 7 Revised Scope Productivity and HTML5 •  Higher Productivity –  Less Boilerplate –  Richer Functionality –  More Defaults •  HTML5 Support –  WebSocket –  JSON –  HTML5 Forms6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  7. 7. Java EE 7 – Candidate JSRs JAX-RS Java Caching API JSP 2.2 JSF 2.2 2.0 EL 3.0 (JSR 107) PortableExtensions Bean Validation 1.1 Concurrency Utilities Servlet 3.1 (JSR 236) Common Batch Applications Interceptors 1.1 CDI 1.1 (JSR 352)Annotations 1.1 Java API for JSON Managed Beans 1.0 EJB 3.2 (JSR 353)Connector Java API for WebSocket JPA 2.1 JTA 1.2 JMS 2.0 (JSR 356) 1.6 New Major Updated Release7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  8. 8. Java API for RESTful Web Services 2.0 •  Client API •  Message Filters & Entity Interceptors •  Asynchronous Processing – Server & Client •  Hypermedia Support •  Common Configuration8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  9. 9. Java API for RESTful Web Services 2.0 Client API - Now // Get instance of Client Client client = ClientFactory.newClient();
 
 // Get customer name for the shipped products String name = client.target(“../orders/{orderId}/customer”)
 .resolveTemplate(”orderId", ”10”)
 .queryParam(”shipped", ”true”)
 .request()
 .get(String.class);"9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  10. 10. Java Message Service 2.0 Simplify the existing API •  Less verbose •  Reduce boilerplate code •  Resource injection •  Connection, Session, and other objects are AutoCloseable •  Requires Resource Adapter for Java EE containers •  Simplified API in both Java SE and EE10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  11. 11. Java Message Service 2.0 Sending a Message using JMS 1.1 @Resource(lookup = "myConnectionFactory”)
 ConnectionFactory connectionFactory;" Application Server @Resource(lookup = "myQueue”)
 Specific Resources Queue myQueue;" public void sendMessage (String payload) {
 Connection connection = null;
 try {
 connection = connectionFactory.createConnection();
 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 Boilerplate Code MessageProducer messageProducer = session.createProducer(myQueue);
 TextMessage textMessage = session.createTextMessage(payload);
 messageProducer.send(textMessage);
 } catch (JMSException ex) {
 //. . .
 } finally {
 if (connection != null) {
 try {
 connection.close();
 Exception Handling } catch (JMSException ex) {" //. . .
 }
 }
 }
 }"11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  12. 12. Java Message Service 2.0 Sending message using JMS 2.0 @Inject
 JMSContext context;" " @Resource(lookup = "java:global/jms/demoQueue”)
 Queue demoQueue;" " public void sendMessage(String payload) {" context.createProducer().send(demoQueue, payload);" }"12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  13. 13. Java API for JSON Processing 1.0 •  API to parse and generate JSON •  Streaming API –  Low-level, efficient way to parse/generate JSON –  Provides pluggability for parsers/generators •  Object Model –  Simple, easy-to-use high-level API –  Implemented on top of Streaming API •  Binding JSON to Java objects forthcoming13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  14. 14. Java API for JSON Processing 1.0 Streaming API – JsonParser {" "firstName": "John", "lastName": "Smith", "age": 25, 
 "phoneNumber": [
 { "type": "home", "number": "212 555-1234" },
 { "type": "fax", "number": "646 555-4567" }
 ]
 }" Iterator<Event> it = parser.iterator();" Event event = it.next(); // START_OBJECT event = it.next(); // KEY_NAME event = it.next(); // VALUE_STRING String name = parser.getString(); // "John” "14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  15. 15. Java API for WebSocket 1.0 §  API for WebSocket Client/Endpoints –  Annotation-driven (@WebSocketEndpoint) –  Interface-driven (Endpoint) –  Client (@WebSocketClient) §  SPI for data frames –  WebSocket opening handshake negotiation §  Integration with Java EE Web container15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  16. 16. Java API for WebSocket 1.0 Hello World – POJO/Annotation-driven import javax.websocket.*;
 
 @WebSocketEndpoint("/hello")
 public class HelloBean {
 
 @WebSocketMessage
 public String sayHello(String name) {
 return “Hello “ + name;
 }
 }"16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  17. 17. Java API for WebSocket 1.0 Chat Server @WebSocketEndpoint("/chat")" public class ChatBean {" Set<Session> peers = Collections.synchronizedSet(…);
 
 @WebSocketOpen
 public void onOpen(Session peer) {
 peers.add(peer);
 }
 
 @WebSocketClose
 public void onClose(Session peer) {
 peers.remove(peer);
 }
 
 . . ."17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  18. 18. Java API for WebSocket 1.0 Chat Server (contd.) . . .
 
 @WebSocketMessage" public void message(String message, Session client) {" for (Session peer : peers) {
 peer.getRemote().sendObject(message);
 }
 }
 }"18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  19. 19. Bean Validation 1.1 §  Open: Spec, Reference Implementation, TCK §  Alignment with Dependency Injection §  Method-level validation –  Constraints on parameters and return values –  Check pre-/post-conditions19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  20. 20. Bean Validation 1.1 Method Parameter and Result Validation public void placeOrder( 
 Built-in @NotNull String productName,
 @NotNull @Max(“10”) Integer quantity,
 Custom @Customer String customer) { 
 //. . .
 }" @Future
 public Date getAppointment() {
 //. . .
 }"20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  21. 21. Batch Applications for the Java Platform 1.0 §  Suited for non-interactive, bulk-oriented and long- running tasks §  Computationally intensive §  Can execute sequentially/parallel §  May be initiated –  Adhoc –  Scheduled §  No scheduling APIs included21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  22. 22. Batch Applications for the Java Platform 1.0 Concepts •  Job: Entire batch process –  Put together through a Job Specification Language (XML) •  Step: Independent, sequential phase of a job –  ItemReader: Retrieval of input for a step, one at a time –  ItemProcessor: Business processing of an item –  ItemWriter: Output of an item, chunks of items at a time •  JobOperator: Manage batch processing •  JobRepository: Metadata for jobs22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  23. 23. Batch Applications for the Java Platform 1.0 Job Specification Language – Chunked Step<step id=”sendStatements”>" @ReadItem
 <chunk reader=”AccountReader”" public Account readAccount() {
 processor=”AccountProcessor”
 // read account using JPA" writer=”EmailWriter”" }" chunk-size=”10” />" "</step>" @ProcessItem" public Account processAccount(Account account) {
 // calculate balance" }" @WriteItems" " public void sendEmail(List<Account> accounts) {
 // use JavaMail to send email" }" " 23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  24. 24. Java Persistence API 2.1 §  Schema Generation §  Unsynchronized Persistence Contexts §  Bulk update/delete using Criteria" §  User-defined functions using FUNCTION §  Stored Procedure Query24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  25. 25. Servlet 3.1 §  Non-blocking I/O §  Protocol Upgrade §  Security Enhancements25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  26. 26. Servlet 3.1 Non-blocking IO - Traditional public class TestServlet extends HttpServlet
 protected void doGet(HttpServletRequest request,
 HttpServletResponse response) 
 throws IOException, ServletException {
 ServletInputStream input = request.getInputStream();
 byte[] b = new byte[1024];
 int len = -1;
 while ((len = input.read(b)) != -1) {
 . . .
 }
 }
 }"26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  27. 27. Servlet 3.1 Non-blocking I/O: doGet Code Sample AsyncContext context = request.startAsync();
 ServletInputStream input = request.getInputStream();
 input.setReadListener(
 new MyReadListener(input, context)); "27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  28. 28. Servlet 3.1 Non-blocking I/O: MyReadListener Code Sample @Override
 public void onDataAvailable() {
 try {
 StringBuilder sb = new StringBuilder();
 int len = -1;
 byte b[] = new byte[1024];
 while (input.isReady() && (len = input.read(b)) != -1) {
 String data = new String(b, 0, len);
 System.out.println("--> " + data);
 }
 } catch (IOException ex) {
 . . .
 }
 }
 . . .
28 " Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  29. 29. Concurrency Utilities for Java EE 1.0 Goals §  Provide concurrency capabilities to Java EE application components –  Without compromising container integrity §  Support simple (common) and advanced concurrency patterns29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  30. 30. Concurrency Utilities for Java EE 1.0 Defining ManagedExecutorService using JNDI §  Recommended to bind in java:comp/env/concurrent subcontext <resource-env-ref>
 <resource-env-ref-name>
 concurrent/BatchExecutor
 </resource-env-ref-name>
 <resource-env-ref-type>
 javax.enterprise.concurrent.ManagedExecutorService
 </resource-env-ref-type>
 </resource-env-ref>"30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  31. 31. Concurrency Utilities for Java EE 1.0 Submit Tasks to ManagedExecutorService using JNDI public class TestServlet extends HTTPServlet {
 @Resource(name=“concurrent/BatchExecutor”)
 ManagedExecutorService executor;
 
 Future future = executor.submit(new MyTask());
 
 class MyTask implements Runnable {
 public void run() { 
 . . . // task logic
 }
 }
 }
31 " Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  32. 32. JavaServer Faces 2.2 §  Flow Faces §  HTML5 Friendly Markup Support –  Pass through attributes and elements §  Cross Site Request Forgery Protection §  Loading Facelets via ResourceHandler" §  File Upload Component §  Multi-templating32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  33. 33. Java EE 7 – Implementation Status 4.0 download.java.net/glassfish/4.0/promoted/33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  34. 34. Java EE 8 and Beyond Standards-based cloud programming model •  Deliver cloud architecture Storage NoSQL •  Multi tenancy for SaaS JSON-B Multitenancy Java EE 7 applications Concurrency Cloud PaaS •  Incremental delivery of JSRs Enablement Thin Server Architecture •  Modularity based on Jigsaw34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  35. 35. Adopt-a-JSR How do I get started ? – glassfish.org/adoptajsr35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  36. 36. Adopt-a-JSR Participating JUGs36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  37. 37. Call to Action •  Specs: javaee-spec.java.net •  Implementation: glassfish.org •  The Aquarium: blogs.oracle.com/theaquarium •  Adopt a JSR: glassfish.org/adoptajsr •  NetBeans: wiki.netbeans.org/JavaEE737 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  38. 38. Q&A38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  39. 39. 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  40. 40. 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×