A partir del tercer trimestre de 2014, ¿cuáles son todos los pros y los contras entre Play (Scala) y meteor.js (node.js / JavaScript) para crear aplicaciones web?

Es un poco difícil responder esta pregunta, porque no solo estás comparando diferentes paradigmas web , sino que también estás comparando diferentes paradigmas web .

Entonces, en lo que respecta al idioma, Javascript es un buen lenguaje, pero tiene bastantes verrugas (muchas de las cuales se han corregido en versiones posteriores del estándar ECMA, pero eso es irrelevante porque no todos los navegadores implementan el estándar). Hay idiomas como Coffeescript y Typecript que puede usar, que hacen un gran trabajo al abordar los defectos de javascripts de diferentes maneras, y Meteor admite idiomas como Coffeescript (no estoy tan seguro acerca de Typecript).

En lo que respecta al lenguaje, Scala es un lenguaje multi-paradigma fuertemente tipado, donde como Javascript es una dinámica débilmente tipada, están básicamente en los extremos opuestos del espectro con respecto a hacer una comparación significativa. Aunque Scala tiene un gran diseño, irónicamente tiene bastantes verrugas por las mismas razones que Javascript tiene verrugas (el primer idioma tiene más complejidad de la deseada debido a que tiene que interactuar con muchas características de Javas y su ecosistema, el último se ha detenido progresando debido a la naturaleza de JS en el desarrollo web)

Luego llegamos al paradigma web, y esto es probablemente lo que debería ser su mayor diferenciador. El juego es una especie de pila web de estilo ruby ​​on rails, proporciona muchos valores predeterminados + vistas tentadoras y una gestión básica de activos en el lado del cliente (al tiempo que admite idiomas como el script de café). Por otro lado, Meteor.js es un SPA (aplicación de una sola página). Más importante aún, en realidad mezcla servidor y cliente, por lo que no es SPA en el sentido angularJS SPA donde todavía se espera que codifique su propio servidor respaldado por JSON, en MeteorJS, su cliente es su servidor y su servidor es su cliente. Esto reduce drásticamente el tiempo de desarrollo en ciertos casos, pero también plantea una gran cantidad de fallas con respecto a
– Seguridad (debes ser 10 veces más cuidadoso sobre filtrar cosas al cliente). También está bloqueado en cómo MeteorJS maneja la seguridad, ya que literalmente combina servidor y cliente
– Adaptabilidad con bibliotecas / ecosistemas (MeteorJS hasta hace poco utilizaba su propio administrador de paquetes, debido a la forma en que MeteorJS está tratando de resolver toda la pila vertical). El otro punto principal es que, si bien AngularJS hace mucho hincapié en una determinada estructura en sus aplicaciones web (gestión declarativa del DOM a través de formularios web), proporciona suficiente margen para hacer cosas como integrar complementos JQuery y marcos como Foundation / Bootstrap / React, etc. No se puede decir lo mismo de MeteorJS, se espera que codifique todo usted mismo
– Gestión de la infraestructura del lado del servidor. Cuando usa MeteorJS, básicamente se limita a configurar servidores de la manera en que MeteorJS espera que configure servidores. Dado que MeteorJS controla toda la pila, debe usar la solución Meteors para los zócalos, la solución Meteors para los empujes de código activo, la solución Meteor para el equilibrio de carga. Esto podría no ser un problema para las implementaciones pequeñas de cade, pero para implementaciones de mediana / gran escala definitivamente puede ser un problema, particularmente si está intentando integrarse con otros sistemas

Como nota al margen, MeteorJS tiene un diseño similar al que muchas empresas (como Microsft) han intentado hace décadas (mezclando servidor y cliente junto con su sincronización), e históricamente hablando, tales intentos no han sido “exitosos”. El enfoque mucho mejor sería facilitar la reutilización del código del servidor al cliente, lo que requiere un lenguaje expresivo que también se compile en JavaScript, sin embargo, hacerlo bien es bastante difícil.

Mira mi charla Node.js vs Play Framework para una comparación completa (diapositivas, publicación de blog):

Esta es una respuesta altamente simplificada y técnicamente incorrecta, de la que estoy seguro obtendré muchos comentarios enojados, pero aquí está de todos modos:

Node.js es, en general, la mejor opción para exponer una API basada en http. AngularJS o Dart es realmente la forma en que debería ir del lado del cliente.
Golang es probablemente la mejor manera de manejar la lógica empresarial del servicio.