SlideShare a Scribd company logo
1 of 22
Download to read offline
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
PHP e Java
ovvero
come poter sfruttare
entrambi i linguaggi e
vivere felici ... forse
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Relatore: Matteo Baccan matteo@baccan.it
Data: Roma 24/1/2009
Target: Programmatori PHP, Java e semplici curiosi
Difficoltà: 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 - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Cosa vedremo
● PHP/Java bridge
● Quercus
● Qualche integrazione
● PHPMyAdmin
● WordPress
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Esecuzione Standalone
Esecuzione del server JavaBridge
java -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.2
Jan 23 01:23:05 VMBridge INFO : logFile : VMBridge.log
Jan 23 01:23:05 VMBridge INFO : default logLevel : 3
Jan 23 01:23:05 VMBridge INFO : socket : SERVLET_LOCAL:8080
Jan 23 01:23:05 VMBridge INFO : java.ext.dirs :
C:downloadjavadayjdk1.6.0_11jrelibext;C:WINDOWSSunJavalibext
Jan 23 01:23:05 VMBridge INFO : php.java.bridge.base: C:Documents and Settingsz-mbacc
Jan 23 01:23:05 VMBridge INFO : thread pool size : 20
Jan 23 01:23:05 VMBridge INFO : JavaBridgeRunner started on port INET_LOCAL:8080
Interrogabile da : http://localhost:8080/
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Esempio
Proviamo a creare un semplice oggetto StringBuffer e a valorizzaro
<?php
require_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"));
// Output
echo( $String );
?>
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday 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:downloadjavadayphp-java-bridge_5.2.2_j2eetest"
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 - matteo@baccan.it – JUG Novara
Javaday 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
webappsJavaBridge.war
http://localhost/JavaBridge/
DEMO: test.php (esecuzione)
sessionSharing.php/sessionSharing.jsp (sessioni)
numberguess.php/numberguess.jsp (bean)
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Esecuzione all'interno di JBoss
Proviamo lo stesso war anche su JBoss
serverdefaultdeployJavaBridge.war
http://localhost:8080/JavaBridge/
DEMO: sessionSharing.php/sessionSharing.jsp (sessioni)
numberguess.php/numberguess.jsp (bean)
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Quercus: cosa ci serve
● Java (http://java.sun.com/)
● Quercus (http://quercus.caucho.com)
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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
webappsquercus-3.1.6.war
http://localhost/quercus-3.1.6/
DEMO: quercus
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Configurazione di quecus
Librerie da aggiungere alla WEB-INF
WEB-INFlib
quercus.jar
resin-util.jar
script-10.jar
Driver di connessione MySQL
mysql-connector-java-3.1.14-bin.jar
Personalizzazione di web.xml
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday 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 - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
Matteo Baccan
Enterprise Architect
Email: matteo@baccan.it
Io sono quello in basso
a sinistra :)
Matteo Baccan - matteo@baccan.it – JUG Novara
Javaday Roma III Edizione – 24 gennaio 2009
E per chi volesse
Cambio Lavoro Con un click
dal
10 Febbraio 2009

More Related Content

Viewers also liked

Pelajaran 2 Bm
Pelajaran 2 BmPelajaran 2 Bm
Pelajaran 2 Bmamoi286
 
Congresso Jubrac - 14.07.07
Congresso Jubrac - 14.07.07Congresso Jubrac - 14.07.07
Congresso Jubrac - 14.07.07Jubrac Jacui
 
Direct Linking Lives on
Direct Linking Lives onDirect Linking Lives on
Direct Linking Lives onCoty Schwabe
 
Reviewing Screen Based Content: Demo Examples
Reviewing Screen Based Content: Demo ExamplesReviewing Screen Based Content: Demo Examples
Reviewing Screen Based Content: Demo ExamplesRhonda Bracey
 
Niver Flavia - 26.08.07
Niver Flavia - 26.08.07Niver Flavia - 26.08.07
Niver Flavia - 26.08.07Jubrac Jacui
 
Tipos de texto
Tipos de textoTipos de texto
Tipos de textocubs2000
 
Customizing HTML Outputs From Author-It
Customizing HTML Outputs From Author-ItCustomizing HTML Outputs From Author-It
Customizing HTML Outputs From Author-ItRhonda Bracey
 
香港六合彩
香港六合彩香港六合彩
香港六合彩wejia
 
عرض ملتقى النهائي جديد
عرض ملتقى النهائي جديدعرض ملتقى النهائي جديد
عرض ملتقى النهائي جديدsabah alharby
 
香港六合彩
香港六合彩香港六合彩
香港六合彩wejia
 
What causes Diarrhea IEHA 2008
What causes Diarrhea IEHA 2008What causes Diarrhea IEHA 2008
What causes Diarrhea IEHA 2008Steve Lipton
 

Viewers also liked (20)

Pelajaran 2 Bm
Pelajaran 2 BmPelajaran 2 Bm
Pelajaran 2 Bm
 
Congresso Jubrac - 14.07.07
Congresso Jubrac - 14.07.07Congresso Jubrac - 14.07.07
Congresso Jubrac - 14.07.07
 
Lec - 04.08.07
Lec - 04.08.07Lec - 04.08.07
Lec - 04.08.07
 
Direct Linking Lives on
Direct Linking Lives onDirect Linking Lives on
Direct Linking Lives on
 
Reviewing Screen Based Content: Demo Examples
Reviewing Screen Based Content: Demo ExamplesReviewing Screen Based Content: Demo Examples
Reviewing Screen Based Content: Demo Examples
 
ANA Marketing Insights May 08
ANA Marketing Insights May 08ANA Marketing Insights May 08
ANA Marketing Insights May 08
 
Niver Fe 18.02.07
Niver Fe 18.02.07Niver Fe 18.02.07
Niver Fe 18.02.07
 
Niver Flavia - 26.08.07
Niver Flavia - 26.08.07Niver Flavia - 26.08.07
Niver Flavia - 26.08.07
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
 
Tipos de texto
Tipos de textoTipos de texto
Tipos de texto
 
Customizing HTML Outputs From Author-It
Customizing HTML Outputs From Author-ItCustomizing HTML Outputs From Author-It
Customizing HTML Outputs From Author-It
 
網路行銷
網路行銷網路行銷
網路行銷
 
Microcamp
MicrocampMicrocamp
Microcamp
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Have You Ever Noticed
Have You Ever NoticedHave You Ever Noticed
Have You Ever Noticed
 
Scmad Chapter08
Scmad Chapter08Scmad Chapter08
Scmad Chapter08
 
It is All True
It is All TrueIt is All True
It is All True
 
عرض ملتقى النهائي جديد
عرض ملتقى النهائي جديدعرض ملتقى النهائي جديد
عرض ملتقى النهائي جديد
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
What causes Diarrhea IEHA 2008
What causes Diarrhea IEHA 2008What causes Diarrhea IEHA 2008
What causes Diarrhea IEHA 2008
 

Similar to Javaday 2009 php e java

Javascript e Firebug per lo sviluppo Web 3.0
Javascript e Firebug per lo sviluppo Web 3.0Javascript e Firebug per lo sviluppo Web 3.0
Javascript e Firebug per lo sviluppo Web 3.0Guido Brugnara
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - TigerMatteo Baccan
 
Matteo baccan raspberry pi - linox 2015 - corso parte 3
Matteo baccan   raspberry pi - linox 2015 - corso parte 3Matteo baccan   raspberry pi - linox 2015 - corso parte 3
Matteo baccan raspberry pi - linox 2015 - corso parte 3Matteo Baccan
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)Davide Cerbo
 
