2010-08-31 11 views
6

Wir sind gelegentlich in der Lage, PHP-basierte Projekte zu übernehmen, aber da wir ein Java-Haus sind, suchen wir nach Möglichkeiten, ein PHP-Projekt (oder Codebase) in ein Java-Projekt zu verwandeln.PHP zu Java Migration

Die Ansätze, die wir kamen in einem gemischten Java/PHP Kontext zu arbeiten, sind:

  • PHP in Frontend und Java in Backend mit separater Front (PHP + JavaScript) und zurück (Java + SQL) Teams
  • beide Technologien in einem Java-Webapp, beispielsweise über Quercus mit einem oder mehreren Teams alles Java

Wir haben die Migration keine dieser Approac versucht hes, wir hatten das Glück genug Java-Projekte zu haben, an denen wir arbeiten konnten.

Sehen Sie andere Ansätze oder haben Sie einen der beschriebenen Ansätze ausprobiert?

+1

ich mit Quercus gearbeitet habe und es ist eine großartige Möglichkeit, PHP und Java (ich bin ein PHP-Entwickler) zu integrieren. Quercus wird WordPress mit geringfügigen Änderungen ausführen. Wired.com verwendet Quercus/Wordpress-Kombination für ihre Blogs. –

+0

@Brent Baisley, danke fürs Teilen. Ich favorisiere auch den Quercus-Ansatz, mit dem Remote-Service-Ansatz als Fallback. –

+0

Ein Nachteil des Quercus könnte sein, dass Mod_rewrite-Zuordnungen nicht verwendet werden können. Zumindest nicht in der Webapp –

Antwort

3

Ich habe Quercus verwendet. Ich denke, wenn es etwas wie Drupal unterstützt, dann ist es wahrscheinlich ziemlich ausgereift. Wenn Ihre PHP-Anwendung out-of-the-box funktioniert, dann bietet es Ihnen einen sehr schrittweisen Upgrade-Pfad zu Java, da Sie Ihre eigenen Plugins in Java schreiben und sie der PHP-Ebene zugänglich machen können, zum Beispiel mit einem JDBC-Backend.

Wie einfach es ist, hängt davon ab, wie gut die Schichten in der PHP-Anwendung getrennt sind. Wenn der Ansichtslayer beispielsweise gut getrennt ist, können Sie möglicherweise Controller- und Modelllogik durch eine Spring MVC-Anwendung ersetzen, die für die Ansicht ein "QuercusView" verwendet. Dadurch können Sie möglicherweise viel PHP wiederverwenden Sichtlogik.

Sie sollten auch überlegen, wie Sie eine Umfrage über den PHP-Code machen können - vielleicht ein Skript, das alle Funktionsaufrufe, Importe usw. extrahiert, so dass Sie die Quercus-Unterstützung für sie schnell testen können.

Entschuldigung, ich habe die PHP-Java-Bridge nicht verwendet, aber ich denke, dass die Quercus-Bibliothek heutzutage ziemlich ausgereift ist, so dass dies meine erste Wahl für eine gestaffelte Migration wäre.

+0

danke für deine antwort –

1

PHP/Java Bridge von Ihrem Interesse sein kann:

Das PHP/Java Bridge ist eine Implementierung eines Streaming, XML-basiertes Netzwerkprotokoll, das verwendet werden kann, einen native Skript Motor zu verbinden, zum Beispiel PHP, Scheme oder Python, mit einer Java Virtual Machine. Es ist bis zu 50 mal schneller als lokale RPC über SOAP, erfordert weniger Ressourcen auf der Web-Server-Seite. Es ist schneller und zuverlässiger als direkte Kommunikation über die Java Native Schnittstelle, und es erfordert keine zusätzliche Komponenten, um Java Prozeduren von PHP oder PHP-Prozeduren von Java aufrufen.

+0

@Safraz, danke für den Zeiger, könnte dies eine Technologie in der ersten Ansatz –

1

PHP in Frontend und Java in Backend mit separater Front (PHP + JavaScript) und zurück (Java + SQL) Teams

