2011-01-15 4 views
12

Ich bin ein Java SE Entwickler, aber ich habe reiche Web-Hintergrund (PHP, Perl/CGI und so weiter) und jetzt beginne ich ein neues Projekt. Es wird Web-Interface, Spaghetti-Geschäftslogik, relationale Datenbank als Speicher und Verbindungen zu anderen Diensten haben. Ich mache es von Anfang an.Java EE 6 und Alternativen

Meine Kollegen sagten mir, Feder, Feder und Federbeine zu verwenden. Ich schaue kurz auf Java EE 6 Spezifikation und festgestellt, dass es fast alle Aspekte der Unternehmensanwendung abdeckt. Ich habe meine Kollegen gefragt, warum sie Federn und Streben brauchen, aber sie scheinen Technologien zu verwenden, nur weil sie mit ihnen vertraut sind und nicht mit dem klassischen Java EE 6 Stack vertraut sind.

Meine Frage ist also: Was ist schlecht an Java EE 6? Warum brauche ich Frühling, wenn es JNDI Lookups gibt? Es wird ein oder zwei Tage dauern, um einen gefälschten InitialContext für Komponententests zu erstellen. Und das ist alles: Ich stehe mit externen Werkzeugen wie dem Frühling. Warum brauche ich eine Federsicherung, wenn in der Servlets-Spezifikation eine Sicherheit eingebaut ist? Ich kann jede Anfrage mit web.xml jedem Servlet zuordnen, es wird keine struts.xml benötigt. Ich kann Servlet-Filter anstelle von Struts-Interzeptoren verwenden. Es gibt RMI, also brauche ich keine Feder-Fernbedienung. Und so weiter ..

Warum sollte ich mich selbst mit all diesen schicken Sachen stören, wenn es Java EE 6 gibt?

Ich möchte wirklich Situation finden, wenn Java EE 6 nicht genug ist. Haben Sie welche?

Danke!

+3

Es gibt einen großen Unterschied zwischen dem Vintage J2EE von damals und dem modernen Java EE 6 von jetzt an. Über was redest du? Dann waren Spring und Struts großartige Ergänzungen zu J2EE. Aber jetzt, Java EE 6 bietet fast das gleiche schon aus der Box. Ihre Kollegen hängen vielleicht noch in der Antike. – BalusC

+0

Sorry) Java EE 6. Ich werde Java 1 nicht verwenden.2))) –

+0

Bitte überarbeiten Sie Ihre Frage dann. Du könntest es genauso gut überdenken :) Ähnliche Fragen [hier] (http://stackoverflow.com/questions/2084169/choosing-a-java-web-framework-now) und [hier] (http://stackoverflow.com/questions/1960280/was-zum-lernen-machen-java-web-applikationen-in-java-ee-6). – BalusC

Antwort

1

Spring ist nicht erforderlich für Java EE. Spring macht komplexe Java EE-Komponenten einfach bedienbar.

+0

Ich weiß es) Aber ich kann JNDI statt Feder DI verwenden. Also, warum brauche ich den Frühling? –

+2

JNDI ist in keiner Weise mit Spring DI vergleichbar. CDI ist. – BalusC

0

Erstellen Sie einen Model-View-Controller, der Java EE sauberer und übersichtlicher macht. Es ist strukturell korrekter, Ihre Modelle, Ansichten und Controller zu trennen.

Ich stimme Ihnen zu. Wenn es eine einfache Website ist, dann denke ich, dass Sie mit Java EE alles machen können. Stellen Sie sich jedoch vor, Sie haben viel Code, der Formulareingabe und viele Modelle verarbeitet. Jeder Controller kann eine Ansicht haben. Sie können ein Servlet erstellen und dann zur richtigen jsp-Seite weiterleiten, oder Sie können spring verwenden, weil es das alles bereits tut.

Die Entscheidung ist Ihre, wie viel Sie Feder verwenden müssen. Ein guter Rahmen ist ein Rahmen, in dem Sie auswählen können, welche Teile verwendet werden sollen. Ich denke, der Frühling macht das gut, weil du einfach das MVC-Modell verwenden oder weiter gehen und mehr damit machen kannst.

Endgültige Sache, Feder hat Abhängigkeitseinspritzung, die Konfiguration viel einfacher macht.

+0

Danke. Ich kann MVC Muster selbst implementieren: Jedes Servlet ist ein Controller und JSP-Seite ist nur eine Ansicht. Ich würde keine Logik in JSP verwenden (weil es unmöglich ist zu testen). Ich kann JNDI (Service Lookup) ohne Frühling verwenden. Es ist so gut wie Dependency-Injektion, oder? –

+0

Ich denke du versuchst das Rad neu zu erfinden. Was ist cool, aber warum sollten Sie das tun, wenn Spring bereits von Millionen von Benutzern getestet wurde? Wenn du eine Lernerfahrung sagst, dann bin ich total bei dir. Andernfalls sind Sie gerade dabei, die erstellten und getesteten Bibliotheken erneut zu verwenden. –

+0

In einem guten MVC-Design hätten Sie nur ein Servlet. – BalusC

13

Warum Leute Frühling benutzen und warum es so populär ist, benötigt ein wenig Geschichte.

