JRebel 2019.1.0 brings you Java 12 and more
The new Java release cadence is up and running at full speed with the just-released Java 12. JRebel, the main Java productivity tool eliminating developer downtime, has adopted the six-month cadence and is introducing significant new releases hand-in-hand with OpenJDK. Here’s what JRebel 2019.1.0 release has in store.
Features in JRebel 2019.1.0
Java 12 Support
With JRebel 2019.1.0, we have full support for the just-released Java 12. This Java release includes the Switch Expressions preview feature, the new JVM Constants API, and the awaited experimental Shenandoah low-pause GC, though notably the latter is excluded from Oracle-produced builds.
Switch Expressions is the next language feature from Project Amber – the same project that brought us the
var keyword in Java 10 and that is exploring other language improvements such as raw strings and proper pattern matching. Switch Expressions allows you, as the name suggests, to use a
switch as an expression, thus having it produce a value. This is particularly useful in the very common use case where a switch is used to map from one value to another.
Back in September, we saw the release of Java 11, which was the first release under the new release cadence with Long Term Support (LTS) from Oracle. In February, Oracle handed over the JDK11 update projects to the OpenJDK open source community under the leadership of Andrew Haley, who also leads the JDK7 and JDK8 update projects. This means that OpenJDK11 will continue to receive fixes for bugs and security issues in the future. With the likes of AdoptOpenJDK, that recently announced it had passed the 15 million download mark, Amazon’s Corretto, BellSoft’s Liberica, SAP’s SapMachine, Azul’s Zulu, Eclipse OpenJ9, and many others, there are plenty of free OpenJDK distributions available to choose from.
If you are using these distributions in production, we highly recommend that you have an active support plan in place, such as an OpenLogic support subscription. No matter which of these distributions you choose, or if you’re still on legacy Java 6, or already using Java 12, or anywhere in between, JRebel is there for you, ready to eliminate restarts and redeploys and the frustration caused by them!
It’s not only the OpenJDK community that is working at a fast pace; the same can be said for the entire Java ecosystem - meaning so are we! In the past six months, since the release of JRebel 2018.2.0, we have seen many large app server and framework releases, including releases such as JBoss EAP 7.2, WildFly 16, WebSphere Liberty Profile 19, GlassFish 5.1, Spring Boot 2.1, Vaadin 13, HK2 2.5, and Weld 3.1. JRebel 2019.1.0 supports them all.
We also improved our integration with Kotlin, adding support for Kotlin 1.3. This means you can take full advantage of the new features added to the Kotlin runtime and language, such as co-routines, and still use JRebel to reload your changes on the fly.
We have also greatly improved the way we handle ApplicationScoped CDI beans, adding support for reloading how they are constructed and initialized, meaning these beans can now be reloaded and reconfigured at runtime. We also have some great news for users of the JDeveloper IDE – the JRebel for JDeveloper IDE plugin now supports working with remote servers. Here is more information on remote servers.
Easier Team Rollouts
A feature that deserves a special mention is automatic path variables, which will help with rollouts in bigger teams. Most of the time, you can trust the JRebel IDE plugin to generate a correct configuration (the rebel.xml file) out-of-the-box. But there are some cases where you need to make some tweaks. For example, your Maven/Gradle build might have some settings that the IDE doesn’t follow correctly, or some parts of the application should be excluded from JRebel reloading. You want to avoid each team member having to reinvent the optimal configuration.
Automatic path variables solve this problem. If you write your rebel.xml configuration in terms of variables pointing to your project root, JRebel IDE plugin will expand it automatically. This means you can use relative paths and commit your rebel.xml configuration to SCM. The whole team will get the fine-tuned configuration on their next pull and won’t need to manually configure the path variables for their local environment. It will just work, making JRebel rollout to the team a breeze. For more details, see the manual.
So, no matter if you're still on a legacy application running on Java 6 or already using the latest versions of Java and Spring, JRebel has got you covered. With its extensive range of support for app servers, frameworks, and IDEs, JRebel is here to help you eliminate developer downtime.