# Überblick verloren, viele Frameworks, Server & Co



## mad-din (25. Okt 2007)

Hi!

Ich will mich näher mit JEE auseinandersetzen, um so professionelle Enterprise Applikationen entwickeln zu können. Ich werde bald mein Studium antreten und da hat man ja bekanntlich viel Freizeit  Kurz zu meiner Vorgeschichte: bin ausgelernter Fachinformatiker und programmiere hauptsächlich in PHP und auch Java. Da ich aber die Vorteile von Java langsam erkannt habe (oder anders gesagt: die Nachteile von PHP spüren durfte  ), will ich meine Javakenntnisse, die sich bisher nur auf J2SE beschränken, ausweiten. 

Dazu habe ich mir erstmal zwei weitere Bücher gekauft neben meinem Buch "Handbuch der Java Programmierung". Das ist einmal Das J2EE Codebook aus den Addison-Wesley Verlag und "Agile Softwareentwicklung mit Spring, Hibernate und Eclipse". Zudem noch diverse Internetseiten und dann gings los. Ich wollte mir erstmal einen Überblick verschaffen, den einen und anderen Applikationsserver installiert, hier und da was rumprobiert, dieses Framework ausprobiert, usw.

Und so langsam verlieren ich den Überblick: also so wie ich das sehe sind Struts und JSF eigentlich das gleiche, richtig? Beides sind Frameworks und auch einigermaßen für den gleichen Zweck gedacht. Spring könnte man im gleichen Atemzug auch noch erwähnen, aber es stellt wesentlich mehr bereit als Struts und JSF zusammen. 
Dann gibt es da ja noch Hibernate, ein Pendant dazu wäre meiner Meinung nach JDO (Java Data Objects) von Sun selbst. Dann hab ich mal irgendwas von einer Java Persistence Api gelesen, ist das JDO oder ist das wieder was ganz anderes?
Zudem gibt es da ja noch Unmengen an Applikationsservern: JBoss, Sun Java Systems Applications Server, Glassfish (wobei ich mir hier noch nicht sicher bin, ob Glassfish nicht der Sun Java Systems Applications Server ist!?), IBM WebSphere und so weiter. 

Jetzt mein Anliegen: ich will weitesgehend bei Java bzw. Sun selbst bleiben, das heißt, wenn Sun ein Framework wie Hibernate bereitstellt, dann will ich nicht Hibernate nutzen, sondern das Framework von Java. Zudem hab ich Gefallen an dem Sun Java Systems Application Server gefunden. Hierzu hab ich schon ein nettes Tutorial von Sun selbst gefunden, das ich irgendwann mal noch genauer studieren will. Wo kann ich mir einen Überblick verschaffen? Wie finde ich heraus, was welches Framework wirklich ist und wann ich welches einsetzen soll? Wofür ich die einzelnen Frameworks einsetzen kann, weiß ich schon, aber nicht wann. Woher weiß ich, was das "Beste"? 

Ich weiß, dass man so etwas nur mit Erfahrung und Zeit hinbekommt, aber ich denke auch, dass sich hier die ein oder anderen Java-Freaks rumtummeln, die mir mit Ihrer Erfahrung sicherlich sagen können, ob ich mit meinem Anliegen - soviel Sun wie möglich, so wenig "externe" wie nötig - auf einem guten Weg bin und ob sich das lohnt. 

Wie gesagt, ich bin mittlerweile durchaus in der Lage mit Spring, Struts oder JSF eine Applikation zu schreiben, aber angenommen morgen würde ein Auftrag ins Haus fliegen, ich soll einen OnlineShop (jaja, ist etwas hoch gegriffen, gleich mit einem OnlineShop anzufangen, aber ich will ja nur ein Beispiel geben  ) entwickeln, wüsste ich nicht, mit was ich das machen soll und welches da die beste Vorgehensweise wäre. 

Ich hoffe, ihr habt einigermaßen verstanden, wo mein Problem liegt und entschuldige mich schonmal für den langen Text  Aber ich bin verwirrt und stecke momenten in einer Art künstlerischen Blockade, die mich nicht weiterbringt.

Danke schonmal und viele Grüße
maddin


----------



## HLX (26. Okt 2007)

So wie es aussieht möchtest du dich in J2EE mit dem Aspekt der Web-Anwendungen auseinandersetzen. Dabei steht im wesentlichen die JSP- und Servlet-Technologie im Vordergrund. JSF und Struts sind darauf aufbauende Frameworks.

Die beiden Frameworks sind sich ähnlich, aber nicht gleich. Struts ist ein MVC-Framework und JSF ein Framework zur Erstellung von Frontends mit bedingter MVC-Unterstützung. Wenn du auf SUN-Produkte stehst, dann ist JSF genau das richtige für dich. Darüber hinaus ist Struts aktionsgesteuert und JSF ereignisgesteuert.

