2011-01-12 7 views
11

Ich werde den Kern Java-Kurs beenden und jetzt muss ich weitergehen auf Java EE Seite. Ich bin so sehr verwirrt, dass ich einfach mit Java EE 6 gehen sollte, weil ich die Bücher habe, die leicht von Anfang bis Ende lehren und alles da ist.Soll ich für Spring gehen oder mit Java EE 6 bleiben?

Oder sollte ich nur mit Spring beginnen?

Da ich von vorne anfangen muss, ist es gut, dass ich dem Trend folge, der gut und arbeitsorientiert ist.

Oder auch wenn ich nur Java EE mache und wenn ich dann zu Spring wechseln muss, wird es schnell gehen oder umgekehrt.

Auch wo steht Hibernate zwischen ihnen? Ich meine, wenn ich Java EE 6 benutze, brauche ich immer noch Hibernate oder in Java EE 6, ich brauche es nicht.

Wird ich benachteiligt, wenn ich Spring oder Spring nicht benutze, kann meine Webapplikation für Gebäude einfacher als das Core Java EE/JSF Framework gemacht werden.

+0

Der Frühling ist nur ein Werkzeug. Je mehr Werkzeuge du verwendest, desto besser wirst du sein. – DwB

Antwort

15

Obwohl Ihre Frage darauf hindeutet, dass Spring und Java EE zwei verschiedene Dinge sind, sind sie in Wirklichkeit nicht. Sie können wie viele Java EE-Komponenten verwenden

  • Servlets und JSP für Spring MVC,
  • JPA für Frühling DAO.
  • JTA für den Frühling Sicherheit

Der einzige große Sache Frühling in dem Java EE-Stack ersetzt die EJB. Wenn Sie nicht auf EJBs bestehen, sollte Spring der richtige Weg sein.Auch Spring bietet integrierte Unterstützung für Webservices und andere Dinge.

Überprüfen Sie auch die Groovy und Grails, die Spring als Basis verwenden.

Schließlich würde ich sagen, Funktionalität funktioniert beides gleich. Es ist Code (Java EE) vs Konfiguration (Spring), eine Frage der Präferenz wirklich.

+0

Mit Ihrer letzten Aussage sind Sie ein Hinweis darauf, dass JEE 6 keine Rich-Konfiguration unterstützt, was ich nicht stimme. JEE6, glaube ich folgt dem Prinzip der "Konvention über Konfiuration" –

+0

Ja, mit den Annotationen können Sie viele Konfigurationen vornehmen, aber Sie können nicht die Initialisierung und "Boilerplate" -Code mit JEE allein erhalten. – Manoj

+2

+1 für "Obwohl Ihre Frage darauf hindeutet, dass Frühling und JEE zwei verschiedene Dinge sind, in Wirklichkeit sind sie nicht." – Ralph

7

Alle meine Kommentare sollten mit einem Körnchen Salz genommen werden. Ich bin ein Spring-Benutzer seit Version 1.0; Ich habe noch nie eine Version von EJB in der Produktion verwendet - von 1.0 bis heute.

Der Frühling hat mir gut getan: Jede Technik, die ich von Java EE anwenden möchte, steht mir im Frühling zur Verfügung. Ich habe die Webdienste, LDAP, Messaging und Portlet-Module zusammen mit den üblichen Verdächtigen aus Persistenz, Remoting und Web-MVC verwendet. Der Code ist ausgezeichnet. Ich finde, dass die Betonung von Layering, Codierung auf Schnittstellen, Abhängigkeitsinjektion und aspektorientierter Programmierung meinen Designs zugute kommt.

Die Wahrheit ist, dass Sie entweder wählen können und es funktionieren lassen. Es gibt zu diesem Zeitpunkt wenig Vorteil oder Nachteil, weil EJB 3 so viel von Spring genommen hat, dass sie ähnlich sein sollen. Ich kann das nicht aus eigener Erfahrung sagen, weil ich EJB 3 nicht benutzt habe.

Keiner meiner Arbeitgeber oder Kunden schreien nach EJB 3. Leute in meinem Markt benutzen Frühling oder .NET, um mit Netzdiensten zu sprechen über HTTP.

