Tuesday Aug 26, 2014

MVC 1.0 JSR

The Model–View–Controller (MVC) pattern has been used for several decades to implement user interfaces. And when it comes to MVC Web frameworks, those can be categorized as action-based or component-based. JavaServer Faces is a component-based MVC framework.

Through the survey, the community has expressed interest in an action-based MVC approach. Santiago Pericas-Geertsen has recently posted a draft proposal for a JSR ('MVC 1.0 JSR') that would define a MVC action-oriented framework for the Java EE platform. This MVC JSR is not intended to replace JSF (component-oriented) but offers, instead, a different approach to building Web applications on the Java EE Platform.

One of the goals of the MVC JSR is to leverage existing platform technologies where it makes sense (e.g. CDI and Bean Validation seems obvious candidates for the Model part).

The initial though was to define this (action-based) MVC framework in the JAX-RS specification but after initial feedback and discussions, the general consensus was that a separate JSR would be more appropriate. Technically, JAX-RS is still one of the option for the Controller part but everything is open and will have to be discussed in the EG. The outcome of those discussions might be that something else is needed for the Controller, or that there's a way to define a Controller independently of the underlying technology and JAX-RS would then be 'plugged' in, we will see... One thing is clear, defining a new template language is not in the scope of the MVC proposal!

We have strong team to lead the MVC JSR : Santiago Pericas-Geertsen (who is also the JAX-RS Specification co-lead) and Manfred Riem (who is also the JSF Specification co-lead). They will, for sure, get support from other community participants (e.g. Red Hat).

In terms of planning, Santiago is looking for supporters before he submits the proposal to the JCP. The JSR itself is aligned with the Java EE 8 planning.

Wednesday May 28, 2014

Adding SSE support in Java EE 8

SSE (Server-Sent Event) is a standard mechanism used to push, over HTTP, server notifications to clients.  SSE is often compared to WebSocket as they are both supported in HTML 5 and they both provide the server a way to push information to their clients but they are different too! See here for some of the pros and cons of using one or the other.

For REST application, SSE can be quite complementary as it offers an effective solution for a one-way publish-subscribe model, i.e. a REST client can 'subscribe' and get SSE based notifications from a REST endpoint. As a matter of fact, Jersey (JAX-RS Reference Implementation) already support SSE since quite some time (see the Jersey documentation for more details).

There might also be some cases where one might want to use SSE directly from the Servlet API. Sending SSE notifications using the Servlet API is relatively straight forward. To give you an idea, check here for 2 SSE examples based on the Servlet 3.1 API. 

We are thinking about adding SSE support in Java EE 8 but the question is where as there are several options, in the platform, where SSE could potentially be supported:
  • the Servlet API
  • the WebSocket API
  • JAX-RS
  • or even having a dedicated SSE API, and thus a dedicated JSR too!
Santiago Pericas-Geertsen (JAX-RS Co-Spec Lead) conducted an initial investigation around that question. You can find the arguments for the different options and Santiago's findings here.

So at this stage JAX-RS seems to be a good choice to support SSE in Java EE. This will obviously be discussed in the respective JCP Expert Groups but what is your opinion on this question?

Wednesday Jul 10, 2013

An Overview of JAX-RS 2

JAX-RS 2 is one of the most significant parts of the Java EE 7 release. In a brief InfoQ article, Vikram Gupta overviews the major changes in JAX-RS 2. There's also the 20-minute JAX-RS 2 presentation by specification lead Santiago Pericas-Geertsen on the GlassFish videos YouTube channel and my own slide deck below:

You can also check out the official specification yourself or try things out with the newly released Java EE 7 SDK.

Friday May 10, 2013

Java EE@JavaOne Russia 2013

JavaOne Russia 2013 was held at the Crocus Expo Center in Moscow on April 23-24. The conference was a resounding success with a great vibe, excellent technical content and numerous world class speakers. Some notable speakers included Werner Keil, Joonas Lehtinen, Heather VanCura, Paul Bakker, Bert Ertman, Talip Ozturk, Anil Gaur, Geertjan Wielenga, Arun Gupta, Jim Weaver, Stephen Chin and David Delabassee. Topics covered included the JCP/JUGs, Java SE 8, Java EE 7, HTML 5/WebSocket, JSF, JMS 2, JAX-RS 2, Java EE Concurrency, JBatch, JSON-P, NetBeans, MySQL, Vaadin, the Oracle Java Cloud, OpenShift, OSGi, JavaFX and Coherence.

 

 

