source software open framework java scala frameworks lift

java - software - ¿Cuáles son tus experiencias desarrollando en Scala/Lift?



lift open source (3)

Recientemente escuché muchas cosas buenas sobre Scala y el marco de trabajo de Lift Web, especialmente de los chicos de Foursquare, por lo que podría usar esta tecnología en mis próximos proyectos.

  • ¿Alguno de ustedes es Scala / Lift Developers?
  • ¿Cuáles han sido sus experiencias al desarrollarse en esta plataforma y cuáles son sus ventajas sobre Ruby On Rails o Python / Django?
  • ¿Lo ve como una tecnología viable y "algo para vigilar" durante los próximos dos años?

¿Vale la pena? Comparte tus experiencias en la plataforma Scala / Lift.


  1. Actualmente estoy haciendo la mayoría de mis cosas en Scala ahora mismo. (Debo mencionar que creo que Scala es lo mejor desde la invención de la rueda hace un tiempo. :-D)

    En mi humilde opinión, es el único lenguaje que realmente permite a las personas elegir el mejor enfoque para una tarea sin una división innecesaria entre (más) orientados a objetos y (más) enfoques funcionales.

    Mirando los idiomas que afirmaban algo como esto antes, básicamente puedo ver dos campos de diseño de idiomas en competencia:

    • Los del lado orientado a objetos que vieron que la programación funcional ganó un poco últimamente y pensaron "Bueno, no entendemos esa cosa funcional, pero agreguemos un poco de azúcar sintáctica a nuestro lenguaje, así que podemos afirmar que es funcional. ¡también!" (ejemplos: Java, Python)

    • Luego los del lado funcional, que pensaron: "Bueno, nuestro enfoque funcional es muy superior a cualquier otra cosa y esa tontería orientada a objetos es molesta, pero pongamos algunas palabras clave adicionales en nuestro idioma, lo que hará que nuestro lenguaje se escape de la academia. ! " (ejemplos: F #, OCaml)

    Los diseñadores de Scala unificaron muchos enfoques provenientes de ambos lados y crearon un lenguaje bien diseñado, que es, en mi humilde opinión, la mayor diferencia con respecto a otros idiomas, que decidió adoptar el enfoque "Frankenstein" para el diseño del lenguaje de programación.

  2. Habiendo hecho solo cosas más pequeñas con Lift y solo una experiencia superficial con Rails y Django, debo admitir que la mayoría del tiempo cuando me preguntaba por qué algo en Lift funcionaba de manera diferente a lo que esperaba, esto se debía al hecho de que mis expectativas eran Defecto y el acercamiento de Lift superior.

    Lift no es ciertamente una "introducción fácil a Scala", pero aprender cómo funciona Lift fue casi tan gratificante como aprender antes que Scala.

    La capacidad de tener una vista "limpia" sin ninguna lógica es una gran mejora de otros marcos que afirmaron lo mismo, pero no lo lograron. El soporte de XML literal de Scala permite verificar la buena formación de su respuesta: el compilador demostrará en el momento de la compilación que solo emite XML bien formado a un cliente.

  3. Lift es una tecnología viable y, por el momento, es el único enfoque real si desea crear aplicaciones web que se vean, se sientan y se comporten como aplicaciones de escritorio "reales" sin tener que escribir cantidades insanas de código usted mismo.


Estoy desarrollando una aplicación financiera empresarial en Lift durante más de 6 meses y fui programador de JAVA. He notado algunos puntos, que podrían ayudarte:

  1. Escribo notables menos líneas de códigos ( gran ejemplo )

  2. Alrededor de Lift hay una community muy amable y fuerte. Siempre intentan dar una respuesta sustantiva. No tengo ninguna mala experiencia. Incluso están abiertos a nuevas sugerencias para nuevas funciones en Lift. Aprobaron dos de mis sugerencias!

  3. Se anuncia una nueva versión estable menor de Lift cada 6 a 8 semanas. El nuevo hito es regular cada dos semanas.

  4. Lift es un gran marco para aplicaciones web. Puedes leer sobre siete características principales de Lift.

  5. Levante el módulo ORM predeterminado: el asignador no es para modelos de base de datos grandes y avanzados con muchas claves y restricciones externas. Tuvimos que usar Squeryl.

No puedo imaginar que tenga que volver al código JAVA ahora. Pero mi pequeño consejo es intentar codificar alguna aplicación simple y verás.


Estoy trabajando en mi segunda aplicación Lift en este momento, está muy presente en el punto ideal de Lift, en tiempo real, mucha concurrencia.

El primero que abandonamos después de unos días de lucha con la capa de DB (es mejor ahora, me han hecho creer), y en lugar de eso fui a Play / Scala. Eso maximizó el conocimiento existente de nuestro equipo e hizo posible la fecha límite. Pero una vez que nuestro proyecto se volvió moderadamente grande (se quedó sin PermGen, ya que se está quedando sin PermGen, es un problema continuo con la compilación de Scala en cualquier parte) en el sitio web tiene bastante engorroso. Nos alegramos de haberlo hecho, de la misma manera que tendía a encontrar Rails 1, los aumentos de velocidad se reducían a medida que aumentaba el tamaño del proyecto, y al final era tan tedioso y propenso a errores como trabajar en una Velocity / Spring / XML ++ lo que sea).

