Enterprise Java

Classification of Development Frameworks for Enterprise Applications

If you google “best java framework”, most probably, you will stumble on this article, which gives a great overview about the landscape in the Java Enterprise world. However, from my point of view it lacks a very important thing – classification of the mentioned frameworks.

Let’s have a look at another angle at this ecosystem and go beyond the Java world.

Picking the best framework for developing an application (or a set of frameworks), means trying to find the best trade-off between the following criteria:

  1. Range of Applicability – what part of the application can be developed using the framework? Do I need a set of frameworks or just one?
  2. Development Speed – how fast will development go?
  3. Manageability & Flexibility – what would be the architectural, performance and other limitations?

Classification of Frameworks

Combining the mentioned criteria with a set of reference frameworks for each class and their outstanding characteristics in one diagram I got the following result:

framework

High-level Programming Languages or “No Frameworks” Approach

This “no frameworks” approach is a degenerate case, which gives the widest Range of Applicability and highest Manageability & Flexibility you could ever get. Obviously, this is the slowest way for developing enterprise applications, as you would need to reinvent all the wheels. Normally, this level is used for building frameworks, that make development speed one step higher.

Narrow-focused Frameworks

This class has the biggest number of representatives. All of them are intended to streamline development in a certain fairly small area by raising the level of abstraction and providing a clear API for its domain. Tying up ORM, Middleware, UI, Messaging and other kinds of frameworks is not a trivial task, however, staying within this class you have a mix of satisfactory development speed with a high level of flexibility.

Code Generators/Aggregators

This class is intended to speed up the early stage of applications development. In fact they configure your application based on the Narrow-focused Frameworks. So, taking JHipster as an example, it will generate a Spring-based application with Angular-based user interface. After the startup stage there is no much value in using such frameworks.

High-level Full-stack Frameworks

This class introduces the next abstraction level over the Narrow-focused Frameworks. So, you already have entire infrastructure to build a full-scale enterprise applications times faster. Taking CUBA Platform as an example, it provides a full-stack architecture for building 3 tier applications and includes widely used common features for enterprise apps such as soft deletion, data-aware components, file storage, as well as high level modules: authentication and authorization, audit of data and others. This class is most appropriate for developing ERP-like systems, line of business applications or custom software for the corporate segment.

Low/No Code Frameworks

At this stage you totally lose control over the code base, developing only small bits of logic in the pre-defined extension points. So, if such framework meets your requirements in terms of performance, deployment options, UI components, integrations, etc. – this would be the fastest way to configure your application. However, it might happen that one day you will not be able to step over the architectural limitations.

Summary

Choosing the right framework of a set of frameworks for developing an enterprise application is not just about surfing the Internet looking for “top frameworks for enterprise” and picking from the top of the list. First of all, it’s about solving the trade-off and finding a right mix of Range of Applicability, Development Speed and Flexibility & Manageability that meets your requirements. Once it is solved, you will be able to focus on choosing a framework itself within the right class, checking for another bunch of criteria: e.g. preferable programming language, size of community, quality of vendor support, success stories, and so on…

To sum up, I would like to provide a table with the framework classes and typical applications, they fit best.

ClassTypical Applications
“No Frameworks” Approach
  • Narrow-focused frameworks
  • Low level products, e.g. in-memory grids, big data processing algorithms, image recognition, etc.
Narrow-focused Frameworks
  • Enterprise apps with unique (uncommon) architecture
  • Microservices
  • Custom backends
  • E-commerce platforms
  • Enterprise Service Bus
Code Generators/Aggregators
  • Boost at the kick-off stage for the same kind of applications as for narrow-focused frameworks
High-level Full-stack Frameworks
  • ERP applications
  • Custom BPMS applications
  • Master data management applications
  • Line of business applications
  • Custom applications with typical enterprise requirements
Low/No Code Frameworks
  • Simple websites
  • Standard online stores
  • Corporate portals
  • Simple/Typical BPMS
  • Basic CRUD applications
Published on Java Code Geeks with permission by Aleksey Stukalov, partner at our JCG program. See the original article here: Classification of Development Frameworks for Enterprise Applications

Opinions expressed by Java Code Geeks contributors are their own.

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rodolfo Davis
2 years ago

Amazing article. Thanks for sharing this information. I would like to share my thoughts also. The race to become the best JavaScript framework is on. The competition is among the top three tools, such as NodeJs, AngularJs, and VueJs. In recent years, the popularity of JavaScript has grown in leaps and bounds. Businesses, both start-up and well-established, prefer JavaScript frameworks to create robust web applications. 

Back to top button