Skip navigation
1 2 Previous Next

RESTEasy

17 Posts authored by: Alessio Soldano

Earlier this week a release candidate version (4.0.0.CR1) of RESTEasy has been tagged. The artifacts are built and available on the Maven Central and JBoss Nexus repositories.

This is the result of many months of work on RESTEasy master branch in parallel with the continuous enhancements and maintenance on the 3.x stream ; below I'm highligthing some of the areas on which the team has been focussing.

 

Major cleanup

During last 2 years, we have spent a lot of energies in getting rid of not-needed anymore (or deprecated) classes, components, dependencies and such. As an example, RESTEasy 3 still included the old RESTEasy 2 client implementation pre-dating the JAX-RS 2 spec client; clearly, that's deprecated since years and possibly even confusing users; with RESTEasy 4 it's gone. Similarly, old and deprecated modules have been dropped, including:

  • the Jettison, Jackson 1 (org.codehaus one), Abdera and YAML providers
  • the Netty 3 server adapter
  • the RxJava (1) integration
  • the TJWS embedded server
  • few security modules duplicating Keycloak services.

 

Code restructure and optimizations

Together with the removal of old cruft, we've made some progress in restructuring the project in a way that:

  1. allows running with JDK9+ (JDK11 tested at the time of writing) and the JPMS module system (as an example, we had multiple packages split between different modules that had to be dealt with);
  2. allows clearly figuring out whether a given class is to be considered as part of RESTEasy public API or not.

This clearly resulted in a lot of refactoring, with some classes that had to be moved. We tried to cause as less disruption as possible with the changes, still few non-backward compatible changes had to be performed and are going to be documented in a migration guide to be prepared before releasing 4.0.0.Final. Regarding the second goal above, the big resteasy-jaxrs and resteasy-client modules have been split into resteasy-core-spi, resteasy-client-api, resteasy-core and resteasy-client, with the first and second ones to be considered as public modules, for which we're expected to retain backward compatibility till next major release.

The reason for the refactoring aimed at the public/private module separation is of course easier future maintenance; however, we also did some refactoring for optimizing few parts of the project that we knew as problematic performance-wise. That's the case of the ResteasyProviderFactory class, which has grown a lot year after year and had a lot of state info being copied over and over for most common usage scenarios, badly increasing memory pressure. In RESTeasy 4, when a ResteasyProviderFactory instance is known to be needed for client usage only, the server side specific data is not computed and stored; the opposite happening for server-side only scenarios, with a nice memory allocation reduction.

 

New features

RESTEasy 4 is coming with all the features, fixes and upgrades that went into the 3.x releases (350+ jira issues have been solved). To name some of the recent additions, that includes the JAX-RS 2.1 implementation, the Reactive programming support, the new HTTP client engines (including NIO), etc.

On top of that, there're few additions that could not be backported to 3.x branches and are new in RESTEasy 4:

 

Quarkus

While RESTEasy 3 main integration targets are WildFly and JBoss EAP 7.x, when the efforts for RESTEasy 4 were started we had no clear idea of which container would have been consuming the project, so we thought we would have targeted standalone usage of RESTEasy. The reason for that clearly were WildFly and JBoss EAP coming with strict rules around backward compatibility and RESTEasy 4 not being able to satisfy them (because of the changes explained above and considering his historical deficiencies in terms of public/private classes separation).

However, when the work on Protean (now Quarkus) started, it became evident that RESTEasy 4 was well positioned for being included in the new stack, especially considering our efforts on reducing the memory footprint and getting rid of useless / old classes while retaining modern functionalities like the reactive programming support. As a consequence, Quarkus has been launched including RESTEasy 4 beta and few days ago I've upgraded it to pull 4.0.0.CR1.

 

So, it's definitely time to give RESTEasy 4 CR1 a try! There're multiple ways you can play with it:

  • in Quarkus, either waiting for next week release or building the latest sources from github master; note, there's a nice quickstart pulling RESTEasy too in the Quarkus Getting Started Guide ;-)
  • standalone, by simply pulling the 4.0.0.CR1 artifacts as dependencies in your Maven project
  • on WildFly 16, by patching its modules (if you can cope with the few API changes we did) with the contents of our jboss-modules module, after having built it from the sources on github.

 

Hopefully, unless something critical is spotted or reported, we'll be releasing Final (including proper documentation) in few weeks from now.

Stay tuned!

It's been a busy week... but before leaving for the week-end I owe you an update ;-) Three new releases have been completed in the last days:

 

As usual, give them a try while they're hot, feedback is welcome!