I delivered the Java EE technical keynote, two technical sessions (one on JSM 2 and the other on JAX-RS 2) and three lighting talks (on Java EE Concurrency, JBatch and JSON-P). I also helped deliver two hands-on-labs (on Java EE 7 and the Java Cloud Service). More details on the sessions and JavaOne Russia 2013, including the slide decks and code, posted on my personal blog.

Wednesday May 08, 2013

Santiago Pericas-Geertsen on JAX-RS 2

The 130th episode of the Java Spotlight podcast features an interview with JAX-RS 2 co-spec lead Santiago Pericas-Geertsen. JAX-RS 2 is one of the key parts of the Java EE 7 platform and a vital update to the very popular API. Santiago talks with Roger Brinkley about the motivation for the JSR, some of the API details such as the client API, asynchronous processing, interceptors/filters, Hypermedia support and content negotiation, current status of the JSR as well as what's in the future.

You can listen to the full podcast here. It's really a great starting point for learning about JAX-RS 2. You can certainly give the proposed final draft a read yourself (the API recently passed it's final approval ballot). At ninety some pages, it is not too bad of a read. You can also try the API out with a GlassFish promoted build.

Friday Apr 05, 2013

An Overview of JAX-RS 2

JAX-RS 2 is one of the most significant parts of the upcoming Java EE 7 release. In a brief article, consultant, German author and celebrated Java EE advocate Adam Bien does a great job of overviewing the major changes in JAX-RS 2. He talks about asynchronous processing, EJB/CDI integration, filters/interceptors, the configuration API, the client API and more.

If the article whets your appetite to learn more about JAX-RS 2, you could download the actual proposed final draft and give it a read. For those unaware, JAX-RS 2 recently passed its public review ballot. At just above 90 pages, the actual JAX-RS 2 specification document is not that bad of a read.

Wednesday Dec 19, 2012

Marek Potociar on JAX-RS 2

Java EE 7 is turning the last lap! Late last month JAX-RS 2 (JSR 339) and Bean Validation 1.1 (JSR 349) were adopted by public review ballot, making them the first two JSR's to be ratified. InfoQ interviewed Marek Potociar, JSR 339 co-spec lead (Marek and Santiago Pericas-Geertsen are the dynamic duo leading JAX-RS).

Marek talks about JAX-RS 2 content, it's significance and the future. Read the full interview here.

Sunday Mar 18, 2012

RESTful Java on Steroids (Parleys, Podcast, ...)

As reported previously here, the JAX-RS 2.0 (JSR 339) expert group is making good progress.

