From 37af9e435dfa7cbda2fdb611f3d747b6a14e15cc Mon Sep 17 00:00:00 2001 From: Sebastian Bergmann Date: Thu, 21 Jun 2001 22:09:36 +0000 Subject: [PATCH] Initial commit of Java documentation. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@49980 c90b9560-bf6c-de11-be94-00142212c4b1 --- functions/java.xml | 203 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 functions/java.xml diff --git a/functions/java.xml b/functions/java.xml new file mode 100644 index 0000000000..63aaef8394 --- /dev/null +++ b/functions/java.xml @@ -0,0 +1,203 @@ + + Java + PHP / Java Integration + + + There are two possible ways to bridge PHP and Java: you can either + integrate Java into PHP or, which is the more currently stable and + efficient solution, integrate PHP into a Java Servlet environment. + The former is provided by ext/java, the latter by a SAPI module that + interfaces with the Servlet server. + + + PHP 4 ext/java provides a simple and effective means for creating and + invoking methods on Java objects from PHP. The JVM is created using JNI, + and everything runs in-process. Build instructions for ext/java can be + found in php4/ext/java/README. + + + Java Example + +<?php + // get instance of Java class java.lang.System in PHP + $system = new Java("java.lang.System"); + + // demonstrate property access + print "Java version=".$system->getProperty("java.version")." <br>"; + print "Java vendor=" .$system->getProperty("java.vendor")." <br>"; + print "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"); + + print $formatter->format(new Java("java.util.Date")); +?> + + + + AWT Example + +<?php + // This example is only intented to be run as a CGI. + + $frame = new Java("java.awt.Frame", "Zend"); + $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(); +?> + + + + Notes: + + + + + new Java() will create an instance of a class if a suitable constructor + is available. If no parameters are passed and the default constructor + is useful as it provides access to classes like "java.lang.System" + which expose most of their functionallity through static methods. + + + + + Accessing a member of an instance will first look for bean properties + then public fields. In other words, "print $date.time" will first + attempt to be resolved as "$date.getTime()", then as "$date.time"; + + + + + Both static and instance members can be accessed on an object with + the same syntax. Furthermore, if the java object is of type + "java.lang.Class", then static members of the class (fields and + methods) can be accessed. + + + + + Exceptions raised result in PHP warnings, and null results. The + warnings may be eliminated by prefixing the method call with an + "@" sign. The following APIs may be used to retrieve and reset + the last error: + + + java_last_exception_get + java_last_exception_clear + + + + + Overload resolution is in general a hard problem given the + differences in types between the two languages. The PHP Java + extension employs a simple, but fairly effective, metric for + determining which overload is the best match. + + Additionally, method names in PHP are not case sensitive, potentially + increasing the number of overloads to select from. + + Once a method is selected, the parameters are cooerced if necessary, + possibly with a loss of data (example: double precision floating point + numbers will be converted to boolean). + + + + + In the tradition of PHP, arrays and hashtables may pretty much + be used interchangably. Note that hashtables in PHP may only be + indexed by integers or strings; and that arrays of primitive types + in Java can not be sparse. Also note that these constructs are + passed by value, so may be expensive in terms of memory and time. + + + + + + PHP4 sapi/servlet builds upon the mechanism defined by ext/java to enable + the entire PHP processor to be run as a servlet. The primary advanatage + of this from a PHP perspective is that web servers which support servlets + typically take great care in pooling and reusing JVMs. Build instructions + for the Servlet SAPI module can be found in php4/sapi/README. + + Notes: + + + + + While this code is intended to be able to run on any servlet engine, + it has only been tested on Apache's Jakarta/tomcat to date. Bug + reports, success stories and/or patches required to get this code + to run on other engines would be appreciated. + + + + + PHP has a habit of changing the working directory. sapi/servlet will + eventually change it back, but while PHP is running the servlet engine + may not be able to load any classes from the CLASSPATH which are + specified using a relative directory syntax, or find the work directory + used for administration and JSP compilation tasks. + + + + + + + + + java_last_exception_clear + Clear last Java exception + + + Description + + + void java_last_exception_clear + + + + + + + + java_last_exception_get + Get last Java exception + + + Description + + + exception java_last_exception_get + + + + + + +