javaday 2009 php e java
DESCRIPTION
Proviamo a fTRANSCRIPT
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
PHP e Javaovvero
come poter sfruttare entrambi i linguaggi e vivere felici ... forse
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Relatore: Matteo Baccan [email protected]: Roma 24/1/2009 Target: Programmatori PHP, Java e semplici curiosiDifficoltà: Media-Bassa
PHP e Java sono due linguaggi che possono tranquillamente convivere all’interno di applicazioni web.
Vedremo come è possibile utilizzare librerie Java all’interno di pagine PHP e come è possibile utilizzare PHP all’interno di application server Java, utilizzando un interprete scritto anch’esso in Java.
In questo modo è possibile sfruttare il meglio dei due mondi, e sfruttare i propri skill php anche in ambienti nati per altri linguaggi
Tutto questo in 40 minuti :)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Cosa vedremo
● PHP/Java bridge ● Quercus● Qualche integrazione
● PHPMyAdmin● WordPress
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
PHP Java Bridge: cosa ci serve
● PHP 5.2.6 (http://www.php.net/) ● Java 1.6.0_11 (http://java.sun.com/)● PHP Java bridge 5.2.2 (http://php-java-bridge.sourceforge.net/)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
PHP Java Bridge: come funziona?Tramite la classe php Java, che sfrutta un protocollo di comunicazione socket based, vengono effettuate delle
chiamate chiamate verso un server Java.
$o = new java("java.lang.Long", 6);
-> <CreateInstance value="java.lang.Long" predicate="I">
<Long value="6"/>
</CreateInstance>
<- <Object value="1" predicate="O"/>
$o->toString(); // Converte in stringa
-> <Invoke value="1" method="toString" predicate="I">
</Invoke>
<- <Object value="2" predicate="O"/>
// fine codice
-> <Unref value="2" />
-> <Unref value="1" />
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esecuzione Standalone
Esecuzione del server JavaBridgejava -jar JavaBridge.jar
Jan 23 01:23:05 VMBridge INFO : VM : 1.6.0_11@http://java.sun.com/Jan 23 01:23:05 VMBridge INFO : VMBridge version : 5.2.2Jan 23 01:23:05 VMBridge INFO : logFile : VMBridge.logJan 23 01:23:05 VMBridge INFO : default logLevel : 3Jan 23 01:23:05 VMBridge INFO : socket : SERVLET_LOCAL:8080Jan 23 01:23:05 VMBridge INFO : java.ext.dirs : C:\download\javaday\jdk1.6.0_11\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\extJan 23 01:23:05 VMBridge INFO : php.java.bridge.base: C:\Documents and Settings\z-mbaccJan 23 01:23:05 VMBridge INFO : thread pool size : 20Jan 23 01:23:05 VMBridge INFO : JavaBridgeRunner started on port INET_LOCAL:8080
Interrogabile da : http://localhost:8080/
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esempio
Proviamo a creare un semplice oggetto StringBuffer e a valorizzaro
<?phprequire_once("java/Java.inc");
// Creazione di un oggetto StringBuffer$String = new java("java.lang.StringBuffer");
// Aggiuni elementi a StringBuffer$String->append(new java("java.lang.String", "aggiungo 1 - "));$String->append(new java("java.lang.String", "aggiungo 2 - "));$String->append(new java("java.lang.String", "aggiungo 3"));
// Outputecho( $String );?>
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Richiamiamo l'esempio da PHP (veloce – usa socket)set path=%path%;..\..\php-5.2.6-Win32\php <testStringBuffer.php
Richiamo l'esempio da Java (lento – esegue php.exe)
Imposto php.ini
include_path="c:\download\javaday\php-java-bridge_5.2.2_j2ee\test\"
Chiama jrunscript (esecutore di JSR223: Scripting Pages in Java)set path=%path%;..\..\php-5.2.6-Win32\jrunscript -l php testStringBuffer.php
Stop JavaBridge
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esecuzione all'interno di Tomcat
Esiste una Web Archive Repository già configurato per poter eseguire in parallelo JSP e PHP sullo stesso server Java
webapps\JavaBridge.war
http://localhost/JavaBridge/
DEMO: test.php (esecuzione)sessionSharing.php/sessionSharing.jsp (sessioni)numberguess.php/numberguess.jsp (bean)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esecuzione all'interno di JBoss
Proviamo lo stesso war anche su JBoss
server\default\deploy\JavaBridge.war
http://localhost:8080/JavaBridge/
DEMO: sessionSharing.php/sessionSharing.jsp (sessioni)numberguess.php/numberguess.jsp (bean)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Quercus: cosa ci serve
● Java (http://java.sun.com/)● Quercus (http://quercus.caucho.com)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Quercus: come funziona
Quercus è una tecnologia Pure Java di Caucho, in grado di eseguire codice PHP 5, rilasciata sotto una licenza Open Source GPL.
Quercus implementa molti moduli PHP ed estensioni, come PDF, PDO, MySQL e JSON.
Quercus permette un'integrazione fra servizi Java e PHP script, in modo da rendere semplice l'uso di PHP con le maggiori tecnologie Java.
In questo modo PHP eredita le maggiori feature degli application server Java, come i connection pool e le sessioni clusterizzate
http://quercus.caucho.com
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esecuzione all'interno di Tomcat
Esiste una Web Archive Repository già configurato per poter eseguire in parallelo JSP e PHP sullo stesso server Java
webapps\quercus-3.1.6.war
http://localhost/quercus-3.1.6/
DEMO: quercus
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Configurazione di quecus
Librerie da aggiungere alla WEB-INFWEB-INF\libquercus.jarresin-util.jarscript-10.jar
Driver di connessione MySQLmysql-connector-java-3.1.14-bin.jar
Personalizzazione di web.xml
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Configurazione di quecus
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app> <description>Caucho Technology's PHP Implementation</description>
<servlet> <servlet-name>Quercus Servlet</servlet-name> <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>Quercus Servlet</servlet-name> <url-pattern>*.php</url-pattern> </servlet-mapping>
<welcome-file-list> <welcome-file>index.php</welcome-file> </welcome-file-list>
</web-app>
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Esecuzione di PHPMyAdmin 2.11.6
Mentre col bridge utilizziamo direttamente PHP, con quercus il codice viene reinterpretato. Proviamo a vedere come si comporta con alcuni famosi software PHP
Mysqld
http://localhost/phpMyAdmin-2.11.6-english/
DEMO: phpMyAdmin
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Una prova sulla mia pelle: gestione eventi
http://localhost
DEMO: iscrizione alla palestra
http://localhost
DEMO: baccan 2.0
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Conclusioni
Ha senso utilizzare Java in PHP?Quanto sono stabili queste configurazioni?Ha senso usare un prodotto come quercus?
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Alcuni link● PHP 5.2.2 http://www.php.net/● Java 1.6.0 http://java.sun.com/● PHP Java bridge 5.2.2 http://php-java-bridge.sourceforge.net/● JSR223 http://www.jcp.org/aboutJava/communityprocess/edr/jsr223/ ● Quercus Quercus 3.1.6 http://quercus.caucho.com
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
Matteo Baccan
Enterprise Architect
Email: [email protected]
Io sono quello in basso
a sinistra :)
Matteo Baccan - [email protected] – JUG NovaraJavaday Roma III Edizione – 24 gennaio 2009
E per chi volesse
Cambio Lavoro Con un clickdal
10 Febbraio 2009