442
AJAX WORLD AJAX WORLD March 2008 March 2008

Ajax World 2008

Embed Size (px)

Citation preview

Page 1: Ajax World 2008

AJAX WORLDAJAX WORLDMarch 2008March 2008

Page 2: Ajax World 2008

Jeff HaynieJeff HaynieCo-founder & CEOCo-founder & CEO

[email protected]@appcelerator.comblog.jeffhaynie.usblog.jeffhaynie.ustwitter.com/jhaynietwitter.com/jhaynielinkedin.com/in/jhaynielinkedin.com/in/jhaynie

Page 3: Ajax World 2008

how did we get how did we get here?here?

Page 4: Ajax World 2008

19911991

Page 5: Ajax World 2008

Dave LitwackDave LitwackMitchell KertzmanMitchell Kertzman

Page 6: Ajax World 2008

PowersoftPowersoft

Page 7: Ajax World 2008

PowerbuilderPowerbuilder

Page 8: Ajax World 2008

client / serverclient / server

Page 9: Ajax World 2008

proprietaryproprietary

Page 10: Ajax World 2008

rapid app devrapid app dev

Page 11: Ajax World 2008

database integrationdatabase integration

Page 12: Ajax World 2008

$5.2M$5.2M(6 months from 1.0)(6 months from 1.0)

Page 13: Ajax World 2008

Profitable: year oneProfitable: year one

Page 14: Ajax World 2008

IPO Feb. 1993IPO Feb. 1993(~3 years)(~3 years)

Page 15: Ajax World 2008

$57M 1993$57M 1993

Page 16: Ajax World 2008

suits came knockingsuits came knocking

Page 17: Ajax World 2008
Page 18: Ajax World 2008

$900M - 1995$900M - 1995

Page 19: Ajax World 2008

OopsOops

(sybase fabricated sales figures)(sybase fabricated sales figures)

Page 20: Ajax World 2008

revolutionized the revolutionized the way we built appsway we built apps

Page 21: Ajax World 2008

focus on the appfocus on the app

(and ultimately, our business requirements)(and ultimately, our business requirements)

Page 22: Ajax World 2008
Page 23: Ajax World 2008

19911991

Page 24: Ajax World 2008

ComdexComdex(Atlanta)(Atlanta)

Page 25: Ajax World 2008
Page 26: Ajax World 2008
Page 27: Ajax World 2008

client / serverclient / server

Page 28: Ajax World 2008

easy to build appseasy to build apps

Page 29: Ajax World 2008

event drivenevent driven

Page 30: Ajax World 2008

integration to DBintegration to DB

Page 31: Ajax World 2008

last release: 1996last release: 1996(vb6)(vb6)

Page 32: Ajax World 2008
Page 33: Ajax World 2008

March 31, 2005March 31, 2005

(extended to March 2008 - (extended to March 2008 - better hurry up and replace)better hurry up and replace)

Page 34: Ajax World 2008

focus on the appfocus on the app

Page 35: Ajax World 2008

2-tier architecture2-tier architecture

Page 36: Ajax World 2008

client = applicationclient = application

Page 37: Ajax World 2008

rapid app creationrapid app creation

Page 38: Ajax World 2008

productivityproductivity

Page 39: Ajax World 2008

ease of useease of use

Page 40: Ajax World 2008

distributiondistribution

Page 41: Ajax World 2008

securitysecurity

Page 42: Ajax World 2008

programming model

Page 43: Ajax World 2008

client/server was client/server was proliferating, proliferating,

something else was something else was happeninghappening

Page 44: Ajax World 2008

19891989

Page 45: Ajax World 2008
Page 46: Ajax World 2008

tim berners-leetim berners-lee

Page 47: Ajax World 2008

CERNCERN(europe)(europe)

Page 48: Ajax World 2008

world wide webworld wide web

Page 49: Ajax World 2008

wwwwww

Page 50: Ajax World 2008

webweb

Page 51: Ajax World 2008

hyper text transferhyper text transferprotocolprotocol

Page 52: Ajax World 2008

httphttp

Page 53: Ajax World 2008

http://http://www.example.comwww.example.com

(if you don’t know this you’re in the wrong presentation)(if you don’t know this you’re in the wrong presentation)

Page 54: Ajax World 2008

directorydirectory(browsing)(browsing)

Page 55: Ajax World 2008

sharing contentsharing content

(research)(research)

Page 56: Ajax World 2008

primary display was primary display was texttext

Page 57: Ajax World 2008

network of network of connected connected computerscomputers

Page 58: Ajax World 2008

killer app = killer app = informationinformation

Page 59: Ajax World 2008

19921992

