What's new in Java EE 7?
Bruno Borges
Oracle Product Manager e Java Evangelist
blogs.oracle.com/brunoborges
@brunoborges
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Hola!
@brunoborges
blogs.oracle.com/brunoborges
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
The preceding is intended to outline our general prod...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Top Ten Features in Java EE 6
1. EJB packaging in a W...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification f...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Trends versus Spring
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java EE 7 Themes
 More annotated POJOs
 Less boiler...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
EJB 3.2
Servlet 3.1
CDI
Extensions
Batch 1.0
Web
Frag...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Top 10 Features Java EE 7
 WebSocket client/server e...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java API for WebSocket 1.0
Annotated Endpoint
import ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java API for WebSocket 1.0
@ServerEndpoint("/chat")
p...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java API for JSON Processing 1.0
 API to parse and g...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
{
"firstName": "John", "lastName": "Smith", "age": 25...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Batch Applications 1.0
 Suited for non-interactive, ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Batch Applications 1.0
 Job: Batch process
 Step: I...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Batch Applications 1.0
<step id=”sendStatements”>
<ch...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Concurrency Utilities for Java EE 1.0
 Provide async...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Concurrency Utilities for Java EE 1.0
 Provide 4 man...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Concurrency Utilities for Java EE 1.0
public class Te...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java API for RESTful Web Services 2.0
 Client API
 ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java API for RESTful Web Services 2.0
Client API
// G...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Message Service 2.0
 Simplified API
– Less verb...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Message Service 2.0
@Resource(lookup = "myConnec...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Message Service 2.0
@Inject
JMSContext context;
...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Bean Validation 1.1
 Alignment with Dependency Injec...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Bean Validation 1.1
Method Parameter and Result Valid...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Persistence API 2.1
 Schema Generation
– javax....
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
 Non-blocking I/O
 Protocol Upgrade
 S...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
public class TestServlet extends HttpServ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
AsyncContext context = request.startAsync...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
@Override
public void onDataAvailable() {...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
JavaServer Faces 2.2
 Faces Flow
 Resource Library ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Java Transaction API 1.2
 @Transactional: Define tra...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Novas Possibilidades com Java EE 7
 Camada Web
 100...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Novas Possibilidades com Java EE 7
 Camada Back-end
...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
glassfish.org
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Call to Action
• Specs: javaee-spec.java.net
• Implem...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Grácias!
@brunoborges
blogs.oracle.com/brunoborges
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Preguntas?
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Upcoming SlideShare
Loading in …5
×

OTN Tour 2013: What's new in java EE 7

1,997 views

Published on

Slides I used during OTN Tour 2013 for "What's new in Java EE 7"

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,997
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
85
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

OTN Tour 2013: What's new in java EE 7

  1. 1. What's new in Java EE 7? Bruno Borges Oracle Product Manager e Java Evangelist blogs.oracle.com/brunoborges @brunoborges
  2. 2. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Hola! @brunoborges blogs.oracle.com/brunoborges
  3. 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 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.
  4. 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Top Ten Features in Java EE 6 1. EJB packaging in a WAR 2. Type-safe dependency injection 3. Optional deployment descriptors (web.xml, faces-config.xml) 4. JSF standardizing on Facelets 5. One class per EJB 6. Servlet and CDI extension points 7. CDI Events 8. EJBContainer API 9. Cron-based @Schedule 10. Web Profile Launched in December 2009
  5. 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  6. 6. Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13 Java EE 7 - Productivity - HTML5 Support - Enterprise Demands
  7. 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Trends versus Spring
  8. 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java EE 7 Themes  More annotated POJOs  Less boilerplate code  Cohesive integrated platform  Default resources  Batch Applications  Concurrency Utilities  Simplified JMS and Compatibility  WebSocket  JSON Processing  Servlet 3.1 NIO  REST  HTML5-Friendly Markup
  9. 9. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. EJB 3.2 Servlet 3.1 CDI Extensions Batch 1.0 Web Fragments Java EE 7 JSRs JCA 1.7JMS 2.0JPA 2.1 Managed Beans 1.0 Concurrency 1.0 Common Annotations 1.1 Interceptors 1.2, JTA 1.2 CDI 1.1 JSF 2.2, JSP 2.3, EL 3.0 JAX-RS 2.0, JAX-WS 2.2 JSON 1.0 WebSocket 1.0
  10. 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Top 10 Features Java EE 7  WebSocket client/server endpoints  Batch Applications  JSON Processing  Concurrency Utilities  Simplified JMS API  @Transactional and @TransactionScoped!  JAX-RS Client API  Default Resources  More annotated POJOs  Faces Flow
  11. 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java API for WebSocket 1.0 Annotated Endpoint import javax.websocket.*; @ServerEndpoint("/hello") public class HelloBean { @OnMessage public String sayHello(String name) { return “Hello “ + name; } }
  12. 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java API for WebSocket 1.0 @ServerEndpoint("/chat") public class ChatBean { static Set<Session> peers = Collections.synchronizedSet(…); @OnOpen public void onOpen(Session peer) {peers.add(peer);} @OnClose public void onClose(Session peer) {peers.remove(peer);} @OnMessage public void message(String message, Session client) { peers.forEach(peer -> peer.getRemote().sendObject(message); } } Chat Server
  13. 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 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 API – Simple, easy-to-use high-level API – Implemented on top of Streaming API  Binding JSON to Java objects forthcoming
  14. 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. { "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” Java API for JSON Processing 1.0 Streaming API – JsonParser
  15. 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Batch Applications 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 included
  16. 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Batch Applications 1.0  Job: Batch process  Step: Independent, sequential phase of job – Reader, Processor, Writer  Job Operator: Manage batch processing  Job Repository: Metadata for jobs
  17. 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Batch Applications 1.0 <step id=”sendStatements”> <chunk reader ref=”accountReader” processor ref=”accountProcessor” writer ref=”emailWriter” chunk-size=”10” /> </step> …implements ItemReader { public Object readItem() { // read account using JPA } …implements ItemProcessor { Public Object processItems(Object account) { // read Account, return Statement } …implements ItemWriter { public void writeItems(List accounts) { // use JavaMail to send email } Job Specification Language – Chunked Step
  18. 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Concurrency Utilities for Java EE 1.0  Provide asynchronous capabilities to Java EE application components – Without compromising container integrity  Extension of Java SE Concurrency Utilities API (JSR 166)  Support simple (common) and advanced concurrency patterns
  19. 19. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Concurrency Utilities for Java EE 1.0  Provide 4 managed objects – ManagedExecutorService – ManagedScheduledExecutorService – ManagedThreadFactory – ContextService  Context propagation  Task event notifications  Transactions
  20. 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Concurrency Utilities for Java EE 1.0 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 } } } Submit Tasks to ManagedExecutorService using JNDI
  21. 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java API for RESTful Web Services 2.0  Client API  Message Filters and Entity Interceptors  Asynchronous Processing – Server and Client  Common Configuration
  22. 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java API for RESTful Web Services 2.0 Client API // Get instance of Client Client client = ClientBuilder.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);
  23. 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java Message Service 2.0  Simplified API – Less verbose – Reduced boilerplate code – Resource injection – Try-with-resources for Connection, Session, etc.  Both in Java EE and SE
  24. 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java Message Service 2.0 @Resource(lookup = "myConnectionFactory”) ConnectionFactory connectionFactory; @Resource(lookup = "myQueue”) Queue myQueue; public void sendMessage (String payload) { Connection connection = null; try { connection = connectionFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(myQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } catch (JMSException ex) { //. . . } finally { if (connection != null) { try { connection.close(); } catch (JMSException ex) { //. . . } } } } Sending a Message using JMS 1.1 Application Server Specific Resources Boilerplate Code Exception Handling
  25. 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java Message Service 2.0 @Inject JMSContext context; @Resource(lookup = "java:global/jms/demoQueue”) Queue demoQueue; public void sendMessage(String payload) { context.createProducer().send(demoQueue, payload); } Sending message using JMS 2.0
  26. 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Bean Validation 1.1  Alignment with Dependency Injection  Method-level validation – Constraints on parameters and return values – Check pre-/post-conditions
  27. 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Bean Validation 1.1 Method Parameter and Result Validation Built-in Custom @Future public Date getAppointment() { //. . . } public void placeOrder( @NotNull String productName, @NotNull @Max(“10”) Integer quantity, @Customer String customer) { //. . . }
  28. 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java Persistence API 2.1  Schema Generation – javax.persistence.schema-generation.* properties  Unsynchronized Persistence Contexts  Bulk update/delete using Criteria  User-defined functions using FUNCTION  Stored Procedure Query
  29. 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Servlet 3.1  Non-blocking I/O  Protocol Upgrade  Security Enhancements – <deny-uncovered-http-methods>: Deny request to HTTP methods not explicitly covered
  30. 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Servlet 3.1 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) { . . . } } } Non-blocking IO - Traditional
  31. 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Servlet 3.1 AsyncContext context = request.startAsync(); ServletInputStream input = request.getInputStream(); input.setReadListener( new MyReadListener(input, context)); Non-blocking I/O: doGet Code Sample
  32. 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Servlet 3.1 @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) { . . . } } . . . Non-blocking I/O: MyReadListener Code Sample
  33. 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. JavaServer Faces 2.2  Faces Flow  Resource Library Contracts  HTML5 Friendly Markup Support – Pass through attributes and elements  Cross Site Request Forgery Protection  Loading Facelets via ResourceHandler  File Upload Component
  34. 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Java Transaction API 1.2  @Transactional: Define transaction boundaries on CDI managed beans  @TransactionScoped: CDI scope for bean instances scoped to the current JTA transaction
  35. 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Novas Possibilidades com Java EE 7  Camada Web  100% server-side – JSF  100% client-side – JAX-RS + WebSockets + (Angular.JS)  Híbrido – Utilize o que achar conveniente, e melhor, para cada caso da aplicação
  36. 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Novas Possibilidades com Java EE 7  Camada Back-end  Java EE Web Profile – EJB3 Lite + CDI + JTA + JPA  Java EE Full Profile – WebP + JMS + JCA + Batch
  37. 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. glassfish.org
  38. 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 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/JavaEE7
  39. 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Grácias! @brunoborges blogs.oracle.com/brunoborges
  40. 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Preguntas?
  41. 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

×