Ab wann/wofür braucht man Applikations-Server(J2EE...)
Andreas Korthaus
- programmiertechnik
Hallo!
Ich bin im Rahmen eines Webprojektes auf teilweise heftigen Widerstand aus IT-Abteilungen verschiedener Firmen gestoßen, nur wenn das Wort "PHP" zur Sprache kam. Dabei geht es noch nichtmal um eine besondere Größenordnung, vielen kommt sowas erst gar nicht ins Haus, eher um die Plattform/Programmiertechnik an sich. Vielen ist eine Software die auf Basis von PHP entwickelt wurde direkt unseriös. Naja, in den "Forums-Ferien"(an dieser Stelle auch von mir herzlichen Dank an alle die an der schnellen Wiederherstellung beteiligt waren!), jedenfalls habe ich mich die letzten Tage etwas mehr mit Java, J2EE... auseinander gesetzt, einfach mal um die Vorbehalte gegen PHP zu verstehen, denn wenn mein Denken auf den Horizont von PHP beschränkt ist werde ich es wohl nie vestehen. Die Dinge auf die ich mehrfach gestoßen bin war zum einen Performance, ab einer gewissen Größenordnung fällt es mit einem professionellen Framework wohl leichter die Last auf verschiedene Maschinen zu verteilen - wovon die Applikation nicht beeinflusst wird - naja, was spricht dagegen sowas mit dem Apachen zu machen, IMHO kann der doch auch zum Load-Balancing genutzt werden, und wenn alle Rechner dahinter gleich sind und auf dieselbe Transaktionssicher Datenbank zugreifen - sehe ich keine Probleme. Aber was ist wenn man mehrere Datenbank-Server braucht - Transaktionen + Replikation, das ist dann wohl nicht mehr ganz so einfach, oder? Wobei die Möglichkeiten bei einer J2EE Plattform wohl etwas mächtiger sind, und Transaktionen wohl noch weiter reichen als nur DB-Transaktionen, naja.
Der nächste Punkt ist Modularität, durch EJBs(Enterprise JavaBeans) hat man so zu sagen eine fertige Schnittstelle um die eigentliche Anwendungs-Logik vom Rest des Web-Projektes zu trennen, in PHP muss ich mir halt selbst solche Schnittstellen basteln, was ich vermutlich nicht so gut kann wie es bei EJBs der Fall ist, die Spezifikation hat gute 600 A4-Seiten ;-)
Naja, dann wäre da noch eine große Zahl an fertigen, ausfürlich gestesteten und für gut befundenen Modulen, auch Schnittstellen um mit anderen Systemen zu kommunizieren, und nicht zuletzt die J2EE Spezifikation an sich, wo mir viel mehr vorgegeben wird, z.B. DB-Zugangsdaten speicher ich in einer ganz speziellen XML-Datei, da ist es nicht jedem Programmierer selbst überlassen wo und wie er das speichert/einbindet.
Das hat natürlich Vorteile, dass es viele andere Programmierer gibt die damit schneller umgehen können als bei einer eigenen Lösung in PHP, in die man sich erstmal einarbeiten kann.
Es ist nur die Sache, das das Projekt nicht wirklich groß ist und mit Sicherheit keine großen Zugriffszahlen aushalten muss, es muss nur mit kitischen Daten umgehen, das ist der einzige Punkt. Bin ich denn mit einer J2EE Architektur gezwungen "besseren Code" oder sichereren zu schreiben? Ich verstehe nicht dass manche EDV-Leute grundsätzlich nichts mit "PHP-Kram" zu tun haben wollen.
Bis zu einer Größenordnung finde ich PHP aber wirklich gut, einfach weil es aufgrund seiner aufs Web zugeschnittenen Funktionsvielfalt gerade für Web-Projekte gut geeigent ist und sich schnell programmieren läßt. Außerdem gibt es mit PEAR, Smarty... inzwichen eigentlich auch brauchbare Bibliotheken die man verwenden kann.
Was sind da Eure Erfahrungen? Wann oder wofür haltet Ihr einen Applikatipons-Server für sinnvoll?
Ich will das Projekt jetzt nicht von heute auf morgen nach Java portieren da es sehr dumm wäre eine Sprache zu verwenden die man kaum kann, aber langfristig will ich mich schon in diese Richtung orientieren, oder haltet Ihr andere Ansätze(.NET oder nochwas anderes? Gibt es da auch was vergleichbares auf C++ basierend?) für besser geeignet?
Was habt Ihr für Erfahrungen mit Applikations-Servern? Ich habe mir jetzt mal JBOSS ein wenig angesehen und ich finde das Teil eigentlich ganz gut, oder habe ich damit wieder das gleiche Problem wie mit PHP nur auf Java-Ebene(halt Ansehen in EDV-Abteilungen)?
Viele Grüße
Andreas
Hallo!
Hallo,
tja, schwierige Frage...
Ich verstehe nicht genug davon, aber höre auch immer solche 'Argumente', PHP sei halt keine Programmiersprache und so. Ja, und? Ich habe auch mal Java und C gelernt (naja, in Maßen) und mir fehlt nichts in PHP. Außer, daß die Objektorientierung etwas mehr zulassen könnte (inner Klassen zum Beispiel). In Java hingegen muß man ja auch von dem ganzen Rest was verstehen (Http z.B. - oder), um überhaupt was zum Browser abzuschschicken. Ich bin In Java jedenfalls nicht über die Konsole hinausgekommen, während mein erstes PHP-'hallo Welt' in einigen Minuten im Browser stand. Ich glaube das ist bei Leuten, die wirklich 'richtig' programmieren können so eine Vorahnung, daß sie mit PHP irgendwann an Grenzen stoßen werden (so, wie bei richtigen Fotografen eben die ritsch-ratsch-klick von vornherein ausscheidet, weil man eben in der Belichtung alles selbst bestimmen will), bei manchen scheint es mir aber auch schlichte Arroganz. Meine Proekte (ich wiederhole mich) funktionieren jedenfalls mit PHP wunderbar und gehen deutlich über Hompage-Niveau hinaus.
Gruß, Andreas
Hi Andreas!
Ich verstehe nicht genug davon, aber höre auch immer solche 'Argumente', PHP sei halt keine Programmiersprache und so. Ja, und? Ich habe auch mal Java und C gelernt (naja, in Maßen) und mir fehlt nichts in PHP. Außer, daß die Objektorientierung etwas mehr zulassen könnte (inner Klassen zum Beispiel).
Mir geht es eigentlich weniger um die Programmiersprache an sich, ich denke mit Apache+Java alleine kommt man auch nicht besonders weit(ich meine nicht den Funkrionsumfang, sondern die Server-Umgebung, Schnittstellen, Programmiertechnik, halt die Professionalität...). Ich sehe inzwischen durchaus Vorteile die so eine J2EE Umgebung bietet, ich denke dadurch dass man halt in seinen Möglichkeiten auf hierfür vorgesehene Schnittstellen beschränkt wird, wird so "quick and dirty" Code erschwert, die Software wird modularer und läßt sich besser warten, und wie gesagt sind die Schnittstellen gut und man muss sich keine Sorgen machen ob sich der Programmierer da nicht irgendwelche wilden Sachen ausgedacht hat.
In Java hingegen muß man ja auch von dem ganzen Rest was verstehen (Http z.B. - oder), um überhaupt was zum Browser abzuschschicken.
Ja? Ich denke mit JSP ist Java auch ganz gut verwendbar, nur braucht mahn dafür schon mehr als in PHP.
Ich bin In Java jedenfalls nicht über die Konsole hinausgekommen, während mein erstes PHP-'hallo Welt' in einigen Minuten im Browser stand.
Ich finde das auch alles sehr kompliziert, was man alles für ein kleines blödes Script braucht... was ich wirklich ausprobiert habe war auch nr Kommandozeile, Applet und kleine GUI, aber ich denke wenn man seinen Webserver hierfür eingerichtet hat ist es mit JSP auch nicht viel schwerer als mit PHP, nur sollt man erstmal Java lernen, und das ist erheblich schwerer als PHP. Aber das ist für Geschäftskritische Anwedungen sicher kein Argument! Im Gegenteil, wenn die Sprache schwieriger aber besser ist dann ist es ein Argument für diese Sprache, zumal es Java-Programmier in rauen Mengen gibt ;-)
Ich glaube das ist bei Leuten, die wirklich 'richtig' programmieren können so eine Vorahnung, daß sie mit PHP irgendwann an Grenzen stoßen werden
Das kann ich mir nicht vorstellen. Die Anwendung ist fertig, ebenfalls modular und leicht erweiterbar, wieso sollte das dann ein Problem sein? Außerdem gibt es Bestrebungen einen Cache zu schreiben, der PHP-Scripte in C umwandelt und diese im Speicher vorhält bzw. auf Platte cached, fände ich sehr interessant. Und mit der ZE-2 soll das einbinden von C-Scripten/Programmen auch irgendwie verbessert werden, falls die Performance von PHP nicht ausreicht, aber das habe ich nur in einem Interview gelesen, ob, was und wie genau da was passiert weiß ich nicht.
bei manchen scheint es mir aber auch schlichte Arroganz.
Ich denke PHP hat auch ein schlechtes Image, in weiten Teilen zu Unrecht wie ich finde, das kommt halt durch dessen Einfachheit, jder Idiot kann in recht kurzerzeit irgendwelche Scripte schreiben, ohen irgendeie Ahnung von der Materie zu haben und so werden schlechte Scripte am laufenden Band produziert. Und zum großen Teil auch Unkenntnis, PHP entwickelt sich extrem schnell, so dass der aktuelle Funktions-Umfang... den meisten nicht bekannt sein dürfte. Aber auch das wird viel kritisiert, aus der ehemals eifnach en web-programmiersprache soll ohne ein richtiges Konzept eine mächtige Programmiersprache gemacht werden einfach indem "wahllos" immer neue Features implementiert werden, ohne die Qualität wirklich sorgfältig zu sichern. Naja, teilweise ist das nicht ganz von der Hand zu weisen, aber ich denke wenn man weiß was man tut hat man mit PHP sicher ein gutes Werkzeug für Web-Projekte.
Meine Proekte (ich wiederhole mich) funktionieren jedenfalls mit PHP wunderbar und gehen deutlich über Hompage-Niveau hinaus.
Ich denke auch das es mit PHP möglich ist, aber es ändert nichts an der Meinung vieler in die Entscheidung mit einbezogenen Leute.
Viele Grüße
Andreas
Hallo Andreas,
ich denke oft spielen da Halb und Unwissen sowie bestimmte Glaubensgrundsätze, und eventuell bestehendes Know How in Java eine Rolle.
Nach meiner Meinung ist PHP für kleinere Projekte mit nicht zu hoher Komplexität und Leistungsanforderungen sehr gut geeignet. Auch ein ordentlicher Objektorientierter Stil ist mit PHP möglich.
Die Stärken von J2EE kommen bei "richtig fetten" Anwendungen zum tragen. In großen Teams kannst Du damit strukturierter Arbeiten (Kapselung, bekannte Entwurfsmuster, eine Menge Tools...). Ein Hauptvorteil und der große Unterschied zu PHP ist das Laufzeitverhalten. J2EE macht eine Menge Optimierungs und Verwaltungskram unter der Haube, worum sich der Entwickler nicht kümmern muss. Es wird mit vielen Threads , Objekten die im Speicher resident bleiben, oder auch ausgeräumt werden und erst Stunden später neu instantiert werden gearbeitet. Das sorgt dafür, dass Code der andauernd ausgeführt wird immer im Speicher oder sogar Cache gehalten wird, dadurch können Anfragen in Massen auf den Server einprasseln ohne dass er in die Knie geht.
Bei PHP wird im allgemeinen bei jedem Aufruf der Code neu von der Platte geholt, Interpretiert, Speicher reserviert...ausgeführt.
Gruss
Marko
Hallo!
Das komische ist IMHO vor allem die Grundsätzlichkeit - braucht weder besonders komplex sein noch besonders stark belastet, PHP an sich ist das Problem, bzw. wird als solches gesehen.
Auch ein ordentlicher Objektorientierter Stil ist mit PHP möglich.
Ja? Das sprechen die meisten Leute die Java & Co. kennen ja PHP ab! Und Java soll von der OOP auch nicht die erste Sahne sein...
Bei PHP wird im allgemeinen bei jedem Aufruf der Code neu von der Platte geholt, Interpretiert, Speicher reserviert...ausgeführt.
Ist wieder die Performance als Hauptvorteil.
Und ich habe einige Seminar/Diplomarbeiten zu dem Thema im Internet gefunden und teilweise gelsen, und was ich da zu PHP höre das läßt mir die Haare zu Berge stehen. Wenn es mir tatsächlich um PErformance geht und dann setze ich einen schlanken Apachen mit einkompiliertem PHP-Modul welche natürlich ebenfalls so schlank wie möglich gehalten werden muss(was dazu führt das der PHP Interpreter die ganze Zeit als Apache-Modul im Speicher bleibt, persistente DB-Verbindungen möglich werden...), dazu verwenden ich entweder den Zend-Cache oder den PHP-Accelerator die heufig wiederkehrernden Byte-Code erkennen und diesen ausführbar im Speicher halten. Das beschleunigt PHP um ein vielfaches! Und ich kann mir nicht wirklich vorstellen dass Java dann noch viel schneller ist, denn im Prinzip macht so ein Projekt ja auch nichts anderes, OK, irgendwann liegt halt alles als Byte-Code vor, aber auch nicht im Speicher, das geht ja gar nicht, also muss es von der Platte geholt werden, dazu kommt der gaze Overhad verursacht durch die mächtige modulare Architektur.
Und letztens habe ich gelesen das der Autor des PHP-Accelerators da dran ist einen neuen Cache für die ZendEngine2(PHP5) zu schreiben, nochmal ganz neu "from scratch", und dieser wird dann noch besser, er funktioniert viel ähnlicher wie das bei einem J2EE Server, er übersetzt die PHP-Scripte in C-Scripte und hält diese entweder in einem eigenen Cache oder im Speicher. Spätestens dann sollte Performance keine Rolle mehr spielen. Nur noch wie Du sagst die Umgebung des Applikations-Server, halt mit mehreren Programmieren, gekapselten Elementen, Transaktionen, Versionen...
Grüße
Andreas
Auch ein ordentlicher Objektorientierter Stil ist mit PHP möglich.
Ja? Das sprechen die meisten Leute die Java & Co. kennen ja PHP ab!
das stimmt schon, in Java kann man wirklich gründlicher und umfangreicher OOP machen. Aber diese Grundsätzliche Ablehnung von PHP ist Quatsch. Und ich bastel mir halt in PHP was, das so funktioniert, wie es soll. OOP kann man sogar in JavaScript machen - wo ja auch nur drüber gelästert wird. Das funktioniert aber ganz ordentlich. Man muß halt die Einschränkungen kennen und damit arbeiten.
Gruß, Andreas
Hallo,
wie gut sich PHP auf die Weise optimieren lässt weiss ich nicht genau. Ich glaube eine gut programmierte Java Webapplication wird trotzdem schneller sein, bzw. was wichtiger ist mehr Last handeln können. Die Applikationsserver arbeiten intern mit sehr ausgefeilten Strategien z.B. mehreren parallelen leichtgewichtigen Threads zur Abarbeitung der Requests.
Außerdem skalieren Java Anwendungen besser, da sie einfacher auf verschiedene Server verteilt werden können.
Aber wie schon gesagt diese Vorteile kommen nach meiner Meinung erst bei großen Projekten und Projektteams zum tragen.
Gruss
Marko