Page 60: Ajax World 2008
Page 61: Ajax World 2008

marc andreessen marc andreessen

Page 62: Ajax World 2008

student at student at univ of illinoisuniv of illinois

Page 63: Ajax World 2008

mosaicmosaic“web browser”“web browser”

Page 64: Ajax World 2008
Page 65: Ajax World 2008
Page 66: Ajax World 2008

19941994

Page 67: Ajax World 2008
Page 68: Ajax World 2008

Mosaic Communications Mosaic Communications CorporationCorporation

Page 69: Ajax World 2008

Netscape CommunicationsNetscape Communications

Page 70: Ajax World 2008

Netscape Netscape CommunicatorCommunicator

Page 71: Ajax World 2008
Page 72: Ajax World 2008

IPO 1995IPO 1995

Page 73: Ajax World 2008

browser wars(1995)

Page 74: Ajax World 2008

massive adoptionmassive adoption

Page 75: Ajax World 2008

web sites were slowweb sites were slowinternet was slowinternet was slow

Page 76: Ajax World 2008

almost all initial web almost all initial web sites were content-sites were content-

basedbased

Page 77: Ajax World 2008

the “web” initially the “web” initially competed with competed with

consumer info services consumer info services like AOL, Compuserve like AOL, Compuserve

and Prodigyand Prodigy

Page 78: Ajax World 2008

primarily still web primarily still web content you “browsed”content you “browsed”

Page 79: Ajax World 2008
Page 80: Ajax World 2008

distributed distributed freefree

(brilliant and bold move)(brilliant and bold move)

Page 81: Ajax World 2008

bundled win95 bundled win95 (plus! pack)(plus! pack)

Page 82: Ajax World 2008

(isn’t it great being a monopoly?)(isn’t it great being a monopoly?)

Page 83: Ajax World 2008

based on spyglass mosaicbased on spyglass mosaic

(remember Netscape?)(remember Netscape?)

Page 84: Ajax World 2008

MASSIVE ADOPTIONMASSIVE ADOPTION

Page 85: Ajax World 2008

January 1998January 1998

Page 86: Ajax World 2008

mozilla open sourcemozilla open source

Page 87: Ajax World 2008

(kick butt release party)(kick butt release party)

Page 88: Ajax World 2008
Page 89: Ajax World 2008
Page 90: Ajax World 2008

microsoft had 2 primary microsoft had 2 primary killer advantages:killer advantages:

Page 91: Ajax World 2008

Operating System platformOperating System platform

Page 92: Ajax World 2008

Developer CommunityDeveloper Community

Page 93: Ajax World 2008

May 1998May 1998

Page 94: Ajax World 2008

DOJ ruled MSFT violated anti-trust

Page 95: Ajax World 2008

(too late, game was (too late, game was pretty much over)pretty much over)

Page 96: Ajax World 2008

November 1998November 1998

Page 97: Ajax World 2008

$4.2 BILLION$4.2 BILLION

Page 98: Ajax World 2008
Page 99: Ajax World 2008

web browser changed web browser changed the way we think about the way we think about

appsapps

Page 100: Ajax World 2008

distribution of appsdistribution of apps

Page 101: Ajax World 2008

programming modelprogramming model

Page 102: Ajax World 2008

development of softwaredevelopment of software

Page 103: Ajax World 2008

web 1.0web 1.0

Page 104: Ajax World 2008

three-tier three-tier architecturearchitecture

Page 105: Ajax World 2008

server is the brainserver is the brain

Page 106: Ajax World 2008

client is for displayclient is for display

(doesn’t that sound like the mainframe architecture?)(doesn’t that sound like the mainframe architecture?)

Page 107: Ajax World 2008

the way we built the way we built apps changed based apps changed based

on “the web”on “the web”

Page 108: Ajax World 2008

common gateway interfacecommon gateway interface

(CGI)(CGI)

Page 109: Ajax World 2008

netscape APInetscape API

(nsapi)(nsapi)

Page 110: Ajax World 2008

web serversweb servers

Page 111: Ajax World 2008

app serversapp servers

Page 112: Ajax World 2008

database serversdatabase servers

Page 113: Ajax World 2008

caching serverscaching servers

Page 114: Ajax World 2008

web pagesweb pages

Page 115: Ajax World 2008

web appsweb apps

Page 116: Ajax World 2008

massive new way of massive new way of thinking about the thinking about the

web and appsweb and apps

(a lot was fueled by dot.com bubble)(a lot was fueled by dot.com bubble)

Page 117: Ajax World 2008

19951995

Page 118: Ajax World 2008
Page 119: Ajax World 2008

James GoslingJames Gosling

Page 120: Ajax World 2008
Page 121: Ajax World 2008

