PHP Konkurrenten zu PHP

darton

Lt. Junior Grade
Registriert
Okt. 2004
Beiträge
282
Moin!
Ich würde gerne mal wissen, was eigentlich die Alternativen zu PHP sind. Ich lese immer was von ASP, Java Server Pages, Perl und Ruby on Rails (was vergessen?). Nur wann ist es lohnenswert auf eine dieser Sprachen umzusteigen, wenn man PHP schon kann? Manchmal höre ich, dass PHP für größere Projekte nicht mehr geeignet ist. Aber Facebook ist ja beispielsweise mit PHP programmiert, sind denn große Webshops wie Amazon nicht mehr mit PHP programmiert worden? Vielleicht hat ja jemand Ahnung, wie es so in der Welt der Skriptsprachen aussieht.
 
Wenn ich mich nicht irre benutzen Shops wie z.b. Ebay Kombinationen aus CGI / Perl und PHP. Denke mal mit der Kombination kommt man am weitesten und am einfachsten.
 
Das ist vor allem eine Glaubensfrage. Wenn du PHP kannst und damit kein Problem hast, dann gibt es eigentlich keinen Grund umzusteigen (außer du willst dich eben bilden).

Mir persönlich ist PHP zuwider, ich beschäftige mich lieber mit JSP und Servlets. Vor allem aber auch weil ich einen starken Java Hintergrund habe.

Der Vorteil von PHP ist, dass du dafür am einfachsten ein hosting findest, weil das irgendwie standardmäßig jeder anbietet.
 
Zuletzt bearbeitet:
Ohohoh! Java und ASP.Net sind keine Skriptsprachen. Mit solchen Äußerungen machst du dir hier ganz schnell Feinde :)
Die wirklichen Konkurrenten zu PHP sind eben ASP.Net und Java, wobei zweiteres eine größere Verbreitung hat. Fast jede kommerzielle Webshop-Softwarelösung baut auf Java. Der Vorteil ist die bessere Entwicklungsarbeit und das Versorgen durch Fremdbibliotheken. Zudem kann man die Applikationserver wunderbar skalieren und replizieren etc. Es gibt wahnsinnig viele Vor- und Nachteile. Wer was nutzen will, muss es für sich selbst entscheiden.

@edit: Wenn du dich im Webbereich wirklich etwas weiterbilden willst, dann schau dir erstmal jQuery an. Das ist momentan der Quasistandard für dynamische Pages. Es wird teilweise sogar am MIT weiterentwickelt und sogar Microsoft nutzt es im aktuellen IIS-Framework und hat sein eigenes Ajax-Toolkit wieder fallengelassen.
 
Zuletzt bearbeitet:
Java für Webshops? Welche Namensräume verwendet man denn da? Habe mich seither auch nur mit PHP und ASP.NET beschäftigt. Wobei ich eher letzteres als "ausgereift und sauber" ansehe, bzw auch vor allem flexibler.
 
2fastHunter schrieb:
Die wirklichen Konkurrenten zu PHP sind eben ASP.Net und Java, wobei zweiteres eine größere Verbreitung hat. Fast jede kommerzielle Webshop-Softwarelösung baut auf Java. Der Vorteil ist die bessere Entwicklungsarbeit und das Versorgen durch Fremdbibliotheken. Zudem kann man die Applikationserver wunderbar skalieren und replizieren etc. Es gibt wahnsinnig viele Vor- und Nachteile. Wer was nutzen will, muss es für sich selbst entscheiden.

Dieses Argument mit dem "Skalieren" habe ich schon häufiger gelesen. Was bedeutet denn skalieren überhaupt genau?
 
Gut skalieren heißt in etwa "doppelt so viele Server -> doppelt so schnell"
 
@Skalierung: Nicht nur Oder sondern nur so ;)

Also Java ist einfach am weitesten verbreitet. Vielleicht nicht beim Privatanwender aber im Industrie Bereich ist es einfach Stand. Selbst Google setzt auf eine Kombination aus Java und Python. Das Facebook auf PHP basiert ist wohl einfach dem geschuldet, dass der gute Herr einfach schnell was lauffähiges haben wollte. Man muss bei so großen Systemen aber auch sehen das diese Systeme mehr als nur aus dem PHP Frontend bestehen und zum liefern der Seiten ist PHP gut genug, weil den Web Tier zum skalieren zu bekommen ist immer noch am einfachsten ;)

