The Java EE 7 Platform:Simplicity, Productivity and HTML 5Sivakumar ThyagarajanOracle India
Disclaimer  The following is intended to outline our general product  direction. It is intended for information purposes o...
Java EE 6 PlatformDecember 10, 2009
Java EE 6 – Key Statistics  40+ Million Java EE 6 Component Downloads  #1 Choice for Enterprise Developers  #1 Application...
Top Ten Features in Java EE 6  1.    EJB packaging in a WAR  2.    Type-safe dependency injection  3.    Optional deployme...
Java EE 7 Revised ScopeProductivity and HTML5• Higher Productivity  – Less Boilerplate  – Richer Functionality  – More Def...
Java EE 7 – Candidate JSRs                                         JAX-RS                                        Java Cach...
Java API for RESTful Web Services 2.0•   Client API•   Message Filters & Entity Interceptors•   Asynchronous Processing – ...
Java API for RESTful Web Services 2.0Client API - BeforeString address = String.format("http://…/orders/%0$s/customer?ship...
Java API for RESTful Web Services 2.0Client API - Now// Get instance of ClientClient client = ClientFactory.newClient();//...
Java API for RESTful Web Services 2.0 Filters  @Provider  class LoggingFilter implements ContainerRequestFilter {     @Ove...
Java API for RESTful Web Services 2.0 Client-side Async Client client = ClientFactory.newClient(); Future<String> future =...
Java Message Service 2.0    Simplify the existing API•   Less verbose•   Reduce boilerplate code•   Resource injection•   ...
Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")Connection...
Java Message Service 2.0Sending message using JMS 1.1                                                must create several @...
Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")Connection...
Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")Connection...
Java Message Service 2.0Sending message using JMS 1.1 @Resource(lookup = "java:global/jms/demoConnectionFactory") Connecti...
Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")Connection...
Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")Connection...
Java Message Service 2.0Simpler API to close JMS objects                                   Create closeable               ...
Java Message Service 2.0Introducing JMSContext and JMSProducer                             JMSContext                     ...
Java Message Service 2.0                                                  Default resource definitionDefault resource defi...
Java API for JSON Processing 1.0• API to parse and generate JSON• Streaming API  – Low-level, efficient way to parse/gener...
Java API for JSON Processing 1.0  Streaming API – JsonParser and JsonGenerator  • JsonParser     • Parses JSON in a stream...
Java API for JSON Processing 1.0  Streaming API – JsonParser and JsonGenerator  • JsonGenerator     • Generates JSON in a ...
Java API for JSON Processing 1.0   Streaming API – JsonGenerator                                 JsonGenerator jg = Json.c...
Java API for JSON Processing 1.0  Object Model API  • JsonObject/JsonArray – JSON object and array    structures     • Jso...
Java API for JSON Processing 1.0    DOM API – JsonReader• Reads JsonObject and JsonArray from input source    – I/O Reader...
Java API for WebSocket 1.0  • Create WebSocket Client/Endpoints     • Annotation-driven (@WebSocketEndpoint)     • Interfa...
Java API for WebSocket 1.0 Hello World – POJO/Annotation-driven  import javax.net.websocket.annotations.*;  @WebSocketEndp...
Java API for WebSocket 1.0 WebSocket Annotations       Annotation        Level                         Purpose  @WebSocket...
Java API for WebSocket 1.0   @WebSocketEndpoint Attributes                                   Relative URI or URI template ...
Bean Validation 1.1 Open: Spec, Reference Implementation, TCK Alignment with Dependency Injection Method-level validation ...
Bean Validation 1.1   Method Parameter and Result Validation           public void placeOrder(                @NotNull Str...
Batch Applications for the Java Platform 1.0  • Suited for non-interactive, bulk-oriented and long-    running tasks  • Co...
Batch Applications for the Java Platform 1.0  Concepts   • Job: Entire batch process     – Put together through a Job Spec...
Batch Applications for the Java Platform 1.0  Job Specification Language – Simple Job  <job id=“myJob”>   <step id=“init”>...
Java Temporary Caching API 1.0 • API and semantics for temporary, in-memory caching of   Java objects • SPI for implemente...
Java Temporary Caching API 1.0 • javax.cache.* • Delivered as part of Java EE 7   • Immediately usable by Java EE 6, Sprin...
Java Temporary Caching API 1.0  Key Concepts  Cache Manager =>Caches  Cache => Entries  Entry => Key,Value  • CacheManager...
Java Temporary Caching API 1.0  Code Sample – Blog  public class BlogManager {   @CachePut(cacheName=”blogManager”)   publ...
Java Temporary Caching API 1.0  Code Sample – Blog   ...   @CacheResult(cacheName="blogManager")   public Blog getBlogEntr...
Java Temporary Caching API 1.0  Annotations – Blog Sample      ...      @CacheRemoveEntry(cacheName="blogManager")      pu...
Java Persistence API 2.1  Schema Generation  Unsynchronized Persistence Contexts  Converters  Bulk update/delete using Cri...
Enterprise JavaBeans 3.2  EJBs Today  •   @Singleton  •   @Asynchronous  •   @Schedule  •   Portable JNDI Name  •   EJBCon...
Enterprise JavaBeans 3.2 Updates: Opt-out passivation of Stateful Session Beans   @Stateful(passivationCapable=false)   pu...
Enterprise JavaBeans 3.2  Updates: Simplified Rules for Local/Remote Client Views      @Stateless      public class Bean i...
Enterprise JavaBeans 3.2  Updates: Simplified Rules for Local/Remote Client Views  @Remote  public interface Foo { . . . }...
Servlet 3.1  Non-blocking I/O  Protocol Upgrade  Security Enhancements
Servlet 3.1  Non-blocking IO - Traditional  public class TestServlet extends HttpServlet    protected void doGet(HttpServl...
Servlet 3.1  Non-blocking I/O: doGet Code Sample  AsyncContext context = request.startAsync();  ServletInputStream input =...
Servlet 3.1  Non-blocking I/O: MyReadListener Code Sample  @Override  public void onDataAvailable() {    try {      String...
Servlet 3.1  Non-blocking I/O: MyListener Code Sample  ...  @Override  public void onAllDataRead() {    context.complete()...
Concurrency Utilities for Java EE 1.0  Goals  • Provide concurrency capabilities to Java EE application    components    •...
Concurrency Utilities for Java EE 1.0  ManagedExecutorService  • Manageable version of    java.util.concurrent.ExecutorSer...
Concurrency Utilities for Java EE 1.0  Defining ManagedExecutorService using JNDI  • Recommended to bind in java:comp/env/...
Concurrency Utilities for Java EE 1.0  Submit Tasks to ManagedExecutorService using JNDI  public class TestServlet extends...
Java Transaction API 1.2  • Declarative transactions outside EJB    • Based on CDI interceptors  • Adds annotation and sta...
Java Transaction API 1.2  public @interface Transactional {    TxType value() default TxType.REQUIRED  }  public enum TxTy...
Java Transaction API 1.2  public class ShoppingCart {    ...    @Transactional    public void checkOut() {...}    ...  }
JavaServer Faces 2.2  HTML5 Friendly Markup Support    Pass through attributes and elements  Faces Flows  Cross Site Reque...
Contexts & Dependency Injection 1.1  Embedded mode to startup outside Java EE container  Global ordering of interceptors a...
Java EE 7 – Implementation Status                               4.0 http://download.java.net/glassfish/4.0/promoted/
Java EE 8 and BeyondStandards-based cloud programming model• Deliver cloud architecture                      Storage      ...
Call to Action• Java EE 7 Expert Group – javaee-spec.java.net• Java EE 7 Reference Implementation – glassfish.org• The Aqu...
Transparency  • Oracle’s Java EE 7 JSRs are run in the open on java.net    • http://javaee-spec.java.net    • One project ...
Status and Schedule  • All JSRs up and running  • All Early Drafts, and several Public Drafts  • Final release target: Q2 ...
GlassFish RoadmapGlassFish v3                        GlassFish Server 3.1              GlassFish Server 3.1.2• Java EE 6 s...
The Java EE 7 Platform:Simplicity, Productivity and HTML 5Sivakumar ThyagarajanOracle India
Upcoming SlideShare
Loading in...5
×

Indic threads pune12-java ee 7 platformsimplification html5

744

Published on

The 7th Annual IndicThreads Pune Conference was held on 14-15 December 2012. http://pune12.indicthreads.com/

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
744
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Indic threads pune12-java ee 7 platformsimplification html5"

  1. 1. The Java EE 7 Platform:Simplicity, Productivity and HTML 5Sivakumar ThyagarajanOracle India
  2. 2. Disclaimer The following 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. 3. Java EE 6 PlatformDecember 10, 2009
  4. 4. Java EE 6 – Key Statistics 40+ Million Java EE 6 Component Downloads #1 Choice for Enterprise Developers #1 Application Development Platform Fastest implementation of a Java EE release
  5. 5. 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
  6. 6. Java EE 7 Revised ScopeProductivity and HTML5• Higher Productivity – Less Boilerplate – Richer Functionality – More Defaults• HTML5 Support – WebSocket – JSON – HTML5 Forms
  7. 7. Java EE 7 – Candidate JSRs JAX-RS Java Caching API Portable JSP 2.2 JSF 2.2 2.0 EL 3.0 (JSR 107)Extension Bean Validation 1.1 s 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.7 New Major Updated Release
  8. 8. Java API for RESTful Web Services 2.0• Client API• Message Filters & Entity Interceptors• Asynchronous Processing – Server & Client• Hypermedia Support• Common Configuration
  9. 9. Java API for RESTful Web Services 2.0Client API - BeforeString address = String.format("http://…/orders/%0$s/customer?shipped=%1$b","10", true);URL url = new URL(address);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setDoInput(true);conn.setDoOutput(false);BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()));String line;while ((line = br.readLine()) != null) { //. . .}
  10. 10. Java API for RESTful Web Services 2.0Client API - Now// Get instance of ClientClient client = ClientFactory.newClient();// Get customer name for the shipped productsString name = client.target(“../orders/{orderId}/customer”) .resolveTemplate(”orderId", ”10”) .queryParam(”shipped", ”true”) .request() .get(String.class);
  11. 11. Java API for RESTful Web Services 2.0 Filters @Provider class LoggingFilter implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext context) { logRequest(ctx.getRequest()); // non-wrapping => returns without invoking next filter } }
  12. 12. Java API for RESTful Web Services 2.0 Client-side Async Client client = ClientFactory.newClient(); Future<String> future = client.target("http://.../atm/{card}/balance") .pathParam("card", "1111222233334444") .queryParam("pin", "1234") .request("text/plain") .async() .get( new InvocationCallback<String>() { public void completed(String result) { } public void failed(InvocationException e) { } } );
  13. 13. 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 EE
  14. 14. Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory;@Resource(lookup = "java:global/jms/demoQueue")Queue demoQueue;public void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); 13 lines of messageProducer.send(textMessage); code just } finally { to send a connection.close(); message } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); }}
  15. 15. Java Message Service 2.0Sending message using JMS 1.1 must create several @Resource(lookup = "java:global/jms/demoConnectionFactory") intermediate objects ConnectionFactory connectionFactory; @Resource(lookup = "java:global/jms/demoQueue") Queue demoQueue; public void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } finally { connection.close(); } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } }
  16. 16. Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory; redundant and misleading@Resource(lookup = "java:global/jms/demoQueue") argumentsQueue demoQueue;public void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } finally { connection.close(); } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); }}
  17. 17. Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory;@Resource(lookup = "java:global/jms/demoQueue")Queue demoQueue; boilerplate codepublic void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } finally { connection.close(); } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); }}
  18. 18. Java Message Service 2.0Sending message using JMS 1.1 @Resource(lookup = "java:global/jms/demoConnectionFactory") ConnectionFactory connectionFactory; @Resource(lookup = "java:global/jms/demoQueue") Queue demoQueue; public void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); must close } finally { resources connection.close(); after use! } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } }
  19. 19. Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory;@Resource(lookup = "java:global/jms/demoQueue")Queue demoQueue;public void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); all methods messageProducer.send(textMessage); throw checked } finally { exceptions connection.close(); } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); }}
  20. 20. Java Message Service 2.0Sending message using JMS 1.1@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory; pre-create app-@Resource(lookup = "java:global/jms/demoQueue") server specificQueue demoQueue; resourcespublic void sendMessage(String payload) { try { Connection connection = connectionFactory.createConnection(); try { Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(demoQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } finally { connection.close(); } } catch (JMSException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); }}
  21. 21. Java Message Service 2.0Simpler API to close JMS objects Create closeable resources in a try-@Resource(lookup = "jms/connFactory") with-resources blockConnectionFactory cf;@Resource(lookup="jms/inboundQueue")Destination dest;public void sendMessage (String payload) throws JMSException { try ( Connection conn = connectionFactory.createConnection(); Session session = conn.createSession(); MessageProducer producer = session.createProducer(dest); ){ Message mess = sess.createTextMessage(payload); producer.send(mess); } catch(JMSException e){ close() is called // exception handling automatically } at end of block}
  22. 22. Java Message Service 2.0Introducing JMSContext and JMSProducer JMSContext combines Connection and Session@Resource(lookup = "java:global/jms/demoConnectionFactory")ConnectionFactory connectionFactory; Payload@Resource(lookup = "java:global/jms/demoQueue") can be sentQueue demoQueue; directlypublic void sendMessage (String payload) { try (JMSContext context = connectionFactory.createContext();){ context.createProducer().send(demoQueue, payload); } catch (JMSRuntimeException ex) { // exception handling } close() is called} automatically No checked at end of block exceptions thrown
  23. 23. Java Message Service 2.0 Default resource definitionDefault resource definition Or @JmsConnectionFactory@InjectJMSContext context;@Resource(lookup = "java:global/jms/demoQueue”)Queue demoQueue;public void sendMessage(String payload) { context.createProducer().send(demoQueue, payload);} 13 lines 1 line
  24. 24. 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 forthcoming
  25. 25. Java API for JSON Processing 1.0 Streaming API – JsonParser and JsonGenerator • JsonParser • Parses JSON in a streaming way from input sources • Similar to StaX’s XMLStreamReader, a pull parser • Created using • Json.createParser(…) • Json.createParserFactory().createParser(…) • Parser state events • START_ARRAY, END_ARRAY, START_OBJECT, END_OBJECT, ...
  26. 26. Java API for JSON Processing 1.0 Streaming API – JsonParser and JsonGenerator • JsonGenerator • Generates JSON in a streaming way to output sources • Similar to StaX’s XMLStreamWriter • Created using • Json.createGenerator(…) • Json.createGeneratorFactory().createGenerator(…) • Optionally, configured with features • E.g. for pretty printing
  27. 27. Java API for JSON Processing 1.0 Streaming API – JsonGenerator JsonGenerator jg = Json.createGenerator(…); jg."phoneNumber": [ .beginArray("phoneNumber") { .beginObject() "type": "home", .add("type", "home") "number": ”408-123-4567” .add("number", "408-123-4567") }, .endObject() { .beginObject() "type": ”work", .add("type", ”work") "number": ”408-987-6543” .add("number", "408-987-6543") } .endObject() ] .endArray(); jg.close();
  28. 28. Java API for JSON Processing 1.0 Object Model API • JsonObject/JsonArray – JSON object and array structures • JsonString and JsonNumber for string and number values • JsonBuilder – Builds JsonObject and JsonArray • JsonReader – Reads JsonObject and JsonArray from input source • JsonWriter – Writes JsonObject and JsonArray to output source
  29. 29. Java API for JSON Processing 1.0 DOM API – JsonReader• Reads JsonObject and JsonArray from input source – I/O Reader, InputStream (+ encoding)• Optionally, configured with features• Uses pluggable JsonParser// Reads a JSON objecttry(JsonReader reader = new JsonReader(io)) { JsonObject obj = reader.readObject();}
  30. 30. Java API for WebSocket 1.0 • Create WebSocket Client/Endpoints • Annotation-driven (@WebSocketEndpoint) • Interface-driven (Endpoint) • Integration with Java EE Web container
  31. 31. Java API for WebSocket 1.0 Hello World – POJO/Annotation-driven import javax.net.websocket.annotations.*; @WebSocketEndpoint("/hello") public class HelloBean { @WebSocketMessage public String sayHello(String name) { return “Hello “ + name; } }
  32. 32. Java API for WebSocket 1.0 WebSocket Annotations Annotation Level Purpose @WebSocketEndpoint class Turns a POJO into a WebSocket Endpoint @WebSocketOpen method Intercepts WebSocket Open events @WebSocketClose method Intercepts WebSocket Close events @WebSocketMessage method Intercepts WebSocket Message events method @WebSocketPathParam parameter Flags a matched path segment of a URI-template @WebSocketError method Intercepts errors during a conversation
  33. 33. Java API for WebSocket 1.0 @WebSocketEndpoint Attributes Relative URI or URI template value e.g. “/hello” or “/chat/{subscriber-level}” decoders list of message decoder classnames encoders list of message encoder classnames subprotocols list of the names of the supported subprotocols
  34. 34. 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-conditions
  35. 35. Bean Validation 1.1 Method Parameter and Result Validation public void placeOrder( @NotNull String productName,Built-in @NotNull @Max(“10”) Integer quantity,Custom @Customer String customer) { //. . . } @Future public Date getAppointment() { //. . . }
  36. 36. 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 included
  37. 37. 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 jobs
  38. 38. Batch Applications for the Java Platform 1.0 Job Specification Language – Simple Job <job id=“myJob”> <step id=“init”> <chunk reader=“R” writer=W” processor=“P” /> <next on=“initialized” to=“process”/> <fail on=“initError”/> </step> <step id=“process”> <batchlet ref=“ProcessAndEmail”/> <end on=”success”/> <fail on=”*” exit-status=“FAILURE”/> </step> </job>
  39. 39. Java Temporary Caching API 1.0 • API and semantics for temporary, in-memory caching of Java objects • SPI for implementers • Designed to support “local” and “distributed” caching • Caching strategies supported By value (default) By reference (not suitable for “distributed” caching)
  40. 40. Java Temporary Caching API 1.0 • javax.cache.* • Delivered as part of Java EE 7 • Immediately usable by Java EE 6, Spring and Guice • Immediately usable by any Java app • Not a Data Grid specification • JSR 107 does not mandate a topology • JSR 347 does: builds on JSR 107
  41. 41. Java Temporary Caching API 1.0 Key Concepts Cache Manager =>Caches Cache => Entries Entry => Key,Value • CacheManager acquired via CacheManagerFactory • CacheManagerFactory acquired via Service Provider META-INF/services/javax.cache.spi.CachingProvider
  42. 42. Java Temporary Caching API 1.0 Code Sample – Blog public class BlogManager { @CachePut(cacheName=”blogManager”) public void createEntry( @CacheKeyParam String title, @CacheValue Blog blog) {...} ...
  43. 43. Java Temporary Caching API 1.0 Code Sample – Blog ... @CacheResult(cacheName="blogManager") public Blog getBlogEntry(String title) {...} @CacheResult(cacheName="blogManager") public Blog getEntryCached( String randomArg, @CacheKeyParam String title) {...} ...
  44. 44. Java Temporary Caching API 1.0 Annotations – Blog Sample ... @CacheRemoveEntry(cacheName="blogManager") public void removeBlogEntry(String title) {...} @CacheRemoveAll(cacheName="blogManager") public void removeAllBlogs() {...} }
  45. 45. Java Persistence API 2.1 Schema Generation Unsynchronized Persistence Contexts Converters Bulk update/delete using Criteria User-defined functions using FUNCTION Stored Procedure Query
  46. 46. Enterprise JavaBeans 3.2 EJBs Today • @Singleton • @Asynchronous • @Schedule • Portable JNDI Name • EJBContainer.createEJBContainer • EJB 3.1 Lite
  47. 47. Enterprise JavaBeans 3.2 Updates: Opt-out passivation of Stateful Session Beans @Stateful(passivationCapable=false) public class HelloBean { private NonSerializableType ref = …; … }
  48. 48. Enterprise JavaBeans 3.2 Updates: Simplified Rules for Local/Remote Client Views @Stateless public class Bean implements Foo, Bar { } Local @Local @Stateless public class Bean implements Foo, Bar { } Remote @Remote @Stateless public class Bean implements Foo, Bar { }
  49. 49. Enterprise JavaBeans 3.2 Updates: Simplified Rules for Local/Remote Client Views @Remote public interface Foo { . . . } public interface Bar { . . . ] Remote @Stateless public class Bean implements Foo, Bar { }
  50. 50. Servlet 3.1 Non-blocking I/O Protocol Upgrade Security Enhancements
  51. 51. 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) { ... } } }
  52. 52. Servlet 3.1 Non-blocking I/O: doGet Code Sample AsyncContext context = request.startAsync(); ServletInputStream input = request.getInputStream(); input.setReadListener( new MyReadListener(input, context));
  53. 53. 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) { ... } } ...
  54. 54. Servlet 3.1 Non-blocking I/O: MyListener Code Sample ... @Override public void onAllDataRead() { context.complete(); } @Override public void onError(Throwable t) { t.printStackTrace(); context.complete(); }
  55. 55. 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 patterns • Provide consistency between Java SE and Java EE concurrency programming model • Extend the Concurrency Utilities API (JSR 166)
  56. 56. Concurrency Utilities for Java EE 1.0 ManagedExecutorService • Manageable version of java.util.concurrent.ExecutorService • Lookup using JNDI • Java EE components create task classes • Implement java.lang.Runnable or java.util.concurrent.Callable • Submitted using submit or invoke methods • Multiple (configurable) executors are permitted
  57. 57. 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>
  58. 58. 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 } } }
  59. 59. Java Transaction API 1.2 • Declarative transactions outside EJB • Based on CDI interceptors • Adds annotation and standard values to javax.transaction package
  60. 60. Java Transaction API 1.2 public @interface Transactional { TxType value() default TxType.REQUIRED } public enum TxType { REQUIRED, REQUIRED_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER }
  61. 61. Java Transaction API 1.2 public class ShoppingCart { ... @Transactional public void checkOut() {...} ... }
  62. 62. JavaServer Faces 2.2 HTML5 Friendly Markup Support Pass through attributes and elements Faces Flows Cross Site Request Forgery Protection Loading Facelets via ResourceHandler File Upload Component Multi-templating
  63. 63. Contexts & Dependency Injection 1.1 Embedded mode to startup outside Java EE container Global ordering of interceptors and decorators API for managing built-in contexts Send Servlet events as CDI events ...
  64. 64. Java EE 7 – Implementation Status 4.0 http://download.java.net/glassfish/4.0/promoted/
  65. 65. Java EE 8 and BeyondStandards-based cloud programming model• Deliver cloud architecture Storage NoSQL• Multi tenancy for SaaS JSON-B Multitenancy Java EE 7 applications Concurrency Cloud• Incremental delivery of JSRs PaaS Enablement Thin Server Architecture• Modularity based on Jigsaw
  66. 66. Call to Action• Java EE 7 Expert Group – javaee-spec.java.net• Java EE 7 Reference Implementation – glassfish.org• The Aquarium – blogs.oracle.com/theaquarium• Adopt-a-JSR – glassfish.org/adoptajsr
  67. 67. Transparency • Oracle’s Java EE 7 JSRs are run in the open on java.net • http://javaee-spec.java.net • One project per spec – e.g., jpa-spec, jax-rs-spec, jms-spec, connector-spec … • Publicly viewable Expert Group mail archive • Users observer list gets copies of all Expert Group emails • Publicly viewable download area • Publicly viewable issue tracker • Commitment to update to JCP 2.8 Process
  68. 68. Status and Schedule • All JSRs up and running • All Early Drafts, and several Public Drafts • Final release target: Q2 2013
  69. 69. GlassFish RoadmapGlassFish v3 GlassFish Server 3.1 GlassFish Server 3.1.2• Java EE 6 support • Centralized administration • Bug Fixes• Single instance • Clustering / HA • GlassFish Server Control • Incremental features• GlassFish Enterprise Mgr 2009 2010 2011 2012 2013 GlassFish Server 3.0.1 GlassFish Server 3.1.1 GlassFish Server 4 • Oracle branding • Bug fixes • Java EE 7 • Oracle platform support • Multitenancy • Oracle interoperability • Updated components • Incremental features • PaaS-enablement
  70. 70. The Java EE 7 Platform:Simplicity, Productivity and HTML 5Sivakumar ThyagarajanOracle India
  1. A particular slide catching your eye?

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

×