JavaJava

Page 122: Ajax World 2008

Write once,Write once,Run anywhereRun anywhere

Page 123: Ajax World 2008

BrowserBrowser

Page 124: Ajax World 2008

AppletsApplets

Page 125: Ajax World 2008

Java Web StartJava Web Start

(some years later after applets failed)(some years later after applets failed)

Page 126: Ajax World 2008

slow

Page 127: Ajax World 2008

big

Page 128: Ajax World 2008

UI differences

Page 129: Ajax World 2008

web app?

Page 130: Ajax World 2008

native app?

(sure didn’t look like one)

Page 131: Ajax World 2008

programming model

Page 132: Ajax World 2008

browser plugin

Page 133: Ajax World 2008

java language was java language was great!great!

Page 134: Ajax World 2008

but … apparent java but … apparent java would not be would not be deployed in deployed in

browser browser environmentenvironment

Page 135: Ajax World 2008

java did change the java did change the way we built web way we built web

sitessites

(and it still continues today)(and it still continues today)

Page 136: Ajax World 2008

why the web?why the web?

Page 137: Ajax World 2008

web programming web programming modelmodel

Page 138: Ajax World 2008

distributeddistributed

Page 139: Ajax World 2008

easy to programeasy to program

Page 140: Ajax World 2008

UI simple to layoutUI simple to layout

Page 141: Ajax World 2008

cross-browser differences

Page 142: Ajax World 2008

open source open source emerging rapidly emerging rapidly

with Internetwith Internet

Page 143: Ajax World 2008

standards-basedstandards-based

Page 144: Ajax World 2008

19941994

Page 145: Ajax World 2008
Page 146: Ajax World 2008

tim berners-leetim berners-lee

(remember, he created the web?)(remember, he created the web?)

Page 147: Ajax World 2008

preserve, promotepreserve, promoteweb standardsweb standards

Page 148: Ajax World 2008

““ensure compatibility ensure compatibility among vendors”among vendors”

Page 149: Ajax World 2008

(are we there yet?)(are we there yet?)

Page 150: Ajax World 2008

HTMLHTML

Page 151: Ajax World 2008

CSSCSS

Page 152: Ajax World 2008

XMLXML

Page 153: Ajax World 2008

DOMDOM

Page 154: Ajax World 2008

CGICGI

Page 155: Ajax World 2008

VoiceXML / CCXMLVoiceXML / CCXML

Page 156: Ajax World 2008

(too many more to list)(too many more to list)

Page 157: Ajax World 2008

HTML 1.0 – 1993HTML 1.0 – 1993(IETF WD)(IETF WD)

Page 158: Ajax World 2008

HTML 2.0 – 1995HTML 2.0 – 1995(IETF RFC)(IETF RFC)

Page 159: Ajax World 2008

HTML 3.0/3.2HTML 3.0/3.2(W3C)(W3C)

Page 160: Ajax World 2008

HTML 4.0HTML 4.0(1997)(1997)

Page 161: Ajax World 2008

(XHTML came along (XHTML came along the way)the way)

Page 162: Ajax World 2008

HTML 5.0(Jan 2008 - WD)

11 years!

Page 163: Ajax World 2008

Client-side data Client-side data storagestorage

Page 164: Ajax World 2008

videovideo

Page 165: Ajax World 2008

cross document cross document messagingmessaging

Page 166: Ajax World 2008

remotingremoting

Page 167: Ajax World 2008

(continuing to expand (continuing to expand idea of what a web app is)idea of what a web app is)

Page 168: Ajax World 2008

XHTML or HTML?

Page 169: Ajax World 2008

most innovation has most innovation has been on the serverbeen on the server

Page 170: Ajax World 2008

servletsservlets

Page 171: Ajax World 2008

JSP pagesJSP pages

Page 172: Ajax World 2008

ASP pagesASP pages

Page 173: Ajax World 2008

tag libariestag libaries

Page 174: Ajax World 2008

PHP pagesPHP pages

Page 175: Ajax World 2008

(and lots of (and lots of embedded sql)embedded sql)

Page 176: Ajax World 2008

cold fusioncold fusion

(so many other great server-side web frameworks)(so many other great server-side web frameworks)

Page 177: Ajax World 2008

server-driven UI

Page 178: Ajax World 2008

model-view-model-view-controller controller

(MVC)(MVC)

Page 179: Ajax World 2008

(server-assisted (server-assisted

MVC)MVC)

Page 180: Ajax World 2008

server generates UI

Page 181: Ajax World 2008

UI is a template page

Page 182: Ajax World 2008

same HTML(almost always)

Page 183: Ajax World 2008

not very environmentally