Dieses technisch machbar SOAP Verwendung ist.

mit beiden Technologien in einem Java Webapp, zum Beispiel über Quercus mit ein oder mehreren Teams

Ich habe keine Ahnung von diesem

Migration alles zu Java

Dies ist die bessere Option, aber es dauert je nach Größe e & Komplexität Ihres Projekts.

1

NUMITON kann für Sie nützlich sein:

http://java.dzone.com/announcements/automated-translations-php-jav

The shortest route from PHP to Java 

    Numiton offers an automated alternative to migrating PHP codebase. This way, 
established applications can benefit from the advantages offered by Java in its 
enterprise-level capacity. 

    Some of the risks inherent to any software migration are avoided by using an automated 
translation tool. Our PHPtoJava product performs variable type inference, 
objectualization and other operations in a uniform manner, the resulting appearance and 
behavior being identical to what the users already know. 


    Of course, the human factor still plays an important role in the post-translation 
phases: application fine-tuning and functional testing. The speed and accuracy of the 
entire process surpass however those of a manual translation. 


    One of the applications we have migrated this way is the well-known forum engine 
phpBB. The translation result, nBB2, powers our own forum and was recently donated to the 
open-source community as a SourceForge project. 
+0

Dank für den Zeiger verwendet werden. Das hört sich nach einem interessanten Ansatz an, aber ich glaube, dass das Ergebnis Java-Code wäre, der keine Best Practices von J2EE befolgen würde. Multi-Tier-Architektur, AOP verwaltete Transaktionen usw. würden nicht verwendet werden –

2

Meine Erfahrungen mit Querces sind nicht so gut. Vielleicht hat es sich verbessert, aber als ich es vor zwei Jahren versuchte (eine lange Zeit, ich weiß), war es bei weitem nicht komplett und unterstützte noch nicht alle Funktionen. Wenn Ihre Anwendung einige Erweiterungen (z. B. von PECL) verwendet, werden Sie Schwierigkeiten haben, dies unter Querces auszuführen.

Wir sind gerade dabei, eine Webanwendung von PHP nach Java zu migrieren. Wir entwerfen eine SOA und werden wahrscheinlich einige Datenzugriffsobjekte in der PHP-Anwendung durch eine Version ersetzen, die mit internen Webdiensten kommuniziert. Derzeit verwenden wir Thrift als Protokoll für unsere internen Webservices, ein Framework, das auch einen Client für PHP zur Verfügung stellt. Wir erwarten, dass dies die Flexibilität während der Migration erhöht (was uns erlaubt, Schritt für Schritt und nicht auf einmal zu migrieren).

+0

danke für die Freigabe. Sparsamkeit klingt wie eine gute Annäherung. Vielleicht auch schneller als die PHP/Java Bridge. Ich habe Quercus nicht selbst probiert, aber die Ergebnisse von bechmark sind interessant. –

1

Ich habe keine Erfahrung mit PHP in einer JVM, aber ich wette, dass IBM tut. :) Sie könnten Project Zero betrachten.

http://www.projectzero.org/php/

scheint ähnlich wie Querces oder die andere, was jemand verbunden. Die einzige andere Sache, die Sie nicht erwähnt haben, ist der Refactoring des PHP-Codes, weil ich davon ausgehe, dass es sich um eine ältere Codebase handelt, die in PHP 4 geschrieben ist.

+0

@llbbl, danke für die antwort. Project Zero sieht interessant aus. –

1

I know this is 2 years old question but i still want to contribute. Wir migrieren vom vollen Java Portal zu PHP + Java. Wir haben 14 Millionen Benutzer. Dieser Entwurf benötigt keine Webdienste, da wir Java als JSON-Provider für PHP und JS verwenden. Wir werden das Ergebnis bald sehen ...

PHP in Frontend und Java in Backend mit separater Front (PHP + JavaScript) und zurück (Java + SQL) Teams

+0

Und wir sahen das Ergebnis; es ist perfekt. In unserem Fall wird PHP auch von der Smarty-Template-Engine und dem Memcache unterstützt. Sehr effektiv... – yuceel