Früher war Spring einfacher als Java EE-Anwendungen. Ich beziehe mich auf die EJB2.x Spezifikation. Ich habe den Eindruck, dass es eine Art Rebellion gegen die komplizierte Natur dieser Spezifikation gab. Entwickler wollten eine einfachere Architektur, und Spring stellte dies zur Verfügung, indem sie POJOs (Plain Old Java Objects) anstelle von Klassen schreiben konnten, die spezifische Schnittstellen implementieren mussten, um die gewünschte Funktionalität zu erhalten.

Spring machte auch 2 Prinzipien beliebter: Inversion der Kontrolle (IoC) und Dependency Injection. In Kombination bieten diese beiden Prinzipien eine andere Möglichkeit, die verschiedenen Komponenten einer Anwendung miteinander zu verbinden und diese Komponenten in die Anwendung zu integrieren, wenn sie ausgeführt wird.Das, kombiniert mit der Idee, POJOs zu schreiben, war für viele Leute sehr überzeugend, weil Code einfacher war und es einfacher war, alle Komponenten zu verkabeln.

Die neuere EJB3-Spezifikation annulliert einige von dem, was Spring zu bieten hat, aber Spring ist viel mehr als ein IoC-Container. Es bietet großartige Vorlagen für den JDBC-Zugriff auf die Datenbank, mehrere einfache Möglichkeiten zur Handhabung von Transaktionen, das Testen von Dienstprogrammen, einen MVC-Stack und so weiter. Es war populär und bleibt beliebt. Ein Witz, den ich gehört habe, ist

„EJB3, die Antwort auf die Frage niemand gefragt ...“

EJB3 ist eine gute Wahl. Der Frühling ist eine gute Wahl. Grails ist auch eine gute Wahl (verwendet Spring, Hibernate unter der Decke).

+1

Ich bin ein großer Fan von Grails! Unglaublich, wie schnell man aufstehen kann. –

+0

@amir, stimme ich vollständig zu. – hvgotcodes

+1

und ich nicht. Grails ist nett, aber ab der Version, die wir verwenden - 1.3.3 - immer noch ziemlich instabil. Wir mussten ein paar Fehler selbst beheben (nachdem wir sie natürlich gemeldet hatten). Und sie waren keine Eckfallwanzen. – Bozho

1

"Also, warum brauche ich Frühling?"

Ilya! Endlich hast du mich (und hoffentlich selbst) davon überzeugt, dass du Spring nicht brauchst. Eigentlich gibt es nichts besonders Gutes in diesem ganzen Haufen ... außer du bist schon daran gewöhnt. Sie schreiben ein Buch über Web-Technologie, fügen dann den Rest der Informatik hinzu und nennen das RESTfull.

"Stellen Sie sich jedoch vor, Sie haben viel Code, der Formulareingabe und viele Modelle verarbeitet. Jeder Controller kann eine Ansicht haben".

Amir! - sehr gute Überlegung. Der wahre Unterschied zwischen Web-Frameworks, die ich kenne, ist, was eine Definition von Komponente ist. Struts hat drei Arten von Komponenten - View, Controler und Model-Komponenten. Auf den ersten Blick sieht es gut aus (besser als einige andere sicher). Aber was können Sie aus diesen Komponenten bauen? - Eine Seite Ansicht, eine Seite Controller und eine Seite Modell. Gott weiß, wie hoch die Kosten für das Binden von Gegenständen aus diesen drei Reihen von Komponenten sein werden - vielleicht eine riesige Konfiguration, wenn überhaupt möglich.

Die wirkliche Lösung ist (wie Sie praktisch in den oben zitierten zitiert) ist ein Konzept von Komponenten, die jeder seinen Blick, seinen Controller und sein Modell hat. Bisher ist nur ein Framework soweit gegangen - HybridJava. Was ist ein Webseitenbaustein im Frühling?

1

Klingt, als ob Sie bestimmte Funktionen mit Spring und dann mit Java EE 6 POC müssen, so dass Sie die beiden mit einem echten praktischen Prototyp vergleichen können. jedoch

Die Gründe, warum ich Frühling verwenden, sind:

  • Fähigkeit zu abstrahieren meine Anwendung vom Anwendungsserver. Ich kann somit auf jedem Applikationsserver laufen, oder außerhalb von AS für Unit-Tests
  • ein großer Teil des Kesselblech Code, den ich schreiben müsste, um mein Design zu verbessern, ist bereits verfügbar
  • IOC/DI - Das Objekt, das Abhängigkeiten wissen nicht, wie man sie bekommt - alles was es weiß ist, welche Schnittstellen es benötigt. Einige Dritte stellen sie zur Verfügung. Ja, Sie können Ihre eigene Version dieses Drittanbieters in Java EE 6 rollen, aber sie ist bereits im Frühjahr verfügbar.
  • Bean Managed Transactions - Spring bietet alle Tools, die Sie benötigen, um Ihre Transaktionen vollständig unter Kontrolle zu haben. Ich würde immer vorschlagen, BMT zu verwenden, da es Ihnen die Flexibilität gibt, die Sie benötigen könnten.