Link. java server faces [santi caltabiano]
  Link. java server faces [santi caltabiano]  Link. java server faces [santi caltabiano]
Link. java server faces [santi caltabiano]santi caltabiano
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al javaGiovanni Pace
 
I Linguaggi Del Web (2° Giornata)
I Linguaggi Del  Web (2°  Giornata)I Linguaggi Del  Web (2°  Giornata)
I Linguaggi Del Web (2° Giornata)Diego La Monica
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configurationvschiavoni
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobMassimiliano Dessì
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Codemotion
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfrescoMirco Leo
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansDavide Nardone
 

Similar to Javaday 2009 php e java (20)

Javascript e Firebug per lo sviluppo Web 3.0
Javascript e Firebug per lo sviluppo Web 3.0Javascript e Firebug per lo sviluppo Web 3.0
Javascript e Firebug per lo sviluppo Web 3.0
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
Matteo baccan raspberry pi - linox 2015 - corso parte 3
Matteo baccan   raspberry pi - linox 2015 - corso parte 3Matteo baccan   raspberry pi - linox 2015 - corso parte 3
Matteo baccan raspberry pi - linox 2015 - corso parte 3
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
Link. java server faces [santi caltabiano]
  Link. java server faces [santi caltabiano]  Link. java server faces [santi caltabiano]
