News

Dienstag, 14. August 2012 | News

Facebook will PHP mit der JVM kompilieren

(Link zum Artikel: http://www.it-republik.de/php/news/064178)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Wenn es nach Facebook geht, dann soll PHP bald schon in der Multi Language Virtual Machine laufen. Auf dem Java Virtual Machine Summit in San Francisco hat die Facebook-Delegation sich für die Implementiertung von PHP in die JVM via InvokeDynamic ausgesprochen. Alexander Turner sieht das als Anfang vom Ende des Interpreters in der Mainstream-Programmierung.

Neben Facebook nutzt auch General Electrics die Multi Language Virtual Machine, um seinen Code schneller zu berechnen. Die alten Magik-Programme profitieren von der flinken MLVM, was Turner als Mitentwickler dieses Projekts aus erster Hand zu berichten weiß. Für PHP könne er sich eine wesentlich einfachere Implementierung vorstellen, da die Sprache simpler sei.

MLVM soll für Ruby, PHP und Magik das werden, was die V8-Engine für JavaScript ist. Die dynamischen Sprachen werden von der Virtual Machine in Bytecode kompiliert und laufen anschließend teilweise schneller als C++-Programme, heißt es weiter. Das Da Vinci Machine Project existiert schon seit einigen Jahren, doch bedarf es immer einiger Manpower, die einzelnen Sprachen tatsächlich in die JVM zu implementieren. Mit Facebook als Antreiber der PHP-Initiative sieht es für die Websprache aber durchaus zuversichtlich aus.

Was meint Ihr? Braucht PHP den Boost einer JVM? Glaubt Ihr daran, dass Interpreter bald von der Bildfläche verschwinden sollen? Für Details zu der Technologie der MLVM könnt Ihr Turners Blog-Artikel in ganzer Länge lesen.

(eh)

Anzeige

Kommentare

Gravatar Franziskaner 14.08.2012
um 13:47 Uhr
"Was meint Ihr? Braucht PHP den Boost einer JVM? Glaubt Ihr daran, dass Interpreter bald von der Bildfläche verschwinden sollen? Für Details zu der Technologie der MLVM könnt Ihr Turners Blog-Artikel in ganzer Länge lesen."

Die Arbeit hätte ich mir von einem guten Nachrichtenportal erhofft. Was könnt ihr mir empfehlen?
#zitieren
Gravatar eh 14.08.2012
um 14:03 Uhr
Danke der Nachfrage!

Es wäre schön, wenn man diese Frage leicht beantworten könnte. Leider geht die Meinung der Community stark auseinander, wie sich hier http://www.reddit.com/r/PHP/comments/y56gs/facebook_moving_to_the_jvm/ zeigt. Die JVM wird von den einen als lahmer Ressourcenfresser beschimpft, während andere sagen, dass dies stark von der Qualität des damit ausgeführten Programms abhängt. Also falls Facebook seinen Job gut macht, und das Projekt nicht so versandet wie Googles PHP.reboot (http://code.google.com/p/phpreboot/), könnten wir es hier mit einer starken Lösung zu tun bekommen.
#zitieren
Gravatar Thomas 14.08.2012
um 17:02 Uhr
Wenn ich Code mit einer Java Virtual Machine ausführen möchte, dann schreibe ich den in Java oder vielleicht noch in Scala.
Ich möchte nicht spekulieren, ob Facebook nun auch noch die C++-Programmierer geflüchtet sind, aber das wirkt schon etwas planlos.
Besser fände ich z.B. PHP-Extensions in Javascript zu schreiben und die dann über die V8 auszuführen.
#zitieren
Gravatar Tom 14.08.2012
um 18:08 Uhr
PHP ist dafür gemacht gut horizontal zu skalieren - nicht vertikal. Wer jetzt anfängt eine VM einzubauen, die zwar gut vertikal skaliert aber grottenschlecht horizontal, der bekommt keine eierlegende Wollmilchsau, sondern eine Programmiersprache die WEDER horizontal NOCH vertikal vernünftig skaliert!

Die VM wird nicht plötzlich weniger Ressourcen verbrauchen, nur weil PHP schonender damit umgeht und PHP wird nicht plötzlich andere C++-Bibliotheken und natives UTF-8 bekommen, nur weil eine VM da ist.

Der bessere Weg den JIT-Compiler mit Caching (den es in PHP bereits gibt) konzentriert zu pflegen und weiterzuentwickeln.

Und Facebook hat nach dem verpatzten Börsengang momentan nun wirklich ganz andere Probleme, als langfristige gemeinnützige Projekte zu stemmen. Denen hängen verärgerte Aktionäre im Nacken, die Rendite sehen wollen!
Ich denke, dass Facebook mal eine Idee geäußert hat und ansonsten an den TEAM-Gedanken der Community glaubt: T.oll E.in A.nderer M.acht's!

Außerdem frage ich mich, was das überhaupt soll? Auf einem virtuellen Server mit einer virtuellen Maschine virtuelle Ressourcen zu virtualisieren?
Davon, dass man immer weitere Schichten zwischen sich selbst und das Host-System baut, ist bisher noch nie irgendetwas performanter geworden.
#zitieren
Gravatar cafebabe 14.08.2012
um 18:37 Uhr
Der Ressourcenverbrauch ist eher für Client-Anwendungen für Endanwender wichtig. Auf dem Server kann eine VM ruhig den Großteil des Hauptspeichers für sich beanspruchen, sofern nicht andere speicherintensive Anwendungen nebenbei laufen. Der Unterschied liegt also nur darin, wann der Speicher allokiert von der Plattform wird. Interpreter, wie PHP (bzw. deren Wrapper, wie CGI) tun das Portionsweise, soviel, wie sie gerade benötigen. Auf Servern, auf denen nichts anderes läuft, ist das sogar teurer. Und wenn dann noch sehr viele Prozesse des Interpreters laufen, die diesen Speicher portionsweise allokieren, kommt es viel schneller zur Fragmentierung des Hauptspeichers. Abgesehen von der Allokation des Hauptspeichers beim Start sind die üblichen JVMs (Oracle, OpenJDK, IBM) deutlich Effizienter, was die Verwaltung des dann allokierten Speichers betrifft.

Der Hauptvorteil der JVM liegt aber im JIT-Compiler. Ich glaube, dass es zu schwer wurde mit dem HipHop die Code-Pfade gut zu optimieren. Das bekommt man erst zur Laufzeit hin. Die Speicherverwaltung dürfte da eher nebensächlich sein.
#zitieren

Folgende Links könnten Sie auch interessieren

zurück zum Seitenanfang