The long-awaited Java EE 8 is here, and it adds many new capabilities to the platform: Multiple CDI enhancements, including support for asynchronous events, HTTP/2 support in Servlet 4.0, and more. The IntelliJ IDEA 2017.3 EAP build expands support for Java EE 8 key features. We recently briefly announced these features, and now it’s time to provide more details on the improvements we’ve made in this area.
Support for async events
Starting with CDI 2.0, events can be fired asynchronously. IntelliJ IDEA 2017.3 supports Asynchronous CDI Events, and allows you to easily navigate between where the event was fired and where this event was received.
Support for dynamic beans (CDI extensions)
In IntelliJ IDEA 2017.3, you can quickly navigate between Injection point and Injected Beans using the icons in the gutter.
This IntelliJ IDEA 2017.3 EAP build allows you to navigate from disposer methods to their producers using a gutter icon.
Support for new built-in classes in CDI 2.0
Starting with this EAP, the IDE supports the new built-in classes, RequestContextController and InterceptionFactory.
Support for implicit archives (without beans.xml)
The CDI specification defines two different types of bean archives: explicit and implicit. In the new IntelliJ IDEA 2017.3 EAP we support both types.
HTTP/2 support for Servlet 4.0
One of the major features in Java EE is HTTP/2 support for Servlet 4.0. HTTP/2 has an important new feature: Server push. The Server push feature enables the server to send content to the client without an initial request from the client side. The main goal of this new approach is to improve the performance of web browsing. JSR 369 specifies the PushBuilder interface for the HTTP/2 Server Push feature.
IntelliJ IDEA 2017.3 supports this new Server Push feature and offers path completion for the PushBuilder.
A disposer method is always bound to a producer method. If you try to use a disposer method without the corresponding producer, IntelliJ IDEA 2017.3 detects the problem and alerts you.
The IDE now tells you if a disposer must be a non-abstract method.