I think it would somehow be very hard to get people excited about contributing to the effort to build a new, amazing piece of forum software... in Java.
Clojure, maybe ;)
On server-side, you have a lot of alternatives you can choose from, but on Android, most of the time, you don't have the choice.
Java is still the No.1 language but it is unhealthy (IMO) if most indie developers prefer to ignore it, despite the benefits it bring.
Don't underestimate what effect Java 8 will have. Sure, closures are old by now, but JDK 8 combines them with streams, similar to those that have become popular in Scala and Haskell. You can write stuff like this,
https://github.com/mikaelhg/lambda-demo/blob/master/src/main...
without creating intermediate lists or whatever. Replace a call to a collection's stream method by parallelStream and subsequent operations such as map are parallelized.
Java 8 is perhaps not `Haskell cool', but you'll be able to get it past management and still enjoy some of the functional programming fun.
(Now, give me value structs and reified generics Oracle!)
I think a lot of technologies where the ability to convince management to use it is a feature are ones that don't get individual open-source contributors the most excited, unfortunately.
Maybe I'm naive to Java's open-source community, but from the outside I don't envision it to be as active as Ruby's (at least outside of Android), even with Ruby no longer being "the cool thing".
Actually, that was my view too. In my previous job, I had used C, C++, Prolog, and some Haskell for four years. My outside view was that the Java opensource ecosystem is boring. My current employer uses Java almost exclusively, and I have to admit being surprised how much high-quality open source libraries are available, packaged up for Maven.
I still think that Java is so-so, but the open source ecosystem is quite strong, and there are really excellent IDEs (such as IntelliJ IDEA).
Check out this slides: http://www.slideshare.net/blackducksoftware/open-source-by-t...
http://www.jboss.org/projects http://projects.apache.org/indexes/quick.html
The big exception is Play! Framework but that seems to have mainly shifted over to the Scala side of things.
And regarding editing XML in some other required places - you can use Gradle instead of Maven or Ant (thus no XML files). But that's not the point, to get rid of all XML on your server. The point is that in the application code you are not obliged to use XML.
So to answers your question: you don't hear about Stripes because Stripes is bad at marketing. Just look at their website - it looks like its from the 90s. A small bit of CSS work is probably the best thing Stripes could do to increase user base.
Dude, Play 2.x is perfectly fine for Java and will always support both languages.
I also hated Play 1.x because it relied on its own half-baked build system, making it hard to import Maven modules and because the templates were written in Groovy, which for me was a big turn-off, because I like the JVM for its potential for performance and using such a slow dynamic language for its templating was a big no-no (Groovy may have gotten better in the meantime, I don't really know). It also relied on many runtime hacks and bytecode generation, things that have been moved at compile time in Play2 with the help of its SBT integration.
There's many things to like about its preference for the Scala way of doing things. Don't let that stand in the way, as otherwise it's a nice framework.
Last year Groovy 2 was released which provides a @CompileStatic annotation which directs the compiler to statically compile the tagged code which runs faster. Not many people seem to be using it though, e.g. Grails and Gradle only use dynamically compiled Groovy code (afaik). And it's still quite buggy, e.g. just yesterday this serious bug was reported: http://groovy.329449.n5.nabble.com/BUG-in-CompileStatic-mode...
get(new Route("/") {
@Override
public Object handle(Request request, Response response) {
Integer age = request.queryMap("user").get("age").integerValue();
//do stuff
}
});
is cleaner and easier to read than this (JAX-RS): @GET @Path("/")
public Response get(@QueryParam("user[age]") Integer age) {
//do stuff
}
It gets far worse if you think about what it takes to marshall a JSON response in spark...> It is thanks to Anders' expert guidance that .NET started out such a remarkably well designed language - literally what Java should have been on every conceivable level