friendly

Page 184: Ajax World 2008

age of server-sideage of server-sideinfrastructureinfrastructure

Page 185: Ajax World 2008

application serversapplication servers

Page 186: Ajax World 2008

““middleware”middleware”

Page 187: Ajax World 2008

new app new app complexities on the complexities on the

server sideserver side

Page 188: Ajax World 2008

cache business cache business objectsobjects

Page 189: Ajax World 2008

cache page cache page templatestemplates

Page 190: Ajax World 2008

cache SQL queriescache SQL queries

Page 191: Ajax World 2008

session statesession state

Page 192: Ajax World 2008

stored application stored application statestate

Page 193: Ajax World 2008

(we used to call it (we used to call it application state)application state)

Page 194: Ajax World 2008

session clusteringsession clustering

Page 195: Ajax World 2008

sticky sessionssticky sessions

(optimize load (optimize load balancing)balancing)

Page 196: Ajax World 2008

clustering not linearclustering not linear

Page 197: Ajax World 2008

middlewaremiddlewarewarswars

Page 198: Ajax World 2008

hundreds of app hundreds of app serversservers

Page 199: Ajax World 2008

lots of server-side lots of server-side frameworksframeworks

Page 200: Ajax World 2008

lots of big lots of big companies rolled companies rolled their own initiallytheir own initially

Page 201: Ajax World 2008

IBMIBM

Page 202: Ajax World 2008

SunSun

Page 203: Ajax World 2008

BEABEA(weblogic)(weblogic)

Page 204: Ajax World 2008

organized around organized around J2EE specificationJ2EE specification

Page 205: Ajax World 2008

community-basedcommunity-based(Sun JCP)(Sun JCP)

Page 206: Ajax World 2008

heavy weight

Page 207: Ajax World 2008

overly complex

Page 208: Ajax World 2008

too many specs to keep up with

Page 209: Ajax World 2008

widely adoptedwidely adopted

Page 210: Ajax World 2008

clusteringclustering

Page 211: Ajax World 2008

fail-overfail-over

Page 212: Ajax World 2008

high-availabilityhigh-availability

Page 213: Ajax World 2008

Microsoft .NET

Page 214: Ajax World 2008

wasn’t J2EEwasn’t J2EE

(not necessarily a bad thing)(not necessarily a bad thing)

Page 215: Ajax World 2008

wasn’t even javawasn’t even java

(of course not)(of course not)

Page 216: Ajax World 2008

2000 – Microsoft C#2000 – Microsoft C#

(feels a lot like Java)(feels a lot like Java)

Page 217: Ajax World 2008

part of part of Microsoft .NETMicrosoft .NET

Page 218: Ajax World 2008

web-programming web-programming modelmodel

Page 219: Ajax World 2008

(for Microsoft platform)

Page 220: Ajax World 2008

19991999

Page 221: Ajax World 2008
Page 222: Ajax World 2008

(not flavor flav)(not flavor flav)

Page 223: Ajax World 2008
Page 224: Ajax World 2008

(marc fleury)(marc fleury)

Page 225: Ajax World 2008

JBossJBoss

Page 226: Ajax World 2008

Java application Java application serverserver

(and eventually J2EE)(and eventually J2EE)

Page 227: Ajax World 2008

FREE!FREE!

(well, almost)(well, almost)

Page 228: Ajax World 2008

open sourceopen source

Page 229: Ajax World 2008

J2EE programming J2EE programming modelmodel

(and it almost made J2EE fun)(and it almost made J2EE fun)

Page 230: Ajax World 2008

20012001(JBoss, LLC)(JBoss, LLC)

Page 231: Ajax World 2008

innovation primarily innovation primarily driven by server-driven by server-

side infrastructureside infrastructure

Page 232: Ajax World 2008

apps not much different

(1999)

Page 233: Ajax World 2008

server-assisted MVCserver-assisted MVC

Page 234: Ajax World 2008

service oriented service oriented architecturearchitecture

Page 235: Ajax World 2008

middleware = SOAmiddleware = SOA

Page 236: Ajax World 2008

service federationsservice federations

Page 237: Ajax World 2008

distributed distributed registriesregistries

Page 238: Ajax World 2008

service compositionservice composition

Page 239: Ajax World 2008

service service orchestrationorchestration

Page 240: Ajax World 2008

portalsportals

Page 241: Ajax World 2008

ESBESB

Page 242: Ajax World 2008

$60B Market$60B Market

(at least they say it was)(at least they say it was)

Page 243: Ajax World 2008

But business applications still

function the same

Page 244: Ajax World 2008

Jesse James GarrettJesse James Garrett“AJAX” 2005“AJAX” 2005

