2010-08-31 38 views
6

Ocasionalmente estamos en condiciones de asumir proyectos basados ​​en PHP, pero como somos una casa Java, estamos buscando formas de convertir un proyecto PHP (o base de código) en un proyecto Java.Migración de PHP a Java

Los enfoques que se acercaron a trabajar en un contexto/PHP mixta Java son:

  • PHP en frontend y Java en el back-end con el frente separada (PHP + JavaScript) y de vuelta (Java + SQL) equipos
  • usando ambas tecnologías en una aplicación Web Java, por ejemplo a través de Quercus con uno o varios equipos
  • migrar todo a Java

no hemos probado ninguno de estos approac hes ya que hemos tenido la suerte de tener suficientes proyectos solo de Java para trabajar.

¿Ves otros enfoques o has probado alguno de los enfoques descritos?

+1

He trabajado con Quercus y es una gran manera de integrar PHP y Java (soy un desarrollador de PHP). Quercus ejecutará WordPress con modificaciones muy pequeñas. Wired.com utiliza el combo Quercus/Wordpress para sus blogs. –

+0

@Brent Baisley, gracias por compartir. También estoy a favor del enfoque de Quercus, con el enfoque del servicio remoto como una alternativa. –

+0

Una desventaja de Quercus podría ser que las asignaciones de mod_rewrite no se pueden usar. Al menos no dentro de la aplicación webapp –

Respuesta

3

He usado Quercus. Creo que si es compatible con algo como Drupal, entonces es probable que sea bastante maduro. Si su aplicación PHP funciona de la caja, entonces le ofrece una ruta de actualización muy gradual a Java, ya que puede escribir sus propios complementos en Java y exponerlos a la capa PHP, como el uso de un back-end JDBC.

Lo fácil que es todo depende de qué tan bien separadas estén las capas en la aplicación PHP. Por ejemplo, si la capa de visualización está bien separada, es posible que pueda reemplazar tanto la lógica del controlador como la del modelo con una aplicación Spring MVC que use un 'QuercusView' para la vista; puede reutilizar una gran parte del PHP ver lógica.

También debería considerar cómo puede realizar una encuesta del código PHP, tal vez una secuencia de comandos que extraiga todas las llamadas a funciones, importaciones, etc. para que pueda probar rápidamente el soporte de Quercus para ellas.

Lo siento, no he usado el puente PHP-Java, pero creo que la biblioteca Quercus está bastante madura en estos días, por lo que sería mi primera opción para una migración por etapas.

+0

gracias por su respuesta –

1

PHP/Java Bridge pueden ser de su interés:

El/Puente de Java PHP es un implementación de un streaming, protocolo de red basado en XML, que puede puede utilizar para conectar un nativo motor de scripts , por ejemplo PHP, Scheme o Python, con una máquina virtual Java. Es hasta 50 veces más rápido que RPC a través de SOAP, requiere menos recursos en el lado del servidor web. Es más rápido y más confiable que la comunicación directa a través de la interfaz Java Native , y no requiere componentes adicionales para invocar a los procedimientos Java de PHP o PHP de Java.

+0

@Safraz, gracias por el puntero, esta podría ser una tecnología que se utilizará en el primer acercamiento –

1

PHP en frontend y backend de Java en con equipos

Esto es técnicamente factible utilizando SOAP frontal separada (PHP + JavaScript) y la espalda (Java + SQL).

usando ambas tecnologías en una aplicación web Java , por ejemplo a través de Quercus con uno o varios equipos

no tengo ni idea acerca de este

migrar todo a Java

Esta es la mejor opción, pero tomará tiempo según el tamaño e & complejidad de su proyecto.

1

NUMITON puede ser útil para usted:

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

gracias por el puntero. Esto suena como un enfoque interesante, pero creo que el resultado sería un código Java que no seguiría ninguna de las mejores prácticas de J2EE. Arquitectura de varios niveles, transacciones gestionadas AOP, etc. no se utilizarán –

2

Mis experiencias con Querces no son tan buenos. Tal vez ha mejorado, pero cuando probé algo así como hace dos años (hace mucho tiempo, lo sé), estaba lejos de ser completo y aún no era compatible con todas las funciones. Además, si su aplicación está utilizando algunas extensiones (por ejemplo, de PECL), experimentará dificultades para ejecutar esto en Querces.

Actualmente estamos en el proceso de migrar una aplicación web de PHP a Java. Estamos diseñando un SOA y probablemente reemplazaremos algunos objetos de acceso a datos en la aplicación PHP con una versión que se comunique con los servicios web internos. Actualmente estamos utilizando Thrift como protocolo para nuestros servicios web internos, un marco que también tiene un cliente disponible para PHP. Esperamos que esto aumente la flexibilidad durante la migración (permitiéndonos hacer una migración paso a paso, en lugar de hacerlo todo a la vez)

+0

gracias por compartir. Ahorrar suena como un buen enfoque. Tal vez también más rápido que el PHP/Java Bridge. No he intentado con Quercus, pero los resultados de bechmark son interesantes. –

1

No tengo ninguna experiencia ejecutando PHP dentro de una JVM, pero apuesto a que IBM sí. :) Puedes considerar Project Zero.

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

parece similar a Querces o esa otra cosa que alguien vinculado. La única cosa que no mencionaste que puedo pensar es refactorizar el código PHP porque supongo que es una base de código anterior escrita en PHP 4.

+0

@llbbl, gracias por la respuesta. Project Zero parece interesante. –

1

I know this is 2 years old question but i still want to contribute. Estamos migrando del portal completo de Java a php + java. Tenemos 14 millones de usuarios. Este diseño no necesita servicios web porque usamos Java como proveedor json para php y js. Veremos el resultado pronto ...

PHP en frontend y backend de Java en la parte delantera separada (PHP + JavaScript) y de vuelta (Java + SQL) equipos

+0

Y vimos el resultado; es perfecto. En nuestro caso, PHP también obtiene su poder del motor de plantillas smarty y Memcache. Muy efectivo... – yuceel