2009-12-01 10 views
17

Ich sah mich um, ob es ein Äquivalent zu Django/RoR in Java gibt.Java Webframeworks

ich gefunden:

Hat jemand jemals diese Rahmenstrukturen versucht haben, oder wissen Sie, andere? Sind sie schneller als Django/RoR?

+0

Welche Elemente eines Web-Frameworks sind für Sie wichtig? Skalierbarkeit, Produktivität, Dokumentation etc ?? – Joel

+0

Skalierbarkeit, Produktivität, Dokumentation und anständige Ressourcenverbrauch (Auch wenn jeder sagt, es ist nicht so wichtig für eine Web-App, in einer Cloud-Umgebung wird es sein) – Roch

+0

Benchmark von Schienen, Wicket, Grals, spielen, Liste, Jsp: http : //www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ –

Antwort

17

Ich entdeckte Grails vor etwa einem Jahr und habe nicht zurückgeblickt. Es braucht viele Ideen von Ruby on Rails (ursprünglich hieß es Groovy on Rails), und hat ein reichhaltiges Ökosystem von Plugins/Erweiterungen. Grails und die zugrunde liegende Grails-Sprache (Superset von Java) machen die Programmierung zu einer Freude - Sie können sich wirklich auf das Wesentliche konzentrieren. Seine GORM-Funktionalität (eine Ebene über dem Winterschlaf) ist ebenfalls sehr mächtig und zusätzlich zu dem Plugin-System, ist einer von zwei großen Gründen, es auszuprobieren (Sie können es auch in Ihren Java-Apps verwenden).

Mit der Version 1.2, die bald herauskommen wird, fühle ich, dass sie funktionsreich und reif genug ist, um etwas zu sein, das jeder Entwickler in seinem Toolbelt haben sollte.

In Bezug auf die Leistung ist es definitiv weniger als das von reinem Java, aber Sie haben alles von Spring/Hibernate/J2EE zur Verfügung zu optimieren, und Sie können immer in pure Java für einige kritische Code-Teile fallen.Es gab kürzlich einige Experimente, bei denen es möglich war, einen Teil des Groovy-Codes mit Hilfe der statischen Methodenauflösung auszuführen, was in Verbindung mit der aufgerufenen dynamischen Unterstützung zu enormen Leistungssteigerungen führen sollte.

Weitere in Java zu checken sind Spring Roo und AribaWeb.

aktualisiert Basierend auf Zusatzqualifikationen

Skalierbarkeit, Produktivität, Dokumentation und anständige Ressourcen Verbrauch

  • Skalierbarkeit - Sie den bewährten Java/Frühjahr/Hibernate-Stack erhalten, obwohl ich nicht sagen kann, dass Grails viel selbst bietet.
  • Produktivität - das ist der Hauptgrund für die Verwendung von Grails. Sie haben einen Leistungs-Overhead, aber Grails verwenden Sie, wenn Entwicklungszeit/Produktivität wichtiger ist.
  • Dokumentation - die Grals-Dokumentation ist großartig, und es gibt mindestens drei gute Bücher, die nur auf Grails geschrieben sind. Die Gemeinschaft ist erfolgreich und sehr hilfreich.
  • Ressourcen Verbrauch - das ist der eine Kompromiss. Grails (teilweise wegen des zugrunde liegenden Java-Stacks) ist ressourcenintensiv. Wenn ich etwas wie Google bauen würde, wäre Grails nicht die Wahl. Aber in jeder Web-Anwendung, die sich durch einen hohen Entwicklungsgrad auszeichnet, würden Sie sich gut für eine Caching-Lösung eignen. Das Gleiche gilt hier.
+1

Nun ja, Gral scheint großartig. Aber denke ich werde "Play" versuchen, es sieht wirklich attraktiv aus.das einzige worüber ich mir Sorgen mache, ist Resources Consumption und ob es schlechter oder besser ist als php/python/ruby, ich habe es nicht geschafft auf google viel zu finden. – Roch

+1

Klingt gut - das Spiel sieht cool aus. Sieh dir AribaWeb Videos an - sieht sehr süß aus. Denken Sie daran, dass Sie mit Grails auch die Power von Groovy erhalten, was an sich ein Vorteil ist (obwohl natürlich die Performance ein Kompromiss ist). –

+0

Ok, ich schaue mir AribaWeb an. Play Framework verwendet Groovy auch für seine Templates ;-) – Roch

1

Ich weiß nicht über das Play Framework, aber um die zweite Frage zu beantworten, wir tun einige Projekte mit Googles Webtoolkit. Könnte einen Besuch wert sein.
Viel Glück!

0

Ich weiß nicht über Play Framework, aber Spring MVC oder Struts zusammen wird Hibernate bieten ähnliche Funktionalität.

Es gibt viele andere Optionen. Grundsätzlich benötigen Sie ein MVC-Framework (Spring MVC, Struts, Wicket) und ein ORM-Tool (Hibernate, iBatis). Natürlich müssten Sie die benötigten Komponenten selbst integrieren, aber das wurde schon viele Male gemacht und Sie werden viele Informationen finden.