Wenn du mal das andere Ende vom Entwickeln von Web Applikationen sehen willst, dann solltest du dir Java anschauen.
 
Da keiner meine Frage beantwortet hat, sage ich einfach mal: Das ist Käse... Schau dir PHP und ASP.NET an, Java sollte dich vorerst überhaupt nicht interessieren! Wenn Java auf einem Server ähnlich läuft wie auf einem PC erwarten einen jedenfalls eine Menge Sicherheitslücken und eine keinesfalls gute Performance.

Man kann einen Webshop auch in OCAML, LISP, BOO, COBOL oder Haskell programmieren. Die Frage ist halt, warum sollte man nicht die Lösungen nehmen, die verbreitet sind.

Solange du kein Projekt in der Größenordnung von Amazon oder Facebook starten willst, braucht dich Performance sowieso nicht zu interessieren, weil die Unterschiede da nicht gravierend genug sind. Die Frage ist auch ob Facebook selbst nicht besser weiß, warum sie PHP nehmen... Alle Programmiersprachen verändern sich ständig, manche werden besser (PHP) manche werden schlechter (Java)... bis sich der Trend wieder mal umkehrt...
 
Zuletzt bearbeitet:
darton schrieb:
Aber Facebook ist ja beispielsweise mit PHP programmiert,.

Facebook verwendet eine spezielle Technik (HipHop), die den PHP Code in C umwandelt und dann kompiliert. Somit läuft das ganze Skript ca. doppelt so schnell.

MfG
lizard99
 
F_GXdx schrieb:
Da keiner meine Frage beantwortet hat, sage ich einfach mal: Das ist Käse... Schau dir PHP und ASP.NET an, Java sollte dich vorerst überhaupt nicht interessieren!

Schon mal was von Servlets, JSP, JSF und EJB gehört? Java ist der Big Player im Enterprise Webbereich. Käse also sagst du, lies dich lieber mal ein.

Achja, und da du von Performance sprichst: ich glaube, etwas langsameres als PHP hättest du kaum empfehlen können.
 
Zuletzt bearbeitet:
Sniker schrieb:
Man muss bei so großen Systemen aber auch sehen das diese Systeme mehr als nur aus dem PHP Frontend bestehen und zum liefern der Seiten ist PHP gut genug, weil den Web Tier zum skalieren zu bekommen ist immer noch am einfachsten ;)
richtig, das Skalierungsargument an einer Sprache festzumachen ist mit Velaub absolut dämlich.
Bei so großen Systemen läuft Software die in mehr als einem dutzend Sprachen entwickelt wurde, auch kommt es da nicht immer auf das letzte Fünkchen Performance an (PHP vs C), denn die Wirtschaftlichkeit spielt auch eine Rolle, wenn man nur ein halb so großes Team braucht um z.B. die PHP Software zu warten, ist das günstiger, dann steckt man einfach mehr Geld in Server usw.
Die skalierbarsten Sprachen werden meist auch gar nicht in Betracht gezogen: Erlang, Scala usw. (das Actor-Modell und Skalierbarkeit gehen Hand in Hand)

F_GXdx schrieb:
Wenn Java auf einem Server ähnlich läuft wie auf einem PC erwarten einen jedenfalls eine Menge Sicherheitslücken und eine keinesfalls gute Performance.
da ist jemand aber einer großen Fehlinformation erlegen, Java ist verdammt effizient und ist neben C(++) und ADA die effizienteste Sprache, PHP ist da um Meilen abgeschlagen, aber da ist auch wieder die Frage ob man diese rohe Performance auch benötigt.
Klassifiziere nicht Java anhand der Desktop GUIs (auch Spiele), denn die sind, neija (;)). Was Java dagegen aber als Sprache für Server (Gameserver, Webseiten, sonstiges) zu bieten hat ist wirklich sehr sehr effizient.

F_GXdx schrieb:
Solange du kein Projekt in der Größenordnung von Amazon oder Facebook starten willst, braucht dich Performance sowieso nicht zu interessieren, weil die Unterschiede da nicht gravierend genug sind.
richtig, wer noch keine Performance oder Skalierungsprobleme hat, sollte sich damit auch nicht beschäftigen: premature optimization is the root of all evil.
Man sollte die Sprache wählen, die einem am sympathischsten ist.

