JAX-RS 2.1 just posted its first early draft review. Because of the now accelerated Java EE 8 schedule, the rest of the steps towards finalization of the specification is going to happen very quickly.
As the release versioning indicates, this is a relatively minor JAX-RS release. However, there are a few very important changes in the release both for JAX-RS users and server-side Java developers at large. Besides smaller grain items, these are the major changes in JAX-RS 2.1:
- The introduction of reactive capabilities in the JAX-RS client API. This is largely based on the Java SE 8 CompletableFuture API but the way the changes are designed most JAX-RS providers will also provide native support for RxJava. In essence, this change allows for far more robust asynchronous, non-blocking, functional and composable REST endpoint invocations via the JAX-RS client API.
- The addition of HTML 5 Server-Sent Events (SSE) support both on the JAX-RS server and client side API. Jersey had long added such support in its proprietary API in the Java EE 7 timeframe. This change further improves HTML 5 alignment for JAX-RS and Java EE.
- Although it is not included in the early draft review, JAX-RS 2.1 is set to add non-blocking IO (NIO) support. Unlike the Servlet API which supports both asynchrony and NIO, JAX-RS so far only added asynchronous support as of JAX-RS 2. The JAX-RS 2.1 expert group is now currently actively working on the changes for NIO support. It should make it into the next specification draft.
At the moment the best way to learn more about what is in JAX-RS 2.1 is looking at the specification draft itself. Page 81 of the document has a nice log of changes since JAX-RS 2. Pages 36-38 describe reactive client support. SSE support is described in pages 57-60.
While the specification is going to finalize soon, there are still plenty of reasons to get involved. Here are the many ways you can still engage (most of this comes directly from the Adopt-a-JSR page I drafted while still at Oracle):
- You can still join the specification itself as an expert or a contributor. You can do that via the JCP page for the specification.
- You can have your JUG officially support the standard through Adopt-a-JSR.
- You can simply join the discussion without any ceremony by subscribing to the JAX-RS specification user alias.
- You can share ideas and feedback, possibly by entering issues in the public issue tracker.
- You can read the draft specification now.
- You can try out the reference implementation now.
- You can write or speak about the API now.
- You can encourage others to participate.
The next step is up to you. You can be a part of the effort to keep moving forward the popular JAX-RS specification. If you have any questions I am happy to try to help — just drop me a note anytime.