Link. java server faces [santi caltabiano]
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
 
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
I Linguaggi Del Web (2° Giornata)
I Linguaggi Del  Web (2°  Giornata)I Linguaggi Del  Web (2°  Giornata)
I Linguaggi Del Web (2° Giornata)
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configuration
 
Real Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday JobReal Spring Aop Recipes For Your Everyday Job
Real Spring Aop Recipes For Your Everyday Job
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with Netbeans
 

More from Matteo Baccan

Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan
 
Matteo baccan raspberry pi - linox 2015 - corso parte 2
Matteo baccan   raspberry pi - linox 2015 - corso parte 2Matteo baccan   raspberry pi - linox 2015 - corso parte 2
Matteo baccan raspberry pi - linox 2015 - corso parte 2Matteo Baccan
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1Matteo Baccan
 
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Matteo Baccan
 
Matteo baccan raspberry pi - linox 2014
Matteo baccan   raspberry pi - linox 2014Matteo baccan   raspberry pi - linox 2014
Matteo baccan raspberry pi - linox 2014Matteo Baccan
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterMatteo Baccan
 
Confsl 2010 Facebook Framework
Confsl 2010 Facebook FrameworkConfsl 2010 Facebook Framework
Confsl 2010 Facebook FrameworkMatteo Baccan
 
Stack Overflow meetup html2pop3
Stack Overflow meetup html2pop3 Stack Overflow meetup html2pop3
Stack Overflow meetup html2pop3 Matteo Baccan
 
Codemotion 2012 : Sphinx: Open Source Search Server
Codemotion 2012 : Sphinx: Open Source Search ServerCodemotion 2012 : Sphinx: Open Source Search Server
Codemotion 2012 : Sphinx: Open Source Search ServerMatteo Baccan
 
Codemotion twitter programming
Codemotion twitter programmingCodemotion twitter programming
Codemotion twitter programmingMatteo Baccan
 
Webtech 2010: twitter programming
Webtech 2010: twitter programmingWebtech 2010: twitter programming
Webtech 2010: twitter programmingMatteo Baccan
 
Webtech 2010: facebook framework
Webtech 2010: facebook frameworkWebtech 2010: facebook framework
Webtech 2010: facebook frameworkMatteo Baccan
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, javaMatteo Baccan
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: AspectjMatteo Baccan
 
JIPDay 2005: Xlet Java Programming
JIPDay 2005: Xlet Java ProgrammingJIPDay 2005: Xlet Java Programming
JIPDay 2005: Xlet Java ProgrammingMatteo Baccan
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5Matteo Baccan
 
Javaday 2007: skype4java
Javaday 2007: skype4javaJavaday 2007: skype4java
Javaday 2007: skype4javaMatteo Baccan
 
Phpday 2010: facebook php framework
Phpday 2010: facebook php frameworkPhpday 2010: facebook php framework
Phpday 2010: facebook php frameworkMatteo Baccan
 
Javaday 2010: Facebook Java Framework
Javaday 2010: Facebook Java FrameworkJavaday 2010: Facebook Java Framework
Javaday 2010: Facebook Java FrameworkMatteo Baccan
 

More from Matteo Baccan (20)

Gmail e google app
Gmail e google appGmail e google app
Gmail e google app
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
 
Matteo baccan raspberry pi - linox 2015 - corso parte 2
Matteo baccan   raspberry pi - linox 2015 - corso parte 2Matteo baccan   raspberry pi - linox 2015 - corso parte 2
Matteo baccan raspberry pi - linox 2015 - corso parte 2
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1
 
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...
 
Matteo baccan raspberry pi - linox 2014
Matteo baccan   raspberry pi - linox 2014Matteo baccan   raspberry pi - linox 2014
Matteo baccan raspberry pi - linox 2014
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Confsl 2010 Facebook Framework
Confsl 2010 Facebook FrameworkConfsl 2010 Facebook Framework
Confsl 2010 Facebook Framework
 
Stack Overflow meetup html2pop3
Stack Overflow meetup html2pop3 Stack Overflow meetup html2pop3
Stack Overflow meetup html2pop3
 
Codemotion 2012 : Sphinx: Open Source Search Server
Codemotion 2012 : Sphinx: Open Source Search ServerCodemotion 2012 : Sphinx: Open Source Search Server
Codemotion 2012 : Sphinx: Open Source Search Server
 
Codemotion twitter programming
Codemotion twitter programmingCodemotion twitter programming
Codemotion twitter programming
 
