Quercus

RECU-0268 (Recurso Ficha Técnica)

Descripción

Quercus es una implementación de PHP 5 realizada completamente en Java y ha sido publicado bajo licencia GPL de software libre. Aunque puede sonar extraño, lo que hace Quercus es compilar todo el código del núcleo de PHP 5 y de algunas de sus extensiones más comunes en código Java que es el que realmente se ejecuta. Así, las aplicaciones PHP pueden utilizar directamente las librerías y tecnologías de Java como JMS, EJB, SOA, Hibernate y Spring.

Puede parecer absurdo utilizar Spring teniendo Symfony o Hibernate teniendo Propel y Doctrine, pero lo cierto es que muchas empresas requieren esas tecnologías y algunos proyectos consisten en la integración de diferentes sistemas, por lo que Quercus puede ser una solución perfecta.

Quercus permite integrar de la forma más directa posible los servicios y aplicaciones Java con los scripts de PHP. Así, las aplicaciones PHP pueden aprovechar algunas de las ventajas de Java como la utilización de hilos que nos permite ejecutar paralelamente códico PHP (mejorando de esta manera el rendimiento de la aplicación), además del tratamiento de las conexiones y sesiones en el servidor (las aplicaciones de Java comparten un mismo contexto de ejecución en el servidor). Lo que resulta espectacular es que la mayoría de aplicaciones PHP se ejecutan tan bien o mejor que con el intérprete por defecto de PHP sin necesidad de realizar ningún cambio.

Ejemplo de uso

A continuación un breve ejemplo del manejo de un Bean desde PHP. Primero la declaración del Bean

WEB-INF/classes/example/MyBean.java

package example;

public class MyBean
{
  int _value;

  public MyBean(int value)
  {
    _value = value;
  }

  public int getValue()
  {
    return _value;
  }

  public String makeMessage()
  {
    return "Hello, my value is " + _value;
  }
}

y posteriormente el script PHP

mybean.php

<?php

  import example.MyBean;

  $bean = new MyBean(123);

  var_dump($bean);
  var_dump($bean->value);
  var_dump($bean->makeMessage());
?>

Ventajas e inconvenientes

Los desarrolladores PHP pueden encontrar ventajas con el uso de Quercus aun cuando no tienen intención de escribir código Java. Porque Quercus esta escrito para utilizarse con Resing, un servidor de aplicaciones de Java y con ello se ganan todas las ventajas de Java, incluyendo:

  • Seguridad: Desde que Quercus y sus módulos están en Java, los problemas con punteros y violaciones de segmentos en C se eliminan.
  • Escalabilidad: Los programas en PHP pueden tomar ventajas en el manejo de sesiones en PHP y el balanceo de carga PHP.
  • Rendimiento: Quercus utiliza aceleradores como APC para mejorar el rendimiento. Mejora la velocidad en torno al 400%.
  • Cacheado: Las aplicaciones PHP que usan Quercus pueden beneficiarse de las ventajas de cacheado de proxy que ofrece el servidor Resing. También pueden utilizar APC para el cacheado, también incluido en Quercus
  • Manejo de conexiones, transacciones, JMS: usando Quercus, los programas de PHP pueden optimizar su manejo de conexiones utilizando el pool de conexiones que ofrece Resing, así como utilizar el manejo de transacciones o utilidades Java como JMS

Desde el punto de vista de los desarrolladores Java, utilizar Quercus mejora lo siguiente:

  • Los desarrolladores Java pueden desplegar de forma automática aplicaciones PHP como MediaWiki, Drupal, Wordpress, Gallery2 and DocuWiki.
  • Desde que la administración usa PHP para los scripts de beans JMX, se puede utilizar para facilitar el manejo de los JMX.
  • Las aplicaciones Java pueden utilizar PHP para la capa de presentación

Requisitos e incompatibilidades

  • Se tiene que utilizar el servidor de aplicaciones Resing
  • Se tiene que utilizar una versión de PHP, a partir de la 5.2

Enlaces externos