Escribo aplicaciones Java empresariales y servicios web en el trabajo ( Spring , Hibernate, Maven, RESTEasy) y PHP (CakePHP) y Python (Django) para mis proyectos paralelos.
Si bien veo el valor que aporta la Inversión de control, la Programación orientada a aspectos, etc., que Spring aporta, no estoy seguro de cómo las aplicaciones web masivas que no están en la pila de Java se gestionan sin un marco como Spring.
Entonces, ¿los desarrolladores solo tienen que "soportar" componentes estrechamente acoplados y otras quejas que Spring elimina o me falta algo?
Para aquellos que no están familiarizados con Spring, las características que más utilizamos son:
Inversión del contenedor de control: configuración de componentes de la aplicación y gestión del ciclo de vida de objetos Java,
Programación orientada a aspectos: permite la implementación de rutinas transversales,
Gestión de transacciones: unifica varias API de gestión de transacciones y coordina transacciones para objetos Java.
Respuestas:
Otras plataformas no necesitan Spring porque esos lenguajes no son tan restrictivos como Java.
Daré un ejemplo con node.js
la configuración del servidor se realiza en código o en un simple archivo de configuración json. En cuanto a los sistemas genéricos de IoC, simplemente no los necesitamos, Javascript es un lenguaje expresivo y dinámico. Sí, necesita IoC, pero eso es simple, pasar dependencias a sus objetos como parámetros de función.
Simplemente no creo que necesitemos algo como esto, escribimos código modular y simplemente funciona.
noSQL es increíblemente popular. No hay noción de transacción.
Personalmente, diría que tales sistemas están hinchados y sobre diseñados y simplemente no los necesita. Otros lenguajes y plataformas simplemente se mantienen delgados y ágiles.
fuente
En la mayoría de los lenguajes de alto nivel es trivial escribir usando los principios de diseño de AOP y / o IoC.
Todo lo que necesita para implementar AOP es que el lenguaje admita funciones de orden superior. Por ejemplo:
También puede seguir los principios generales de IoC o Inyección de dependencias al programar. No necesita un contenedor particular para proporcionar esa capacidad. Puedes escribir el código de esa manera.
fuente
Bueno, Python disfruta de Spring también Spring Python .
Spring Framework fue creado para facilitar el desarrollo de Java y lo que es cierto para el desarrollo de Java no es necesariamente cierto para el desarrollo de Ruby o Python.
Ruby, por ejemplo, tiene capacidades de metaprogramación, lo que significa que puede crear su propio AOP.
Irónicamente, sin embargo, los nuevos marcos web Java están tratando de atrapar los marcos Django y Rails (ver los marcos Grails y Play! Por ejemplo).
fuente
Para Python, BlueBream (también conocido como Zope 3) proporciona lo que hace Spring y más.
La complejidad y el poder tienen un costo, hay momentos en que no desea pagarlo.
Muchos programadores encuentran que BlueBream es desalentador y demasiado para lo que necesitan hacer, prefieren kits de herramientas más delgados y pequeños. La mayoría de las otras soluciones (Django, etc.) se basan en el paradigma MVC.
También puede ver fuerzas similares en acción en el espacio Java, con cosas como el hermoso Playframework .
fuente