Java EE is and should be primarily perceived as a set of well though-out standards. Does it mean that it provides mostly outdated stuff ? No ! In fact, Java EE literally wants to be extended with the newest ideas ! Java EE is on it’s own well crafted, however, there is an excellent built-in support for so called Portable extensions. It allows for the new technology to be plugged in easily, without introducing any configuration or dependency mess for the developers. For the plugin authors, plugins are easy to write and can be very, very powerful. And there is already a lot of functionality to choose from. Because extensibility is also part of the standard.
Just remember, new, non-standard functionality does not always have to be a CDI extension. Often, it can be plugged right in.
Java EE ecosystem is rich and truly open. As an extension user, you can make use of work of many different companies and authors. As an author, you can plug your desired functionality directly into Java EE. In the following list, I am trying to demonstrate that Java EE world is in fact full of innovation. If you have a look at the source code of the projects listed below, you can see for yourself how easy it is to create a plugin.
- Apache Deltaspike Data - Like Spring Data ? This is better designed !
- Spring Data - Carries many heavyweight & proprietary Spring dependencies. Can be used if required.
- JOOQ - This is not a CDI plugin, there is no need. But integrates with Java EE well.
- CDI Query
- Apache Deltaspike Configuration - A very capable configuration library.
- Apache Tamaya
- CDI Properties
- SoftwareMill configuration
- Vaadin - Well-known view framework is very clean to use with Java EE.
- VRaptor - No MVC for Java EE ? This is a very common myth. Besides the new Ozark (MVC 1.0), there is VRaptor ! A clean and tidy MVC integration.
- AngularBeans - Like AngularJS ? Thanks to this project, Java EE has direct support for it.
- Thymeleaf-CDI - JSF are great, but if you are used to Thymeleaf, here you go.
- Thymeleaf-MVC - Thymeleaf also already players with Java EE 8 MVC 1.0 :) There is also (JAX-RS integration](https://github.com/inbuss/thymeleaf-jersey)
- Primefaces - Represents the power of JSF. Primefaces is the ultimate JSF view library. Not only a set of components, but also themes, view utilities and many others.
- Apache Wicket
- Apache Camel
- Metrics - Metrics for your entrirprise applications
- DeltaSpike monitoring - This project has the same goals as Metrics
- Arquillian - Whole testing framework with bunch of CDI extensions. Absolutely unmatched testing platform.
- JGlue Unit testing - Unit tests with CDI
- Scripting extension
- Method-level caching
- Quartz scheduler - Java EE has great scheduling inside, but if you want Quartz, you can have it.
- Porcupine - Porcupine is the implementation of the bulkhead and handshaking patterns for Java EE 7
- Breakr - A Minimalistic Circuit Breaker for Java EE applications
- Assisted Injection
- Paypal integration
- Configure CDI beans in XML - If legacy classes are required to be part of dependency injection graph :)
- Guice configuration for Java EE - Like Google Guice style of bean declaration ? There is a plugin for that too !
- Dynamic messages
- Spring bridge - If you have some heavyweight Spring application with a robust DI tree and want to @Inject into CDI, thanks to this bridge, you can.
There are many others to be found via Google, on GitHub and in many other places. The list goes on and on. For example, Java EE applications can also be rapidly created with JBoss Forge - this is also thanks to CDI and it’s robust model.
Become an author !
Writing CDI extensions is easy. By contributing directly into Java EE, you make sure your code is not tied to a proprietary platform and can be used by widest enterprise audience - Java EE developers. With CDI extensions, you can do just about anything ! Just remember, Java EE is very well designed and not every problem needs to be represented as an extension - this further improves the easiness of coding with Java EE. There are more capable and informed people you can visit and have a look at their great guides about what can be achieved with Java EE + CDI and how to achieve it.
- CDI Extension guide by Antoine Sabot-Durand
- CDI 1.2 Specification - By Gaving King and many others. There is a newever version on it’s way, so beware !
- Write your own CDI Extension by Peter Daum
- CDI extensions by example - by Gonçalo Marques
- With CDI Extensions, You Can Build Your Own Java 7 - by Mitch Pronschinske
CDI - the cool guy
As you can see, Java EE is a very rich environment. On the shoulders of giants (standards made by very capable people), there are many innovative project that play nicely with Java EE. There is only one thing to be changed soon (hopefuly) - there is no central place to inform newcomers about Java EEs capabilities. Java EE represent a common effort of many companies and individuals. Having a common place to inform about Java EE’s capabilities would be nice.
- Type qualifiers - In Java EE, we do not use Strings for qualifiers :)
- Decorators - explained
And many, many others. If you want to get to know more about Java EE, CDI and it’s capabilities, I always recommend Beginning Java EE 7 by Antonio Goncalves. It is the book I recommend to both newcomers are experienced developers. It is a book of great quality, very nicely written. And there is also a “nice” story behind this book.