2009-11-14 13 views
11

Estoy impresionado con Twitter e investigando el uso de Scala para un nuevo proyecto web a gran escala con Hibernate y Wicket. ¿Qué piensas de Scala, y debería usarlo en lugar de Java?Para usar o no usar Scala para nuevos proyectos de Java?

EDIT: Y, ¿cree que Google, Noop, Fan o Scala puede tomar el liderazgo de Java en el futuro cercano, que tiene alguna posibilidad en su opinión?

Respuesta

13

No olvide que puede usarlo junto con Java. es decir, puede hacer uso de .classes y .jar compilados dentro de un entorno con script de Scala.

Así que puede querer codificar los niveles inferiores de su solución en Java y luego ajustarlos en Scala para proporcionar una solución más flexible y ágil (en términos de reescribir la lógica de negocios en un nivel superior).

Algo a considerar es quién más va a cuidar de esto y mantenerlo. A pesar de toda la exageración de Scala, relativamente pocas personas pueden codificar (a partir de noviembre de 2009), y es posible que en el futuro tenga que contratar personas para que lo cuiden. En busca de personas Scala, significará que usted está buscando en un grupo mucho más pequeño de candidatos (algunos pueden querer aprender Scala en el trabajo, pero todavía hay un costo de puesta en marcha)

+1

punto de vista perfecto. Muchas gracias – sirmak

3

Un tema en particular con Scala es que como un lenguaje escalable , tiene niveles de características de diversos grados de accesibilidad para el desarrollador promedio. Usarlo como lenguaje de scripting para JVM es una cosa, desarrollar otro lenguaje específico de dominio usando programación funcional es otro.

5

No olvides que es una parte relativamente pequeña de Twitter, especialmente las colas de mensajes, que están escritas en Scala. Por lo que entiendo, el front-end sigue siendo Ruby-on-Rails.

Dicho esto, migré a scala hace un año: no he mirado hacia atrás. Además:

  • hay una gran cantidad de graduados que están muy interesados ​​en venir a trabajar en una tienda Scala
  • el hecho de que Scala está preparado para ejecutarse en una máquina virtual Java significa que los desarrolladores de Java obtener una ventaja inicial en el idioma (si estás interesado, podría expandirte sobre por qué es así).
+1

"hay un gran grupo de graduados que están muy interesados ​​en venir a trabajar en una tienda de scala" ¿Referencia? –

+2

@Derek - Tengo evidencia de primera mano de que este es el caso; sin embargo, no se ha convertido en una revista revisada por pares. Todavía. –

6

Éstos son los pros y los contras de Scala relativa a Java en mi humilde opinión:

Pros:

  • sintaxis mucho más concisa para los modismos comunes en la actual código Java
  • cierres
  • Más sistema de tipo potente que incluye mixins
  • Coincidencia de patrón
  • Excelente REPL, 2.8 siquiera tendrá para rellenar la ficha

En resumen: Se obtiene una funcionalidad mucho más con mucho menos código que Java

Contras:

  • soporte IDE sigue siendo de alfa o beta calidad , aunque IDEA tiene el mejor soporte actualmente
  • La biblioteca estándar no es inmune a los cambios con cada nueva versión (2.8 tendrá cambios incompatibles hacia atrás)
  • La biblioteca estándar tenía sig errores importantes al menos tan recientemente como hace un año (cuando encontré uno en el soporte JSON)

Creo que Scala estará listo para un gran uso de producción en 6-8 meses, pero yo no apostaría mi proyecto en él hoy.

+0

gracias por esta revisión integral – sirmak

+1

Personalmente, creo que hablar de "errores significativos" es inapropiado. No fue tan malo hace 1 año, y ciertamente no está mal en este momento. No es que Java no tenga una buena cantidad de boletos pendientes (algunos años de citas). –

+1

Daniel, encontré un bloqueo al analizar JSON que hubiera sido recogido incluso por las pruebas unitarias más rudimentarias. Considero que es un error importante en una biblioteca estándar. – sanity

3

Si está considerando usar Java y Scala en un entorno de proyecto único, sugeriría usar Maven como un sistema de dependencia del proyecto. Aquí está el código que utilizo para crear mis proyectos Scala:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org/ 

aquí es un poco de usage information para el uso de Maven con Scala. Si usa maven como compilador, puede tener los archivos fuente de Java y Scala en el mismo paquete sin configuración adicional. Simplemente funciona.

Here is a talk hosted by LinkedIn. Es un Panel con Scala, Twitter y Scala lift web framework (que uso). Si todavía estás decidiendo si usar Scala id, sugiérelo para verlo.

3

Una de las ventajas de Scala es que puede compilarlo junto con Java en el mismo proyecto. Tanto Maven (vea el comentario de luigi-prog) como simple build tool tienen ganchos bastante simples que construirán todo de una vez.

Otra forma es tomar las pruebas de unidades existentes, cambiar la implementación, ver la diferencia.

Daniel Spiewak had a few nice entries on the gotchas of Java-Scala interop.

He estado usando Scala en el lugar de trabajo durante el año pasado, y yo diría que se trata de una curva de aprendizaje de 3 meses para llegar a ser bastante competente. Esto es con un grupo bastante pequeño de personas típicas de Java. Todavía hay mucha volatilidad en términos de convenciones y estándares, así que espere hacer algunas revisiones en cualquier proyecto cada pocos meses.

No creo que puedas buscar 'programadores de Scala' por el momento. Pero usted puede encontrar muchos programadores de Java que estén interesados ​​en aprender Scala.

Si tuviera que adivinar, Scala y Clojure podrían ser los primeros en "suplantar" a Java. No esperaría un cambio importante hasta 2012 como muy pronto. Scala probablemente lidera el impulso: ahora hay varios libros en varios idiomas.

+1

Quería agregar que con Scala es probable que desee un sistema fácil de "compilación cruzada" para construir su código con la versión actual de "producción" + nuevas versiones. sbt (herramienta de construcción simple) lo hace fácil. –

+0

gracias. Quiero preguntar ¿Scala mejora la productividad? ¿Y causa algún tipo de problema en los proyectos? – sirmak

+1

"Mejora la productividad" es muy similar a los programadores que realizan el trabajo. Creo que es un lenguaje muy complicado y algo inestable, por lo tanto, si la gente no está interesada en pasar tiempo simplemente explorando nuevas ideas, probablemente perderá mucho tiempo perdido en "cómo hago que las cosas funcionen para mí todo el tiempo". tiempo "tipo de preguntas. En manos de buenos desarrolladores, se sorprenderá de lo rápido que puede comenzar a armar los sistemas y la reducción total de SLOC. Se trata de gente dispuesta a explorar las posibilidades. –

Cuestiones relacionadas