Monday Sep 16, 2013

JavaOne 2013: Java EE 7, GlassFish Community Event, Book Signing, Geek Bike Ride, Hallway Track, ...


18th JavaOne is almost here .... literally a few days away now!


5 days
8 tracks
500+ sessions
490+ speakers
70+ exhibitors
Lots of late night parties
All in the beautiful city of San Francisco

Now that is what makes a conference lot of fun and bound to give you a nerdgasm!

If you are still not convinced, here are 25 reasons to attend JavaOne.

There is tons of coverage on the recently released Java EE 7 and GlassFish 4. The FocusOn document provide a comprehensive set of sessions, BoFs, hands-on labs, panels, etc related to Java EE Platform from Oracle, RedHat, IBM, and many others.

This is going to be my 15th JavaOne and this blog has been serving reports/pictures from the conference for past 6 years (2007, 2008, 2009, 2010, 2011, 2012).

Here is my schedule so far and I would love to meet you before/after my speaking engagements:

Saturday, 9/21
11am
Geek Bike Ride
7:30pm
NetBeans Party

Sunday, 9/22
8am
JUG Leaders and Java Champions Brunch
9:15am
GlassFish Community Event
12pm
Strategy and Technical Keynote
8pm
GlassFish Party

Monday, 9/23
12:30pm
OTN Lounge Expert Drop-in
3pm
CON4456: Coding Java EE 7: Making Easy Even Easier (co-speaking with Lincoln Baxter III)
4:15pm
Java EE 7 Essentials Book Signing at JavaOne Book Store
6pm
JCP Party (including book signing)
8pm JUG Leaders and Java Champions Social Event
Tuesday, 9/24
12:15pm Publishers Seminar
2pm
Java EE 7 Essentials Book Signing at O'Reilly Booth
3pm
CON4510: Fifty Features of Java EE 7 in 50 Minutes (co-speaking with Antonio Goncalves)
4:30pm BOF 8012: Teaching Java with Minecraft, Greenfoot, and Scratch (co-speaking with Daniel Green)
7:30pm HOL 2147: Java EE 7 Hands-on Lab (co-speaking with Antonio Goncalves, David Delabassee, and Marian Muller)
Wednesday, 9/25
10am CON3431: Introduce Java Programming to Kids (co-speaking with James Weaver)
1pm CON3496: Come and Play! with Java EE 7 (co-speaking with Antonio Goncalves)
2:30pm Java EE 8 Discussions
Thursday, 9/26
3:30pm
CON2406: Java EE 8 and Beyond (mostly observer)

And of course, there is always the hallway track!

Where will I see you ?

Tuesday Sep 03, 2013

Java EE 7 Launch Celebrations in Africa Trip Report


Morocco, Senegal, South Africa, and Uganda were the African four countries on my Make the Future Java EE 7 Global Celebrations tour. The event was organized by JUG AFRICA and Max Bonbhel covered a few other countries as part of this tour.



I was welcomed with a very warm African hospitality in each country. The JUG leaders took extreme care of me through out the stay, starting right from the airport pick up, organizing the events, working on logistics, and a multitude of other things. Remember, the JUG leader is a volunteer role but its the passion for technology and sharing with the community that drives them. And that was truly evident in each of them!

A big shout out to Badr Elhouari (Morocco), Mamadou Ngor Diouf (Senegal), Mark Clark and Richard Kolb (South Africa), and Nsubuga Hassan (Uganda) for being the wonderful hosts!

I had lots of opportunities to engage with African developers from all around the continent. Yes, Africa is a continent with 54 different countries! Typically, locals talk about North, East, West, and South Africa regions. I was fortunate to share some of my Java EE 7 knowledge in all four regions, and in return learned a lot more from them.

The format at each event was mostly similar - provide a code-driven introduction to Java EE 7 and keep it completely interactive. I truly believe that the code should be written such that it speaks for itself. The developer productivity enhancements made in the Java EE platform over the years have certainly made it very much a reality. A typical flow covered the following samples, in a completely interactive manner:
There was barely noticeable to no language barrier in all the countries that I visited. This truly allowed a frank and direct conversation with the developers, as opposed to using a translator.