EJBs erfordern, dass Sie RMI oder CORBA als Netzwerkprotokoll verwenden. Ich glaube, dass HTTP-basierte Protokolle - sei es RPC-XML, SOAP oder REST - gewinnen, weil das normalerweise einfach und offen ist.

Niemand kann die Zukunft vorhersagen, daher ist die Beratung von Jobprospekten wertlos. Ihre lokalen Marktbedingungen sind möglicherweise nicht mit meinen identisch. Sie können Ihre Wetten absichern und beides lernen. Was auch immer Sie wählen, es ist fast sicher, dass Sie in Zukunft etwas Neues lernen müssen, das weder EJB noch Spring sein wird. Wähle also einen aus und sei bereit, dich zu ändern.

+2

+1 "Keiner meiner Arbeitgeber oder Kunden verlangen nach EJB 3" <- Einverstanden! – Casey

0

Spring und Java EE 6 ist in gewisser Hinsicht ähnlich. Sie gehen ihren Weg parallel. Ich denke, es wird besser, wenn Sie Java EE 6 lernen und dann (wenn Sie wollen/müssen) Spring lernen.

In Java EE gibt es eine Java-Persistenz, die für verschiedene Datenbankabfragezwecke sehr gut funktioniert.

1

Aus meiner persönlichen Erfahrung beim Erlernen der Java EE/Web-Programmierung aus dem Standard-Java habe ich versucht, in einige der Frameworks zu springen, ohne ein klares Verständnis davon zu haben, wie das Java EE/Web funktioniert. Obwohl nicht alle Java EE relevant sind, wenn Sie ein Framework wie Spring verwenden, denke ich, dass es eine gute Idee ist, einige der zugrunde liegenden Technologien gut zu verstehen. Sie müssen nicht über Bord gehen, aber einige der Grundlagen zu verstehen ist eine gute Idee.

Wenn etwas in den Bibliotheken nicht korrekt konfiguriert ist (wie Spring), nehmen sie manchmal ein gewisses Maß an Wissen über ihren Benutzer an. Nachdem ich mit ein paar grundlegenden Problemen zu kämpfen hatte, verbrachte ich einige Zeit und ging zurück zu den Grundlagen. Danach konnte ich besser mit den Frameworks umgehen.

Ich würde aber nur auf die EJB-Route verzichten.

0

Bitte zuerst verstehen, dass Java EE keine einzelne Spezifikation, sondern eine Reihe von Spezifikationen ist. Während der Frühling ein Rahmen ist. Spring hat eine saubere Integration mit vielen Java EE-Spezifikationen einschließlich EJBs. Die Idee der Verwendung der Spezifikationen besteht darin, Ihre Anwendung zwischen verschiedenen Implementierungen dieser Spezifikation portierbar zu machen. Leider funktioniert das im wirklichen Leben nicht sehr gut.
Jetzt in Bezug auf Hibernate. Nochmal: Es ist ein Framework. Java EE enthält eine Spezifikation namens JPA. Hibernate implementiert JPA. Sie können andere Implementierungen finden. Wenn Sie also eine andere Implementierung verwenden, benötigen Sie keinen Ruhezustand.

Nun möchten Sie wahrscheinlich das Endergebnis wissen. Ich habe es nicht wirklich. Wenn du Java studierst, je mehr du weißt, desto besser wird es sein.
Wenn Sie nach Technologien zum Starten einer neuen Webanwendung suchen, ist es besser, Spring mit einem Servlet-Container (Servlet-Container ist Teil von Java EE!) Wie Jetty oder Tomcat + zu verwenden, um JPA (Hibernate-Implementierung) für Persistenz zu verwenden .

0

Es gibt wirklich keinen Grund, mit Spring auf ein neues Projekt zu gehen. Es gibt viele Anwendungen, die es immer noch verwenden. Sie sollten unbedingt Java EE vor Spring lernen. Spring verwendet, um die Entwicklung zu erleichtern. An dieser Stelle ist Java EE einfacher zu arbeiten, und Sie können die Spring Abhängigkeit auch loswerden.