2010-08-31 53 views
6

我們偶爾可以接管基於PHP的項目,但是因爲我們是一個Java-house,所以我們正在尋找將PHP項目(或代碼庫)變成Java項目的方法。PHP到Java的遷移

的方法,我們提出了一個混合的Java/PHP方面的工作是:

  • PHP在與獨立前(PHP + JavaScript的)和背部(Java + SQL)隊
  • 後端前端和Java
  • 通過Quercus使用這兩種技術在Java Web應用程序,例如一個或多個團隊
  • 一切都遷移到Java

我們還沒有嘗試過任何這些approac的hes,因爲我們很幸運擁有足夠的純Java項目。

您是否看到其他方法,或者您是否嘗試過任何描述的方法?

+1

我和曾櫟它是集成PHP和Java的好方法(我是一個PHP開發人員)。 Quercus將通過非常微小的修改來運行WordPress。 Wired.com將Quercus/Wordpress組合用於他們的博客。 – 2010-08-31 16:30:31

+0

@Brent Baisley,感謝分享。我也贊成Quercus方法,遠程服務方式作爲後備方案。 – 2010-08-31 16:34:14

+0

Quercus的缺點可能是無法使用mod_rewrite映射。至少不是在webapp – 2010-08-31 16:40:44

回答

3

我已經使用了櫟屬。我認爲如果它支持像Drupal這樣的東西,那麼它可能相當成熟。 如果您的PHP應用可以直接使用,那麼它可以爲您提供一個非常逐步的Java升級途徑,因爲您可以使用Java編寫自己的插件並將它們暴露給PHP層,例如使用JDBC後端。

它的容易程度取決於PHP應用程序中圖層的分離程度。例如,如果視圖圖層分離得很好,那麼您可以用一個使用「QuercusView」視圖的Spring MVC應用程序替換控制器和模型邏輯 - 您可以重新使用很多PHP查看邏輯。

您還應該考慮如何對PHP代碼進行調查 - 可能是一個提取所有函數調用,導入等的腳本,以便您可以快速測試它們的Quercus支持。

對不起,我還沒有使用PHP-Java橋接,但我認爲現在的Quercus庫已經相當成熟,所以這將是我第一次進行分階段遷移。

+0

感謝您的回答 – 2010-08-31 18:23:50

1

PHP/Java Bridge可能是你的興趣:

的PHP/Java橋是一個 實現流媒體的, 基於XML的網絡協議,它可以 用於連接本地腳本 引擎,例如PHP,Scheme或 Python,帶有Java虛擬機。 通過SOAP,它比本地的 RPC快50倍,在網絡服務器端需要更少的資源 。它比通過Java Native 接口的直接 通信更快速,並且它不需要 附加組件來調用來自Java的PHP程序或PHP程序 來自Java的 程序。

+0

@Safraz,感謝您的指針,這可能是一種技術,在第一種方法 – 2010-08-31 16:11:37

1

PHP在前端和Java後臺中與 獨立前(PHP + JavaScript的) 和背部(Java + SQL)這在技術上是使用SOAP可行隊

。使用

這兩種技術在Java Web應用程序,例如通過櫟與 一個或多個團隊

我不知道這個

遷移一切的Java

想法

這是更好的選擇,但它需要時間取決於大小e &您的項目的複雜性。

1

NUMITON可能對您有用:

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

感謝指針。這聽起來像一個有趣的方法,但我相信結果將是不遵循任何J2EE最佳實踐的Java代碼。多層架構,AOP託管交易等將不會被使用 – 2010-08-31 16:14:54

2

我與Querces體驗不太好。也許它有所改進,但是當我嘗試了兩年前(很長一段時間,我知道)的時候,它還遠遠沒有完成,並且還不支持所有功能。另外,如果您的應用程序使用某些擴展(例如來自PECL),則在Querces下啓動並運行時會遇到困難。

我們目前正在將Web應用程序從PHP遷移到Java。我們正在設計一個SOA,我們可能會用與內部Web服務對話的版本替換PHP應用程序中的一些數據訪問對象。目前,我們使用Thrift作爲我們內部Web服務的協議,該框架還具有可用於PHP的客戶端。我們希望這可以提高遷移期間的靈活性(允許我們逐步遷移,而不是一次全部遷移)

+0

感謝分享。節儉聽起來很不錯。也許也比PHP/Java Bridge更快。我自己並沒有嘗試過櫟屬植物,但是它們的結果很有趣。 – 2010-08-31 16:17:32

1

我沒有任何在JVM內部運行PHP的經驗,但我敢打賭IBM是這麼做的。 :) 你可能會考慮Project Zero。

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

似乎類似於Querces或其他東西的人聯繫在一起。唯一沒有提到的我能想到的其他事情是重構PHP代碼,因爲我假設它是以PHP 4方式編寫的較舊的代碼庫。

+0

@llbbl,謝謝你的回答。 Project Zero看起來很有趣。 – 2010-08-31 19:11:55

1

I know this is 2 years old question but i still want to contribute.我們正在從完整的java入口遷移到php + java。我們有1400萬用戶。這種設計不需要Web服務,因爲我們使用java作爲json提供者,用於php和js。我們很快就會看到結果......

PHP在前端和Java後臺中有獨立的前 (PHP + JavaScript的)和背部(Java + SQL)隊

+0

我們看到了結果;這十分完美。在我們的例子中,PHP也通過smarty模板引擎和memcache獲得它的力量。非常有效... – yuceel 2013-04-18 21:01:22