C2B2 logo icon

Is WildFly right for you?

Clients often ask us, “is WildFly the right choice?” To tackle this question, c2b2 Technical Delivery Manager, Brian Randell, has put together his tips for those wanting to know if WildFly is right for their organisation.

Whenever I talk to clients about WildFly there are a few questions I hear frequently. Usually these questions are asked when clients are weighing up the choice of WildFly or JBoss EAP, or when they're using WildFly already and looking toward the next major upgrade.

“What is a good version of WildFly to be on?”

“What is the most stable version?”

“What is the difference between WildFly and JBoss EAP?”

They want to know, what makes WildFly the right choice for them. 

WildFly is a fast, lightweight, modular, JEE 7 runtime, and what’s more - it’s free! 

If you decide to use WildFly, you are making a conscious choice to use a community project and run your, potentially business-critical, application(s) upon it. WildFly is developed, tested and released by the community, which means it is open source, free and is licensed through the GNU Lesser General Public License (LGPL) 1.2 - however, this also means it is only supported through public forums.

WildFly is constantly innovating, developing and evolving, and utilises a lot of other open source projects (e.g. Hibernate, Infinispan, ActiveMQ Artemis). The most recent Final release was 11.0.0 in October 2017, and it continues implementing JEE 7, which was first implemented in WildFly 8.0.0, (released in February 2014). 

A side effect of this innovative and community driven approach is that there isn’t a guarantee that code will stay the same between versions, or that new code will continue to be developed. This means that if you are using WildFly, every new version should be fully tested, with potential design and code modifications made, to allow it to run.

Downstream from WildFly is JBoss EAP. Delivered as a stable, supported version, it is derived from WildFly’s innovation and developments and, as such, follows slightly behind. For example, JEE 7 was only introduced to JBoss EAP in version 7.0.0 (released in May 2016), 2 years behind WildFly.

Core Components

Below, we have complied a couple of charts which are useful for helping us assess the differences between the components and modules within different versions of WildFly and JBoss EAP. 

With this comparison, you can identify, firstly, that a lot of advances have been made between WildFly 8.2 and WildFly 10.1, and secondly, that EAP 7.1 is slightly behind WildFly 11.0.0.

So, what are these components?

  • Undertow: a lightweight web server written in Java, compatible with the servlet 3.1 specification introduced in Java EE 7
  • Hibernate: an implementation of Java Persistence API (JPA). This is what maps Java objects to database tables for persisting your application's data to a database. 
  • HornetQ: JBoss' open source JMS implementation used for Asynchronous messaging
  • Infinispan: a NoSQL solution developed by Red Hat. It can be consumed as a service in WildFly and JBoss.
  • JBeret: a batch processing tool
  • WildFly core security: the built-in security framework. Replaced by Elytron in WildFly 10. JBoss is running the original security framework and Elytron in parallel since 7.1.0
  • Weld core: an implementation of the Context Dependency Injection (CDI) API
  • Iron Jacamar: an open source Java Connector Architecture (JCA) container.
  • mod_cluster: JBoss' HTTP load balancer
  • Picketlink: used for security and identity management.
  • Elytron: WildFly’s new security infrastructure that replaced Picketbox and security-realms subsystems. First introduced in Wildfly10.

WildFly and JBoss EAP's architectures are based on modules. Modules are pluggable JARs that can be added or removed as needed. A module, or group of modules is used to power a subsystem. 
By comparing the versions of some of the more popular modules within each release it's possible to see in greater detail what exactly has advanced.



[Interested in learning more about the different modules in each version? Download our comprehensive modules list HERE]

Back to our questions

Now that we’ve looked at the subsystems and modules, let’s go back and answer those questions from the beginning. 

“What is a good version of WildFly to be on?”

If you're looking for to perform some major upgrades to your application server, whichever version of WildFly you chose, be sure to fully test to ensure your application is compatible and will work.  Saying that, the later versions in any major release should be considered as potential upgrade targets as they will contain multiple bug fixes to earlier code.  Currently this is 11.0.0.

“What is the most stable version?”

Because of its open-source nature WildFly has limited testing, so the best way to increase confidence of stability is to test it fully yourself with the applications you want it to run. Other than that, it is always sensible to be on the latest version of a point release to include as many bug fixes as possible.

“What is the difference between WildFly and JBoss EAP ?”

As you can tell from the details of the components and modules above, they are very similar. WildFly, as the free, community driven version, provides innovation and quick to market functionality, whereas JBoss EAP is the commercially licensed, fully tested, stable and supported version, and as such will always be slightly behind the component versions in WildFly.

Overall, the most apparent reason for choosing WildFly is because it is free, open source, innovative, current, fast and lightweight. But remember these benefits also mean that it needs full testing for each upgrade and has minimal support available. If your application(s) running on WildFly are critical, implementing a full monitoring and alerting infrastructure against the environment may be sensible, as you can analyse and troubleshoot any issues and have insight into the JVM and application.