Page 245: Ajax World 2008

Microsoft & Microsoft & NetscapeNetscape

Page 246: Ajax World 2008

early inter-appletearly inter-applettechniquestechniques

Page 247: Ajax World 2008

applets to slow to startapplets to slow to start

Page 248: Ajax World 2008

IE5 – MSFT createdIE5 – MSFT createdXHRXHR

Page 249: Ajax World 2008

Microsoft Outlook WebMicrosoft Outlook Web

(Microsoft was innovating!)(Microsoft was innovating!)

Page 250: Ajax World 2008

Web 1.5Web 1.5

Page 251: Ajax World 2008

MVC + AjaxMVC + Ajax

Page 252: Ajax World 2008

round peground pegsquare holesquare hole

Page 253: Ajax World 2008

page driven page driven paradigm with paradigm with async behaviorasync behavior

Page 254: Ajax World 2008

look Ma – no page refreshlook Ma – no page refresh

Page 255: Ajax World 2008

cool, but. . .cool, but. . .

Page 256: Ajax World 2008

it’s only “pimp my web 1.0”it’s only “pimp my web 1.0”

Page 257: Ajax World 2008
Page 258: Ajax World 2008

but lots of startups and but lots of startups and innovative web companies innovative web companies

thinking bigthinking big

Page 259: Ajax World 2008

web 2.0web 2.0

Page 260: Ajax World 2008

starting to think starting to think about apps againabout apps again

Page 261: Ajax World 2008

networks are fasternetworks are faster

Page 262: Ajax World 2008

hardware is cheaphardware is cheap

Page 263: Ajax World 2008

software is moving software is moving to open sourceto open source

Page 264: Ajax World 2008

and everyone is and everyone is wired and on the wired and on the

webweb

Page 265: Ajax World 2008

user experienceuser experience

Page 266: Ajax World 2008
Page 267: Ajax World 2008
Page 268: Ajax World 2008

richer appsricher apps

Page 269: Ajax World 2008

dynamic infodynamic info

Page 270: Ajax World 2008

web is the platformweb is the platform

Page 271: Ajax World 2008
Page 272: Ajax World 2008
Page 273: Ajax World 2008
Page 274: Ajax World 2008

(you can do that?)(you can do that?)

Page 275: Ajax World 2008
Page 276: Ajax World 2008
Page 277: Ajax World 2008
Page 278: Ajax World 2008

(my enterprise apps (my enterprise apps need that)need that)

Page 279: Ajax World 2008

(but, how?)(but, how?)

Page 280: Ajax World 2008

different solutionsdifferent solutions

(we’re innovating again)(we’re innovating again)

Page 281: Ajax World 2008

different different approachesapproaches

(and some feel like déjà vu)(and some feel like déjà vu)

Page 282: Ajax World 2008

Sun doing Sun doing something similar something similar

as beforeas before(as best we can tell)(as best we can tell)

Page 283: Ajax World 2008
Page 284: Ajax World 2008

(yawn…)(yawn…)

Page 285: Ajax World 2008

MSFT doing MSFT doing something similar something similar

as beforeas before(it’s great being on top)(it’s great being on top)

Page 286: Ajax World 2008
Page 287: Ajax World 2008

(surprise!)(surprise!)

Page 288: Ajax World 2008

Adobe has an Adobe has an innovative approach innovative approach that leverages Flashthat leverages Flash

Page 289: Ajax World 2008
Page 290: Ajax World 2008

wonderful productwonderful product

Page 291: Ajax World 2008

open sourceopen source

(kind of)(kind of)

Page 292: Ajax World 2008

““Web 2.0” is Web 2.0” is overloadedoverloaded

Page 293: Ajax World 2008

Web 2.0 = rich clientWeb 2.0 = rich client

Page 294: Ajax World 2008

rich client = client programmingrich client = client programming

Page 295: Ajax World 2008

rich client != UI code in serverrich client != UI code in server

Page 296: Ajax World 2008

okay, but how?okay, but how?

Page 297: Ajax World 2008

JavascriptJavascript

Page 298: Ajax World 2008

(and lots of it)

Page 299: Ajax World 2008

simple login formsimple login formexampleexample

Page 300: Ajax World 2008