If you're interested in what the future holds for RESTful Java web services, you can now watch Marek's Devoxx presentation or listen to him in the latest Java Spotlight Podcast (#74).

ALT_DESCR

Marek discusses the new client API, filters/handlers, BeanValidation integration, Hypermedia support (HATEOAS), server-side async processing and more.

With JSR 339's Early Draft Review 2 currently out, another draft review is planned for April, the public review should be available in June while the final draft is currently scheduled for the end of the summer. In short, expect completion sometime before the end of 2012.

Wednesday Feb 22, 2012

JAX-RS 2.0 - Jersey Code Rulez

What's better than the JAX-RS 2.0 Early Draft? Well, code of course! As spec lead Marek Potociar just announced, the first Jersey 2.0 milestone build is out.

ALT_DESCR

This is an entirely new code base which uses HK2 for dependency injection (a core technology for GlassFish), offers a new asynchronous internal design as well as an API to programmatically define JAX-RS resources. Read about these and more about what's new in Marek's detailed post. Of course this is also the future reference implementation for JAX-RS 2.0.

Feel like trying it out? Simply go to Maven Central (of course none of this is production quality at this point).

Thursday Feb 09, 2012

A status on JAX-RS 2.0. Early Draft.

With the Early Draft of JAX-RS 2.0 review period closed for a little while now, here's Arun's walk through the technology's new and improved features.

ALT_DESCR

The Client API seems to be a very popular feature and one that seems pretty stable at this point. Filters and Handlers is another set of new features enabling interception of requests and responses while Hypermedia, a founding principle for REST, is better supported. JAX-RS 2.0 also offers the ability to validation parameters with BeanValidation, introduces asynchronous processing (returning Future objects on the client side) and finally better connection negotiation. Read all about it here.

JAX-RS has become an important component of the Java EE platform and the cloud theme going forward is only making it even more relevant. Check out this earlier post for Marek's (co Spec Lead on JAX-RS 2.0) take on where the JSR stands.

Sunday Jan 08, 2012

RESTful JAX-RS Roundup

Note: if you're reading this using a feedreader, please make sure you've updated to the updated TheAquarium feed.

While most parameter handling examples with JAX-RS focus on @PathParam, there are other JAX-RS 1.x annotations that are worth knowing.

Mkyong has a short and simple example for how to use @MatrixParam (and for many more here) while John Yeary covers @CookieParam. The JavaDoc for both annotations can be found here and here.

ALT_DESCR

Meanwhile, François explores Jersey's support for MVC where the Controller is a resource class, the model is returned by a resource method, and the view is a template which operates on the model (this is inspired by the stapler project and is also used by Hudson). Note that this is not part of the JAX-RS standard.

To close this quick roundup, I'd like to point you to a month-old JAX-RS blog entry by Adobe's Christophe Coenraets combining jQuery and JAX-RS/Jersey as probably the one with the best taste to date (IMO, etc...) !

Update: John Yeary has (a lot) more JAX-RS resources for you.

.

Friday Jan 06, 2012

Tab Sweep - JSON, OSGi, GlassFish+NetBeans experience, JAXB and JodaTime, file uploads & more

Recent Tips and News on Java, Java EE 6, GlassFish & more :

Radio Receiver

JSON to Java with JDK6 (Julien)
What does the future hold for OSGi without leader Peter Kriens? (JAXenter)
JavaCloudGuy: Glassfish (Java EE 6) is now available as option in #cumulogic (Twitter)
JAXB and Joda-Time: Dates and Times (Blaise)
JAX-RS Tip of the Day: Using YUI2 and YUI3 DataTables with Jersey and jQuery (John)
JAX-RS @MatrixParam example (mkyong)
First experiences and getting started with GlassFish 3.1 and NetBeans 7.x – it’s a breeze (Lucas)
Maven's WAR Overlay: What are WAR Overlays? (DZone)
Book Review for "Java EE 6 with GlassFish Application Server" (Rick)
Managing unmanaged beans in CDI (Nicolas)
Using Bean Validation together with ExtVal in JPA and JSF (Edwin)
Java EE 6 using WebLogic 12c and NetBeans (Video) (Arun)
Spark, A micro Web Framework (spark.com)
Multiple File Upload Examples (John Yeary)
Released: NetBeans Platform 7, The Book (Geertjan)
Java 7: Understanding the Phaser (Niklas)
Where's my log file? (Nigel @ Open Messaging)
Sample: Java EE 6 + Wicket + NetBeans + GlassFish + MySQL (Geertjan)
Using Jsp in a Jersey JAX-RS RESTful application (François)
How to change the Glassfish server log level from command line (François)

Tuesday Dec 13, 2011

Jersey 1.11 is here with MOXy support

Jakub, the Jersey lead has just announced Jersey 1.11 which offers EclipseLink's MOXy support, attaching filters to non-blocking clients as well as some docs cleanup.

Moxy Band

Jersey 1.11 is scheduled to be available as part of the upcoming GlassFish 3.1.2 release. More on other component updates for this release in an upcoming post.

I can't help but wonder if the number of Canadians involved in MOXy has anything to do with it being named after a heavy metal band. Project and product names are always fun stories.

Monday Nov 21, 2011

Marek's JAX-RS 2.0 content from Devoxx 2011

Marek Potociar, one of the two co-spec leads for the upcoming JAX-RS 2.0 had a very well-attended session at Devoxx and wrote a blog post about it detailing his conference experience (1st time at Devoxx) and running through the new features of the specification.

A link to slides is also included in his post.

ALT_DESCR

The work by the expert group seems very solid at this point as you can read for yourself in details in the recently published early draft document.

You can follow the remaining work between now and the middle of new year on the specification project pages on java.net.