A couple of months ago, we announced the move of the RESTEasy Spring Boot starter to RESTEasy organization on GitHub. We also mentioned that soon a new version of the starter would have been available... and here we are today, presenting release 2.0.0.Final, which

  • integrates Spring Boot 2 (currently 2.0.3.RELEASE version)
  • relies on the latest RESTEasy 3.x series (currently 3.6.0.Final version).

The artifacts are available on Maven central repository, as well as the JBoss repository. Feel free to pull them and give them a try.

Enjoy!

You might have recently read about the very interesting new features being developed these days in RESTEasy... great, the time has come to deliver them in a couple of releases!

Last week, RESTEasy 3.6.0.Final and 4.0.0.Beta4 have been tagged, built and published; here is a list of the most relevant additions coming with them:

  • client and server side reactive extensions [1][2]
  • parameter annotations with default names [3][4]
  • JettyClientEngine to use jetty-client with JAX-RS Client [5]
  • SPI to modify resource metadata [6]

 

Moreover, 4.0.0.Beta4, also feature the first part of the changes for the tracing system [7] and asynchronous container filters [8] support.

Both releases are available on the usual Maven repository, feel free to try them out!

3.6.0.Final is also being pulled into WildFly master, targetting inclusion in WildFly 14 release.

Enjoy!

 

[1] Asynchronous, reactive, rxjava and beyond!

[2] Chapter 39. Reactive programming support

[3] New DRY-er annotations for parameters

[4] Chapter 13. Improved @…Param annotations

[5] Chapter 50. RESTEasy Client API

[6] Chapter 18. Resources metadata configuration

[7] A brief introduction to the RESTEasy Tracing Feature

[8] New: Asynchronous container filters

Back in August last year, Fabio Carvalho from PayPal has blogged here on how to use RESTEasy in a Spring Boot application, relying on a Spring Boot starter project that he basically developed. What happened in the following months is that PayPal decided to donate the project to Red Hat.

So here I am today, publicly thanking Fabio and PayPal and announcing the first final release of the rebranded RESTEasy Spring Boot starter.

The new project sources are on GitHub under the RESTEasy organization; the issue tracker is the same as the main RESTEasy project and previously existing issues have been migrated there.

Compared to the latest release from PayPal repository, the first Red Hat release, 1.0.0.Final, brings an update to Spring Boot 1.5.12.RELEASE version and explicit support for Java 9 & 10.

In the next future, the plan is to move forward embracing Spring Boot 2 and integrating more recent versions of the core RESTEasy (3.5 / 3.6 streams).

So please stay tuned, play with the latest release and feel free to contribute!

Two months after last round of releases, here we are again with two RESTEasy bug fix versions, 4.0.0.Beta3 and 3.5.1.Final.

After we completed the implementation of JAX-RS 2.1 and shipped it few months ago within WildFly 12, we started getting some feedback about it. I'm really happy about the interest coming from the community, thanks and please keep on playing with RESTEasy ;-) Anyway, thanks to users contributions and some additional internal testing, we've fixed a bunch of issues especially around JSON-B support and SSE.

On top of that, with JDK 10 having been officially released, we had to ensure that the project can be successfully built and tested with it. So if you're running with Java 10, upgrading to RESTEasy 3.5.1.Final / 4.0.0.Beta3 is really something you should evaluate.

The full release notes are available here. The Maven artifacts are available  for both releases on the usual repository.

Next round of releases will most likely include few new and interesting features, stay tuned... ;-)

Three months after previous announcement, here we are with another step towards RESTEasy 4! Among the achievements in 4.0.0.Beta2 version we have:

The full release notes are available on jira, the artifacts are built and published on Maven repositories and the sources are on GitHub as usual ;-)

 

To align with the WildFly roadmap and increase adoption, during the last month the team has worked hard on backporting most of the new features and all bug fixes contributed so far on master to a new dev stream forked from the 3.0.x branch. The result is today's release of RESTEasy 3.5.0.Final, which is helping WildFly on the road to Java EE 8 compliance by providing JAX-RS 2.1 implementation while ensuring full backward compatibility with the RESTEasy versions it previously shipped with.

RESTEasy 3.5.0.Final basically allows easy access to the 4.0.0.Beta1 / 4.0.0.Beta2 stable features by offering a painless upgrade path to the 3.0.x users.

The natural upgrade path for users already on RESTEasy 3.1 series is straight to RESTEasy 4.0.0.Beta2 instead.

 

RESTEasy 3.5.0.Final binaries and sources are available on resteasy.jboss.org, together with the official documentation. Release notes on jira and Maven artifacts on the repository, as usual.