The trip started with the first event in Casablanca, Morocco (North Africa). Badr took time out of his family vacation to receive me at the airport and ensuring a smooth operation of the event. There were about 50 developers during a week day evening and otherwise a general holiday season.

The interactive session had several existing Java EE developers. Riding a train from Rabat to Casablanca with a few of the JUG members gave a good 1-1 time to interact with them. One of the developers showed me a sample application he has built to prepare for Java certification. One of the common feelings in Morocco at least is that their sub-Saharan bretherens are preferred for any Africa-wide events. However I started my trip with North Africa, so no complaints there ;-)

Something to learn about Morocco ...
  • Sahara Desert is about 900 km from Rabat/Casablanca. Plan for a few days if you are interested in a desert safari
  • Cars are used to travel from/to airport, not camels ;-)
  • Don't miss out on visiting one of the Kasbah, they are very unique and colorful structures
Here are some pictures from that event:



JMaghreb is the biggest Java developer conference in North Africa. I attended their inaugural conference last year and had a really good time giving a Java EE 6 hands-on lab to a packed room. The conference is focused towards a "pragmatic developer", not necessarily using all the bleeding-edge technologies. Badr has already started planning for JMaghreb 2.0 (Nov 7 and 8) and planning to expand the outreach to Southern Europe and other neighborhood countries. Reach out to him if you are interested in speaking at that event, and of course register for this free conference.



The next stop of the trip was at Dakar, Senegal. There were about 30 developers for the Saturday morning event. On the request of JUG leader, I started the event with a slide deck providing a complete overview of the platform. And then showed a bunch of samples afterwards. The Java EE 7 Technical Kit provides a slide deck (with speaker notes) that you can use to talk about Java EE 7 at your local JUG. The attendees were not shy in asking questions and the session continued with code-driven talk afterwards.

 I was fortunate to bump into couple of passionate GlassFish developers who are using it for a local telecom company. Hear all about their passion around Java EE 6, GlassFish, and NetBeans:



Here are some pictures from that event:






Some things to learn about Senegal ...
  • Senegal visa can be obtained at the airport, but be prepared to "grease" the machinery
  • Arrange a pick up at the airport otherwise you'll be overwhelmed with the cabbies
  • Visit Rebirth of Africa monument in Dakar, it is very very inspiring


The next stop of the trip was at Johannesburg, South Africa. Nobody amongst ~100 developers wanted to see any slides and so we jumped straight into the code. I showed lots of code and had lots of interaction.

I also had the opportunity to visit The Wanderers, a cricket stadium known for the second highest one day total of 438 by South Africa. I spent significant part of my day at the office and that's where the event was hosted in the evening as well.

Some things to learn about South Africa ...
  • Johannesburg, with about 4.4 million population, is definitely a premier technology hub in all of Africa
  • Being far South, they sort of feel in a silo and not completely connected from rest of the world. This is in spite of the fact that there is decent Internet connectivity.
  • Startup culture is definitely prominent here - products are serving local needs because of infrastructure costs, otherwise services-based
Here are some pictures from that event:








The last stop of the trip was at Kampala, Uganda. Nsubuga Hassan picked me from the Entebbe airport and we shared a 1.5 hrs taxi ride to the hotel in Kampala. The number of women participants truly surpassed the number of men at the event, and this was truly impressive. Its probably the most number of women I've ever seen at a JUG meetup.

There was even a discussion around starting a new Kampala JUG, so that is definitely promising.

The event was hosted by Hivecolab which provides community-owned work environment for young tech entrepreneurs in Kampala. Had a good chat with program director Barbara who is also also leading Women in Technology Uganda. Listen to an interesting conversation with Barbara on promoting technology amongst women in Uganda.

Some things to learn about Uganda ...
  • English is the official language of the country, and has about 40+ other local dialects
  • People are extremely soft-spoken and very welcoming every where
  • Lot of tech innovation happening in Uganda - Mobile Monday Kampala, @The Hub, Fin Africa, and others
  • Local government encourages women to study at the university

