java scala playframework-2.0

Juega 2.0+Java vs. Play 2.0+Scala?



playframework-2.0 (4)

Estoy pensando en migrar a jugar 2.0 después del juego 1.2. Una cosa que me molesta es que la gente dice que Scala es más "preferido" para una aplicación de juego 2.0. Conozco las diferencias sobre 1.2 y 2.0, pero no estoy seguro si existen diferencias entre Play 2.0 con Java y Play 2.0 con Scala

Entonces, hay preguntas en mi mente:

  • ¿Hay algo que no pueda hacer con java sobre scala en una aplicación Play 2.0?
  • ¿Qué ventajas tengo si empiezo a aprender y usar scala en una aplicación de play 2.0?

¿Qué ventajas tengo si empiezo a aprender y usar scala en una aplicación de play 2.0?

Como comentó djangofan, cuando buscas la ayuda de Google, obtienes ejemplos en Scala.

¿Hay algo que no pueda hacer con java sobre scala en una aplicación Play 2.0?

Sin embargo, todavía no he encontrado (aún un principiante) un equivalente de Ebean para Scala. Los ejemplos de Scala que he encontrado utilizan SQL directo para la persistencia. ¿Dónde está la abastraction de la base de datos?

Como no he encontrado una abstracción de base de datos para Play with Scala, continúo con Java ...


AFAIK, es mejor ir con Scala, porque ofrece más funcionalidad.

Por ejemplo ( Iteratees si estoy equivocado), puedes usar directamente los Iteratees con Scala (también conocido como programación reactiva), pero no sé cómo lograrlo con Java.

Además, la API de Java de Play es una capa superior en la arquitectura Play, el núcleo está escrito con Scala; así que si quieres apoyarte en lo que sucede dentro, ve con Scala.

Y también tenga en cuenta que puede mezclar Java y Scala en el mismo proyecto Play, para que pueda moverse sin problemas a Scala.


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 entre Java y Scala : el problema, como lo veo con el marco de Play, es que obliga a los modismos de Scala a Java. Un ejemplo de la documentación sobre llamar a múltiples servicios web :

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 @Override bonita al eliminar @Override anotaciones @Override , con solo dos espacios para la sangría y, en general, elegir 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 puedo encontrar ningún ejemplo de combinación de respuestas en Scala. Al menos, llamar a servicios web únicos en Scala parece mucho más corto y más fácil de leer.


Era nuevo en Play y simplemente escribí un proyecto de pequeño y mediano tamaño con el lado de Java.

Funciona y es potente, pero muchas características parecen estar muy centradas en Scala y la compatibilidad con Java es inferior a la media. El Java API Doc es prácticamente inexistente, lo que le quita un poco de comodidad al IDE (IntelliJ, lo recomiendo). La integración en el mundo de Java no es muy "natural" (SBT ..). No se construye como un módulo war o maven (pero parece haber complementos para hacer esto). Pierdes los beneficios de las herramientas de Java existentes.

Los conceptos que diferencian a Play de los otros Frameworks casi todos parecen ser scala native y Java second.

Tropecé con algunos errores y peculiaridades y siempre terminaba en el código de Scala que tenía que leer y entender para solucionarlo o solucionarlo. (Acciones, material de RequestBody, Async, rutas, implicitos de plantilla, etc.)

Entonces el lado Java de las cosas me parece muy secundario, aunque claramente están haciendo un esfuerzo para que sean igual de buenas.

Ahora, después del Proyecto, diría que es muy útil e incluso lo usaría de nuevo (en Java).