Hallo,
ich überlege, ob ich für ein neues Projekt Spring 3 oder Java EE 6 verwenden soll. Prinzipiell halte ich sowohl Spring als auch Java EE für geeignet, wobei ich gerade leicht zu Java EE tendiere, weil es einem mehr Konfiguration abnimmt, und die Entwickler weniger Möglichkeiten haben, Fehler zu machen (z. B. Transaktionssicherheit zu vergessen).
Folgende Gedanken sind mir zu dem Thema gekommen:
Spring 3
--------
Pro:
- sehr flexibel, es können viele Technologien einfach integriert werden
- einheitliches Programmiermodell mit DI und AOP
- kein "dicker" Application Server nötig, die Anwendung bringt nur das mit, was sie wirklich braucht
- es können leichter einzelne Frameworks aktualisiert werden
Contra:
- mehr Konfiguration
- weniger Komfort; man muss sich z. B. um Transaktionen immer selbst kümmern
- Entwickler werden weniger an die Hand genommen
- mehr Möglichkeiten, Fehler zu machen
- nicht herstellerunabhängig, aber wenigstens Open Source
- Spring wird immer komplexer (Missbrauch von Annotationen, Meta-Annotationen, Spring Expression Language)
- Pseudo-Entkopplung von Spring, die mit proprietären Annotationen dann doch wieder zerstört wird. Der Code würde zwar auch ohne noch übersetzbar und ausführbar sein, würde aber nicht mehr seinen eigentlichen Zweck erfüllen.
- umständliches bzw. gar kein Clustering
- insgesamt vermutlich schwerer als Java EE zu erlernen
Java EE 6
---------
Pro:
- Convention over Configuration nimmt dem Entwickler sehr viel Konfiguration ab; um Transaktionen oder Autorisierung braucht man sich nicht viele Gedanken machen.
- Herstellerunabhängiger Standard
- Entwickler wird stärker an die Hand genommen als bei Spring -> hoffentlich weniger Wildwuchs in der Architektur
- Application Server bieten mehr als ein einfacher Tomcat (z. B. Übewachung)
- tendenzielle einfachere Anpassung an verschiedene Umgebungen (z. B. DB-Verbindung, Mail-Server usw.)
- Man hat alles zusammen und muss sich nicht sein System aus Einzelteilen zusammensuchen
- vermutlich insgesamt einfacher zu lernen als Spring
Contra:
- Fremde Technologien können nicht ganz so einfach integriert werden wie bei Spring
- immer ein "dicker" Application Server nötig
- AOP-Fähigkeiten sind begrenzt
Zusammenfassung
---------------
Spring nutzt DI und AOP einheitlich als mächtige Grundkonzepte, ist sehr flexibel, erfordert aber auch mehr Konfiguration und Gehirnschmalz seitens des Entwicklers. Java EE bringt dagegen alles, was man gewöhnlich braucht, mit und nimmt dem Entwickler die meiste Konfiguration durch Konventionen ab. Dafür benötigt man zwingend einen Application Server und ist nicht ganz so flexibel.
Wie denkt ihr darüber und was fallen euch noch für Argumente ein?
ich überlege, ob ich für ein neues Projekt Spring 3 oder Java EE 6 verwenden soll. Prinzipiell halte ich sowohl Spring als auch Java EE für geeignet, wobei ich gerade leicht zu Java EE tendiere, weil es einem mehr Konfiguration abnimmt, und die Entwickler weniger Möglichkeiten haben, Fehler zu machen (z. B. Transaktionssicherheit zu vergessen).
Folgende Gedanken sind mir zu dem Thema gekommen:
Spring 3
--------
Pro:
- sehr flexibel, es können viele Technologien einfach integriert werden
- einheitliches Programmiermodell mit DI und AOP
- kein "dicker" Application Server nötig, die Anwendung bringt nur das mit, was sie wirklich braucht
- es können leichter einzelne Frameworks aktualisiert werden
Contra:
- mehr Konfiguration
- weniger Komfort; man muss sich z. B. um Transaktionen immer selbst kümmern
- Entwickler werden weniger an die Hand genommen
- mehr Möglichkeiten, Fehler zu machen
- nicht herstellerunabhängig, aber wenigstens Open Source
- Spring wird immer komplexer (Missbrauch von Annotationen, Meta-Annotationen, Spring Expression Language)
- Pseudo-Entkopplung von Spring, die mit proprietären Annotationen dann doch wieder zerstört wird. Der Code würde zwar auch ohne noch übersetzbar und ausführbar sein, würde aber nicht mehr seinen eigentlichen Zweck erfüllen.
- umständliches bzw. gar kein Clustering
- insgesamt vermutlich schwerer als Java EE zu erlernen
Java EE 6
---------
Pro:
- Convention over Configuration nimmt dem Entwickler sehr viel Konfiguration ab; um Transaktionen oder Autorisierung braucht man sich nicht viele Gedanken machen.
- Herstellerunabhängiger Standard
- Entwickler wird stärker an die Hand genommen als bei Spring -> hoffentlich weniger Wildwuchs in der Architektur
- Application Server bieten mehr als ein einfacher Tomcat (z. B. Übewachung)
- tendenzielle einfachere Anpassung an verschiedene Umgebungen (z. B. DB-Verbindung, Mail-Server usw.)
- Man hat alles zusammen und muss sich nicht sein System aus Einzelteilen zusammensuchen
- vermutlich insgesamt einfacher zu lernen als Spring
Contra:
- Fremde Technologien können nicht ganz so einfach integriert werden wie bei Spring
- immer ein "dicker" Application Server nötig
- AOP-Fähigkeiten sind begrenzt
Zusammenfassung
---------------
Spring nutzt DI und AOP einheitlich als mächtige Grundkonzepte, ist sehr flexibel, erfordert aber auch mehr Konfiguration und Gehirnschmalz seitens des Entwicklers. Java EE bringt dagegen alles, was man gewöhnlich braucht, mit und nimmt dem Entwickler die meiste Konfiguration durch Konventionen ab. Dafür benötigt man zwingend einen Application Server und ist nicht ganz so flexibel.
Wie denkt ihr darüber und was fallen euch noch für Argumente ein?