Existen dos formas diferentes de integrar PHP y Java: en primer lugar, se puede integrar PHP dentro de un entorno de ejecución de servlets de Java, que en estos momentos es una solución más estable y más eficiente. La segunda opción es la de integrar Java dentro de PHP. La primera forma de integración se realiza a traves de un módulo SAPI que actua como interfaz del servidor de servlets. La segunda forma se realiza mediante esta extensión de Java.
Esta extensión de Java proporciona de forma sencilla los medios necesarios para crear e invocar métodos sobre objetos de Java desde PHP. La JVM se crea utilizando JNI y todo se ejecuta en un unico proceso.
Esta extensión es EXPERIMENTAL. Esto significa que el comportamiento de esta extensión, los nombre de sus funciones y en definitiva TODO lo documentado sobre esta extensión, puede cambiar en una futura versión de PHP SIN AVISO. La advertencia queda hecha, y utilizar esta extensión queda bajo su propia responsabilidad.
Para utilizar esta extensión es necesario disponer de una máquina virtual Java (JVM) instalada en el sistema.
Esta extension » PECL no esta ligada a PHP.
En PHP 4 la fuente de las extensiones PECL pueden encontrarse en el directorio ext/ que se existe en las fuentes de PHP o en el enlace PECL de arriba. Para incluir el soporte de Java en PHP, es necesario añadir el parámetro --with-java[=DIR] a las opciones de configuración de PHP, donde DIR apunta al directorio base de instalación del JDK. Esta extensión solamente puede ser construida como un módulo compartido. En el archivo php-src/ext/java/README se incluye mas información sobre como construir esta extensión.
Los usuarios de Windows deben activar la opción php_java.dll en el fichero php.ini para poder utilizar estas funciones. En PHP 4, esta DLL se encuentra en el directorio extensions/ que existe en los binarios de PHP para Windows. Podeis descargar esta DLL de las extensiones PECL desde la pagina » PHP Downloads o desde » http://snaps.php.net/.
Note: Para poder trabajar con este módulo en un entorno Windows con una versión de PHP <= 4.0.6, se debe hacer accesible el archivo jvm.dll desde el PATH del sistema. Para versiones de PHP > 4.0.6 no es necesario realizar esta operación.
El comportamiento de estas funciones está afectado por los valores definidos en php.ini.
Nombre | Valor por defecto | Donde se cambia | Registro de cambios |
---|---|---|---|
java.class.path | NULL | PHP_INI_ALL | |
java.home | NULL | PHP_INI_ALL | |
java.library.path | NULL | PHP_INI_ALL | |
java.library | JAVALIB | PHP_INI_ALL |
Esta extensión no tiene ningún tipo de recurso definido.
Esta extensión no tiene ninguna constante definida.
Example#1 Ejemplo de Java
<?php
// se obtiene la instancia de la clase de Java java.lang.System desde PHP
$system = new Java('java.lang.System');
// ejemplo de acceso a las propiedades de Java
print 'Version de Java='.$system->getProperty('java.version').' <br>';
print 'Desarrollador de la JVM=' .$system->getProperty('java.vendor').' <br>';
print 'Sistema Operativo='.$system->getProperty('os.name').' '.
$system->getProperty('os.version').' on '.
$system->getProperty('os.arch').' <br>';
// ejemplo de java.util.Date
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
print $formatter->format(new Java('java.util.Date'));
?>
Example#2 Ejemplo de AWT
<?php
// Este ejemplo solo puede ser ejecutado como CGI.
$frame = new Java('java.awt.Frame', 'PHP');
$button = new Java('java.awt.Button', 'Hola Mundo de Java!');
$frame->add('North', $button);
$frame->validate();
$frame->pack();
$frame->visible = True;
$thread = new Java('java.lang.Thread');
$thread->sleep(10000);
$frame->dispose();
?>
Las excepciones que se lanzan durante la ejecución se transforman en avisos de tipo "warning" de PHP y en resultados de tipo NULL. Los avisos de tipo "warning" se pueden eliminar añadiendo el prefijo "@" a la llamada del metodo. Las siguientes funciones de la API se pueden utilizar para obtener y borrar el ultimo error surgido:
Basandose en el mismo mecanismo que la extension de Java de PHP, la SAPI de los servlets Java permite ejecutar PHP como un servlet de Java. La ventaja más significativa de esta forma de actuar es que se aprovechan las características de "pooling" y de reutilización de recursos implementadas por la mayoría de servidores que permiten ejecutar servlets. El archivo php4/sapi/README contiene las instrucciones necesarias para compilar el modulo SAPI para los servlets Java. Notas: