2010-08-31 50 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