Please consider trying the latest release and providing feedback!

Enjoy :-)

Back at the end of July I mentioned that the team would have focussed on JSR-370... and here I am few months later, happy to announce that the first Beta release of RESTEasy 4 has been tagged over the weekend and it features JAX-RS 2.1 implementation.

However this beta comes with more additions... besides for the implementation of the latest specification for RESTful webservices in Java, here is a brief list of what's new:

The full release notes are available on jira, the artifacts are built and published on Maven repositories and the sources are on GitHub as usual ;-)

Please consider trying the latest release and providing feedback!

Thanks

RESTEasy 3.1.4.Final and 3.0.24.Final have been released during last weekend. They're both maintenance releases, including a bunch of bug fixes. Please have a look at the release notes for details.

Now it's really time for the team to focus on implementing JSR 370 (JAX-RS 2.1), which will be one of the features marking next minor (or major, maybe) of RESTEasy.

Stay tuned!

Yesterday we pushed a new couple of releases (3.1.2.Final and 3.0.22.Final) out of the door, so have a look at the release notes and try them :-)

The new versions are mainly bug fix ones. Something interesting is that we started testing against JDK 9. RESTEasy 3.1.2.Final contains some changes / fixes and workarounds to allow building the project with the current latest early access version of JDK 9. The testsuite is also mostly passing.

As usual, any feedback or issue... just let us know!

Here we are a couple of months later with the first bug fix release of RESTEasy 3.1.x series. Oh, well, the release actually includes a bunch of enhancements and component upgrades too, so be sure to check the release notes for details :-)

Those monitoring the website and/or the development on GithHub might have noticed that during the past weeks we've also continued merging fixes into the 3.0 branch. The result of that effort is in the 3.0.20.Final and 3.0.21.Final releases which are also available for users that still need some time before switching to 3.1. We are likely going on actively working on 3.0 for some more time, but we really encourage you to migrate to 3.1 as soon as possible.

Enjoy the new releases and please provide feedback!

Just in time before everybody goes and take some rest for Christmas... here we are with the long-awaited final release of our rest project ;-)

Seriously, RESTEasy 3.1.0.Final is out; we've gone through ~20 additional bug fixes and misc tasks on top of the latest candidate release, but finally it's available on the download page, on the Maven repository and together with current WildFly master.

Here is a brief high-level summary of what's coming in 3.1.0:

  • major project cleanup
  • most of the deprecated API moved to an optional resteasy-legacy module
  • performance improvements
  • lots of dependencies upgrades
  • new Vert.X adapter
  • improved testsuite
  • many bug fixes

A detailed list of the changes is available on JIRA.

 

I really invite everybody to take a look at the documentation, especially the sections concerning the migration from older versions, try the new release and let us know if anything needs changes.

Enjoy it and take some rest during Xmas time ;-)

Cheers

 

Last month I was writing about RESTEasy 3.1.0.CR2 and telling you we would have gone Final soon... actually we had to work on a major refactoring on the project that led to creating another candidate release. It turned out that the old API cleanup that went into 3.1.0.Beta2 as part of RESTEASY-1363 would have effectively prevented us from bundling RESTEasy in any JBoss EAP 7.x series future release. Here I'm not going through the details of the container rules regarding backward compatibility; what really matters is that we decided to go with a slightly milder solution, restoring the previously removed stuff into an optional and deprecated module of the project, resteasy-legacy. Besides granting us a way to comply with EAP 7.x requirements, the dependency to the new module is going to offer a chance of running on RESTEasy 3.1 to those who didn't fully move on from RESTEasy 2 APIs and the other old deprecated functionalities. An updated version of the migration guides is being prepared and will be available hopefully soon; in the mean time you can start playing with RESTEasy 3.1.0.CR3 bits. The Nexus Maven repository already has the 3.1.0.CR3 artifacts, which are also already pulled by latest WildFly master.

The actual release notes are here; any feedback, just let us know :-)

Cheers

Alessio

Just few days after CR1, here we are again with another candidate release version of RESTEasy 3.1.0. A couple of regressions (actually compared to 3.1.0.Beta1) have been spotted and fixed and we've gone through a bunch of dependencies upgrades. Full release notes available here.

The new artifacts are available on the Maven repository as usual; please keep on trying the latest bits and report any issue you find, thanks a lot! Final release is coming soon :-)

Cheers

Alessio

Just a note to tell you that the first CR version of RESTEasy 3.1 has been tagged last Friday. The artifacts are available on the Maven repository.

It's still a good time to have a look at and try the new 3.1, any feedback is welcome. We hope to go Final by the end of this month :-)