Acabo de terminar un prototipo usando Play 2.0 con Java y ahora estoy considerando aprender Scala solo para poder cambiarlo y seguir desarrollándolo.
No es solo la discusión habitual de Java vs. Scala - el problema, como lo veo con el framework Play, es que obliga a los modismos de Scala a Java. Un ejemplo de la documentación acerca de calling multiple web services:
public static Result feedComments(String feedUrl) {
return async(
WS.url(feedUrl).get().flatMap(
new Function<WS.Response, Promise<Result>>() {
public Promise<Result> apply(WS.Response response) {
return WS.url(response.asJson().findPath("commentsUrl").get().map(
new Function<WS.Response, Result>() {
public Result apply(WS.Response response) {
return ok("Number of comments: " + response.asJson().findPath("count"));
}
}
);
}
}
)
);
}
Funciona, pero no se parece a Java convencional. Esos paréntesis parecen realmente aterradores. Incluso Eclipse se confunde y nunca sabe qué genéricos necesito o quiero usar, siempre tengo que elegirlos manualmente.
También tenga en cuenta que en la documentación hicieron que quedara bien al eliminar las anotaciones @Override
, utilizando solo dos espacios para la sangría y en general eligiendo un ejemplo muy simple sin validación o recuperación de errores para que no usen demasiadas líneas. Ni siquiera estoy seguro de que puedas configurar un formateador de código para que salga de esta manera sin dañar completamente otro código.
En la práctica, terminé con un bloque ilegible de una horrible abominación de Java-Scala solo para obtener datos de otro servicio.
Lamentablemente no encuentro ningún ejemplo de combinación de respuestas en Scala. Al menos llamar solo web services in Scala parece mucho más corto y más fácil de leer.
Iteratees ven muy Intresting y el código Scala se ve muy compacto – dreampowder
Por supuesto, Scala es menos detallado que Java :-) También puede echar un vistazo a esto: http://stackoverflow.com/questions/727078/whats-so-great-about-scala –
@dreampowder De hecho, AFAIK, iteratees es probablemente una sola característica que falta en Java versión, otros elementos son muy comparables en ambos idiomas. Entonces, si te sientes más cómodo con Java, puedes quedarte con eso y usar Scala solo para la parte que falta. Si no tiene preferencias ... necesita verificar qué idioma es mejor para usted. – biesior