und was soll ich nun lernen?
Was macht mich attraktiv? JSF ist also sicher das es dem Standard entspricht und auch noch in ein paar Jahren laufen wir.
Dafür muss ich aber auf ein bisschen Luxus verzichten.
Ich habe mich in letzter Zeit ausführlich mit vielen Web-Frameworks beschäftigt und der Frage, welches man einsetzen sollte. Daher hier auch einige Ratschläge von mir...
Also am wichtigsten ist, dass du die Grundkenntnisse der Webentwicklung (im Java-Umfeld) kennen lernst, dazu gehören auch Basics wie HTML, CSS usw.
Ich halte es durchaus für sinnvoll, Servlets zu verstehen. Viele Web-Frameworks abstrahieren auf einer höheren Ebene, basieren aber auf Servlets.
JSP ist (wie weiter oben bereits erwähnt wurde) veraltet und furchbar zu programmieren. Klar wird es in Legacy-Anwendungen noch benötigt! Aber wenn dir das Lernen Spaß machen soll, kann ich nur davon abraten. Nicht ohne Grund ist bei JSF deswegen auch die Empfehlung seit 2.0 nun Facelets einzusetzen...
Eigentlich ist ziemlich egal, für welches Framework du dich entscheidest. Du lernst generell dabei viel über Webentwicklung und kannst danach leicht auf ein anderes Framework umsteigen. Man muss einfach mal die Grundlagen verstehen:
- statische vs. dynamische Inhalte
- Model View Controller (MVC) - Pattern
- Aufbau eines Projektes (build mit ant, Konfiguration z.B. in der web-xml)
- Was für Probleme / Fragestellungen treten bei der Webentwicklung generell auf (Multi-Page vs Single-Page, Bookmarking, History-Management, Sessions usw.)
Kauf dir unbedingt ein gutes Buch, welches auch für den Einstieg gedacht ist (siehe Bewertungen bei Amazon). Ich persönlich finde die "in Action"-Bücher sehr gut. Mit einem Buch, das bei Null anfängt macht die Einarbeitung viel mehr Spaß als mit Tutorials aus dem Netz, die oft veraltet oder nicht Fehlerfrei sind.
Ich würde dir raten, mit JSF anzufangen. Wichtig aber: Mit JSF 2.0 - das ist deutlich einfacher als früher mit JSF 1.2. Ich glaube viele Kritiker sprechen noch über ältere Versionen, mit JSF 2.0 ist die Entwicklung (vor allem dank Annotationen und vielen Konventionen) deutlich einfacher geworden.
Mit JSF lernst du während der Einarbeitung alle oben genannten Grundlagen. Außerdem gibt es (dank dem "Standard" JSF) viele Bücher, Tutorials, Blogs, Community und Addons.
Auf Luxus verzichten musst du nicht, es gibt halt für verschiedene Anforderungen verschiedene Web-Frameworks. Alternativ kannst du mit folgenden Web-Frameworks im Java-Umfeld sinnvoll anfangen:
1) Entwicklung in HTML + Java: JSF, Struts2, Spring MVC
2) Entwicklung fast nur in Java, wenig HTML: GWT, ZK, Tapestry oder Wicket
Ich würde dringend zu Alternative 1 raten, falls du wirklich lernen möchtest. Der Umstieg auf Alternative 2 ist dann ein Klacks, anderum ist es schwieriger!
Abraten würde ich dringend von folgenden Web-Frameworks für den Einstieg:
1) "Glue-Frameworks": Grails, Lift, Seam - diese nutzen viele Technologien im Hintergrund und erleichtern dir zwar den Einstieg, setzen aber voraus, dass du dich bei der Fehlersuche mit den Technologien gut auskennst, die davon benutzt werden (EJB, Hibernate, JSF, HTML, usw. - je nach Framework unterschiedlich). Hier gilt ganz klar die Regel: Erst die Technologien beherrschen, dann die Hilfe dieser Frameworks in Anspruch nehmen!
2) RIA-Frameworks: JavaFX, Flex - diese benutzten nicht Java, sondern eine andere Skriptsprache und sind speziell für RIAs gedacht (d.h. Animationen, tolle Optik, eher nahe an Desktop-Anwendung). Dies ist einfach eine andere Art der Webentwicklung.
Gruß Kai