Re: PHP - JSP/Servlet Technologievergleich
Original geschrieben von linuxvsmicrosoft
Hallo Christian,
das Hauptproblem an der ganzen Geschichte ist, dass ich es mir nicht aussuchen kann, ob ich die Technologien vergleichen möchte oder nicht.
Diese Aufgabe hat sich aus div. Umständen ergeben und daher habe ich diese aufgetragen bekommen (Diplomarbeit).
Nun ist es wirklich schwierig, derart unterschiedliche Technologien vergleichen zu wollen, wenn man rein Programmiertechnisch nicht der bewandertste ist.
Aber eine Lösung muss zu finden sein!
Zudem wurde im JSP Projekt auch nur JSP/Servlet und Bean Technologie eingesetzt, und nicht mehr. Von daher werde ich auch nur diese "TeilTechnologie" im Bezug des J2EE Spektrums dem PHP gegenüber stellen.
In dem Fall würde ich aber bei dieser Diplomarbeit aber herausstellen das JSP/Servlet Programmierung nur ein Teil des ganzen ist
Ok ich könnte dich jetzt mit Links zuballern, aber ich will es mal ein bischne beschränken:
jsp-develope.de
j2ee-develope.de
java.sun.com/j2ee/
jakarta.apache.org/struts <- unbedingt anneignen und erwähnen. Struts zeigt wozu Servlets fähig sind..
JSP sind letztendlich nichts anderes als HTML Seite mit Java Code embedded, ähnlich nach dem PHP Prinzip. JSPs werden letztendlich vom Jasper dem JSP Compiler in Servlets umgewandelt.
Servlets sind Java Klassen die sich von javax.servlet.GenericServlet ableiten, oder HttpServlet welches wiederum ein Erbe von GenericServlet ist.
Ein grosser vorteil von Servlets sind deren Lebenszyclus. Servlets werden mit dem ServletContainer (z.b Tomcat oder Macromedia JRun oder einem Applikationsserver
wie IBM Websphere, JBoss, BEA Weblogic) zusammen initiert, geladen.
Jeder HTTP Request läuft in einem eigenen Thread über das Servlet. Bei Perl CGI
und wenn ich mich nicht täusche auch bei PHP sieht das anders aus, dort gibt es
für jeden Thread eine instanz der Seite (bzw wird für jeden Aufruf neu interpretiert).
Dies gibt Servlets einen entscheidenden Geschwindigkeitsvorteil von PHP und CGI.
Auch eine andere Java Krankheit wird damit umgangen, der normalerweise vergleichsweise
hohe Speicherbedarf einer Java anwendung.
Durch diesen Lebenszyclus eines Servlets ermöglicht zudem eine anpassbare Handhabung
des Servlets. Sprich es ist möglich den kompletten Ablauf andersweitig zu steuern, so
gibt es unter PHP zwar ein include, aber kein Forward welches ohne erneuten Request
die HTTP Daten an ein neues Script übergibt und das alte soweit verwirft.
Der Nachteil von Servlets ist das die Lernkurve nicht so flach ist wie bei PHP. Die
Einfachheit und deshalb auch schnelle benutzbarkeit von PHP ist ein Vorteil für diese
Sprache, der wohl zu einem ganz grossen Teil dafür verantwortlich ist das PHP so
erfolgreich geworden ist.
Die mächtige Freiheit bei der ServletProgrammierung sorgt im Gegenzug dafür leider
allzuoft für Frustrationsphasen. Dies tritt auch bei jenen auf die schon länger damit arbeiten
Thema OOP.
PHP macht mit Version 5 ein grossen Schritt in richtung ernsthafte OOP. Dennoch ist auch mit Version 5 PHP keine Object Orientierte Sprache. Es sind zuwenig Pattern ernsthaft möglich mit PHP einzuhalten.
So gibt es keine Kapselung und somit fällt auch der Singleton Pattern flach.
Java ist wohl eine der konsequentesten OOP Sprachen überhaupt, und kann hier ganz klar
Punkten.
Thema Anbindung.
Gerade grosse Datenbank Systeme, von Oracle oder IBM (DB2) werden immer mehr zu
einer Eierlegenden Wollmilchsau. Genauso wie ERP Systeme von SAP usw bieten jene
Programme grundsätzlich eine Schnittstelle in Java an, und sind auf den Zugriff von Java
aus optimiert. Dieser Zugriff geht um einiges Weiter als normale Datenbankoperationen wie
mann sie auch von mysql - php kennt.
Thema Verteilte Applikationen.
J2EE gibt einen durch Applikationsserver ein tolles Werkzeug in die Hand, um Applikationen
über mehrere Rechner zu verteilen, ohne einen riesen Administrationsaufwand zu betreiben.
Applikationsserver sorgen weitestgehend selbst sich seine Komponenten (EjB) zu finden /
anzusteuern.
Thema unterstützung durch OpenSource
Die Apache Group ist einer der hauptlieferanten für Java OpenSource. Nicht nur der Tomcat
sondern gerade so tolle Projekte wie Struts, Cocoon sind unter der PHP Plattform nicht verfügbar. PHP konternet mit ebenso leistungsfähigen OpenSource Projekten wie Zope. Ein Framework wie Struts ist mir aber leider unter PHP nicht bekannt (würde mich über diese Info freuen).
Der grosser und wichtiger Unterschied zwischen JSP/Servlets und PHP ist jener das einem die ganze Mächtigkeit der Java API zur verfügung steht, und Servlets/JSP in Bytecode kompiliert werden. Zudem ist PHP nur "fast" Plattformunabhängig.
Das heisst es ist prinzipiell auf Windows genauso lauffähig wie auf UNIX. Die Probleme fangen aber schon bei sowas wie Dateipfade an.
Java bietet hier aufgrund seiner Plattformunabhängigen Designs hilfen an wie
File.separator welcher auf Windows Systemem "\" darstellt und auf unix Systemen "/".
Sprich mann kann auch ohne Probleme feste Dateipfade nutzen und diese werden plattforumanabhängig gemapped.
Naja das nur so zu anfang