I enjoyed riding the different local means of transport - boda boda and the van. The visit to the local arts and craft market in any part of world not only promotes local artisans but also gives you the opportunity to buy authentic goods.

Here are some pictures from that event:







All the Java EE 7 samples are available at github.com/arun-gupta/javaee7-samples. Feel free to clone the repository or send a pull request if you want to contribute new Java EE 7 samples. A recording of some of the samples can be seen in the videos recorded at an earlier conference:





Even though the local JUG leaders were my hosts in each country but the real force behind all of this was Lamine Ba and Max Bonbhel. I had numerous emails exchanges on dates, cities, hotels, and everything else and they were all dealt very promptly and in a professional manner. Max and Lamine - you are the agents of change in Africa and are truly helping African developers be visible at the global front, thanks for your efforts!

I truly enjoyed my short stay in different countries and would love to come back again!

Here is the complete album from the trip:



If you want to learn more about African developers, or contribute then there is an excellent panel "BOF3469: Java Trends in Africa" at JavaOne San Francisco (Sep 22-26).

Register and see ya there!

Wednesday Aug 28, 2013

Java EE 7 Essentials from O'Reilly: Now Available in Paperback and Ebook


Hot off the press ...

Announcing the availability of my new book Java EE 7 Essentials.

Release Date: TBD, 2013
Language: English
Pages: 362
Print ISBN: 978-1-4493-7017-6 | ISBN 10:1-4493-7017-9
Ebook ISBN: 978-1-4493-7016-9 | ISBN 10:1-4493-7016-0


Chapter 1: Java Platform, Enterprise Edition
Chapter 2: Servlets
Chapter 3: JavaServer Faces
Chapter 4: RESTful Web Services
Chapter 5: SOAP-based Web Services
Chapter 6: JSON Processing
Chapter 7: WebSocket
Chapter 8: Enterprise JavaBeans
Chapter 9: Contexts and Dependency Injection
Chapter 10: Concurrency Utilities
Chapter 11: Bean Validation
Chapter 12: Java Transaction
Chapter 13: Java Persistence
Chapter 14: Java Message Service
Chapter 15: Batch Processing
Chapter 16: Build an End-to-End Application

This book is available from the following websites:

And other usual places.

Learn more about the book from Java Spotlight podcast #143.

This book provides a code-intensive overview of the key specifications in the Java EE 7 platform (one specification per chapter). The main concepts from the different specifications are explained using simple code samples. All the associated code is available on github.

A significant part of this book is derived from my Java EE 6 Pocket Guide. New chapters have been added to cover all the new technologies in the platform - WebSocket 1.0, Batch 1.0, JSON-P 1.0, and Concurrency 1.0. New sections have been added or existing sections updated to reflect the changes in the platform. If you have read the Java EE 6 Pocket Guide, then you can read this book at a much faster pace; otherwise, you can read this book from beginning to end. Alternatively, you can read specific chapters based upon your interest.

The book also contains self-paced instructions on how to build an end-to-end Java EE application using NetBeans IDE.
Here is how I can use your help ...

  • Help spread the word about the book
  • If you have bought a paperback or kindle edition, post your review here
  • If you have not purchased the book so far, then you can buy it using any of the usual locations

O'Reilly has arranged a book signing at their booth on Tuesday, Sep 24, 2pm. Other book signing opportunities are also being worked upon and I'll update once they are confirmed. And the book will also be available at JavaOne book store.

I hope you enjoy reading the book and learn a few new things from it. Your feedback in any form is always appreciated!

Tuesday Jul 23, 2013

