Hacker News new | ask | show | jobs
by matrix 4573 days ago
These results are tempting me to do my next project in a modern lightweight Java framework. No Hibernate, bloated frameworks of yore, or weird complex build and dependency management. Play is ruled out - it's Scala (Java is a second-class citizen in Play).

Maybe something that ties together things like ebean ORM, Jetty, Jersey, Jackson, Guice. Dropwizard is the right idea, but is geared towards building REST backends.

Any suggestions on a pure Java framework that has critical mass and would fit the bill?

5 comments

Following up on my own question, there doesn't appear to be any that quite fit the bill right now, if we define the ideal framework as having the following characteristics:

* Java as a first-class citizen

* Strong core of basic web app functionality

* REST and Search engine friendly URLs

* Action oriented – basic framework for routes, MVC etc

* Stateless

* Good documentation, active community

If we look at action frameworks only:

* Play 2: Great except it's Scala. Ruled out.

* Spring MVC: Spring is bloated old-school Java with Hibernate. Out.

* Stripes: hasn’t had a commit in over a year… which is unfortunate because it looks interesting. Out.

* Spark: appears to be a one-person project. Out.

* Google Sitebricks – ditto

* Ninja: Ditto

Play 2: Great except it's Scala. Ruled out.

The Play guys went to great trouble to ensure that both Java and Scala are fully supported. Perhaps consider being a bit more open-minded about your options. Scala is simply a more modern and flexible language, so I don't blame them for using it.

Grails? You just uninstall the GORM/Hibernate plugin. Controllers have to be written in Groovy, but everything else can be Java.
When Grails developers talk about the minimum Groovy that must be used instead of Java in their Grails code, it doesnt paint much of a picture for Groovy's future. I've heard Gradle devs want to add Scala as an optional build language in Gradle 2, but is Grails thinking about moving away from Groovy as well?
Spring mvc with spring 4 is decent, with the java configuration, the amount of boilerplate is reduced at an acceptable level in my opinion (best case is few annotation) (and you are not forced to use hibernate).

But in general I agree that at the moment there aren't a lot of web framework that fit your description in the java world.

Why did you find lacking in java on Play? I've just started playing with it and aside from the template engine (which I don't count) I haven't found any part of the java support lacking vs the scala.
In my brief try-out of it, it felt to me like if you want to do anything different (e.g. your own implementation of something), you pretty much need to switch to Scala. It's a Scala framework first and foremost.

A minor demerit was getting SBT and Play Java to work correctly in IDEA was enough of a pain to make me wonder how much overhead that was going to incur in the long run.

If someone who has used Play Java in production on a large project can weigh in on whether these points are true or not in real production use, I'd love to hear it.

We use Play Java in production, in fact it plays a central role in our backend. Our entire persistence layer is written in Java.

Going forward our new code is all in Scala. Not because we ran into issues with Play + Java, we just get fed up with Java's verbosity when dealing with futures and actors.

I had the exact same thought after Round 7, so I started Sparkler, to bring as much of the coolness of Rails to Java as I can. See https://github.com/tobykurien/Sparkler
Take a look at Ninja framework (http://ninjaframework.org/) Its built on great foundation.
You describe dropwizzard then rule it out, I don't follow why?
Dropwizard can do templates and views too. What are you missing?