Skip to content

Java full stack web framework

| java |

I believe that everybody knows the most popular full-stack web framework - Ruby on Rails. Of course there are other frameworks for Ruby language, but Rails is the number one. Now, the question: how many full-stack web frameworks exist for Java?

UPDATE (2016-11-20): CUBA Platform is open sourced under Apache License 2.0

Overview

Let’s define the desired items for full-stack web framework:

  • CoC - Convention over configuration
  • MVC - Model-view-controller
  • DRY - Don’t repeat yourself
  • Scaffolding (it was one of the major selling point on the early stage of Rails)
    • Easy prototyping
  • Data/Persistent Layer / ORM
  • DB schema migration
  • URI Routing
  • HTML Rendering / Template engines
  • Testing
  • REST API
  • Security
  • Caching
  • Request Filtering
  • Session Management
  • Form Validation
  • i18n/l10n

Grails

I think Grails was and is the single “true” Rails reincarnation on JVM. Grails is based on Groovy language. It support all concepts Rails supports. It’s based on Spring/Hibernate and Gradle since v.3.0 (Grails v.3.0.0 was released on Mar 31, 2015).

Grails v.3 is build on Spring Boot.

Some people arguing that Grails v.3 acts as simple wrapper on top of Spring Boot and now it does not worth any investments. But, we must not agree as CoC and DRY principles are very vague.

Play Framework 2

Play Framework 2 is a special player. It has two implementations: Java and Scala. Actually Java version is not as powerful as Scala due to Java, as a language, “limitation”. This framework lives under Typesafe umbrella, aka “Typesafe Reactive Platform”.

Play is just different. It’s not Servlet-based and is built on Netty async framework. A lot of people claiming that Play is very cool and productive. I haven’t tried it yet. But it looks promising and interesting.

Code Generation Frameworks

I decided to define the special category “Code Generation”. Frameworks which are related to this category are not full stack, but can be called as RAD (Rapid Application Development) frameworks.

Spring Roo

Spring Roo was very popular some time ago and had a lot of investments from VMWare (former Spring stack owner). Later, the ownership was transferred to DISIG.

Spring Roo is code generation framework, built on top of Spring stack. It’s useful for quick prototyping.

JBoss Forge

JBoss Forge is conceptually equal to Spring Roo, but linked to Java EE stack (like Wildfly, TomEE) and Maven. It’s relly cool if you work with Java EE a lot. Forge is shine in prototyping and code generation. Community looks vibrant and active.

AppFuse

AppFuse can be called as ramp-up framework. The main goal is to quickly generate project with pre-onfigured functionality (see mvn archetype:generate).

JHipster

JHipster is brand new and based on Spring Boot and Angular.js v.1.x. Classical code generation like in Forge or Spring Roo. But, code generation is build on top of node.js tool Yeoman. Concept is very interesting, especially when it uses so hipster’s technologies ;-). It can generate both back-end (REST endpoint) and front-end (Angular.js Single-page application), even Liquibase migrations (which is cool too).

Domain-driven Frameworks

There is a very special category Domain-driven frameworks. For this category I’ve selected two most popular frameworks: OpenXava and Apache Isis. The main idea is that they can generate views and RESTs based on domain entities. Both frameworks have active community. They have “own” concepts and no hipsters technologies. The usage domain is very narrow, I guess they can be easily used to quickly general application’s back-offices (aka admin pages) and prototyping.

Others

There are several others frameworks Ninja, Javalight, Jodd, Jobby and airlift. They are build by small communities (or my single developer) and have some applications. But, it’s risky to invest in them. You can look into because of curiosity, but not more. As for me it’s much safe to use Play/Grails than some unpopular frameworks.

Summary

So, Java ecosystem has two full stack frameworks which use Java language minimally: Grails (Groovy/Java) and Play (Scala/Java). Also, we have a bunch of code generation frameworks and domain-driven frameworks (which occupy really special niche).

References