JSON Binding with JAX-RS - Moxy, JSON-P, Jackson, Jettison (TOTD #214)


One of the typical questions asked during presentations is how do I enable JSON support in JAX-RS ?

There are three basic approaches and four different modules in Jersey that enable them. Here is a quick summary:


MOXy
JSON-P
Jackson
Jettison
POJO-based JSON Binding
Yes
No
Yes
No
JAXB-based JSON Binding
Yes
No
Yes
Yes
Low-level JSON parsing & processing
No
Yes
No
Yes

MOXy is the default and preferred way of supporting JSON binding in your Jersey applications. A new sample is now added at:

https://github.com/arun-gupta/javaee7-samples/tree/master/jaxrs/moxy

The resource definition is:

@Path("endpoint")
public class MyResource {
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public MyObject echoObject(MyObject mo) {
        return mo;
    }
}


POJO is defined as:

public class MyObject {

    private String name;
    private int age;

    public MyObject() {
    }

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Application class is:

@ApplicationPath("webresources")
public class MyApplication extends Application {
}

And the client code is:

Client client = ClientBuilder.newClient();

WebTarget target = client.target("http://"
        + request.getServerName()
        + ":"
        + request.getServerPort()
        + request.getContextPath()
        + "/webresources/endpoint");
System.out.println("POST request");
MyObject mo = target
        .request()
        .post(Entity.entity(new MyObject("Duke", 18), MediaType.APPLICATION_JSON), MyObject.class);
out.println("Received response: " + mo.getName() + ", " + mo.getAge() + "<br><br>");

JSON MOXy module (jersey-media-moxy.jar) is in your classpath then Jersey automatically discovers the module and enable JSON binding support via MOXy.

jersey.java.net/documentation/latest/media.html provide more details on all the approaches and modules.

Thursday Jul 18, 2013

Java EE 7 Samples Galore


The Java EE 7 SDK provides a comprehensive set of samples for different technologies - both new and updated. They are very nicely documented, runs using Maven + using Cargo, and demonstrate a good usage of the different APIs.

The question I get typically asked is "how do you learn all these APIs and technologies ?".

The SDK samples, reading specifications, and whitboarding with specification leads is indeed a big source of my learning. But I need to write my own code, simple "hello world" style samples that demonstrates point usage of different APIs. I truly believe in "let the code talk" and have given several slide-free code-driven session on Java EE 7 around the world. The source for these talks is about 100+ samples I've written over the past few months.

All of these samples are now available at: github.com/arun-gupta/javaee7-samples

They are all Maven-based projects and have no documentation at all. However they are logically arranged by technologies and I've tried to give intuitive names to the directories. I don't intend to write any documentation so please don't ask for it ;-) But at least now you've access to all the samples.

Here is the complete list of samples at this time:

javaee7-samples
  + batch-samples
    + batchlet-simple
    + chunk-checkpoint
    + chunk-exception
    + chunk-mapper
    + chunk-optional-processor
    + chunk-partition
    + chunk-simple
    + decision
    + flow
    + batch-listeners
    + multiple-steps
    + split
    + chunk-simple-nobeans
  + concurrency-samples
    + dynamicproxy
    + executor
    + schedule
    + threads
  + ejb-samples
    + embeddable
    + timer
    + lifecycle
    + el-samples
    + standalone
  + javamail-samples
    + definition
  + jaxrs-samples
    + async-client
    + async-server
    + beanvalidation
    + jaxrs-client
    + dynamicfilter
    + endpoint
    + filter
    + filter-interceptor
    + interceptor
    + invocation
    + invocation-async
    + link
    + readerwriter
    + readerwriter-json
    + server-sent-event
    + jsonp
    + moxy
  + jms-samples
    + send-receive-simple
    + send-receive
    + temp-destination
    + jmscontext-cdi
  + jpa-samples
    + criteria
    + entitygraph
    + jpa-listeners
    + multiple-pu
    + schema-gen
    + storedprocedure
    + jndi-context
    + locking-optimistic
    + schema-gen-scripts
  + jta-samples
    + transactional
    + transaction-scope
    + user-transaction
    + tx-exception
  + jsf-samples
    + contracts
    + contracts-library
    + flows-simple
    + flows-mixed
    + flows-programmatic
    + flows-declarative
    + passthrough
    + radio-buttons
    + viewscoped
    + file-upload
    + components
    + bean-validation
  + json-samples
    + object-builder
    + object-reader
    + streaming-generate
    + streaming-parser
  + servlet-samples
    + nonblocking
    + protocol-handler
    + servlet-security
    + metadata-complete
    + validation
    + methods
  + websocket-samples
    + binary
    + chat
    + encoder
    + encoder-client
    + encoder-programmatic
    + endpoint
    + endpoint-async
    + endpoint-javatypes
    + endpoint-programmatic
    + endpoint-programmatic-async
    + endpoint-programmatic-injection
    + endpoint-security
    + httpsession
    + injection
    + javase-client
    + messagesize
    + parameters
    + properties
    + websocket-vs-rest
    + subprotocol
    + websocket-client
    + websocket-client-config
    + websocket-client-programmatic
    + websocket-client-programmatic-config
    + websocket-client-programmatic-encoders
    + whiteboard


Will continue to add more as I dig into other pieces. I gave a 3-hour presentation explaining some of these samples at UberConf and captured the screen during the session. Those two-part videos are available.

The first part covers:
  • WebSocket 1.0
  • Batch 1.0
  • JSON Processing 1.0
  • Java Persistence API 2.1



The second part covers:
  • JavaServer Faces 2.2
  • Java API for RESTful Web Services 2.0
  • Java Message Service 2.0
  • Java Transaction API 1.2
  • Bean Vaildation 1.1
  • Concurrency Utilities for Java EE 1.0



Enjoy!

Friday Jun 28, 2013

Java EE 7 Launch Replay


Java EE 7 was released final on Jun 12, 2013. A complete replay of Strategy and Technical Keynote can be seen below:



All the Technical Breakout sessions are now available on GlassFishVideos@YouTube and can be viewed in the following playlist:



Ready to try out Java EE 7 ?

Download Binaries

Tools

Docs


Do you feel enabled and empowered to start building Java EE 7 applications ?

Just download Java EE 7 SDK that contains GlassFish Server Open Source Edition 4.0, tutorial, samples, documentation and much more.

Enjoy!

Thursday Jun 27, 2013

Java EE 7 support in Eclipse 4.3




Eclipse Kepler (4.3) features 71 different open source projects and over 58 million LOC. One of the main themes of the release is the support for Java EE 7. Kepler specifically added support for the features mentioned below:
  • Create Java EE 7 Eclipse projects or using Maven
  • New facets for JPA 2.1, JSF 2.2, Servlet 3.1, JAX-RS 2.0, EJB 3.2
  • Schemas and descriptors updated for Java EE 7 standards (web.xml, application.xml, ejb-jar.xml, etc)
  • Tolerance for JPA 2.1 such as features can be used without causing invalidation and content assist for UI (JPA 2.1)
  • Support for NamedStoredProcedureQuery (JPA 2.1)
  • Schema generation configuration in persistence.xml (JPA 2.1)
  • Updates to persistence.xml editor with the new JPA 2.1 properties
  • Existing features support EE7 (Web Page Editor, Palette, EL content assist, annotations, JSF tags, Facelets, etc)
  • Code generation wizards tolerant of EE7 (New EJB, Servlet, JSP, etc.)

A comprehensive list of features added in this release is available in Web Tools Platform 3.5 - New and Noteworthy.

Download Eclipse 4.3 and Java EE 7 SDK and start playing with Java EE 7!

Oracle Enterprise Pack for Eclipse was released recently that uses Eclipse Kepler RC3 but will be refreshed soon to include the final bits.

Wednesday Jun 26, 2013

Java EE 7 support in NetBeans 7.3.1


NetBeans IDE provide tools, templates, and samples for building Java EE 7 applications. NetBeans 7.3.1 specifically added support for the features mentioned below:

  • Support for creating Java EE 7 projects using Maven and Ant
  • Develop, Deploy, and Debug using GlassFish 4
  • Bundled Java EE 7 javadocs
  • CDI is enabled by default for new Java EE 7 projects (CDI 1.1)
  • Create database scripts from Entity Classes (JPA 2.1)
  • Java Persistence Query Language (JPQL) testing tool (JPA 2.1)
  • RESTful Java client creation using JAX-RS 2.0 Client APIs (JAX-RS 2.0)
  • New templates for JAX-RS 2 Filter and Interceptor (JAX-RS 2.0)
  • New templates for WebSocket endpoints (WebSocket 1.0)
  • JMS messages are sent using JMS 2 simplified API (JMS 2.0)
  • Pass-through attributes are supported during Facelet page editing (JSF 2.2)
  • Resource Library Contracts(JSF 2.2)
  • @FlowScoped beans from editor and wizards (JSF 2.2)
  • Support for EL 3.0 syntax in editor (EL 3.0)
  • JSON APIs can be used with code completion (JSON 1.0)

A comprehensive list of features added in this release is available in NetBeans 7.3.1 New and Noteworthy.

Watch the screencast below to get a quick overview of the features and capabilities:



Download Netbeans 7.3.1 and start playing with Java EE 7!

Tuesday Jun 25, 2013

JMSContext, @JMSDestinationDefintion, DefaultJMSConnectionFactory with simplified JMS API: TOTD #213


"What's New in JMS 2.0" Part 1 and Part 2 provide comprehensive introduction to new messaging features introduced in JMS 2.0. The biggest improvement in JMS 2.0 is introduction of the "new simplified API". This was explained in the Java EE 7 Launch Technical Keynote. You can watch a complete replay here.

Sending and Receiving a JMS message using JMS 1.1 requires lot of boilerplate code, primarily because the API was designed 10+ years ago. Here is a code that shows how to send a message using JMS 1.1 API:

@Stateless
public class ClassicMessageSender {

@Resource(lookup = "java:comp/DefaultJMSConnectionFactory")
ConnectionFactory connectionFactory;

@Resource(mappedName = "java:global/jms/myQueue")
Queue demoQueue;

public void sendMessage(String payload) {
  Connection connection = null;
    try {
      connection = connectionFactory.createConnection();
      connection.start();
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      MessageProducer messageProducer = session.createProducer(demoQueue);
      TextMessage textMessage = session.createTextMessage(payload);
      messageProducer.send(textMessage);
    } catch (JMSException ex) {
      ex.printStackTrace();
    } finally {
      if (connection != null) {
        try {
          connection.close();
        } catch (JMSException ex) {
          ex.printStackTrace();
        }
      }
    }
  }
}

There are several issues with this code:
  • A JMS ConnectionFactory needs to be created in a application server-specific way before this application can run.
  • Application-specific destination needs to be created in an application server-specific way before this application can run.
  • Several intermediate objects need to be created to honor the JMS 1.1 API, e.g. ConnectionFactory -> Connection -> Session -> MessageProducer -> TextMessage.
  • All APIs throw checked exceptions and so try/catch block must be specified.
  • Connection need to be explicitly started and closed, and that bloats even the finally block.
The new JMS 2.0 simplified API code looks like:


@Stateless
public class SimplifiedMessageSender {

  @Inject
  JMSContext context;

  @Resource(mappedName="java:global/jms/myQueue")
  Queue myQueue;

  public void sendMessage(String message) {
    context.createProducer().send(myQueue, message);
  }
}

The code is significantly improved from the previous version in the following ways:
  • The JMSContext interface combines in a single object the functionality of both the Connection and the Session in the earlier JMS APIs.  You can obtain a JMSContext object by simply injecting it with the @Inject annotation. This of course works only in Java EE Web or EJB applications and does not apply in Java SE-based applications where injection is not available.
  • No need to explicitly specify a ConnectionFactory. A default ConnectionFactory under the JNDI name of
    java:comp/DefaultJMSConnectionFactory
    is used if no explicit ConnectionFactory is specified.
  • The destination can be easily created using newly introduced @JMSDestinationDefinition as:
    @JMSDestinationDefinition(name = "java:global/jms/myQueue",
            interfaceName = "javax.jms.Queue")

    It can be specified on any Java EE component and the destination is created during deployment.
  • Creating JMSConsumer also starts the connection so there is no need to explicitly start it.
  • JMSContext, Session, Connection, JMSProducer and JMSConsumer objects are now AutoCloseable. This means that these resources are closed automatically by the management of try-with-resources statement.
  • New simplified API throws a new unchecked exception, JMSRuntimeException. This means try/catch blocks are not required.
  • Method chaining on JMSProducers allows to use builder patterns.
  • No need to create separate Message object, you can specify the message body as an argument to the send() method instead.

Want to try this code ? Download source code!

Download Java EE 7 SDK and install.
Start GlassFish: bin/asadmin start-domain
Build the WAR (in the unzipped source code directory): mvn package
Deploy the WAR: bin/asadmin deploy <source-code>/jms/target/jms-1.0-SNAPSHOT.war

And access the application at http://localhost:8080/jms-1.0-SNAPSHOT/index.jsp to send and receive a message using classic and simplified API.

A replay of JMS 2.0 session from Java EE 7 Launch Webinar provides complete details on what's new in this specification:



Enjoy!

Wednesday Jun 12, 2013

Java EE 7 SDK and GlassFish Server Open Source Edition 4.0 Now Available


Java EE 7 (JSR 342) is now final!

I've delivered numerous talks on Java EE 7 and related technologies all around the world for past several months. I'm loaded with excitement to share that the Java EE 7 platform specification and implementation is now in the records.

The platform has three major themes:



  • Deliver HTML5 Dynamic Scalable Applications
    • Reduce response time with low latency data exchange using WebSocket
    • Simplify data parsing for portable applications with standard JSON support
    • Deliver asynchronous, scalable, high performance RESTful Service
  • Increase Developer Productivity
    • Simplify application architecture with a cohesive integrated platform
    • Increase efficiency with reduced boiler-plate code and broader use of annotations
    • Enhance application portability with standard RESTful web service client support
  • Meet the most demanding enterprise requirements
    • Break down batch jobs into manageable chunks for uninterrupted OLTP performance
    • Easily define multithreaded concurrent tasks for improved scalability
    • Deliver transactional applications with choice and flexibility
This "pancake" diagram of the major components helps understand how the components work with each other to provide a complete, comprehensive, and integrated stack for building your enterprise and web applications. The newly added components are highlighted in the orange color:




In this highly transparent and participatory effort, there were 14 active JSRs:
  • 342: Java EE 7 Platform
  • 338: Java API for RESTful Web Services 2.0
  • 339: Java Persistence API 2.1
  • 340: Servlet 3.1
  • 341: Expression Language 3.0
  • 343: Java Message Service 2.0
  • 344: JavaServer Faces 2.2
  • 345: Enteprise JavaBeans 3.2
  • 346: Contexts and Dependency Injection 1.1
  • 349: Bean Validation 1.1
  • 352: Batch Applications for the Java Platform 1.0
  • 353: Java API for JSON Processing 1.0
  • 356: Java API for WebSocket 1.0
  • 236: Concurrency Utilities for Java EE 1.0

The newly added components are highlighted in bold.

And 9 Maintenance Release JSRs:

  • 250: Common Annotations 1.2
  • 322: Connector Architecture 1.7
  • 907: Java Transaction API 1.2
  • 196: Java Authentication Services for Provider Interface for Containers
  • 115: Java Authorization for Contract for Containers
  • 919: JavaMail 1.5
  • 318: Interceptors 1.2
  • 109: Web Services 1.4
  • 245: JavaServer Pages 2.3

Ready to get rolling ?

Binaries

Tools

Docs


A few articles have already been published on OTN:

And more are coming!

This blog has also published several TOTD on Java EE 7:


All the JSRs have been covered in the Java Spotlight podcast:

The latest issue of Java Magazine is also loaded with tons of Java EE 7 content:



Media coverage has started showing as well ...
And you can track lot more here.

You can hear the latest and greatest on Java EE 7 by watching replays from the launch webinar:



This webinar consists of:
  • Strategy Keynote
  • Technical Keynote
  • 16 Technical Breakouts with JSR Specification Leads
  • Customer, partner, and community testimonials
  • And much more
Do you feel enabled and empowered to start building Java EE 7 applications ?

Just download Java EE 7 SDK that contains GlassFish Server Open Source Edition 4.0, tutorial, samples, documentation and much more.

Enjoy!

About

profile image
Arun Gupta is a technology enthusiast, a passionate runner, author, and a community guy who works for Oracle Corp.


Java EE 7 Samples

Stay Connected

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today