Das Struts-Framework gibt es schon eine ganze Weile. Es ist daher ziemlich ausgereift und ich pers. arbeite gerne damit. JSF war vor war vor einigen Jahren noch furchtbar. Mittlerweile wächst das Framework allerdings aus den Kinderschuhen und gewinnt enormen Zuspruch. Da es von SUN weiterentwickelt wird besteht der Vorteil, dass eine gemeinsame Standardisierung mit der J2SE/J2EE-Technologie zu erwarten ist.

Application-Server:
Für Web-Anwendungen sind J2EE-AppServer eigentlich Kanonen auf Spatzen. Das wäre so, als wolltest du eine einfache Anwendung mit einer einzelnen, kaum gefüllten Datenbanktabelle mit einer ORACLE-DB betreiben. Daher solltest du eher einen Web-Container für deine Projekte einsetzen. Er kann lediglich die JSP- und Servlet-Technologie aus der J2EE - das reicht aber normalerweise auch.

Solltest du dennoch auf einen J2EE-AppServer bestehen, kann ich dir den JBoss Application Server empfehlen. Ist einfach handzuhaben, liefert schlüssige Fehlermeldungen und ist nicht so restriktiv wie viele kommerzielle Produkte. Zum Testen also ideal.


----------



## Ullenboom (26. Okt 2007)

hi maddin!

Das ist eine echt schwierige Frage, auch deshalb, weil man wirklich jede, ja jede Empfehlung angreifen kann. Sind wir in Deutschland auch irgendwie schon gewöhnt, dass wenn man was über XXX sagt man gleich in die Ecke YYY gestellt wird. Aber gut  

Trennen wir Web-Frameworks, Enterprise-Frameworks und Persistenz-Frameworks. Meine Gedanken:

- JDO hat dich wirklich erledigt. An die Stelle ist der JPA-Standard getreten, etwa von Hibernate implementiert. Damit liegst du damit schon auf der Persistenz-Seite gut.

- Web-Frameworks. Das ist seeehr schwierig. Da du einen Standard magst, wäre dann JSF das richtige für dich. Dann aber mit Aufsätzen und Erweiterungen. JSF ist technologisch vielleicht nicht das Beste, aber du wirst immer Hilfe finden und die Hersteller bieten gute Unterstützung in den IDEs.

- Enterprise-Frameworks. Java EE 5 ist unproblematisch, aber Spring ebenfalls. Beides schließt sich nicht aus! Eine Idee: Mit Spring beginnen, und wann man doch aus irgendwelchen Gründen einen EE-Container braucht -- etwa wenn externe Programme EJBs nutzen wollen --, Spring dort integrieren und die Spring-Beans als EJBs veröffentlichen.

Grüße

 Christian


----------



## mad-din (26. Okt 2007)

> dass wenn man was über XXX sagt man gleich in die Ecke YYY gestellt wird. Aber gut icon_smile.gif



Kann ich bestätigen und das ist echt nervtötend! Aber naja, wollen wir auf dieses Thema nicht weiter eingehen. 

Danke schonmal euch beiden, hat zumindest etwas Licht ins Dunkel gebracht. Zum Thema Application-Server: ich will auf jeden Fall einen AppServer und nicht nur einen Servlet-Container einsetzen, da ich nicht nur Webapplikationen schreiben will, sondern im Grunde die gesamte Bandbreite ausnützen will, wobei der Fokus schon auf Webapplikationen liegt (derzeit beschäftige ich mich näher mit Webservices, gibts ja auch jede Menge Frameworks, Standards, etc.). 

Mit EJB hab ich mich auch schonmal auseinandergesetzt, aber mir ist schnell aufgefallen, dass ich erst das Basiskonzept vollständig und im Schlaf beherrschen sollte, bevor ich an dieser Stelle weiter mache.

Das mit JDO hat mich jetzt schwer getroffen  Mein Buch "Das J2EE Codebook" ist noch gar nicht so alt, habs mir auch erst vor einem halben Jahr gekauft, das heißt im Grunde, dass ich darin das komplette Kapitel über JDO rausreißen könnte, weil JDO durch JPA ersetzt wurde, richtig? 

Was mir momentan noch Angst macht is folgendes: ich hab mir den Sun Java Systems Applicaton Server installiert und da gibt es einfach viel zu viele Sachen, die ich noch nicht verstehe. Zwar durchaus schonmal gehört, aber wirklich anfangen bzw. umgehen kann ich damit nicht. 


Viele Grüße
maddin


----------