Webtech 2010: twitter programming
Webtech 2010: twitter programmingWebtech 2010: twitter programming
Webtech 2010: twitter programming
 
Webtech 2010: facebook framework
Webtech 2010: facebook frameworkWebtech 2010: facebook framework
Webtech 2010: facebook framework
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, java
 
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: Aspectj
 
JIPDay 2005: Xlet Java Programming
JIPDay 2005: Xlet Java ProgrammingJIPDay 2005: Xlet Java Programming
JIPDay 2005: Xlet Java Programming
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
 
Javaday 2007: skype4java
Javaday 2007: skype4javaJavaday 2007: skype4java
Javaday 2007: skype4java
 
Phpday 2010: facebook php framework
Phpday 2010: facebook php frameworkPhpday 2010: facebook php framework
Phpday 2010: facebook php framework
 
Javaday 2010: Facebook Java Framework
Javaday 2010: Facebook Java FrameworkJavaday 2010: Facebook Java Framework
Javaday 2010: Facebook Java Framework
 

Javaday 2009 php e java

  • 1. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 PHP e Java ovvero come poter sfruttare entrambi i linguaggi e vivere felici ... forse
  • 2. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Relatore: Matteo Baccan matteo@baccan.it Data: Roma 24/1/2009 Target: Programmatori PHP, Java e semplici curiosi Difficoltà: 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 :)
  • 3. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Cosa vedremo ● PHP/Java bridge ● Quercus ● Qualche integrazione ● PHPMyAdmin ● WordPress
  • 4. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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/)
  • 5. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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" />
  • 6. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Esecuzione Standalone Esecuzione del server JavaBridge java -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.2 Jan 23 01:23:05 VMBridge INFO : logFile : VMBridge.log Jan 23 01:23:05 VMBridge INFO : default logLevel : 3 Jan 23 01:23:05 VMBridge INFO : socket : SERVLET_LOCAL:8080 Jan 23 01:23:05 VMBridge INFO : java.ext.dirs : C:downloadjavadayjdk1.6.0_11jrelibext;C:WINDOWSSunJavalibext Jan 23 01:23:05 VMBridge INFO : php.java.bridge.base: C:Documents and Settingsz-mbacc Jan 23 01:23:05 VMBridge INFO : thread pool size : 20 Jan 23 01:23:05 VMBridge INFO : JavaBridgeRunner started on port INET_LOCAL:8080 Interrogabile da : http://localhost:8080/
  • 7. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Esempio Proviamo a creare un semplice oggetto StringBuffer e a valorizzaro <?php require_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")); // Output echo( $String ); ?>
  • 8. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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:downloadjavadayphp-java-bridge_5.2.2_j2eetest" Chiama jrunscript (esecutore di JSR223: Scripting Pages in Java) set path=%path%;....php-5.2.6-Win32 jrunscript -l php testStringBuffer.php Stop JavaBridge
  • 9. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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 webappsJavaBridge.war http://localhost/JavaBridge/ DEMO: test.php (esecuzione) sessionSharing.php/sessionSharing.jsp (sessioni) numberguess.php/numberguess.jsp (bean)
  • 10. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Esecuzione all'interno di JBoss Proviamo lo stesso war anche su JBoss serverdefaultdeployJavaBridge.war http://localhost:8080/JavaBridge/ DEMO: sessionSharing.php/sessionSharing.jsp (sessioni) numberguess.php/numberguess.jsp (bean)
  • 11. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Quercus: cosa ci serve ● Java (http://java.sun.com/) ● Quercus (http://quercus.caucho.com)
  • 12. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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
  • 13. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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 webappsquercus-3.1.6.war http://localhost/quercus-3.1.6/ DEMO: quercus
  • 14. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Configurazione di quecus Librerie da aggiungere alla WEB-INF WEB-INFlib quercus.jar resin-util.jar script-10.jar Driver di connessione MySQL mysql-connector-java-3.1.14-bin.jar Personalizzazione di web.xml
  • 15. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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>
  • 16. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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
  • 17. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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
  • 18. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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?
  • 19. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday 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
  • 20. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009
  • 21. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 Matteo Baccan Enterprise Architect Email: matteo@baccan.it Io sono quello in basso a sinistra :)
  • 22. Matteo Baccan - matteo@baccan.it – JUG Novara Javaday Roma III Edizione – 24 gennaio 2009 E per chi volesse Cambio Lavoro Con un click dal 10 Febbraio 2009