Ich schreibe Enterprise Java-Anwendungen und Webservices bei der Arbeit ( Spring , Hibernate, Maven, RESTEasy) und PHP (CakePHP) und Python (Django) für meine Nebenprojekte.
Obwohl ich den Wert von Inversion of Control, aspektorientierter Programmierung usw., den Spring mit sich bringt, sehe, bin ich mir nicht sicher, wie massiv Webanwendungen, die sich nicht auf dem Java-Stack befinden, ohne ein Framework wie Spring auskommen.
Müssen sich die Entwickler mit eng gekoppelten Komponenten und anderen Beschwerden, die Spring beseitigt, abfinden oder vermisse ich etwas?
Für diejenigen, die mit Spring nicht vertraut sind, sind die Funktionen, die wir am häufigsten verwenden:
Inversion des Control-Containers: Konfiguration von Anwendungskomponenten und Lifecycle-Management von Java-Objekten,
Aspektorientierte Programmierung: ermöglicht die Implementierung von Querschnittsroutinen,
Transaktionsverwaltung: Vereinheitlicht mehrere Transaktionsverwaltungs-APIs und koordiniert Transaktionen für Java-Objekte.
Antworten:
Andere Plattformen benötigen Spring nicht, da diese Sprachen nicht annähernd so restriktiv sind wie Java.
Ich werde ein Beispiel mit node.js geben
Die Serverkonfiguration erfolgt entweder im Code oder in einer einfachen JSON-Konfigurationsdatei. Generische IoC-Systeme brauchen wir einfach nicht, Javascript ist eine ausdrucksstarke und dynamische Sprache. Ja, Sie benötigen IoC, aber das ist ganz einfach. Übergeben Sie Abhängigkeiten an Ihre Objekte als Funktionsparameter.
Ich glaube einfach nicht, dass wir so etwas brauchen, wir schreiben modularen Code und es funktioniert einfach.
noSQL ist unglaublich beliebt. Es gibt keine Vorstellung von einer Transaktion.
Persönlich würde ich sagen, dass solche Systeme aufgebläht und überentwickelt sind und man sie einfach nicht braucht. Andere Sprachen und Plattformen bleiben einfach schlank und agil.
quelle
In den meisten Hochsprachen ist es trivial, nach AOP- und / oder IoC-Designprinzipien zu schreiben.
Sie müssen AOP nur implementieren, damit die Sprache Funktionen höherer Ordnung unterstützt. Beispielsweise:
Sie können beim Programmieren auch allgemeine IoC- oder Abhängigkeitsinjektionsprinzipien befolgen. Sie benötigen keinen bestimmten Container, um diese Funktion bereitzustellen. Sie können den Code einfach so schreiben.
quelle
Nun genießt Python den Frühling auch Spring Python .
Spring Framework wurde erstellt, um die Java-Entwicklung zu vereinfachen, und was für die Java-Entwicklung gilt, ist für die Ruby- oder Python-Entwicklung nicht erforderlich.
Ruby verfügt beispielsweise über Metaprogrammierfunktionen, mit denen Sie Ihr eigenes AOP erstellen können.
Ironischerweise versuchen neue Java-Webframeworks, Django und Rails-Frameworks zu erfassen (siehe Grails and Play! -Frameworks zum Beispiel).
quelle
Für Python bietet BlueBream (auch bekannt als Zope 3) die Funktionen von Spring und vieles mehr.
Komplexität und Leistung haben ihre Kosten. Manchmal möchten Sie sie nicht bezahlen.
Viele Programmierer empfinden BlueBream als entmutigend und viel zu viel für das, was sie tun müssen. Sie bevorzugen schlankere, kleinere Toolkits. Die meisten anderen Lösungen (Django usw.) basieren auf dem MVC-Paradigma.
Sie können ähnliche Kräfte auch im Java-Raum beobachten, zum Beispiel mit dem schönen Playframework .
quelle