SlideShare a Scribd company logo
1 of 34
Download to read offline
The Duke and the Elephant: PHP meets
JavaTM Technology. The best of both
worlds.
Rob Nicholson
                                .
IBM Senior Technical Staff Member
Agenda

 Whys and Whats of PHP on the Java Virtual Machine
 (JVM™) software

 How we mix PHP, Java platform and Groovy

 Demonstration of PHP and Java Platform Interaction

 ProjectZero Community




    © 2008 IBM Corporation
                                    2008 JavaOneSM Conference | java.sun.com/javaone |   2
Agenda

 Whys and Whats of PHP on the Java Virtual Machine
 (JVM™) software

 How we mix PHP, Java platform and Groovy

 Demonstration of PHP and Java Platform Interaction

 ProjectZero Community




    © 2008 IBM Corporation
                                    2008 JavaOneSM Conference | java.sun.com/javaone |   3
Why PHP?
 PHP present on 20M+ web domains (34% of internet)
  • Validated by significant web properties
 PHP snippets and extensions exist to do almost anything
 Language has evolved in open source
  • Survival of the simplest and fastest
 Simple syntax and dynamic typing encourage situational applications


Gartner (Dec 2007)                      TIOBE Programming Community Index (March 2008)

   • PHP Developers to grow from 3
     to 5.5 million by 2013
   • PHP Developers in Commercial
     or Corporate IT to grow from
     13% to 60% by 2013
   • “Pay special attention to
     opportunities to leverage PHP in
     combination with Java
     development efforts”
     © 2008 IBM Corporation
                                                     2008 JavaOneSM Conference | java.sun.com/javaone |   4
Introducing WebSphere sMash
 WebSphere sMash is an Agile Web Application Platform
 • Architected around Dynamic Scripting, REST, Rich Web Interfaces,
   AJAX, and Feeds
 • Optimized for
    • Speed
    • Simplicity
    • Agility
 Key Scenarios
 • Enables developers to build web 2.0-style applications by easily pulling in,
     composing, and “cobbling together” pre-existing assets (PHP assets, services,
     feeds, code snippets) using dynamic scripting languages and simple
     consumption principles based on REST
 •   Leverages existing SOA investments by enabling rapid development of dynamic
     web applications that are assembled from enterprise assets and publicly
     available APIs
 System language is Java platform
 Application languages are      and
 • Contains a PHP 5 interpreter written in Java programming language


     © 2008 IBM Corporation
                                                        2008 JavaOneSM Conference | java.sun.com/javaone |   5
Project Zero
Incubating the Technology
  Project Zero is the development and incubation
  community for WebSphere sMash
  • Live on the Internet since June 2007

  Project Zero represents
  • The people that build and use WebSphere sMash
  • The incubation of new technology that will deliver in future versions of
       WebSphere sMash
  •    The community of 3rd party assets that leverage the WebSphere sMash platform


  All released versions are called WebSphere sMash




      © 2008 IBM Corporation
                                                         2008 JavaOneSM Conference | java.sun.com/javaone |   6
The Duke and the Elephpant




                                         © Hideyuki Shimooka

   © 2008 IBM Corporation
                            2008 JavaOneSM Conference | java.sun.com/javaone |   7
Top Level Architecture
                                                                                           App components




                                                                                     Runtime
                              Dojo                                        Events




                                                                                      PHP
                                                            HTTP server
                                                                                                     app
                              Browser
                                          REST
                                                                          Global
                                                                          Context




                                                                                     Runtime
                                                                                                     app




                                                                                     Groovy
                                         Local repository
                                                                 Package
                                                                                               JavaTM app
                                        Remote repository        Manager

                                        Remote repository     Zero Application

 Loose coupling:                                                               Java Virtual Machine


  • Event driven architecture
  • Global Context
  • Virtual Directories
     © 2008 IBM Corporation
                                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   8
PHP Runtime Architecture
                    CLI      PZ Http
PHP Scripts
                                                             • Runtime for PHP 5 scripts
                            SAPI-J
                                                             • Implemented in Java code, runs on any Java
                                                               platform 5.0+ VM
                           PHP Engine                        • PHP language elements represented as Java code
 Variables
                Parser
                                      Cache                    objects

                                              Debug (DBGp)
  Stack                         IR
                 P8 Runtime
                                                             • Parse script to Intermediate Representation (IR)