F_GXdx schrieb:
Die Frage ist auch ob Facebook selbst nicht besser weiß, warum sie PHP nehmen... Alle Programmiersprachen verändern sich ständig, manche werden besser (PHP) manche werden schlechter (Java)... bis sich der Trend wieder mal umkehrt...
ich bin zwar auch fürs Web mehr PHP als Java Entwickler aber PHP wird ehrlich gesagt zunehmends schlechter, vor allem mit den unausgegorenen Ideen für die nächsten Versionen (ich sage nur type hints die nichts bewirken)


lizard99 schrieb:
Facebook verwendet eine spezielle Technik (HipHop), die den PHP Code in C umwandelt und dann kompiliert. Somit läuft das ganze Skript ca. doppelt so schnell.
und all die Jahre davor überlebte Facebook auch ohne HipHop ;)
 
So gut kenne ich mich da nicht aus, das gebe ich zu. Ich gebe allerdings zu bedenken, dass eine stark objektorientierte Sprache wie Java für Portale wie Facebook "by design" nicht geeignet scheint. Gerade wenn viele kleine Objekte und Befehle auszuführen sind, ist die Speicherverwaltung von Java und die große Menge an Klasseninstanzen einfach nicht effektiv. Auch wenn häufige Datenbankeninteraktion ins Spiel kommt, ist es schwer zu glauben, dass man da mit Java effektiv arbeiten kann.
 
F_GXdx schrieb:
Ich gebe allerdings zu bedenken, dass eine stark objektorientierte Sprache wie Java für Portale wie Facebook "by design" nicht geeignet scheint.
ich möchte nur mal erwähnen, dass die professionellen Entwicklungen von Software egal welche Sprache meist auf MVC aufsetzen, also auch große Frameworks einsetzen die hoch-objektorient sind, siehe z.B. das Zend Framework.

F_GXdx schrieb:
Gerade wenn viele kleine Objekte und Befehle auszuführen sind, ist die Speicherverwaltung von Java und die große Menge an Klasseninstanzen einfach nicht effektiv.
du darfst nicht die Speicherverwaltung von Java mit C vergleichen ;)
Das Erzeugen eines Objektes benötigt in Java nur noch ~10 Maschineninstruktionen [1] und ist somit wirklich sehr leichtgewichtig, mir ist so auch keine Sprache bekannt, bei der das schneller geht.
Von daher ist die Objektallokation extrem effizient, der Garbage Collector ist eben eine Sache über die man sich streiten kann, aber durch den generationsbasierten Ansatz ist das Wegräumen sehr kurzlebiger sehr sehr schnell, nur wirklich langlebige Objekte aufzuräumen ist "langsam" - bezogen auf die kurzlebigen.
Betrachtet man Java nun als Anwendungszweck für ein Facebook werden in einem wenige Millisekunden dauernden Request viele Objekte angelegt, die aber genauso schnell wieder weggeräumt werden können da sie nur sehr kuzlebig sind oder sogar nur lokal angelegt werden, ich verspreche dir die Objektorientierung ist da wirklich kein Problem.
Ich arbeite viel mit einem Java NIO-Framework (asynchrones IO) namens Netty, da wird quasi jede Nachricht die du von und zum Client überträgst durch viele Objekte dargestellt (Transformationen in einer Pipeline: echte Objekte zu Bytes für den Stream), langsam ist da nichts, limitierend ist immer die verfügbare Netzwerkbandbreite, selbst wenn ich die ganzen Objekte einsparen würde :evillol:

F_GXdx schrieb:
Auch wenn häufige Datenbankeninteraktion ins Spiel kommt, ist es schwer zu glauben, dass man da mit Java effektiv arbeiten kann.
Die Java VM ist eine über die Jahre am besten optimierte virtuelle Maschinen (vllt sogar die beste?) geworden, das Problem ist nur, dass dies einige nicht wahrnehmen weil zu Zeiten von 1.4 und davor (10 Jahre her) die Performance wirklich nicht so dolle war, was vor allem aber auch an den GUIs lag, die sind zwar heute besser, aber ein Fan bin ich ehrlich nicht davon.
Und für heutige Argumente werden dann eben funktional überladene Beispiel wie Vuze oder Eclipse gebracht, das Eclipse mal 1 Sekunde hängen kann liegt nicht an Java sondern an der Art wie Eclipse gebaut ist, Plugins können sich an 1 Million Hooks, baut da an einer Stelle ein Entwickler mal Mist, kann es eben schonmal hängen.


