Frage

Ich plane, ein neues Projekt zu starten und bin auf der Suche des aktuellen State-of-the-art Java Web-Frameworks. Ich beschloss, meine Bewerbung um Guice zu bauen, und bin wahrscheinlich eine sehr leichte ORM wie Squill / JEQUEL / JaQu oder ähnliches verwenden, aber ich kann auf dem Web-Framework nicht entscheiden. Welche würde man am besten in einer solchen leichten Umgebung passen? Und welche eine integrierte Komplett mit Guice?

War es hilfreich?

Lösung

Ich habe einige Erfahrung zu diesem Thema gesammelt, als ich an einem neuen Projekt im November zu programmieren begonnen. Das Projekt ist in einem späten Stadium jetzt.

Für mich sind die folgenden Design-Richtlinien waren wichtig:

  • Verwenden Sie einen modernen Technologie-Stack, den Spaß zu verwenden, und wird im allgemeinen Gebrauch in Zukunft sein.
  • Reduzieren Sie die Anzahl der Projektartefakte -. Verwendung Anmerkungen / Java-Code, wo es sinnvoll ist, lassen XML
  • Verwenden Sie Frameworks, die Open-Source
  • Haben Sie eine aktive Community
  • Sind nicht Alpha-Stadium
  • Sind leichte
  • Vermeidung von Doppel Konzepte
  • kann ich die Konzepte darin zu meinen beiden anderen Entwicklern erklären, die - obwohl sie gute Programmierer - nie Google Guice als DI-Container eine offensichtliche Wahl war - eindeutig die gut durchdachte DI Contianer, mit brillantem Entwickler und eine guten Gemeinschaft. Es erfüllt alle Aufzählungspunkte oben erwähnt wurde.

    Also habe ich meinen Grund techology Stack. Gestartet mit Guice, hinzugefügt Hibernate für die Persistenz (zusammen mit Warp-persist und warp-Servlet ). Dann schrieb ich einige grundlegende DAO , der etwas auswählt.

    Dann habe ich versucht, die folgendes zu tun:. Hinzugefügt einen anderen Web-Framework auf der Oberseite, dass

    Ich habe eine einfache Seite mit einer Tabelle, von der DAO bevölkerte, Kopf- und ein Textfeld mit allen vier Frameworks.

    Diese

    waren meine Ergebnisse, wenn die vier Frameworks zu vergleichen.

    XSLT und Xstream ist eine Art Hardcore-Ansatz. Es ist nicht wirklich ein Rahmen, sondern eine tragfähige vollständig staatenlos Techologie für Hochleistungsanwendungen. Dies war bei weitem der schnellste Weg, um die Testseite zu dienen. Im Debug-Modus, 3 ms auf localhost im Vergleich zu etwa 30 bis 50 ms mit dem anderen Framworks.

    Guice Integration war relativ glatt und gut Kett-Servlet verwendet, die es mir ermöglicht, in Servlets zu injizieren und spritzt Httprequest, Httpresponse, Session in anderen Objekten, ohne dass sie um vorbei. Nachteile: keine Gemeinschaft überhaupt, denn ich bin die einzige Person, die diese Stapel in Betracht ziehen würde. - keine ready-to-use-Komponenten.

    Dann habe ich einen Blick auf JSF und Guice: Es ist natürlich möglich, den Injektor im Servlet Kontext zu setzen und guice als Service-Locator verwenden. Mit dem einfachen Ansatz ist es unmöglich, Unterstützung Bohnen woanders zu injizieren. eine benutzerdefinierte Variable Resolver löst dieses Problem teilweise, aber dann verlieren Sie alle IDE Integration in Ihre JSF-Dateien plus Sie haben hässlich FQN für Ihre Unterstützung Bohnen oder ein Saiten- bauen> Guice Keymapping irgendwo. Beide sind hässlich wie:

    • Vorteile: gute Gemeinschaft, viele Entwickler auf dem Arbeitsmarkt (kein Criteria für mich). Sie werden nicht für chosing JSF gefeuert, wenn etwas schief geht.
    • Nachteile: bringt seine eigene Inversion of Control (IOK) Mechanismus rel="nofollow die konzeptionell mit guice kollidiert .

    Warp-Widgets: Ich habe mein einfaches Beispiel mit diesem für Spaß; es ist früh Alpha-Stadium. Es war schön zu bedienen und seine Komponenten sind leicht selbst zu implementieren und wiederzuverwenden. Ziel ist es, typsichere HTML mit perfekter Guice Integration. Da es sah aus wie es nur ein aktiven Entwickler hatte damals, der jetzt propably arbeitet an Guice 2.0, würde ich die Gemeinschaft sagt fast nicht existent ist. Es funktionierte wie ein Zauber, war recht schnell, aber ich würde Alpha-Tester gewesen. Das war einfach zu riskant für mich für ein kommerzielles Projekt zu betrachten.

    Apache Wicket: Dieses Projekt überrascht mich zuerst mit Wicket-ioc und Wicket-guice zusammen in den Kern-Download kommen. Constructor Injektion in Web-Seiten ist nicht möglich, nur Setter + Feld. Injektion in Wicket Web-Seiten ist einfach, fügen Sie einfach @Inject auf die Felder, die Sie füllen wollen - aber du bist nicht verstehen, , wie es im Hintergrund funktioniert. Tricky Sachen passiert. Die Injektion von Web-Seiten ist theoretisch möglich - aber ich habe es nicht einmal verwendet, da diese es unmöglich macht, montiert URLs zu verwenden, und es wird Schlamassel mit dem beharrt / serialisierte Zustand. Eingespritzte Mitglieder von Klassen werden transparent mit dem Web-Seite Serialisierung behandelt, die zum Aktivieren Browser-Back-Unterstützung notwendig ist. Wicket verwendet Null externe Artefakte - nur ein wenig Konfiguration des URLs in einer Anwendungsklasse. Also alle Konfiguration ist in Java getan - was auch das Guice Modell paßt. Klare Trennung von HTML und Java. Es ist Open-Source ebenso wie die Mehrheit der Komponenten, die zahlreich und von guter Qualität sind. Es ist schon seit 2005 (?) Und ist ein Top-Level-Apache-Projekt. Obwohl es sich um eine funktionsreiche Rahmen ist, ist seine API vernünftig kompakt (alle Hauptklassen passen in ein Einzel JPEG auf meinem Bildschirm). Im Gegensatz zu anderen, macht es keinen IoC Mechanismus seiner selbst mitbringen, sondern denkt an IoC als Dienstleistung, die von Spring Framework , Guice, usw. und die Philosophie macht es überlegen wRT Guice Integration. Habe ich erwähnt, wirklich intelligente und einfache Unterstützung Ajax?

    Frameworks nicht tief bewertet: tapestry5 - seine eigene IoC bringt. Seam : kein Rahmen auf seinem eigenen, sondern ein Meta-framwwork der normalerweise comines Spring, JSF . Überwintern. (Obwohl Frühling kann theoretisch durch Guice ersetzt werden.)

    Zusammenfassung:. Der evaluierten Framworks, Apache Wicket war der klare Sieger - in Bezug auf Guice Integration + alle anderen genannten Kriterien

    Neben uns zwei, einige andere Leute haben dieses Problem hatte, bevor .

Andere Tipps

Wicket hat ein Guice Modul in gebaut, was ich nicht verwendet haben (aber ich verwendet habe Wicket ziemlich viel, und mochte es).

Hier ist ein Artikel über Guice mit Streifen Integration

wieder das Play-Framework ein schönes ist. Es hat Guice Unterstützung (auch havnt ich es noch nicht ausprobiert).

Ein guter Leicht Webcontainers ist Einfache . Es ist extrem performant und kann mit Frameworks wie Restlet und Jersey .

Das Mojave MVC Web Framework ist ein sehr einfacher, leichter Rahmen, Guice enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top