Wird Spring + Hibernate anstelle von EJB 3 bevorzugt?

12

Ich bin der Meinung, dass die Leute es vorziehen, wenn neue JEE-Projekte beginnen (wo diese Technologien anwendbar wären), eine Kombination aus Spring + Hibernate anstelle von EJB 3 zu verwenden.

Es scheint, dass Junior-Programmierer sogar geraten werden , dies anstelle von EJB zu wählen.

Ist dies eine persönliche Präferenz oder gibt es sachdienliche Gründe dafür? (z. B. persönliche Narben, die durch frühere EJB-Versionen verursacht wurden und Misstrauen gegenüber EJB oder Aufblähen der Technologie gegenüber Leistungsgründen oder Lernkurve hervorriefen)?

JohnDoDo
quelle
2
Ich denke fast, es ist eine historische Verschleppung, weil ejb nicht so gut war wie Frühling + Winterschlaf an einem Punkt ... jetzt denke ich, dass ein Fall für ejb in einigen Fällen gemacht werden kann ...
Rig

Antworten:

11

Die EJB 3+ -Frameworks sind eigentlich ziemlich gut, da sie mit JPA als Antwort auf mit Annotationen konfigurierte Persistenzframeworks sowie mit CDI, das mit Annotationen konfigurierte Abhängigkeitsinjektionen ermöglicht, geliefert wurden. Darüber hinaus fügen Sie die Schweißnaht hinzu. Der Frühling hingegen holt gerade mit der Konfiguration durch Annotation im Spiel auf.

Vor diesem Hintergrund sollte der historische Rückstand gegenüber EJB1 und 2 nicht abgezinst werden. Sie haben es nicht nur versäumt, die Probleme beim Schreiben von Unternehmensanwendungen zu lösen, sondern sind auch spektakulär gescheitert. Es war für die Designer ein völliger Misserfolg, die wahren Probleme der Entwickler von Unternehmen und Webanwendungen zu erkennen und die Lösungen zu liefern, die sie tatsächlich benötigten.

Hinzu kommt das Misstrauen, dass es zu diesem Zeitpunkt einige gravierende Erschütterungen und Instabilitäten in Bezug auf die aktuelle Richtung von Java gibt und das mangelnde Vertrauen in die aktuellen Verwalter und Eigentümer der alten Sun JVM in Oracle. Viele Menschen glauben nicht, dass Oracle Java verbessern und die Richtung vorgeben wird, und es besteht auch die Befürchtung, dass die Apache Software Foundation das Handtuch werfen könnte. Immer mehr Leute suchen nach OpenJDK für die Zukunft von Java, aber es ist einfach nicht der Ort, an dem es für die Einführung in Unternehmen benötigt wird.

Einige sehen dies alles als den Geruch des Todes an, da Unternehmensanwendungen die Hauptgründe dafür sind, dass Java seit jeher die weltweit führende Programmiersprache ist. Aus diesem Grund hat Microsoft mit .NET-Technologien gegenüber Java so stark an Boden gewonnen.

Die nicht auf Unternehmen basierenden Java-Anwendungsentwickler wenden sich immer mehr OpenJDK und anderen Open Source-Frameworks zu, um ihre Lösungen zu entwickeln, und einige blicken nie zurück. Man könnte sagen, dass es zu spät ist, JEE wieder in den Vordergrund der Legitimität zu rücken, obwohl JEE technisch mit Ihrer vergleichbaren Spring-Anwendung von Kopf bis Fuß mithalten kann und tut.

maple_shaft
quelle
Gut zusammengefasst und gesprochen. Dies teilt auch meine Sicht auf EJB.
Onigunn
4

EJB hat viel Gepäck. Ein Teil dieses Gepäcks stammt aus der Tatsache, dass es auf das falsche Publikum abzielte. Der andere Teil war, dass die ersten beiden Versionen völliger Mist waren.

Wenn Sie sich die ursprünglichen EJB-Versionen ansehen, bestand das Konzept darin, dass ein EJB-Entwickler eine Paketlösung erstellen konnte, die in jedem EJB-kompatiblen Container verwendet werden konnte. Für einen Inhouse-Shop war diese Abstraktionsebene nicht erforderlich. Es war die perfekte Lösung, um einen florierenden Markt für EJB-Komponentenanbieter von Drittanbietern zu schaffen. Die Containerverkäufer waren jedoch in ihrer Vermarktung übereifrig und brachten Tonnen dazu, ihr Produkt als tragfähige Lösung für die tägliche Entwicklung zu verkaufen. Dies entspricht dem Erstellen des gesamten Anwendungscodes als COM + -Komponente.

Für mehr Hintergrundinformationen zur ursprünglichen J2EE-Spezifikation hatten die meisten beteiligten Anbieter CORBA-Server und wollten diese Produkte künftig nutzen. Die EJB-Spezifikation wurde über das IIOP-Protokoll erstellt (tatsächlich Java RMI, das eine dünne Schicht über IIOP war). CORBA war bereits aufgrund seiner Komplexität abgelehnt worden, und EJB war nur ein verschleierter CORBA, weshalb CORBA viele der Probleme mit sich brachte. Tatsächlich erschwerten die Abstraktionen von EJB die Arbeit, als es eine reine CORBA-Implementierung gewesen wäre.

Als der Gummi auf dem Bürgersteig landete, wurde den Leuten klar, dass die Leistung mit EJB grausam war. Da jeder Anruf ein Fernanruf war und es zunächst schwierig war, die Anwendung überhaupt zum Laufen zu bringen, suchten die Leute schnell nach Alternativen. Hibernate und Spring, die in einem JSP-Container ausgeführt werden, wurden zur Lösung.

EJB 3 "übernahm" diesen Ansatz. Aber es ist immer noch ein allgemeiner Kompromiss, der nicht viel bringt. Es gibt immer noch keinen EJB-Komponentenmarkt von Drittanbietern. Es macht also keinen Sinn, einen EJB-Container zum Erstellen Ihrer Lösung zu verwenden.

Um es kurz zu machen. Während EJB 3 eine enorme Verbesserung gegenüber den ersten beiden Iterationen darstellt, bietet es immer noch nicht genügend Vorteile, um die Kosten aufzuwiegen.

Michael Brown
quelle
This would be the equivalent of building all of your application code as COM+ components. ... wie schrecklich
maple_shaft
3
Genau;) Ich habe 2001 mit einer Dotcom zusammengearbeitet, die beschlossen hat, dass sie ihre PERL-Anwendung (das hat ganz gut funktioniert) auf J2EE portieren. Die "Architekten" für diese Bemühungen hatten einen Monat lang eine gemeinsame J2EE-Schulung (nachdem sie zuvor noch nie eine Java-Zeile geschrieben hatten). Mein Lieblingszitat "Nun, ich kann wirklich gut mit PERL umgehen, Java zu lernen ist nur eine Frage des Lernens einer neuen Syntax." Ich reichte an diesem Tag meinen Lebenslauf bei Monster ein.
Michael Brown