Also bloß nicht Java als langsame Sprache abtun, die Sprache ist hochoptimiert, ob man damit entwickeln möchte oder auf "coolere" (neuere) (Script-)Sprachen setzt ist ein anderes Thema, aber die Performance ist gigantisch.
Wie gesagt sollte man aber nicht nur die Performance betrachten auch Frameworks usw. und vor allem die eigene Produktivität in der Sprache.
Wenn man brachiale Performance benötigt kann man diese wenigen Teile immernoch neu in einer anderen Sprache programmieren.


[1] Java Concurrency in Practice, Kapitel 11.4.7
 
Zuletzt bearbeitet:
Da ich selbst schon an einem Java gameserver mitgearbeitet habe auf dem hunderte bis tausende Spieler gleichzeitig spielen können, kann ich das nicht bestätigen, dass Java schlecht performen würde. Java ist auf Seite der Server schon die Referenz, vor allem weil es so schön sauber OO ist und gut wartbar, testbar usw.

Außerdem bietet Java auch noch multithreading an. Wüsste nicht, dass PHP sowas bietet. ;)
 
Zuletzt bearbeitet:
F_GXdx schrieb:
So gut kenne ich mich da nicht aus, das gebe ich zu. Ich gebe allerdings zu bedenken, dass eine stark objektorientierte Sprache wie Java für Portale wie Facebook "by design" nicht geeignet scheint. Gerade wenn viele kleine Objekte und Befehle auszuführen sind, ist die Speicherverwaltung von Java und die große Menge an Klasseninstanzen einfach nicht effektiv. Auch wenn häufige Datenbankeninteraktion ins Spiel kommt, ist es schwer zu glauben, dass man da mit Java effektiv arbeiten kann.


Kannst du hierfür bitte mal richtige Argumente bringen!? Man kann nicht einfach was für ungeeignet halten, ohne Fakten zu nennen. In welcher Sprache man sowas umsetzt, ist eigentlich erstmal zweitrangig. Viel wichtiger ist, dass die Software eine vernünftige Architektur hat, dann kann man das ganze auch vernünftig skalieren. Und Facebook ist mit Sicherheit nicht nur in PHP geschrieben. Schon mal daran gedacht, dass bei einem riesigen verteilten System auch verschiedene Sprachen eingesetzt werden können.

Ich finde es echt gewagt, einfach mal zu behaupten, dass stark objektorientierte Sprachen "by design" nicht geeignet sein sollen. Ich kann dir da aufgrund mangelnder Praxiserfahrung jetzt nicht viele Gegenargumente liefern und ich lasse mich auch überzeugen, vorausgesetzt du bringst schlagkräftige Argumente. Was ich allerdings bezweifle.

Ich denke, man muss die Sprache nehmen, die geeignet ist. Und wenn ich lese, dass in PHP keine Thread-Programmierung möglich ist, dann bezweifle ich sehr, dass du hier eine hohe Skalierbarkeit erreichen kannst.

Viele machen immer den Fehler, nur auf die Sprache zu schauen. Natürlich ist es wichtig, aber die Architektur der Software ist viel wichtiger.

Woran machst du eigentlich fest, dass Java schlechter wird? Bei Java ist es eher der Fall, dass die Weiterentwicklung seit Jahren am stagnieren ist. Was sich aber demnächst auch ändern wird. Man darf gespannt sein...


Und ob deine Anwendung mit häufigen DB-Transaktionen klar kommt, ist auch eine Frage der Architektur, des Caching usw.
 
Zuletzt bearbeitet:
Danke für die Beiträge, war sehr informativ zu lesen. Wenn man selbst nicht auf dem Gebiet aktiv ist, ist es schwierig, immer den Überblick zu haben. Habt mich jedenfalls überzeugt (wenngleich das gerade erörterte für den TE wahrscheinlich nicht so interessant war...)

Eclipse ist IMHO extrem von der Festplattenperformance abhängig. Schnelle Festplatte (SSD) -> schnelles Eclipse.

@BB: Sorry, aber die Argumente stehen schon im Text.

Ich kann hier leider auch nur auf der theoretischen Ebene argumentieren, aber es ist doch klar, dass ich für viele kleine Anweisungen lieber eine echt imperative Programmiersprache verwende, als eine objektorientierte:

Imperativ: Do it!

Objektorientiert: Instantiate Class(), Class: Do it!, Garbage Collector: Clean up (anytime soon)!
 
Zuletzt bearbeitet:
Finde nicht, dass das Argumente sind. Hätte das gerne von dir untermauert gehabt...
 
Zurück
Oben