Spring vs. Java EE und KomplexitätIch bin immer wieder überrascht, wie sich eine bestimmte Meinung festsetzen kann und man sie dann von überall her hört. Dazu gehört "Spring ist weniger komplex als Java EE". Das impliziert zunächst, dass Spring und Java EE Gegensätze sind. Das ist nicht so: Spring ist ein Framework, mit dem man unter anderem Anwendungen für die Java EE Plattform entwickeln kann.
Als nächstes impliziert die Aussage, dass man Java EE eine Komplexität zuordnen kann. Gemeint ist die sichtbare Komplexität für den Programmierer. Die ist aber für Java EE gar nicht festgelegt: Java EE ist "nur" eine (mächtige) Plattform und es gibt viele Frameworks, die darauf aufsetzen. Man kann den "puren" Java EE APIs eine Komplexität in diesem Sinne zuordnen, aber das macht wenig Sinn, denn man kann - z.B. mit Spring - die Verwendung der APIs deutlich vereinfachen.
Warum ist dieses Thema so wichtig? Wenn sich das "Java EE ist komplex" Vorurteil festsetzt, wird man Java EE weniger nutzen. Abgesehen davon, dass das für die jetzigen Java EE Entwickler ein Problem ist, stellt sich die Frage nach Alternativen. Und an der Stelle wird das Kind mit dem Bade ausgeschüttet: Der sinnvolle Ansatz ist eben nicht immer eine Abkehr von Java EE, sondern die Verwendung z.B. von Spring für die Vereinfachung der Entwicklung (oder das Warten auf Java EE 5 oder Beehive oder ...). Dann hat man nämlich die Flexibilität, später mehr Features von Java EE zu verwenden, ohne sich in den APIs zu verlieren.
Die Frage ist nun, wo die Grenze ist: Kann man auf Java EE soweit kommen, dass es z.B. so einfach wird wie Ruby on Rails? Dann könnte man auf den bekannten Java EE Servern, die häufig strategisch gesetzt sind, sehr leicht Web Anwendungen entwickeln, und hätte immer noch die Flexibilität im Zweifel Host Integration mit JCA oder eine andere Persistenztechnologie "nachzurüsten". Und weil diese Idee so gut ist, arbeiten auch schon welche dran:
Grails und
Trails.