1

Wie wäre es JRoR

+2

JRuby on Rails ist kein Java-Web-Framework! Es ist Ruby on Rails, die auf einer JVM laufen. –

+1

Der gleiche Fehler wird in der Frage selbst gemacht, also vermutlich der Fragesteller nicht nur java :) – Bozho

+0

ja ich wusste nicht, dass ich jetzt bearbeite. – Roch

0

Ich bin nicht sicher, ob Spring MVC und Hibernate die gleiche Benutzerfreundlichkeit bietet, die Ruby on Rails (eigentlich, ich bin sicher, dass es viel komplizierter ist ...). Play Framework ist viel mehr wie Ruby on Rails, aber ich habe es nicht selbst gemacht und nur den Screencast angesehen und einige Dokumentationen darüber gelesen. Wenn Sie eine ähnliche Erfahrung mit RoR haben möchten, denke ich Sie kann eher etwas wie Play anstelle von Spring MVC mit Hibernate ausprobieren. Letzteres hat den Vorteil, dass es sehr leistungsfähig ist und sich beispielsweise an ein existierendes Datenmodell anpassen kann (von dem, was ich über RoR weiß, das ist in RoR nicht ganz trivial). Ein anderer Rahmen, den Sie in Betracht ziehen könnten, ist Groovy on Grails. Es verwendet zwar kein Java (es verwendet Groovy), es ist jedoch sehr RoR-ähnlich. Es verwendet Spring und Hibernate unter der Haube (wenn ich richtig liege) und der Vorteil von Groovy ist, dass Sie nicht die strenge statische Typisierung von Java haben. Ruby on Rails und Django profitieren stark von der Dynamik der Sprache, in der es implementiert ist, ein Feature, das Java aufgrund seiner statischen Typisierung vermisst.

Edit: ah, Sie Grails erwähnt bereits in Ihrer Frage ...

0

wenn Grails ist eine Option (die eigentlich kein Java ist aber ein starkes Gerüst) dann die Scala-basierte Lift Rahmen wäre eine Option , auch.

1

habe es selbst nicht ausprobiert, aber Hochschulen von mir viel Freude mit stripes

Es gibt ein book und alles.

0

Eine andere Option ist RIFE, die versucht, die minimale Konfiguration von RoR zu haben, während sie noch in Java ist. Auf Ihrer Liste hat nur Play Framework diese Funktion, die anderen sind auf der JVM, sind aber nicht Java (wenn Ihnen das überhaupt wichtig ist).

3

Stripes scheint recht leicht zu sein und umfasst Convention over Configuration.

+0

Stripes sieht in der Tat sehr interessant aus. +1 –

0

Was ist mit VRaptor? - Es verwendet Spring als DI-Container und eine Controller/View-Engine ähnlich dem Rails Action-Pack.

2

Streben verwendet haben, Wicket, Schienen & Tapisserie, empfehle ich Ihnen in Tapestry 5 suchen.

Es unterstützt

  • in Containerklasse Nachladen (so haben Sie nicht Ihre Webapp jedes Mal, wenn Sie eine Änderung vornehmen neu zu starten)
  • schnelle Entwicklungszeit & erhöhte Produktivität - es eine Komponente auf Basis-Modell verwendet, mit deklarative Verdrahtung
  • Minimalkonfiguration, die ohnehin meist in Code, Konvention über Konfiguration - etc ..
  • keine Basisklassen erweitern
  • Ein Ausdruck Sprache für die Verwendung in Vorlagendateien
  • gute Ajax-Unterstützung
  • ausgezeichnete Debugging-Unterstützung, sowohl Client als auch Server-Seite
  • guten Datenzugriff Integration
  • eine aktive Community
  • aus dem Boden geschrieben mit performance im Hinterkopf. z.B. Seitenpooling (um die Ressourcennutzung zu minimieren), Seitenkomprimierung, Eliminierung von Leerzeichen, der gesamte dynamische Code wird in native kompiliert.
  • gute Bean und Formularunterstützung - machen einfache Aufgaben einfach. Ein sortierbarer Datenbank-unterstützter Drider kann mit nur einer Zeile Template-Code und einem minimalen Skeleton-Server-Backend codiert werden.

der einzige Nachteil ist die Dokumentation, die gut, aber ein wenig knapp, obwohl die Benutzergruppen/Mailinglisten sehr aktiv sind und die meisten Fragen sind gut & eifrig beantwortet.

(auch sicher, dass nur bei T5 aussehen - und nicht T4,3,2,1 ....., da diese auf die aktuelle Version sehr unterschiedlich sind)

Mehr darüber, warum here.

0

AribaWeb unterstützt auch Groovy. Sehen Sie sich unsere anderen Funktionen unter http://aribaweb.org/ an und finden Sie heraus, wie Sie die Webentwicklung produktiv gestalten können.

2

