Building Desktop RIAs with PHP and JavaScript

Post on 16-Nov-2014

474 views 3 download

Tags:

description

Ed Finkler's slides from CodeWorks 09client code: http://funkatron.com/content/codeworks09-riaphpjs-client.zipserver code : http://funkatron.com/content/codeworks09-riaphpjs-server.zip

transcript

Building Desktop RIAs with PHP and JavaScriptEd Finkler • funkatron.com • @funkatronCodeWorks 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 runtimesAIR (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 AIRCan 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 awesomebut you can use anything

PHPtubby jedi master

JavaScripthyper frontman

PHP is your server-side buddy

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 JSONdo 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

Zee Cloudweb server

Webkit

Flash

Example 2:PHP 'shops yer pics

Uploading via Flash APIs

JSON based communication

Zee Cloudweb server

Webkit

Flash

Example 3:DearZend.com

JSON based communication

Desktop alternative to web front-end

Zee Cloudweb server

Webkit

Flash

Additional resourcesAdobe AIR for JavaScript Developers Pocketguidehttp://www.tostring.org/

Developing Adobe® AIR™ Applications with HTML and Ajaxhttp://short.ie/ggd9tc

Titaniumhttp://titaniumapp.com/

Titanium Forumshttp://short.ie/d4ponk

Searchatron Sourcehttp://short.ie/g9z6qt

DearZend.com sourcehttp://github.com/funkatron/dearzend-serverhttp://github.com/funkatron/dearzend-client

Additional resourcesSpaz Desktop Sourcehttp://code.google.com/p/spaz/

Spaz webOS Sourcehttp://github.com/funkatron/spaz-webos/

SpazCorehttp://github.com/funkatron/spazcore

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