Exemplo #1 Exemplo da Java

<?php
// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' $system->getProperty('java.version') . '<br />';
echo 
'Java vendor=' $system->getProperty('java.vendor') . '<br />';
echo 
'OS=' $system->getProperty('os.name') . ' ' .
             
$system->getProperty('os.version') . ' on ' .
             
$system->getProperty('os.arch') . ' <br />';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
                      
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

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

Exemplo #2 Exemplo da AWT

<?php
// Este exemplo é pretendindo para ser executado em CLI.

$frame  = new Java('java.awt.Frame''PHP');
$button = new Java('java.awt.Button''Hello Java World!');

$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() criará uma instância de uma classe se um construtor apropriado estiver disponível. Se nenhum parâmetros for passado e o construtor padrão for utilizável já que prove acesso à classes como java.lang.System que expõe a maior parte de suas funcionalidades através de métodos estáticos.
  • Acessar um membro de uma instância primeiro procurará por uma propriedade bean, depois por campos públicos. Em outras palavras, print $date.time elel primeiro tentará trabalhar com $date.getTime(), depois com $date.time.
  • Tanto membros estáticos como de instância podem ser acessados em um objeto com a mesma sintaxe. Além disso, se o objeto java é do tipo java.lang.Class, membros estáticos da classe (campos e métodos) podem ser acessados.
  • Exceções disparadas resultam em avisos do PHP e em resultados NULL. Os avisos podem ser eliminados prefixando uma chamada de método com um sinal "@". As seguintes APIs podem ser usadas para obter e reniciar o último erro:

  • Resolução de sobrecarga em geral é um problema complicado dada às diferenças nos tipos entre as duas linguagens. A extensão Java aplica uma métrica simples, mas relativamente eficaz, para determinar qual sobrecarga é a melhor. Além disso, nomes de métodos no PHP não são sensíveis ao caso, potencialmente aumentando o número de sobrecargas a serem escolhidas. Uma vez que um método é escolhido, os parâmetros são alterados se necessário, possivelmente com perda de dados (exemplo: números de ponto flutuante de precisão dupla serão convertidos para booleano).
  • Na tradição do PHP, arrays e hashtables podem ser usados de forma alternada. Perceba que hashtables no PHP só podem ser indexadas por inteiros e strings; e que arrays de tipos primitivos em Java não podem ser esparsos. Também note que essas estruturas são passadas por valor, então pode ter custo em termos de memória e tempo.

add a note add a note

User Contributed Notes 3 notes

up
1
anto dot justus at gmail dot com
5 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
-1
sebastiansajie at yahoo dot com
4 months 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
-2
anto dot justus at gmail dot com
5 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