Wer meine Postings zum Thema Java-Programmierung verfolgt hat, der wird gemerkt haben, dass ich vor einiger Zeit einen alternativen Ansatz zum bisherigen ausprobiert habe: Ich war auf das Play Framework gestoßen. Da ich mit der bisherigen auf Servlets und Spring basierenden Anwendung einige Probleme bei der Entwicklung hatte, habe ich es einfach mal ausprobiert.
Aktuell haben wir also zwei Entwicklungs-Stände, die nahezu das Gleiche können. Jetzt ist es an der Zeit, sich für einen der beiden Ansätze zu entscheiden, denn beide parallel zu entwickeln wird zu viel Aufwand und auch nicht sinnvoll sein.
Hier noch ein paar Details zu den beiden Entwicklungsständen:
1) Servlet-Anwendung
2) Play Framework
Wo sehe ich Vor- bzw. Nachteile?
+ (plus) = Vorteil
- (minus) = Nachteil
Mehr Plus/Minus = wiegt stärker
Spring/Servlet-Anwendung
+ Builds und Deployment mit Buildserver problemlos
--- Spring Data JPA arbeitet nicht mit Hibernate Envers (Historisierung der Daten) zusammen (zumindest habe ich es nicht hinbekommen)
- Servlet-Anwendung unter Tomcat sehr "schwergewichtig" (Reload, publish) während der Entwicklung
- hohe Komplexität des Spring Frameworks
- großer Funktionsumfang des Spring Frameworks
Play Framework-Anwendung
++ leichtgewichtige Entwicklung durch Play Framework und Google Guice
+ integrierte H2 In-memory-Datenbank für schnelle Entwicklung
++ funktioniert mit Hibernate Envers (Historisierung der Daten ist ein MUSS für unsere Anwendung)
+ Programmiersprache Scala als potenzielle Option für später
- noch Probleme beim Build im Buildserver und beim Deployment
- noch Probleme beim Entwicklungs-Test (wenn alles läuft dann sind Web-basierte Tests über das eingebaute Selenium-Testframework auch funktionsfähig)
- keine gute IDE-Unterstützung in Scala-Web-Templates (keine Code-Completion, Start der Anwendung nur über Play-Konsole)
+ typsichere Web-Templates
+ Meinungen im Web lassen erahnen, dass Anwendungen mit dem Play Framework Alles können und bei der Entwicklung eine hohe Effizienz zu erreichen ist
Auch wenn die "nackte" Liste der Vor- und Nachteile einige Punkte auflistet, die beim Play Framework negativ sind, so neige ich doch eher dazu, die Play Framework Variante weiterhin zu verwenden. Ich möche gerne die Tests noch zum Laufen bekommen, und auch bei den Problemen mit der IDE sehe ich noch gute Chancen, dass man z.B. Code-Completion hinbekommt. Ich habe im Web recht viel über das Play Framework gelesen und so viel Positives gelesen, dass ich hoffe, dass meine bisherigen Erfahrungen damit einfach noch nicht "perfekt" waren und sich das noch bessern wird. Es erscheint mir sehr verlockend, dass man auf den ganzen "Servlet-Kram" verzichten kann (keine web.xml usw.). In der englischen Wikipedia steht z.B. "Play is heavily inspired by Ruby on Rails and Django and is similar to this family of frameworks. Play uses Java to build web applications in an environment that may be less Java Enterprise Edition-centric. Play uses no Java EE constraints. This can make Play simpler to develop compared to other Java-centric platforms."
Da ich bisher ja fast der einzige Programmierer war (außer mir nur noch "StevenStorm"), ist dieser Thread eher für interessierte Neu-Programmierer gedacht
Einer hat sich kürzlich bei mir gemeldet...
Aktuell haben wir also zwei Entwicklungs-Stände, die nahezu das Gleiche können. Jetzt ist es an der Zeit, sich für einen der beiden Ansätze zu entscheiden, denn beide parallel zu entwickeln wird zu viel Aufwand und auch nicht sinnvoll sein.
Hier noch ein paar Details zu den beiden Entwicklungsständen:
1) Servlet-Anwendung
- Web-Anwendung auf der Basis von Servlets
- Spring für Dependency Injection
- JPA für Persistenz der Daten
- Spring Data JPA als Ergänzung für Datenzugriffe
- Spring Security für die Absicherung von Web-Zugriffen (Rechte, Rollen)
- Builds und Deployment über Jenkins-Buildserver
- Lokale Entwicklung über Jetty-Server und MySQL
- "Produktiv-Betrieb" (demo.oregami.org) über Tomcat-Server
2) Play Framework
- Web-Anwendung für das Play Framework
- JPA für Persistenz der Daten
- Google Guice für Dependency Injection
- lokale Entwicklung mit Play Framework und H2-Datenbank (in Memory) oder MySQL
- Play-Plugin "Deadbolt 2" für Absicherung der Web-Zugriffe
- "Produktiv-Betrieb" (play.oregami.org) über das Play Framework (eingebauter Server)
Wo sehe ich Vor- bzw. Nachteile?
+ (plus) = Vorteil
- (minus) = Nachteil
Mehr Plus/Minus = wiegt stärker
Spring/Servlet-Anwendung
+ Builds und Deployment mit Buildserver problemlos
--- Spring Data JPA arbeitet nicht mit Hibernate Envers (Historisierung der Daten) zusammen (zumindest habe ich es nicht hinbekommen)
- Servlet-Anwendung unter Tomcat sehr "schwergewichtig" (Reload, publish) während der Entwicklung
- hohe Komplexität des Spring Frameworks
- großer Funktionsumfang des Spring Frameworks
Play Framework-Anwendung
++ leichtgewichtige Entwicklung durch Play Framework und Google Guice
+ integrierte H2 In-memory-Datenbank für schnelle Entwicklung
++ funktioniert mit Hibernate Envers (Historisierung der Daten ist ein MUSS für unsere Anwendung)
+ Programmiersprache Scala als potenzielle Option für später
- noch Probleme beim Build im Buildserver und beim Deployment
- noch Probleme beim Entwicklungs-Test (wenn alles läuft dann sind Web-basierte Tests über das eingebaute Selenium-Testframework auch funktionsfähig)
- keine gute IDE-Unterstützung in Scala-Web-Templates (keine Code-Completion, Start der Anwendung nur über Play-Konsole)
+ typsichere Web-Templates
+ Meinungen im Web lassen erahnen, dass Anwendungen mit dem Play Framework Alles können und bei der Entwicklung eine hohe Effizienz zu erreichen ist
Auch wenn die "nackte" Liste der Vor- und Nachteile einige Punkte auflistet, die beim Play Framework negativ sind, so neige ich doch eher dazu, die Play Framework Variante weiterhin zu verwenden. Ich möche gerne die Tests noch zum Laufen bekommen, und auch bei den Problemen mit der IDE sehe ich noch gute Chancen, dass man z.B. Code-Completion hinbekommt. Ich habe im Web recht viel über das Play Framework gelesen und so viel Positives gelesen, dass ich hoffe, dass meine bisherigen Erfahrungen damit einfach noch nicht "perfekt" waren und sich das noch bessern wird. Es erscheint mir sehr verlockend, dass man auf den ganzen "Servlet-Kram" verzichten kann (keine web.xml usw.). In der englischen Wikipedia steht z.B. "Play is heavily inspired by Ruby on Rails and Django and is similar to this family of frameworks. Play uses Java to build web applications in an environment that may be less Java Enterprise Edition-centric. Play uses no Java EE constraints. This can make Play simpler to develop compared to other Java-centric platforms."
Da ich bisher ja fast der einzige Programmierer war (außer mir nur noch "StevenStorm"), ist dieser Thread eher für interessierte Neu-Programmierer gedacht
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Einer hat sich kürzlich bei mir gemeldet...