# Performance Struts vs Faceltes  vs  JSP



## Guest (22. Sep 2008)

Konnte schon jemand Erfahrungen sammeln im Zusammenhang mit der Performance im Vergleich von Struts, Faclets und JSP? Ich lasse hier Servlets außen vor, da diese in Performance höchst wahrscheinlich sowieso alle Abhängen würden.


----------



## ps (22. Sep 2008)

Anonymous hat gesagt.:
			
		

> Konnte schon jemand Erfahrungen sammeln im Zusammenhang mit der Performance im Vergleich von Struts, Faclets und JSP? Ich lasse hier Servlets außen vor, da diese in Performance höchst wahrscheinlich sowieso alle Abhängen würden.



Deine Fragestellung ist seltsam. Zunächst einmal werden JSPs zu Servlets compiliert. Reine JSPs haben also die höchste Performance von deiner Liste.

Struts(2) benutzt JSP, Freemarker oder Velocity als View Technologie. Struts ist ein Framework und somit eher mit JSF, Seam oder Wicket vergleichbar als mit JSP oder Facelets.

Facelets sind ein View für JSF. Das langsamste Gespann in dieser Liste.


----------



## Terminator (22. Sep 2008)

> Facelets sind ein View für JSF. Das langsamste Gespann in dieser Liste.

Hmm - also das kenn ich andersrum, sprich Gespann JSF+Facelets ist performanter JSF+JSP. 
Bei JSP haste doch Overhead: compilieren, forward request, jsp action


----------



## ps (22. Sep 2008)

Terminator hat gesagt.:
			
		

> >
> Hmm - also das kenn ich andersrum, sprich Gespann JSF+Facelets ist performanter JSF+JSP.
> Bei JSP haste doch Overhead: compilieren, forward request, jsp action



Ja, das ist richtig. JSF ist aber langsamer als die anderen erwähnten Alternativen..
Geht man vom HTTP Protokoll aus, dann hast du bei Servlets und JSP den geringsten Overhead. Setzt du ein actionbasiertes Framework wie Struts ein dann hast du einen geringfügigen Overhead. Am meisten Overhead hast du aber wenn du ein komponentenbasiertes Framework wie JSF einsetzt.

Facelets mögen performanter sein als JSP - aber diese Aussage gilt nur im Kontext von JSF. (Facelets sind ja im Gegensatz zu JSP auch nicht ohne JSF einsetzbar).


----------



## Guest (24. Sep 2008)

ps hat gesagt.:
			
		

> Facelets mögen performanter sein als JSP - aber diese Aussage gilt nur im Kontext von JSF. (Facelets sind ja im Gegensatz zu JSP auch nicht ohne JSF einsetzbar).



Eins verstehe jetzt nicht wenn JSP am performantesten ist und JSF nicht so performant, wie kann denn JSF mit Facelets performanter sein als JSP?


----------



## ps (24. Sep 2008)

Anonymous hat gesagt.:
			
		

> Eins verstehe jetzt nicht wenn JSP am performantesten ist und JSF nicht so performant, wie kann denn JSF mit Facelets performanter sein als JSP?



JSF mit Facelets ist performanter als JSF mit JSP. Aber JSPs bzw. Servlets ohne JSF sind am performantesten


----------



## Terminator (25. Sep 2008)

Hm - vergleichen wir mal thereotisch den Unterschied (fürn nen Inital Request):


Request:
- Locale und Encoding Berechnungen und son Zeugs bräuchtest bei eigener Servlet+JSP Lösung auch.
- Einzige mehr was ich da bei JSF wüsste, wären paar zusätzlich ifs bzw MethodenAufrufe und n leeres TreeObjekt wird erstellt
Also net sonderlich viel Unterschied meiner Meinung


Render:
- Tag Auflösung hat man auch bei beiden
- Bei JSF kommt dann noch Auflösung und Erstellung der Komponenten hinzu
- Ausserdem noch Auflösung der zugehörigen Komponenten Renderer
Da ist auf jedenfall schon mal mehr Aufwand


Wenn nun Facelets das optimiert durch Vermeidung des JSP Overhead isses vielleicht ja in Wirklichkeit nimma viel.
Naja soweit mal mein Wissenstand, müsste man evt mal irgendeinen Test sehen zu, wieviel das ausmachen kann.

Mal unabhängig von der Performance find ich JSP irgendwie als Auslaufmodel.
Würde das nicht mehr für neue Projekte einsetzen wollen und Performance wäre da eigentlich kein Überlegungsgrund.


