Uso básico

Ejemplo #1 Ejemplo de Java

<?php
// obtener una instancia de la clase de Java java.lang.System en PHP
$system = new Java('java.lang.System');

// demostrar el acceso a las propiedades
echo 'Versión de Java=' $system->getProperty('java.version') . '<br />';
echo 
'Vendedor de Java=' $system->getProperty('java.vendor') . '<br />';
echo 
'SO=' $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");

echo 
$formatter->format(new Java('java.util.Date'));
?>

Ejemplo #2 Ejemplo de AWT

<?php
// Este ejemplo sólo está pensado para ejecutarse usando CLI.

$frame  = new Java('java.awt.Frame''PHP');
$button = new Java('java.awt.Button''¡Hola Mundo Java!');

$frame->add('North'$button);
$frame->validate();
$frame->pack();
$frame->visible True;

$thread = new Java('java.lang.Thread');
$thread->sleep(10000);

$frame->dispose();
?>
Notas:
  • new Java() creará una instancia de una clase si está disponible un constructor apropiado. Si no se pasan parámetros y el constructor predeterminado es útil ya que proporciona acceso a clases como java.lang.System la cuál expone la mayoría de sus funcionalidades a través de métodos estáticos.
  • Al acceder a un miembro de una instancia se mirará primero por propiedades bean y después por campos públicos. En otras palabras, print $date.time primero intentará ser resuelto como $date.getTime(), después como $date.time.
  • Los miembros estáticos y las instancias se pueden acceder en un objeto con la misma sintaxis. Además, si el objeto java es del tipo java.lang.Class, se puede acceder a los miembros estáticos de la clase (campos y métodos).
  • El lanzamiento de excepciones resulta en advertencias en PHP, y resultados NULL. Las advertencias se pueden eliminar prefijando la llamada al método con un signo "@". Las siguientes API se pueden usar para recuperar y reiniciar el último error:

  • La resolución de sobrecarga es, en general, un problema grave dadas las diferencias de tipos entre dos lenguajes. La extensión Java de PHP emplea una sencilla, pero muy efectiva, métrica para determinar qué sobrecarga es la que mejor coincide. Además, los nombres de los métodos en PHP no son sensibles a mayúsculas-minúsculas, incrementando potencialmente el número de sobrecargas a seleccionar. Una vez que un método es seleccionado, los parámetros son coaccionados si es necesario, posiblemente con una pérdida de infomarción (ejemplo: los números de coma flotante de precisión doble serán convertidos a booleanos).
  • En la tradición de PHP, las matrices y tablas hash se pueden usar intercambiablemente. Observe que las tablas hash en PHP sólo pueden ser indexadas por enteros o cadenas; y que las matrices de tipos primitivos en Java no se puede interpolar. También observe que estos constructores son pasados por valor, por lo que puede ser caro en términos de memoria y tiempo.

add a note add a note

User Contributed Notes 3 notes

up
0
sebastiansajie at yahoo dot com
1 month ago
Hi, I tried example #1 but keep getting a - Class 'Java' not found error. Do I need to point to the library that has the java class ? Or do I need to download the 'java.lang.System' jar file and store it in my webserver and point to it? How may this be done. Thank you for your answer.
up
0
anto dot justus at gmail dot com
4 years ago
Session sharing with php and java
------------------------------------------

<?php require_once("java/Java.inc");
$session = java_session();
?>

<HTML>
<TITLE>PHP and JSP session sharing</title>
<BODY>
<?php

if(is_null(java_values($session->get("counter")))) {
 
$session->put("counter", 1);
}

$counter = java_values($session->get("counter"));
print
"HttpSession variable \"counter\": $counter<br>\n";
$session->put("counter", $counter+1);
?>
<a href="sessionSharing.jsp">JSP page</a>
</BODY>
</HTML>
up
-2
anto dot justus at gmail dot com
4 years ago
php java 

The PHP code here is simple and straight forward. It is not
 OOP. But you probably got enough of that while doing the
 Java code.

<?php

java_require
("F:\\wamp5\\www\\classes\\");
$obj = new Java("hello");

// Call the "sayHello()" method

$output = $obj->SayHello();

echo
$output.' this text in PHP

'
; // Displays (so this comes from the class!)

// Call the "SayNumber()" method

$output = $obj->SayNumber();

// Displays (so this comes from the class!)
echo $output.' is a lucky number';

//Because the JVM caches everything we want reset while
 
playing with the code. Otherwise the

// a cached version of the same class file will be used
rather than the new one

echo "
Resetting back-end to initial state\n"
;

// suppress the warning message from the use of reset.

@java_reset();

?>

That's it. Now browse to the PHP page and you should get
 the results shown below.
To Top