2010-10-31 17 views
9

Soy un desarrollador de Java que está pensando en invertir tiempo en aprender a Scala a desarrollar aplicaciones futuras. He leído bastante sobre las ventajas de Scala sobre Java, pero son un poco abstractas para realmente venderme emocionalmente.¿Qué es una "aplicación asesina" de Scala?

¿Alguien puede sugerir un ejemplo de una aplicación que realmente se adapte a ser desarrollado con Scala, a diferencia de Java?

+1

@Dario: Twitter no está escrito en Java, ¿o sí? Creo que están usando Ruby on Rails. – jwueller

+6

@elusive: el front-end de twitter es RoR, el back-end de la cola de mensajes se basa en Scala –

+1

@oxbow_lakes: bien entonces. Gracias por señalar eso :) – jwueller

Respuesta

0

Esto es tal una pregunta tonta. Scala es un lenguaje completo: ergo es equivalente en lo que se puede desarrollar a cualquier otro lenguaje TC.

Se tiene acceso a todas las bibliotecas JVM (incluyendo los que están escritos en Java) y por lo tanto tiene una pierna hasta en términos de acceso a bases de datos, APIs de medios de comunicación, redes etcétera, etcétera, etcétera. Al ser un lenguaje JVM, tiene la ventaja de write-once-run-anywhere (WORA).

¡Pero, por supuesto, Java también las tiene! Entonces, ¿cuál es la fuerza de Scala? Bueno, claridad, expresividad, facilidad de mantenimiento, extensibilidad et cetera et cetera et cetera.

¿Y qué aplicación te señala como un asesino? Bueno, todos ellos por supuesto! ¡Ten algunas mentiras!

def fibs = (0, 1).repeat[Stream].map { case (a, b) => b -> (a+b) } map(_._1) 

o:

lazy val fibs: Stream[Int] = 0 ::# 
    (1 ::# 
    fib.zip(fibs.tail).map { case (a,b) => a + b))) 

PS. Lo único para lo que no es muy bueno es una programación extremadamente cercana al metal y de baja latencia. ¡Y está incursionando en esta área también!

+0

No soy el que menosprecia pero no me gusta la idea de que * si se completa, se puede usar para todo *. Es como decir que puedes escribir controladores de interrupción en Javascript. –

+0

Sí, pero luego comencé a señalar que también tenía el mismo conjunto de bibliotecas escritas para él como Java. Scala puede tener una característica asesina, de seguro, pero la pregunta, tal como se plantea actualmente, simplemente * no tiene sentido * –

+2

"¡también está incursionando en esta área!" << ¿Cómo es eso? – missingfaktor

3

Cualquier cosa masivamente paralelizada que use la expresión Actors de Erlang sería un "asesino" en mi opinión.

+1

Pero la biblioteca de actores "Akka" también tiene enlaces para los actores de Java. ¡Y, implícito en tu respuesta, no diferencia a scala de Erlang! –

+0

Es cierto: sería igualmente asesino en Erlang. – duffymo

8

pienso, las empresas inscritas en el Scala in the Enterprise scala-lang.org son los ejemplos que la comunidad puede estar orgulloso. Usan Scala para construir aplicaciones escalabale distribuidas de alta concurrencia (y carga pesada) con API ligeras y expresivas tipo seguro, grandes habilidades para la reutilización de código y creación de DSL internas, productividad de desarrollo y por muchas más razones.

sólo para dar algunos nombres:

3

La respuesta es "todos ellos". Scala es estrictamente un superconjunto de Java, por lo que obtienes un poder expresivo y ahorro de tiempo, y no pierdes nada excepto las limitaciones de Java.

Cuestiones relacionadas