----------



## ps (25. Sep 2008)

Terminator hat gesagt.:
			
		

> Hm - vergleichen wir mal thereotisch den Unterschied (fürn nen Inital Request):
> ...
> Wenn nun Facelets das optimiert durch Vermeidung des JSP Overhead isses vielleicht ja in Wirklichkeit nimma viel.
> Naja soweit mal mein Wissenstand, müsste man evt mal irgendeinen Test sehen zu, wieviel das ausmachen kann.



Naja - bei JSF musst du den gesamten State der Komponenten mitschleifen. Das ist das Problem bei Komponentenbasierten Frameworks - das Web basiert nunmal auf HTTP, und das ist stateless. Bauen wir ein komplexes Framework wie JSF oben drauf, kostet das erhebliche Ressourcen.






-> http://it-republik.de/jaxenter/artikel/JSF-und-Struts-auf-dem-Leistungspruefstand-1328.html




> Mal unabhängig von der Performance find ich JSP irgendwie als Auslaufmodel.
> Würde das nicht mehr für neue Projekte einsetzen wollen und Performance wäre da eigentlich kein Überlegungsgrund.



Sehe ich eigentlich nicht so - wenn man ein actionbasiertes Framework (Struts2, Spring MVC, etc) einsetzt, dann machen JSPs schon Sinn. Richtig ist aber das es Alternativen gibt welche in manchen Punkten leistungsfähiger sind: Freemarker oder Velocity zB. Der größte Vorteil hier ist das diese nicht an den Servletcontainer gekoppelt sind und auch ausserhalb eingesetzt werden können - zB. ermöglicht es auch Teile einer Applikation in Module auszulagern... (Webtemplates in einer JAR - bei JSP geht das nicht).

Ansonsten ist JSP sehr weit gekommen... und vielleicht wird dieses letzte Manko in der nächsten Version ja auch noch ausgebügelt.


----------



## Terminator (25. Sep 2008)

> bei JSF musst du den gesamten State der Komponenten mitschleifen

Müssen nicht - das läst sich für jede Kompo abstellen
Bei ner View mit Postback Funktion ists aber in der Tat eigentlich immer der Fall bzw würde anders echt keinen Sinn machen.


>>Würde das nicht mehr für neue Projekte einsetzen wollen und Performance wäre da eigentlich kein Überlegungsgrund.
> Sehe ich eigentlich nicht so

Glaub der Autor hats net mal schlecht zusammengefasst.
sprich für Hochleistungssystem könnt JSP incl die bessere Performance ausschlaggebend sein

Finde trotzdem, dass man neue Projekte gleich mit JSF machen sollte wenn möglich.
Kenn Struts nicht, denk aber auch dass da einige wechseln.

Ein Grund ist für mich dass JSF ein Standard ist.
Und Facelets auch bald inclusive.


> Chart

Zwar kein Inital Request, sondern n Postback und wahrscheinlich ohne Facelets.
War aber echt interressant mal die Unterschiede zu sehen.
thanx


----------



## ps (25. Sep 2008)

Terminator hat gesagt.:
			
		

> >Finde trotzdem, dass man neue Projekte gleich mit JSF machen sollte wenn möglich.
> Kenn Struts nicht, denk aber auch dass da einige wechseln.



Nun - ich denke man nimmt das mit dem man am ehesten zum Ziel kommt. Ein Wechsel macht selten Sinn - die Modelle sind zu unterschiedlich, eine Portierung meist zu Aufwändig - bei zu geringem bis garkeinem Nutzen.



> Ein Grund ist für mich dass JSF ein Standard ist.
> Und Facelets auch bald inclusive.



Standards.. seit Struts, Spring und anderen wissen wir doch das man darauf nicht allzuviel geben muss 
Ein gewaltiges Problem bei JSF ist das man es allein fast nicht verwenden kann - also packt man noch ein Framework wie Seam oder Shale (benutzt das irgendjemand) drauf. 

Und schon hat man wieder nen wunderbaren nicht-standard. Die Standard's definieren wunderbare Ausgangspunkte - aber am Ende legt man sich doch meist auf ein Framework fest. Und nein - JSF für sich ist in meinen Augen kein fertiges Framework, nur eine Technologie um ein solches zu bauen. Ebenso wie Servlets und JSP... welche ja auch Standard sind. Es nimmt sich also nicht viel finde ich.


----------