Resources                                                       • Cache and Interpret IR
                   Interpreter
 Classes                                                        • Compile ->bytecode prototype
 Objects                  Runtime
                                                             • Extensibility via XAPI
                                                                • XAPI-C for C extensions from php.net
      XAPI-C
                       XAPI-J                                    • XAPI-J for new Java platform extensions,
                             Java
                                                                   native libraries invoked over JNI™ API and
        C                 Extensions    Native                     Project Zero interface
    Extensions                           code
                                                                 • Extension language choice opaque to PHP script
                      PZ Extensions
                                                             • Java Platform Bridge
                                                             • Debug using via DBGp using Eclipse with PDT

             © 2008 IBM Corporation
                                                                                   2008 JavaOneSM Conference | java.sun.com/javaone |   9
XAPI-J example
Extend PHP using Java Platform

 @XAPIExtension(quot;BigDecimalquot;)
 public class BigDecimalExt extends ExtensionBaseImpl {

     @XAPIFunction(quot;add_bigdecimalquot;)
     public void add(RuntimeContext ctxt) {
        RuntimeServices rts = getRuntimeServices();
        InvocationService inv =
        rts.getInvocationService();
        Object[] args =
               inv.parseArguments(ctxt, quot;ssquot;, false);
        BigDecimal arg1 = new BigDecimal((
               ( XAPIString) args[0]).getString());
        BigDecimal arg2 = new BigDecimal((
               ( XAPIString) args[1]).getString());
        BigDecimal result = arg1.add(arg2);
        ctxt.setReturnValue(result.toString());
 }   © 2008 IBM Corporation
                                       2008 JavaOneSM Conference | java.sun.com/javaone | 10
Java Platform Bridge
Easy access to Java Classes from PHP

  <?php
     $date = new Java(quot;java.util.Datequot;, 70, 9, 4);
     var_dump($date->toString());
     $map = new Java(quot;java.util.HashMapquot;);
     $map->put(quot;titlequot;, quot;Java Bridge!quot;);
     $map->put(quot;whenquot;, $date);
     echo $map->get(quot;whenquot;)->toString().quot;nquot;;
     echo $map->get(quot;titlequot;).quot;nquot;;
     $array = array(1,2,3,4,5);
     $map->put(quot;stuffquot;, $array); // PHP array converted to
  Java Map
     var_dump($map->get(quot;stuffquot;)).quot;nquot;;
  ?>




     © 2008 IBM Corporation
                                       2008 JavaOneSM Conference | java.sun.com/javaone | 11
Agenda

 Whys and Whats of PHP on the Java Virtual Machine
 software

 How we mix PHP, Java platform and Groovy

 Demonstration of PHP and Java Platform Interaction

 ProjectZero Community




    © 2008 IBM Corporation
                                    2008 JavaOneSM Conference | java.sun.com/javaone | 12
Virtualized Directories
Facilitate Application Composition
 Resources searched across application and
 dependencies.
 Apps behave as if directories merged.
 Applies to all script directories.
  • /public /app/resources, /app/scripts, /app/views etc.
 First-one-wins precedence.
  • Order based on dependency order in ivy files.
  • Default files searched within each directory first:
       •   {my application}/index.php
       •   {my application}/index.html
       •   {dependency1}/index.php
       •   {dependency1}/index.html


    © 2008 IBM Corporation
                                              2008 JavaOneSM Conference | java.sun.com/javaone | 13
REST Services
Made easy
    Zero provides a really simple way to create REST
    services
    Convention for create/retrieve/update/delete operations
    (CRUD)
     • You can also list the members in the collection.

  HTTP Method                    URI         Description
  GET                            /people     List members
  POST                           /people     Create member
  GET                            /people/1   Retrieve member

  PUT                            /people/1   Update member
  DELETE                         /people/1   Delete member



        © 2008 IBM Corporation
                                               2008 JavaOneSM Conference | java.sun.com/javaone | 14
REST Services in WebSphere sMash
    Each REST service is implemented by a script (called a handler)
    Scripts live in the directory: <apphome>/app/resources
    Services are accessed using a standard URL convention:
     •/resources/<collection name>[/member[/<path
     info>]]
    HTTP requests mapped to handler methods as follows:


Resource                GET        PUT             POST                   DELETE


Collection              list       putCollection   create                 deleteCollecti
                                                                          on
/people
Member                  retrieve   update          postMember             delete
/people/1




      © 2008 IBM Corporation
                                                      2008 JavaOneSM Conference | java.sun.com/javaone | 15
Demo – REST in WebSphere sMash




                     2008 JavaOneSM Conference | java.sun.com/javaone | 16
Events
Promote Loose Coupling
   All behaviour in the system is modelled as a set of events.
    • Events are programming language agnostic
   Fired by an application using fire_event().
      fire_event('my_event', array(‘data'=>'foobar'));
   Event handlers are defined in the Zero configuration file:
      /config/handlers += {
          quot;eventsquot; : my_event,
          quot;handlerquot; : test.php
      }
   Request Processing events
    • requestBegin, secure, GET, PUT, POST, DELETE, log, requestEnd
   Application specific events
    • Fired by your application



     © 2008 IBM Corporation
                                                2008 JavaOneSM Conference | java.sun.com/javaone | 17
Global Context
  Event handlers are stateless
   • interesting applications contain state
  GC provides access/management of application state
   • It is NOT persistent. Persistent data goes into the database
  Conceptually a map of data
  Divided into a set of zones with different data lifecycles
  Understands and provides intelligent access to certain
  data types
  Externalizes state from the application logic
   • Enables clustering and scaling to be added transparently



     © 2008 IBM Corporation
                                            2008 JavaOneSM Conference | java.sun.com/javaone | 18
Global Content Zones
  Divided into zones representing different data lifecycles
     Zone                        Scope/Visibility                            Lifecycle
  Config                  All requests all users.                Loaded from config
                                                                 files.
  Application             All requests for all users of the      Life of the application,
                          application                            but not “persistent”

  User                    All request for a particular user      For first access until
                          (HTTP Session equivalent)              user times out

  Request                 All handlers along the path of a       For the duration of a
                          single request                         single request
  Event                   All handlers for a single event        The duration of a single
                                                                 event


     © 2008 IBM Corporation
                                                              2008 JavaOneSM Conference | java.sun.com/javaone | 19
Versioning Dependencies
  Modules are the building blocks of an application
  A module is simply a collection of files packaged
  together
    • Includes a module name, version and author details
  An application declares the modules it depends on


  Versioning ensures applications don’t break!
   • Specific versions can be set (v1.1.34)
   • Versions upwards from a particular release (v1.0+)
   • Ranges of acceptable versions (v1.0 – v1.5)
  Remote catalog servers at PZ.net and maven2
   © 2008 IBM Corporation
                                          2008 JavaOneSM Conference | java.sun.com/javaone | 20
Deploying Applications
 The Application is the server
        Java VM

             Web server

          Application Code

        Language runtimes

Hundreds of applications per box
Applications started on demand
 • inetd style
Applications isolation
Quality of service and management built in
    © 2008 IBM Corporation
                                      2008 JavaOneSM Conference | java.sun.com/javaone | 21
Built in development tooling
Browser-Based Development IDE
  Built as a sMash application

  Provides full development lifecycle for
  Zero applications
    • Create, Edit, Test

  Provides Visual Editors for Activities and
  Web Page construction
    • Including a DOJO-enabled page editor

  Basic Eclipse-based tooling also available if
  required




        © 2008 IBM Corporation
                                                  2008 JavaOneSM Conference | java.sun.com/javaone | 22
Activities
Let Developers Visually “Mash-up” Services and Feeds

  Compose applications by “wiring” together
  REST services

  Visually or programmatically combine
  existing feeds and services that enrich,
  sort, and filter data in a pipeline

  Configure templates to alter pipeline routes,
  log events along the pipeline

  Numerous built-in activities, including
   • Get Feed, Call Service, Aggregate, Sort, Transform,
      Filter, Send Mail, XSLT, Conditionals, Loops




       © 2008 IBM Corporation
                                                           2008 JavaOneSM Conference | java.sun.com/javaone | 23
Installing WebSphere sMash
             Eclipse                                           CLI / Browser IDE

                                       Get JavaTM 1.5(+) JDK




    Get PHP Development Tools (PDT)
                                                               Download installer (<800K)
        All-in-one eclipse package




Install Zero using the Eclipse update manager                  Libraries fetched as needed.




                    Links and walkthrough on www.projectzero.org


          © 2008 IBM Corporation
                                                               2008 JavaOneSM Conference | java.sun.com/javaone | 24
Agenda

 Whys and Whats of PHP on the Java Virtual Machine
 software

 How we mix PHP, Java platform and Groovy

 Demonstration of PHP and Java Platform Interaction.

 ProjectZero Community




    © 2008 IBM Corporation
                                    2008 JavaOneSM Conference | java.sun.com/javaone | 25
Demo: Integration with SugarCRM
Scenario:

  Scheduling meetings requires
  co-ordination across the
  business

Solution:

  WebSphere sMash workflow
  triggered from SugarCRM
  PHP-Java Platform
  Interoperability
   • The best of both worlds


      © 2008 IBM Corporation
                                 2008 JavaOneSM Conference | java.sun.com/javaone | 26
Demo – Integration with SugarCRM




                       2008 JavaOneSM Conference | java.sun.com/javaone | 27
Agenda

 Whys and Whats of PHP on the Java Virtual Machine
 software

 How we mix PHP, Java platform and Groovy

 Demonstration of PHP and Java Platform Interaction

 ProjectZero Community




    © 2008 IBM Corporation
                                    2008 JavaOneSM Conference | java.sun.com/javaone | 28
Community Driven Commercial
 Development
Evolve the core platform based on developer feedback
Commercial development using a transparent development process

Enabled via an external web site providing:
                                                          http://www.projectzero.org
  A focal point for all sMash development activities
      Expose the IBM® development process to the
      external developer community
      All design decisions are discussed and
      communicated via external forums
      Registered users can post comments and feedback
      to the forums

  Frictionless download of latest code and
  documentation
      Registration not required for binary downloads
      Latest builds immediately available to developers
      Source code can be viewed by registered users


         © 2008 IBM Corporation
                                                            2008 JavaOneSM Conference | java.sun.com/javaone | 29
Site Contents
 Content
  •   Documentation
  •   Project information
  •   Roadmaps
  •   Design documents
  •   Demos and Samples
  •   iCal calendar
  •   Future plans
 Forum for interactive discussion
  •   Help and Feedback for questions from users
  •   Developer Alerts to notify users of new features and breaking changes
  •   Zero Development for publicly accessible discussion amongst the Zero development team
  •   3554 Posts on 828 Topics to date
 Blogs
  •   Development blog with interesting commentary, demos, and opinion
  •   News blog for project announcements
 Binary Downloads (257,738 and counting…)
 Bug Tracking System (Bugzilla)
 Source code (Subversion)
      © 2008 IBM Corporation                                                                      3
                                                             2008 JavaOneSM Conference | java.sun.com/javaone | 30
Features of sMash we have not covered
today
 File Serving

 Error Handling

 View Rendering

 Logging, Tracing, Debugging

 Client Programming with the Dojo Ajax Framework

 Security

 Nested resources


    © 2008 IBM Corporation
                                          2008 JavaOneSM Conference | java.sun.com/javaone | 31
Summary

 Project Zero is incubating technologies to build web
 applications in WebSphere sMash
  • Simply!

 WebSphere sMash contains a PHP runtime which runs on
 a JVM software

 WebSphere sMash enables same process interoperability
 between PHP, Java platform and Groovy




    © 2008 IBM Corporation
                                       2008 JavaOneSM Conference | java.sun.com/javaone | 32
Questions?




  © 2008 IBM Corporation
                           2008 JavaOneSM Conference | java.sun.com/javaone | 33
Rob Nicholson




                2008 JavaOneSM Conference | java.sun.com/javaone | 34

More Related Content

What's hot

Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiCédric Hüsler
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SEdogangoko
 
Ruby'izing iOS development
Ruby'izing iOS developmentRuby'izing iOS development
Ruby'izing iOS developmenttoamitkumar
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2day
 
Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules omorandi
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Shaun Smith
 
Device APIs at TakeOff Conference
Device APIs at TakeOff ConferenceDevice APIs at TakeOff Conference
Device APIs at TakeOff Conferencedianacheng
 
Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBayTony Ng
 
Titanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceTitanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceomorandi
 
Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Yagiz Gurgul
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016Tim Ellison
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalorezasi besant
 
GlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseGlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseLudovic Champenois
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary120bi
 
Sa grid application inventory 36
Sa grid application inventory 36Sa grid application inventory 36
Sa grid application inventory 36Bruce Becker
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingStephen Chin
 

What's hot (19)

Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGi
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Ruby'izing iOS development
Ruby'izing iOS developmentRuby'izing iOS development
Ruby'izing iOS development
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
 
Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
Device APIs at TakeOff Conference
Device APIs at TakeOff ConferenceDevice APIs at TakeOff Conference
Device APIs at TakeOff Conference
 
Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBay
 
Titanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceTitanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performance
 
Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Flash Iphone Fitc 2010
Flash Iphone Fitc 2010
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalore
 
GlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for EclipseGlassFish Tool Bundle for Eclipse
GlassFish Tool Bundle for Eclipse
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary
 
Sa grid application inventory 36
Sa grid application inventory 36Sa grid application inventory 36
Sa grid application inventory 36
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi Hacking
 

Similar to Project Zero JavaOne 2008

Php On Java (London Java Community Unconference)
Php On Java (London Java Community Unconference)Php On Java (London Java Community Unconference)
Php On Java (London Java Community Unconference)Robin Fernandes
 
PHP on Java (BarCamp London 7)
PHP on Java (BarCamp London 7)PHP on Java (BarCamp London 7)
PHP on Java (BarCamp London 7)Robin Fernandes
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmersjphl
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Jason McGee
 
New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011Tiempo Development
 
Mixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphereMixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSpherejdlea
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stackALDAN3
 
java web framework standard.20180412
java web framework standard.20180412java web framework standard.20180412
java web framework standard.20180412FirmansyahIrma1
 
The DevOps PaaS Infusion - May meetup
The DevOps PaaS Infusion - May meetupThe DevOps PaaS Infusion - May meetup
The DevOps PaaS Infusion - May meetupNorm Leitman
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouJohn Pape
 
Memcached, presented to LCA2010
Memcached, presented to LCA2010Memcached, presented to LCA2010
Memcached, presented to LCA2010Mark Atwood
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsSpike Brehm
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009Stefane Fermigier
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
Optaros Surf Code Camp Introduction
Optaros Surf Code Camp IntroductionOptaros Surf Code Camp Introduction
Optaros Surf Code Camp IntroductionJeff Potts
 
Web App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 ENWeb App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 EN光一 原田
 
GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker Uri Cohen
 
Developing Voice Applications in the Cloud
Developing Voice Applications in the CloudDeveloping Voice Applications in the Cloud
Developing Voice Applications in the CloudVoxeo Corp
 

Similar to Project Zero JavaOne 2008 (20)

Php On Java (London Java Community Unconference)
Php On Java (London Java Community Unconference)Php On Java (London Java Community Unconference)
Php On Java (London Java Community Unconference)
 
PHP on Java (BarCamp London 7)
PHP on Java (BarCamp London 7)PHP on Java (BarCamp London 7)
PHP on Java (BarCamp London 7)
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmers
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
 
New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011
 
Mixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphereMixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphere
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stack
 
java web framework standard.20180412
java web framework standard.20180412java web framework standard.20180412
java web framework standard.20180412
 
The DevOps PaaS Infusion - May meetup
The DevOps PaaS Infusion - May meetupThe DevOps PaaS Infusion - May meetup
The DevOps PaaS Infusion - May meetup
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
Memcached, presented to LCA2010
Memcached, presented to LCA2010Memcached, presented to LCA2010
Memcached, presented to LCA2010
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
Optaros Surf Code Camp Introduction
Optaros Surf Code Camp IntroductionOptaros Surf Code Camp Introduction
Optaros Surf Code Camp Introduction
 
Web App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 ENWeb App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 EN
 
GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker
 
Developing Voice Applications in the Cloud
Developing Voice Applications in the CloudDeveloping Voice Applications in the Cloud
Developing Voice Applications in the Cloud
 

More from Robert Nicholson

IBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceIBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceRobert Nicholson
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceRobert Nicholson
 
IBM Hybrid Integration Platform
IBM Hybrid Integration PlatformIBM Hybrid Integration Platform
IBM Hybrid Integration PlatformRobert Nicholson
 
IBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingIBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingRobert Nicholson
 
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastPlatform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastRobert Nicholson
 
Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Robert Nicholson
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182Robert Nicholson
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183Robert Nicholson
 
Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Robert Nicholson
 
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixMessaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixRobert Nicholson
 
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Robert Nicholson
 
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...Robert Nicholson
 

More from Robert Nicholson (13)

IBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceIBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech Conference
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech Conference
 
IBM Hybrid Integration Platform
IBM Hybrid Integration PlatformIBM Hybrid Integration Platform
IBM Hybrid Integration Platform
 
IBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingIBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud Messaging
 
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastPlatform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
 
Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
 
Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014
 
MQ Light for WTU
 MQ Light for WTU MQ Light for WTU
MQ Light for WTU
 
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixMessaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
 
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
 
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
 

Recently uploaded

8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Kirill Klimov
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024christinemoorman
 
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCRashishs7044
 
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu MenzaYouth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menzaictsugar
 
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCRashishs7044
 
Call Girls Miyapur 7001305949 all area service COD available Any Time
Call Girls Miyapur 7001305949 all area service COD available Any TimeCall Girls Miyapur 7001305949 all area service COD available Any Time
Call Girls Miyapur 7001305949 all area service COD available Any Timedelhimodelshub1
 
MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?Olivia Kresic
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchirictsugar
 
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In.../:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...lizamodels9
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMintel Group
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...lizamodels9
 
Islamabad Escorts | Call 03070433345 | Escort Service in Islamabad
Islamabad Escorts | Call 03070433345 | Escort Service in IslamabadIslamabad Escorts | Call 03070433345 | Escort Service in Islamabad
Islamabad Escorts | Call 03070433345 | Escort Service in IslamabadAyesha Khan
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfJos Voskuil
 
Case study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailCase study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailAriel592675
 

Recently uploaded (20)

Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024
 
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
8447779800, Low rate Call girls in Kotla Mubarakpur Delhi NCR
 
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu MenzaYouth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
Youth Involvement in an Innovative Coconut Value Chain by Mwalimu Menza
 
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
 
Call Girls Miyapur 7001305949 all area service COD available Any Time
Call Girls Miyapur 7001305949 all area service COD available Any TimeCall Girls Miyapur 7001305949 all area service COD available Any Time
Call Girls Miyapur 7001305949 all area service COD available Any Time
 
MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?MAHA Global and IPR: Do Actions Speak Louder Than Words?
MAHA Global and IPR: Do Actions Speak Louder Than Words?
 
Corporate Profile 47Billion Information Technology
Corporate Profile 47Billion Information TechnologyCorporate Profile 47Billion Information Technology
Corporate Profile 47Billion Information Technology
 
Marketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent ChirchirMarketplace and Quality Assurance Presentation - Vincent Chirchir
Marketplace and Quality Assurance Presentation - Vincent Chirchir
 
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In.../:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...
/:Call Girls In Indirapuram Ghaziabad ➥9990211544 Independent Best Escorts In...
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 Edition
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
 
Islamabad Escorts | Call 03070433345 | Escort Service in Islamabad
Islamabad Escorts | Call 03070433345 | Escort Service in IslamabadIslamabad Escorts | Call 03070433345 | Escort Service in Islamabad
Islamabad Escorts | Call 03070433345 | Escort Service in Islamabad
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdf
 
Case study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detailCase study on tata clothing brand zudio in detail
Case study on tata clothing brand zudio in detail
 

Project Zero JavaOne 2008

  • 1. The Duke and the Elephant: PHP meets JavaTM Technology. The best of both worlds. Rob Nicholson . IBM Senior Technical Staff Member
  • 2. Agenda Whys and Whats of PHP on the Java Virtual Machine (JVM™) software How we mix PHP, Java platform and Groovy Demonstration of PHP and Java Platform Interaction ProjectZero Community © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Agenda Whys and Whats of PHP on the Java Virtual Machine (JVM™) software How we mix PHP, Java platform and Groovy Demonstration of PHP and Java Platform Interaction ProjectZero Community © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. Why PHP? PHP present on 20M+ web domains (34% of internet) • Validated by significant web properties PHP snippets and extensions exist to do almost anything Language has evolved in open source • Survival of the simplest and fastest Simple syntax and dynamic typing encourage situational applications Gartner (Dec 2007) TIOBE Programming Community Index (March 2008) • PHP Developers to grow from 3 to 5.5 million by 2013 • PHP Developers in Commercial or Corporate IT to grow from 13% to 60% by 2013 • “Pay special attention to opportunities to leverage PHP in combination with Java development efforts” © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. Introducing WebSphere sMash WebSphere sMash is an Agile Web Application Platform • Architected around Dynamic Scripting, REST, Rich Web Interfaces, AJAX, and Feeds • Optimized for • Speed • Simplicity • Agility Key Scenarios • Enables developers to build web 2.0-style applications by easily pulling in, composing, and “cobbling together” pre-existing assets (PHP assets, services, feeds, code snippets) using dynamic scripting languages and simple consumption principles based on REST • Leverages existing SOA investments by enabling rapid development of dynamic web applications that are assembled from enterprise assets and publicly available APIs System language is Java platform Application languages are and • Contains a PHP 5 interpreter written in Java programming language © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. Project Zero Incubating the Technology Project Zero is the development and incubation community for WebSphere sMash • Live on the Internet since June 2007 Project Zero represents • The people that build and use WebSphere sMash • The incubation of new technology that will deliver in future versions of WebSphere sMash • The community of 3rd party assets that leverage the WebSphere sMash platform All released versions are called WebSphere sMash © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. The Duke and the Elephpant © Hideyuki Shimooka © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. Top Level Architecture App components Runtime Dojo Events PHP HTTP server app Browser REST Global Context Runtime app Groovy Local repository Package JavaTM app Remote repository Manager Remote repository Zero Application Loose coupling: Java Virtual Machine • Event driven architecture • Global Context • Virtual Directories © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. PHP Runtime Architecture CLI PZ Http PHP Scripts • Runtime for PHP 5 scripts SAPI-J • Implemented in Java code, runs on any Java platform 5.0+ VM PHP Engine • PHP language elements represented as Java code Variables Parser Cache objects Debug (DBGp) Stack IR P8 Runtime • Parse script to Intermediate Representation (IR) Resources • Cache and Interpret IR Interpreter Classes • Compile ->bytecode prototype Objects Runtime • Extensibility via XAPI • XAPI-C for C extensions from php.net XAPI-C XAPI-J • XAPI-J for new Java platform extensions, Java native libraries invoked over JNI™ API and C Extensions Native Project Zero interface Extensions code • Extension language choice opaque to PHP script PZ Extensions • Java Platform Bridge • Debug using via DBGp using Eclipse with PDT © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. XAPI-J example Extend PHP using Java Platform @XAPIExtension(quot;BigDecimalquot;) public class BigDecimalExt extends ExtensionBaseImpl { @XAPIFunction(quot;add_bigdecimalquot;) public void add(RuntimeContext ctxt) { RuntimeServices rts = getRuntimeServices(); InvocationService inv = rts.getInvocationService(); Object[] args = inv.parseArguments(ctxt, quot;ssquot;, false); BigDecimal arg1 = new BigDecimal(( ( XAPIString) args[0]).getString()); BigDecimal arg2 = new BigDecimal(( ( XAPIString) args[1]).getString()); BigDecimal result = arg1.add(arg2); ctxt.setReturnValue(result.toString()); } © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. Java Platform Bridge Easy access to Java Classes from PHP <?php $date = new Java(quot;java.util.Datequot;, 70, 9, 4); var_dump($date->toString()); $map = new Java(quot;java.util.HashMapquot;); $map->put(quot;titlequot;, quot;Java Bridge!quot;); $map->put(quot;whenquot;, $date); echo $map->get(quot;whenquot;)->toString().quot;nquot;; echo $map->get(quot;titlequot;).quot;nquot;; $array = array(1,2,3,4,5); $map->put(quot;stuffquot;, $array); // PHP array converted to Java Map var_dump($map->get(quot;stuffquot;)).quot;nquot;; ?> © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. Agenda Whys and Whats of PHP on the Java Virtual Machine software How we mix PHP, Java platform and Groovy Demonstration of PHP and Java Platform Interaction ProjectZero Community © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Virtualized Directories Facilitate Application Composition Resources searched across application and dependencies. Apps behave as if directories merged. Applies to all script directories. • /public /app/resources, /app/scripts, /app/views etc. First-one-wins precedence. • Order based on dependency order in ivy files. • Default files searched within each directory first: • {my application}/index.php • {my application}/index.html • {dependency1}/index.php • {dependency1}/index.html © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. REST Services Made easy Zero provides a really simple way to create REST services Convention for create/retrieve/update/delete operations (CRUD) • You can also list the members in the collection. HTTP Method URI Description GET /people List members POST /people Create member GET /people/1 Retrieve member PUT /people/1 Update member DELETE /people/1 Delete member © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. REST Services in WebSphere sMash Each REST service is implemented by a script (called a handler) Scripts live in the directory: <apphome>/app/resources Services are accessed using a standard URL convention: •/resources/<collection name>[/member[/<path info>]] HTTP requests mapped to handler methods as follows: Resource GET PUT POST DELETE Collection list putCollection create deleteCollecti on /people Member retrieve update postMember delete /people/1 © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. Demo – REST in WebSphere sMash 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. Events Promote Loose Coupling All behaviour in the system is modelled as a set of events. • Events are programming language agnostic Fired by an application using fire_event(). fire_event('my_event', array(‘data'=>'foobar')); Event handlers are defined in the Zero configuration file: /config/handlers += { quot;eventsquot; : my_event, quot;handlerquot; : test.php } Request Processing events • requestBegin, secure, GET, PUT, POST, DELETE, log, requestEnd Application specific events • Fired by your application © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. Global Context Event handlers are stateless • interesting applications contain state GC provides access/management of application state • It is NOT persistent. Persistent data goes into the database Conceptually a map of data Divided into a set of zones with different data lifecycles Understands and provides intelligent access to certain data types Externalizes state from the application logic • Enables clustering and scaling to be added transparently © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. Global Content Zones Divided into zones representing different data lifecycles Zone Scope/Visibility Lifecycle Config All requests all users. Loaded from config files. Application All requests for all users of the Life of the application, application but not “persistent” User All request for a particular user For first access until (HTTP Session equivalent) user times out Request All handlers along the path of a For the duration of a single request single request Event All handlers for a single event The duration of a single event © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. Versioning Dependencies Modules are the building blocks of an application A module is simply a collection of files packaged together • Includes a module name, version and author details An application declares the modules it depends on Versioning ensures applications don’t break! • Specific versions can be set (v1.1.34) • Versions upwards from a particular release (v1.0+) • Ranges of acceptable versions (v1.0 – v1.5) Remote catalog servers at PZ.net and maven2 © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Deploying Applications The Application is the server Java VM Web server Application Code Language runtimes Hundreds of applications per box Applications started on demand • inetd style Applications isolation Quality of service and management built in © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Built in development tooling Browser-Based Development IDE Built as a sMash application Provides full development lifecycle for Zero applications • Create, Edit, Test Provides Visual Editors for Activities and Web Page construction • Including a DOJO-enabled page editor Basic Eclipse-based tooling also available if required © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Activities Let Developers Visually “Mash-up” Services and Feeds Compose applications by “wiring” together REST services Visually or programmatically combine existing feeds and services that enrich, sort, and filter data in a pipeline Configure templates to alter pipeline routes, log events along the pipeline Numerous built-in activities, including • Get Feed, Call Service, Aggregate, Sort, Transform, Filter, Send Mail, XSLT, Conditionals, Loops © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. Installing WebSphere sMash Eclipse CLI / Browser IDE Get JavaTM 1.5(+) JDK Get PHP Development Tools (PDT) Download installer (<800K) All-in-one eclipse package Install Zero using the Eclipse update manager Libraries fetched as needed. Links and walkthrough on www.projectzero.org © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. Agenda Whys and Whats of PHP on the Java Virtual Machine software How we mix PHP, Java platform and Groovy Demonstration of PHP and Java Platform Interaction. ProjectZero Community © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. Demo: Integration with SugarCRM Scenario: Scheduling meetings requires co-ordination across the business Solution: WebSphere sMash workflow triggered from SugarCRM PHP-Java Platform Interoperability • The best of both worlds © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. Demo – Integration with SugarCRM 2008 JavaOneSM Conference | java.sun.com/javaone | 27
  • 28. Agenda Whys and Whats of PHP on the Java Virtual Machine software How we mix PHP, Java platform and Groovy Demonstration of PHP and Java Platform Interaction ProjectZero Community © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 28
  • 29. Community Driven Commercial Development Evolve the core platform based on developer feedback Commercial development using a transparent development process Enabled via an external web site providing: http://www.projectzero.org A focal point for all sMash development activities Expose the IBM® development process to the external developer community All design decisions are discussed and communicated via external forums Registered users can post comments and feedback to the forums Frictionless download of latest code and documentation Registration not required for binary downloads Latest builds immediately available to developers Source code can be viewed by registered users © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 29
  • 30. Site Contents Content • Documentation • Project information • Roadmaps • Design documents • Demos and Samples • iCal calendar • Future plans Forum for interactive discussion • Help and Feedback for questions from users • Developer Alerts to notify users of new features and breaking changes • Zero Development for publicly accessible discussion amongst the Zero development team • 3554 Posts on 828 Topics to date Blogs • Development blog with interesting commentary, demos, and opinion • News blog for project announcements Binary Downloads (257,738 and counting…) Bug Tracking System (Bugzilla) Source code (Subversion) © 2008 IBM Corporation 3 2008 JavaOneSM Conference | java.sun.com/javaone | 30
  • 31. Features of sMash we have not covered today File Serving Error Handling View Rendering Logging, Tracing, Debugging Client Programming with the Dojo Ajax Framework Security Nested resources © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 31
  • 32. Summary Project Zero is incubating technologies to build web applications in WebSphere sMash • Simply! WebSphere sMash contains a PHP runtime which runs on a JVM software WebSphere sMash enables same process interoperability between PHP, Java platform and Groovy © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 32
  • 33. Questions? © 2008 IBM Corporation 2008 JavaOneSM Conference | java.sun.com/javaone | 33
  • 34. Rob Nicholson 2008 JavaOneSM Conference | java.sun.com/javaone | 34