Esta vez nos hemos comprometido a descubrir cómo Lift hace lo que hace y las formas correctas de hacer las cosas. Esto ha significado una gran cantidad de navegación informal a través de la lista de correo (las discusiones que tienen varias versiones antiguas a menudo siguen siendo relevantes) y, lo más importante, un nuevo espíritu para el equipo. Ha sido necesario interiorizar muy fuertemente el lema:

"Esto se siente duro y repetitivo. Apuesto a que hicieron una manera más fácil de hacer esto".

Hasta ahora Lift nunca nos ha decepcionado. Por cierto, no estoy hablando de cosas como el mapa del sitio y la sintaxis de concatenación de listas. DEBES tener un buen manejo de Scala funcional, o simplemente no podrás leer el código fuente o incluso configurar tu aplicación.

Dicho esto, no es una locura de las Mónadas IO o algo así, solo algunos modismos comunes que aprenderías en unas pocas semanas en Scala.

El mayor problema para nosotros ha sido un ciclo de compilación lento. Tomar alrededor de 20 segundos demora aproximadamente: ejecute nuestro proyecto, que es un sentimiento diferente al de Play, que (cuando está funcionando) compila todas sus cosas. Por otro lado, en realidad cronometramos que el otro día cuando uno de nuestros desarrolladores se quejó al respecto, resultó que, aunque Play lo compiló técnicamente, la página tardó 12 segundos en cargarse en el modo Dev. Así que no hay una gran pérdida, se siente un poco lento tener que saltar a la línea de comandos.

Lift le permite hacer mucho, y hay muchos lugares en nuestra aplicación donde (porque está disponible), hemos dicho: "Sí, realmente preferiríamos tener ese directo actualizado inmediatamente para todos los usuarios de esa página, en lugar de ellos". descubrir más tarde que están desactualizados (piense en todas las veces que ha publicado simultáneamente a alguien en SO, con la misma respuesta). COMET está en todas partes, resulta que no es un caso de uso especializado, es así debería funcionar. Y Lift lo hace realmente fácil.

También nos encanta el modelo de seguridad sólido y programable, una vez que cambiamos nuestra mentalidad a "Tenemos que incluir en una lista blanca cada ubicación y especificar las condiciones de entrada necesarias", nunca vimos otro problema de sesión, ya sabes, aquellos en los que asumiste que ¿El usuario habría atravesado un camino determinado y, por lo tanto, conocería un montón de parámetros? Como, un nombre de usuario válido, y un área de interés o lo que sea? (Estoy siendo intencionalmente vago). Esa puede ser una de las cosas incómodas de un marco con estado, que querrá tener un estado útil cuando el usuario llega a una página, en lugar de (por ejemplo) solo exigir que todo el estado se lleve a cabo en cada solicitud.

Mi conclusión de este renovado disparo en Lift:

Vale la pena. No solo para crear la aplicación que está intentando construir, sino para crear la aplicación que no sabía que necesitaba.

Hay muchos rasguños en la cabeza, pero no mucho código. Y cuando funciona, realmente funciona. Es rápido y limpio, y por todos los milagros que está funcionando entre el navegador y el servidor, nunca lo he visto confundido.