Immer wenn Sie über einen Anwendungsstapel (Sprache, Framework, etc ...) nachdenken, müssen Sie auch überlegen, was Sie zu lösen versuchen und welche Programmierkenntnisse Sie zur Verfügung haben. Ich habe festgestellt, dass erfahrenere Java-Programmierer mit dem Groovy- und Grails-Stack sehr produktiv waren, verglichen mit jüngeren Programmierern.

Sie erwähnen die folgenden als Problembereiche:

  • Skalierbarkeit: in Hinblick darauf, was genau? (Seitenaufrufe/Sekunde, # Transaktionen/Sekunde, etc ...) Groovy & Grails wird skalieren, wenn es darum geht, Seiten zu rendern, jedoch wie bei jedem Anwendungsstapel, der ORM verwendet (im Fall von Grails hast du GORM) ist etwas Overhead zu beachten.
  • Produktivität: einer der wichtigsten Vorteile hier - schnelles Prototyping, schnelle Entwicklung ist ein Kinderspiel mit Groovy & Grails, obwohl es hilft, Mitarbeiter in Java oder Ruby zu haben, um zu verstehen, was das Grails-Framework tatsächlich macht " unter der Haube". Es gibt Unmengen an Plug-Ins für die Benutzeroberfläche, die beim Erstellen von Web 2.0-ähnlichen Seiten sehr schnell helfen.
  • Dokumentation: Es gibt eine zunehmende Anzahl von Qualitätsreferenzbüchern, die für Groovy & Grails geschrieben werden. Beide reifen in den letzten 2 Jahren sehr gut.Die Dinge sind sicherlich nicht sehr gut dokumentiert in Bezug auf einen Großteil der inneren Arbeit des Grails-Frameworks, wenn Fehler/Probleme auftreten (ein Großteil der Ausgabe aus dem Framework ist im Dunkeln oder nicht vorhanden, wenn ein Fehler auftritt). Wenn Sie bereit sind, die Ärmel hochzukrempeln und einfallsreich zu sein, wenn Sie durch das Innenleben gehen, dann werden Sie von diesem Stapel nicht enttäuscht sein. Auch erfahrene Programmierer werden dies als zweite Natur empfinden, während jüngere Leute manchmal frustriert ihre Hände hochlegen können.
  • Ressourcenverbrauch: Es gibt Overhead, aber mit dem Großteil der heute gefundenen Hardware (lokal oder in einer Cloud) würde ich mir keine Sorgen über den Verbrauch physischer Ressourcen für eine bestimmte Anwendungsinstanz machen.

Hoffe das hilft.

0

Wir verwenden Stripes Framework ausgiebig und es funktioniert wirklich super. Es ist wirklich leicht und es führt Sie zu einem sauberen Design Ihrer Anwendungen. Es verbirgt im Grunde nur die langweiligen Teile der Entwicklung von Ihnen, so können Sie sich auf die lustigen Sachen konzentrieren (Ein solches Beispiel sind die indexed properties).

1

Ich habe ein Projekt mit Grails gemacht und ich habe es sehr schnell für einige Aufgaben gefunden, aber es macht viele "Magie" hinter den Kulissen, die es beim Debuggen schwierig macht.

Auch ich fand mich immer und immer wieder lesen die Dokumentation, weil ich es nicht natürlich fühlte. Ein einfaches Beispiel ist der Controller, bei dem die Aktionen als Felder definiert sind (es ist natürlich für mich, eine Aktion als eine Methode zu betrachten ...). Ich kann etwas über GORM sagen, wo Sie einige spezielle Wörter wissen müssen, die, wenn sie in statische Felder gesetzt werden, eine Magie wie ein transientes Feld erzeugen ... Keine Anmerkungen, keine Autokomplettierung ... nur das Handbuch.

Wie für Play! Ich fand es erstaunlich einfach und schnell für die Entwicklung, einfach zu lernen und zu erinnern. Die Community scheint kleiner zu sein als Grals, aber sie ist aktiver und schneller zu beantworten. Der einzige Nachteil ist, dass es nicht auf Servlets API angewiesen ist, so dass einige Filter von Drittanbietern oder andere Dinge schwer zu integrieren, aber nicht unmöglich sind. Es ist wichtig zu beachten, dass Sie eine Play-Anwendung in einem herkömmlichen Webserver als Warp-Paket bereitstellen können.

Grails ist meiner Meinung nach großartig, aber man muss eine Menge Erfahrung damit haben, um produktiv zu sein, sonst wird man viel Zeit mit den Handbüchern verlieren. Wenn das nicht dein Fall ist, sollte ich Play empfehlen! Speziell, wenn Sie nicht vertraut sind mit Groovy

0

Ich habe http://www.ninjaframework.org/ für Micro-Services verwendet und es ist sehr nah an den meisten MVC-Paradigmen, wenn Sie Schienen, asp.net MVC oder nancyfx, Sie sind gut zu gehen. Es ist sehr nah an dieser Philosophie und wirklich großartig und einfach zu testen. Nur unten gibt es nicht viel Dokumentation, aber es folgt ziemlich genau dem mvc-Muster. Es verwendet nichts proprietäres im Framework, also ist es eine reine Java-basierte Lösung. Dies gleicht den Mangel an Dokumentation aus.