<html><head><title>Simple Ajax Login Example</title><script language="Javascript">function xmlhttpPost(strURL) { var xmlHttpReq = false; var self = this; // Mozilla/Safari if (window.XMLHttpRequest) { self.xmlHttpReq = new XMLHttpRequest(); } // IE else if (window.ActiveXObject) { self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } self.xmlHttpReq.open('POST', strURL, true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.onreadystatechange = function() { if (self.xmlHttpReq.readyState == 4) { updatepage(self.xmlHttpReq.responseText); } } self.xmlHttpReq.send(getquerystring());}

function getquerystring() { var form = document.forms['f1']; var username = form.username.value; var password = form.password.value; qstr = ‘username=' + escape(username) + ‘&password=‘ + password; return qstr;}

function updatepage(str){ document.getElementById("result").innerHTML = str;}</script></head><body><form name="f1"> <p>username: </p> <input name=”username" type="text”/> <p>password: </p> <input name=”password" type="text”/> <input value=”login" type="button" onclick='JavaScript:xmlhttpPost("/cgi-bin/simple-ajax-example.cgi")'></p> <div id="result"></div></form></body></html>

Page 301: Ajax World 2008

(Yikes!!!)(Yikes!!!)

Page 302: Ajax World 2008

25+ lines of Javascript

Page 303: Ajax World 2008

for one simple login form

Page 304: Ajax World 2008

rich client = mountains of JS?rich client = mountains of JS?

Page 305: Ajax World 2008

mountains of JS = nightmare

Page 306: Ajax World 2008

(crap. now what?)(crap. now what?)

Page 307: Ajax World 2008

open standards +open source

(to the rescue)

open standards +open source

(to the rescue)

Page 308: Ajax World 2008

Javascript librariesJavascript libraries

Page 309: Ajax World 2008

and lots of themand lots of them

Page 310: Ajax World 2008

widget librarieswidget libraries

Page 311: Ajax World 2008

Ajax librariesAjax libraries

Page 312: Ajax World 2008

effect librarieseffect libraries

Page 313: Ajax World 2008

(here’s just a few)(here’s just a few)

Page 314: Ajax World 2008

PrototypePrototype

Page 315: Ajax World 2008

ScriptaculousScriptaculous

Page 316: Ajax World 2008

JQueryJQuery

Page 317: Ajax World 2008

DojoDojo

Page 318: Ajax World 2008

ExtJSExtJS

Page 319: Ajax World 2008

Yahoo YUIYahoo YUI

Page 320: Ajax World 2008

MootoolsMootools

Page 321: Ajax World 2008

Open RicoOpen Rico

Page 322: Ajax World 2008

QooxdooQooxdoo

Page 323: Ajax World 2008

MochiKitMochiKit

Page 324: Ajax World 2008

LightboxLightbox

Page 325: Ajax World 2008

GreyboxGreybox

Page 326: Ajax World 2008

Lightbox PlusLightbox Plus

Page 327: Ajax World 2008

Nifty CornersNifty Corners

Page 328: Ajax World 2008

(okay to breathe)(okay to breathe)

Page 329: Ajax World 2008

(you get the point)(you get the point)

Page 330: Ajax World 2008

all great libraries!all great libraries!

Page 331: Ajax World 2008

how do I keep up with them all?

Page 332: Ajax World 2008

multiple versions, bug fixes

Page 333: Ajax World 2008

integration issues, glue codenamespace issues

Page 334: Ajax World 2008

(but I thought that was the (but I thought that was the platform vendor’s job!)platform vendor’s job!)

Page 335: Ajax World 2008

with chaos comes with chaos comes opportunityopportunity

Page 336: Ajax World 2008

open standardsopen standards

Page 337: Ajax World 2008

open sourceopen source

(the entire bits)(the entire bits)

Page 338: Ajax World 2008

open developer open developer communitycommunity

Page 339: Ajax World 2008

integrated RIA integrated RIA programming model programming model

(HTML, CSS and Javascript)(HTML, CSS and Javascript)

Page 340: Ajax World 2008

what does that mean?what does that mean?

Page 341: Ajax World 2008

well, what does an RIA well, what does an RIA programmer do?programmer do?

Page 342: Ajax World 2008

event handling, Ajax, event handling, Ajax, DHTMLDHTML

Page 343: Ajax World 2008

(Got it!) (Got it!)

Page 344: Ajax World 2008

login form revisited login form revisited

Page 345: Ajax World 2008

<html> <head>

<title>Hello World 2.0</title> <script src="javascripts/appcelerator.js"

type="text/javascript"></script> </head> <body>

<div on=“r:login.request then show or r:login.response then hide”style=“display:none”><img src=“images/indicator.gif” /> processing login…

</div> Username: <input type=“text id=“username” fieldset=“login”/>Password: <input type=“password id=“password fieldset=“login”/><input type=“button” value=“login” fieldset=“login”

on=“click then r:login.request”/></body>

</html>

Page 346: Ajax World 2008

on=“r:login.request then show”on=“r:login.request then show”

Page 347: Ajax World 2008

(what is that?)(what is that?)

Page 348: Ajax World 2008

event handling + Ajax + DHTML

one simple expression language

event handling + Ajax + DHTML

one simple expression language

Page 349: Ajax World 2008

it’s an integrated RIA it’s an integrated RIA programming modelprogramming model

Page 350: Ajax World 2008

that leverages standards that leverages standards

(like HTML, CSS and (like HTML, CSS and Javascript)Javascript)

Page 351: Ajax World 2008

it codes Javascript so it codes Javascript so you don’t have toyou don’t have to

Page 352: Ajax World 2008

(Web Expression Language)(Web Expression Language)

Page 353: Ajax World 2008

cool, but what about cool, but what about widgets?widgets?

Page 354: Ajax World 2008

(good question)(good question)

Page 355: Ajax World 2008

I want to be able to I want to be able to create new widgetscreate new widgets

Page 356: Ajax World 2008

leverage all of the leverage all of the great existing widgetsgreat existing widgets

Page 357: Ajax World 2008

I want one single I want one single integrated way to use integrated way to use

them ALLthem ALL

Page 358: Ajax World 2008
Page 359: Ajax World 2008

how about this:how about this:

Page 360: Ajax World 2008

<!– ExtJS Grid --><app:ext_grid on="l:show.user.response then execute"

property="rows" width="390"title=”Users”> <column property=”first” >First Name</column><column property=”last”>Last Name</column><column property=”phone”>Phone</column>

</app:ext_grid>

<!– Yahoo Calendar --><app:calendar on="l:show.calendar then execute"

title=”My Calendar" inputId=”date”>

</app:calendar>

<input type=“text” id=“date”/><img src=“images/calendar.png” on=“click then l:show.calendar”/>

Page 361: Ajax World 2008

ExtJS and YUI in one ExtJS and YUI in one widget framework?widget framework?

Page 362: Ajax World 2008

(yes, and any others you (yes, and any others you want)want)

Page 363: Ajax World 2008

including Flex widgets!including Flex widgets!

Page 364: Ajax World 2008

(and you can easily (and you can easily create your own)create your own)

Page 365: Ajax World 2008
Page 366: Ajax World 2008

okay, calm down Sallyokay, calm down Sally

Page 367: Ajax World 2008

let’s recaplet’s recap

Page 368: Ajax World 2008

Web Expression Language + Web Expression Language + Unified Widget Framework +Unified Widget Framework +

Open Standards +Open Standards +Open Source = Open Source =

Page 369: Ajax World 2008

fully integrated RIA platformfully integrated RIA platform

Page 370: Ajax World 2008
Page 371: Ajax World 2008

RIA is good but what RIA is good but what about my services?about my services?

Page 372: Ajax World 2008

(and that $60B (and that $60B investment in SOA?)investment in SOA?)

Page 373: Ajax World 2008

you want to mix your RIA you want to mix your RIA with your SOAwith your SOA

Page 374: Ajax World 2008

RIA + SOARIA + SOA

Page 375: Ajax World 2008

full decoupling of the rich full decoupling of the rich client from its services client from its services

Page 376: Ajax World 2008

they share only one they share only one thingthing

Page 377: Ajax World 2008

a lightweight message a lightweight message contractcontract

(aren’t they services?)(aren’t they services?)

Page 378: Ajax World 2008

(need a picture?)(need a picture?)

Page 379: Ajax World 2008

Rich ClientRich Client ServiceService

r:login.request{‘username’:’joe’, ‘password’:’****’}

r:login.response{‘success’:true}

Page 380: Ajax World 2008

Contract = message nameContract = message name

Page 381: Ajax World 2008

login.request login.request and and login.responselogin.response

Page 382: Ajax World 2008

plus input and output dataplus input and output data

Page 383: Ajax World 2008

(that’s it!)(that’s it!)

Page 384: Ajax World 2008

if the contract is message-basedif the contract is message-based

Page 385: Ajax World 2008

why does the service why does the service programming language matter?programming language matter?

Page 386: Ajax World 2008

good question.good question.

Page 387: Ajax World 2008

(it doesn’t)(it doesn’t)

Page 388: Ajax World 2008

with a message-based contract with a message-based contract you can create services in any you can create services in any

programming language!programming language!

Page 389: Ajax World 2008

we call these SOA we call these SOA Integration PointsIntegration Points

Page 390: Ajax World 2008

and we have them for Java, and we have them for Java, Ruby, PHP, .NET, Python and Ruby, PHP, .NET, Python and

PerlPerl

Page 391: Ajax World 2008

how does that work?how does that work?

Page 392: Ajax World 2008

let’s look at Javalet’s look at Java

Page 393: Ajax World 2008

take a plain Java object take a plain Java object (POJO)(POJO)

Page 394: Ajax World 2008

and add a single and add a single annotationannotation

Page 395: Ajax World 2008

@Service(request = @Service(request = ”my.request", response = ”my.request", response =

”my.response")”my.response")

Page 396: Ajax World 2008

to a Java method – like so:to a Java method – like so:

Page 397: Ajax World 2008

package org.appcelerator.service;

import org.appcelerator.annotation.Service;import org.appcelerator.messaging.Message;

public class MyService{

@Service(request = ”my.request", response = ”my.response")

protected void myRequest(Message request, Message response) throws Exception

{// service logic here

}}

Page 398: Ajax World 2008

(that’s it!)(that’s it!)

really….

Page 399: Ajax World 2008

each SOA Integration Pointeach SOA Integration Point

Page 400: Ajax World 2008

service routingservice routing

Page 401: Ajax World 2008

data marshallingdata marshalling

Page 402: Ajax World 2008

(what does that mean?)(what does that mean?)

Page 403: Ajax World 2008

it means you can place a it means you can place a native object or array of native object or array of

objects into the responseobjects into the response

Page 404: Ajax World 2008

and we’ll take care of and we’ll take care of the rest.the rest.

Page 405: Ajax World 2008

the result is:the result is:

Page 406: Ajax World 2008

you focus on what you do best:you focus on what you do best:

BUILD APPLICATIONS!BUILD APPLICATIONS!

Page 407: Ajax World 2008

instead of playing the role of platform vendor

Page 408: Ajax World 2008

that’s our job!that’s our job!

Page 409: Ajax World 2008
Page 410: Ajax World 2008

we are the RIA + SOA companywe are the RIA + SOA company

Page 411: Ajax World 2008

RIA + SOA – that’s good RIA + SOA – that’s good but what about but what about

prototyping?prototyping?

Page 412: Ajax World 2008

(glad you asked)(glad you asked)

Page 413: Ajax World 2008

remember our message-remember our message-based contract?based contract?

Page 414: Ajax World 2008

it enables location it enables location independence for servicesindependence for services

Page 415: Ajax World 2008

meaning mock services can meaning mock services can reside in the RIAreside in the RIA

Page 416: Ajax World 2008

meaning you can build fully meaning you can build fully functional RIA prototypes functional RIA prototypes

Page 417: Ajax World 2008

without a single line of without a single line of service codeservice code

(or even web server)(or even web server)

Page 418: Ajax World 2008

with 100% reusability!with 100% reusability!

Page 419: Ajax World 2008

we call them we call them Interactive Use CasesInteractive Use Cases

Page 420: Ajax World 2008

build your application build your application while you build your while you build your

requirementsrequirements

Page 421: Ajax World 2008

no more server-focused no more server-focused developmentdevelopment

Page 422: Ajax World 2008

no more 100-page no more 100-page requirements requirements

documentsdocuments

(that never matches the end application)(that never matches the end application)

Page 423: Ajax World 2008

it’s technology-enabled it’s technology-enabled Agile developmentAgile development

Page 424: Ajax World 2008

quick iterations quick iterations

Page 425: Ajax World 2008

fully functional fully functional

(at every point)(at every point)

Page 426: Ajax World 2008

makes it easy to gather makes it easy to gather feedback from key feedback from key

stakeholdersstakeholders

Page 427: Ajax World 2008

product managersproduct managers

Page 428: Ajax World 2008

service developersservice developers

Page 429: Ajax World 2008

documentation teamdocumentation team

Page 430: Ajax World 2008

QA QA

Page 431: Ajax World 2008

sales team sales team

Page 432: Ajax World 2008

and even customersand even customers

Page 433: Ajax World 2008

after incorporating after incorporating feedback feedback

Page 434: Ajax World 2008

you have two key you have two key deliverables:deliverables:

Page 435: Ajax World 2008

1.1. fully functional fully functional RIA prototypeRIA prototype

(100% reusable) (100% reusable)

Page 436: Ajax World 2008

2. fully defined 2. fully defined message contractsmessage contracts

Page 437: Ajax World 2008

(makes service (makes service development and development and

integration a snap)integration a snap)

Page 438: Ajax World 2008
Page 439: Ajax World 2008

fully integrated fully integrated RIA+SOA platformRIA+SOA platform

Page 440: Ajax World 2008

an entirely new and better an entirely new and better way to build the next way to build the next

generation of web generation of web applicationsapplications

Page 441: Ajax World 2008

help us build the best RIA+SOA help us build the best RIA+SOA open source developer open source developer

communitycommunity

www.appcelerator.orgwww.appcelerator.org

Page 442: Ajax World 2008