Sunteți pe pagina 1din 19

Building Desktop RIAs with

PHP and JavaScript


Ed Finkler • funkatron.com • @funkatron
CodeWorks 09
What to expect
This is mainly a JavaScript talk
Compare JS and PHP
jQuery framework for JS examples
This is mainly a desktop app dev talk
Diffs between server app dev and desktop app dev
Examples of desktop app <-> server app interaction
Web runtimes
A browser engine environment used for building "local"
apps
Current web runtimes
AIR (adobe.com/go/air)
Desktop
Titanium (titaniumapp.com)
Desktop
Mobile
Palm webOS
(developer.palm.com)
Mobile
We'll use AIR
But others bear examination
JavaScript in AIR
Can use (almost) any
available JS libs/frameworks
No cross-domain
restrictions
security restrictions in app
sandbox ( eval() )
Access AIR APIs
Access standard Flash APIs
Use compiled AS3 libs
PHP vs JavaScript
JavaScript is fundamentally
different
JS is a functional
language
closures
first-order functions
Object model is totally
different
PHP vs JavaScript
Everything in JS is an object
Arrays are not associative – objects serve as
associative array equivalents
No include/require statements available
Event-driven model/asynchronous actions

Further reading:
– JavaScript: The Definitive Guide, David Flanagan
– MDC JavaScript Guide; MDC JavaScript Ref
Desktop vs Server-side
PHP stack is built up/torn down every time
mem leaks not much of an issue
exec time < a few seconds max
almost always synchronous calls
Desktop apps are persistent
exec time can be hours or days
mem leaks a HUGE issue
lots of asynchronous calls
JavaScript frameworks
Some stuff is a huge pain without the help of a
framework
Lots of choices
Must play well with AIR
eval usage gotchas
jQuery pwnz yoo

jQuery is teh awesome


but you can use anything
PHP is your server-side buddy
PHP
tubby jedi master

JavaScript
hyper frontman

Use 5.2 at least (you are, right?)


adds native JSON encoding/decoding
PHP talking to AIR
Serve data structures instead of HTML
Use JSON

Use JSON

USE JSON
do not use XML (if you can avoid it)
set the correct mime type (application/json)
Example 1:
PHP duz yer math
Async calls using jQuery AJAX methods
Communicate via JSON

Flash
Zee Cloud
web server

Webkit
Example 2:
PHP 'shops yer pics
Uploading via Flash APIs
JSON based communication

Flash
Zee Cloud
web server

Webkit
Example 3:
DearZend.com
JSON based communication
Desktop alternative to web front-end

Flash
Zee Cloud
web server

Webkit
Additional resources
Adobe AIR for JavaScript Developers Pocketguide
http://www.tostring.org/

Developing Adobe® AIR™ Applications with HTML and Ajax


http://short.ie/ggd9tc

Titanium
http://titaniumapp.com/

Titanium Forums
http://short.ie/d4ponk

Searchatron Source
http://short.ie/g9z6qt

DearZend.com source
http://github.com/funkatron/dearzend-server
http://github.com/funkatron/dearzend-client
Additional resources
Spaz Desktop Source
http://code.google.com/p/spaz/

Spaz webOS Source


http://github.com/funkatron/spaz-webos/

SpazCore
http://github.com/funkatron/spazcore
Questions?
@funkatron • http://funkatron.com • joind.in

S-ar putea să vă placă și