ajaxworld march 2008 - jeff haynie keynote - appcelerator

442
AJAX WORLD AJAX WORLD March 2008 March 2008

Upload: jeff-haynie

Post on 10-May-2015

6.594 views

Category:

Economy & Finance


1 download

DESCRIPTION

This was my opening keynote presentation for Ajaxworld March 2008 in NYC.

TRANSCRIPT

Page 1: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

AJAX WORLDAJAX WORLDMarch 2008March 2008

Page 2: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 4: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19911991

Page 5: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Dave LitwackDave LitwackMitchell KertzmanMitchell Kertzman

Page 6: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

PowersoftPowersoft

Page 7: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

PowerbuilderPowerbuilder

Page 8: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

client / serverclient / server

Page 9: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

proprietaryproprietary

Page 10: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

rapid app devrapid app dev

Page 11: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

database integrationdatabase integration

Page 12: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 13: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Profitable: year oneProfitable: year one

Page 14: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 15: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

$57M 1993$57M 1993

Page 16: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

suits came knockingsuits came knocking

Page 17: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 18: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

$900M - 1995$900M - 1995

Page 19: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

OopsOops

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

Page 20: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

revolutionized the revolutionized the way we built appsway we built apps

Page 21: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

focus on the appfocus on the app

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

Page 22: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 23: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19911991

Page 24: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ComdexComdex(Atlanta)(Atlanta)

Page 25: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 26: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 27: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

client / serverclient / server

Page 28: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

easy to build appseasy to build apps

Page 29: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

event drivenevent driven

Page 30: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

integration to DBintegration to DB

Page 31: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 32: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 33: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

focus on the appfocus on the app

Page 35: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

2-tier architecture2-tier architecture

Page 36: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

client = applicationclient = application

Page 37: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

rapid app creationrapid app creation

Page 38: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

productivityproductivity

Page 39: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ease of useease of use

Page 40: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

distributiondistribution

Page 41: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

securitysecurity

Page 42: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

programming model

Page 43: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

something else was something else was happeninghappening

Page 44: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19891989

Page 45: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 46: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

tim berners-leetim berners-lee

Page 47: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

CERNCERN(europe)(europe)

Page 48: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

world wide webworld wide web

Page 49: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

wwwwww

Page 50: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

webweb

Page 51: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

hyper text transferhyper text transferprotocolprotocol

Page 52: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

httphttp

Page 53: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

directorydirectory(browsing)(browsing)

Page 55: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

sharing contentsharing content

(research)(research)

Page 56: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

primary display was primary display was texttext

Page 57: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

network of network of connected connected computerscomputers

Page 58: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

killer app = killer app = informationinformation

Page 59: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19921992

Page 60: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 61: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

marc andreessen marc andreessen

Page 62: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

student at student at univ of illinoisuniv of illinois

Page 63: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

mosaicmosaic“web browser”“web browser”

Page 64: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 65: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 66: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19941994

Page 67: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 68: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Mosaic Communications Mosaic Communications CorporationCorporation

Page 69: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Netscape CommunicationsNetscape Communications

Page 70: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Netscape Netscape CommunicatorCommunicator

Page 71: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 72: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

IPO 1995IPO 1995

Page 73: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

browser wars(1995)

Page 74: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

massive adoptionmassive adoption

Page 75: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web sites were slowweb sites were slowinternet was slowinternet was slow

Page 76: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

basedbased

Page 77: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 79: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 80: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

distributed distributed freefree

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

Page 81: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 82: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 83: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

based on spyglass mosaicbased on spyglass mosaic

(remember Netscape?)(remember Netscape?)

Page 84: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

MASSIVE ADOPTIONMASSIVE ADOPTION

Page 85: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

January 1998January 1998

Page 86: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

mozilla open sourcemozilla open source

Page 87: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 88: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 89: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 90: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 91: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Operating System platformOperating System platform

Page 92: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Developer CommunityDeveloper Community

Page 93: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

May 1998May 1998

Page 94: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

DOJ ruled MSFT violated anti-trust

Page 95: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 96: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

November 1998November 1998

Page 97: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

$4.2 BILLION$4.2 BILLION

Page 98: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 99: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

appsapps

Page 100: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

distribution of appsdistribution of apps

Page 101: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

programming modelprogramming model

Page 102: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

development of softwaredevelopment of software

Page 103: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web 1.0web 1.0

Page 104: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

three-tier three-tier architecturearchitecture

Page 105: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

server is the brainserver is the brain

Page 106: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

on “the web”on “the web”

Page 108: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

common gateway interfacecommon gateway interface

(CGI)(CGI)

Page 109: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

netscape APInetscape API

(nsapi)(nsapi)

Page 110: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web serversweb servers

Page 111: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

app serversapp servers

Page 112: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

database serversdatabase servers

Page 113: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

caching serverscaching servers

Page 114: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web pagesweb pages

Page 115: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web appsweb apps

Page 116: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19951995

Page 118: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 119: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

James GoslingJames Gosling

Page 120: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 121: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

JavaJava

Page 122: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Write once,Write once,Run anywhereRun anywhere

Page 123: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

BrowserBrowser

Page 124: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

AppletsApplets

Page 125: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Java Web StartJava Web Start

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

Page 126: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

slow

Page 127: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

big

Page 128: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

UI differences

Page 129: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web app?

Page 130: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

native app?

(sure didn’t look like one)

Page 131: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

programming model

Page 132: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

browser plugin

Page 133: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

java language was java language was great!great!

Page 134: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

browser browser environmentenvironment

Page 135: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

why the web?why the web?

Page 137: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web programming web programming modelmodel

Page 138: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

distributeddistributed

Page 139: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

easy to programeasy to program

Page 140: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

UI simple to layoutUI simple to layout

Page 141: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cross-browser differences

Page 142: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open source open source emerging rapidly emerging rapidly

with Internetwith Internet

Page 143: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

standards-basedstandards-based

Page 144: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19941994

Page 145: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 146: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

tim berners-leetim berners-lee

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

Page 147: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

preserve, promotepreserve, promoteweb standardsweb standards

Page 148: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 149: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 150: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

HTMLHTML

Page 151: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

CSSCSS

Page 152: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

XMLXML

Page 153: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

DOMDOM

Page 154: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

CGICGI

Page 155: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

VoiceXML / CCXMLVoiceXML / CCXML

Page 156: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 157: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 158: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 159: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 160: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

HTML 4.0HTML 4.0(1997)(1997)

Page 161: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 162: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

HTML 5.0(Jan 2008 - WD)

11 years!

Page 163: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Client-side data Client-side data storagestorage

Page 164: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

videovideo

Page 165: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cross document cross document messagingmessaging

Page 166: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

remotingremoting

Page 167: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 168: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

XHTML or HTML?

Page 169: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 170: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

servletsservlets

Page 171: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

JSP pagesJSP pages

Page 172: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ASP pagesASP pages

Page 173: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

tag libariestag libaries

Page 174: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

PHP pagesPHP pages

Page 175: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 176: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cold fusioncold fusion

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

Page 177: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

server-driven UI

Page 178: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

model-view-model-view-controller controller

(MVC)(MVC)

Page 179: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(server-assisted (server-assisted

MVC)MVC)

Page 180: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

server generates UI

Page 181: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

UI is a template page

Page 182: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

same HTML(almost always)

Page 183: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

not very environmentally

friendly

Page 184: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

age of server-sideage of server-sideinfrastructureinfrastructure

Page 185: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

application serversapplication servers

Page 186: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

““middleware”middleware”

Page 187: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

new app new app complexities on the complexities on the

server sideserver side

Page 188: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cache business cache business objectsobjects

Page 189: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cache page cache page templatestemplates

Page 190: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

cache SQL queriescache SQL queries

Page 191: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

session statesession state

Page 192: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

stored application stored application statestate

Page 193: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 194: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

session clusteringsession clustering

Page 195: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

sticky sessionssticky sessions

(optimize load (optimize load balancing)balancing)

Page 196: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

clustering not linearclustering not linear

Page 197: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

middlewaremiddlewarewarswars

Page 198: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

hundreds of app hundreds of app serversservers

Page 199: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

lots of server-side lots of server-side frameworksframeworks

Page 200: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 201: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

IBMIBM

Page 202: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

SunSun

Page 203: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

BEABEA(weblogic)(weblogic)

Page 204: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

organized around organized around J2EE specificationJ2EE specification

Page 205: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 206: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

heavy weight

Page 207: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

overly complex

Page 208: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

too many specs to keep up with

Page 209: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

widely adoptedwidely adopted

Page 210: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

clusteringclustering

Page 211: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

fail-overfail-over

Page 212: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

high-availabilityhigh-availability

Page 213: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Microsoft .NET

Page 214: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

wasn’t J2EEwasn’t J2EE

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

Page 215: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

wasn’t even javawasn’t even java

(of course not)(of course not)

Page 216: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

2000 – Microsoft C#2000 – Microsoft C#

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

Page 217: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

part of part of Microsoft .NETMicrosoft .NET

Page 218: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web-programming web-programming modelmodel

Page 219: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(for Microsoft platform)

Page 220: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

19991999

Page 221: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 222: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(not flavor flav)(not flavor flav)

Page 223: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 224: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(marc fleury)(marc fleury)

Page 225: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

JBossJBoss

Page 226: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Java application Java application serverserver

(and eventually J2EE)(and eventually J2EE)

Page 227: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

FREE!FREE!

(well, almost)(well, almost)

Page 228: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open sourceopen source

Page 229: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

J2EE programming J2EE programming modelmodel

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

Page 230: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

20012001(JBoss, LLC)(JBoss, LLC)

Page 231: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

side infrastructureside infrastructure

Page 232: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

apps not much different

(1999)

Page 233: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

server-assisted MVCserver-assisted MVC

Page 234: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service oriented service oriented architecturearchitecture

Page 235: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

middleware = SOAmiddleware = SOA

Page 236: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service federationsservice federations

Page 237: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

distributed distributed registriesregistries

Page 238: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service compositionservice composition

Page 239: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service service orchestrationorchestration

Page 240: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

portalsportals

Page 241: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ESBESB

Page 242: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

$60B Market$60B Market

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

Page 243: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

But business applications still

function the same

Page 244: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 245: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Microsoft & Microsoft & NetscapeNetscape

Page 246: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

early inter-appletearly inter-applettechniquestechniques

Page 247: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

applets to slow to startapplets to slow to start

Page 248: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

IE5 – MSFT createdIE5 – MSFT createdXHRXHR

Page 249: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Microsoft Outlook WebMicrosoft Outlook Web

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

Page 250: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Web 1.5Web 1.5

Page 251: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

MVC + AjaxMVC + Ajax

Page 252: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

round peground pegsquare holesquare hole

Page 253: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

page driven page driven paradigm with paradigm with async behaviorasync behavior

Page 254: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

look Ma – no page refreshlook Ma – no page refresh

Page 255: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 256: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 257: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 258: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

thinking bigthinking big

Page 259: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web 2.0web 2.0

Page 260: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

starting to think starting to think about apps againabout apps again

Page 261: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

networks are fasternetworks are faster

Page 262: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

hardware is cheaphardware is cheap

Page 263: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

software is moving software is moving to open sourceto open source

Page 264: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

webweb

Page 265: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

user experienceuser experience

Page 266: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 267: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 268: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

richer appsricher apps

Page 269: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

dynamic infodynamic info

Page 270: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

web is the platformweb is the platform

Page 271: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 272: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 273: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 274: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 275: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 276: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 277: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 278: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 279: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 280: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

different solutionsdifferent solutions

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

Page 281: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

different different approachesapproaches

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

Page 282: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Sun doing Sun doing something similar something similar

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

Page 283: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 284: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(yawn…)(yawn…)

Page 285: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 287: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(surprise!)(surprise!)

Page 288: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 289: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 290: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

wonderful productwonderful product

Page 291: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open sourceopen source

(kind of)(kind of)

Page 292: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

““Web 2.0” is Web 2.0” is overloadedoverloaded

Page 293: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Web 2.0 = rich clientWeb 2.0 = rich client

Page 294: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

rich client = client programmingrich client = client programming

Page 295: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 296: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

okay, but how?okay, but how?

Page 297: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

JavascriptJavascript

Page 298: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(and lots of it)

Page 299: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

simple login formsimple login formexampleexample

Page 300: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

<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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 302: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

25+ lines of Javascript

Page 303: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

for one simple login form

Page 304: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 305: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

mountains of JS = nightmare

Page 306: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 307: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open standards +open source

(to the rescue)

open standards +open source

(to the rescue)

Page 308: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Javascript librariesJavascript libraries

Page 309: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

and lots of themand lots of them

Page 310: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

widget librarieswidget libraries

Page 311: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Ajax librariesAjax libraries

Page 312: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

effect librarieseffect libraries

Page 313: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 314: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

PrototypePrototype

Page 315: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ScriptaculousScriptaculous

Page 316: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

JQueryJQuery

Page 317: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

DojoDojo

Page 318: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

ExtJSExtJS

Page 319: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Yahoo YUIYahoo YUI

Page 320: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

MootoolsMootools

Page 321: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Open RicoOpen Rico

Page 322: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

QooxdooQooxdoo

Page 323: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

MochiKitMochiKit

Page 324: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

LightboxLightbox

Page 325: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

GreyboxGreybox

Page 326: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Lightbox PlusLightbox Plus

Page 327: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Nifty CornersNifty Corners

Page 328: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(okay to breathe)(okay to breathe)

Page 329: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 330: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

all great libraries!all great libraries!

Page 331: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

how do I keep up with them all?

Page 332: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

multiple versions, bug fixes

Page 333: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

integration issues, glue codenamespace issues

Page 334: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 335: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

with chaos comes with chaos comes opportunityopportunity

Page 336: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open standardsopen standards

Page 337: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open sourceopen source

(the entire bits)(the entire bits)

Page 338: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

open developer open developer communitycommunity

Page 339: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

integrated RIA integrated RIA programming model programming model

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

Page 340: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

what does that mean?what does that mean?

Page 341: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 342: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

event handling, Ajax, event handling, Ajax, DHTMLDHTML

Page 343: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(Got it!) (Got it!)

Page 344: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

login form revisited login form revisited

Page 345: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

<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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 347: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 348: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

event handling + Ajax + DHTML

one simple expression language

event handling + Ajax + DHTML

one simple expression language

Page 349: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 350: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

that leverages standards that leverages standards

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

Page 351: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 352: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(Web Expression Language)(Web Expression Language)

Page 353: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 354: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(good question)(good question)

Page 355: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 356: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 357: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

them ALLthem ALL

Page 358: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 359: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

how about this:how about this:

Page 360: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

<!– 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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 362: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 363: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

including Flex widgets!including Flex widgets!

Page 364: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 365: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 366: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

okay, calm down Sallyokay, calm down Sally

Page 367: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

let’s recaplet’s recap

Page 368: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

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

Page 369: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

fully integrated RIA platformfully integrated RIA platform

Page 370: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 371: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 372: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 373: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 374: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

RIA + SOARIA + SOA

Page 375: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 376: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

they share only one they share only one thingthing

Page 377: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

a lightweight message a lightweight message contractcontract

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

Page 378: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 379: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Rich ClientRich Client ServiceService

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

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

Page 380: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

Contract = message nameContract = message name

Page 381: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 382: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

plus input and output dataplus input and output data

Page 383: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 384: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 385: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 386: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

good question.good question.

Page 387: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 388: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

we call these SOA we call these SOA Integration PointsIntegration Points

Page 390: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

how does that work?how does that work?

Page 392: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

let’s look at Javalet’s look at Java

Page 393: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 394: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

and add a single and add a single annotationannotation

Page 395: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

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

Page 396: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 397: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

really….

Page 399: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

each SOA Integration Pointeach SOA Integration Point

Page 400: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service routingservice routing

Page 401: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

data marshallingdata marshalling

Page 402: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 403: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 405: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

the result is:the result is:

Page 406: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

BUILD APPLICATIONS!BUILD APPLICATIONS!

Page 407: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

instead of playing the role of platform vendor

Page 408: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 409: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 410: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 411: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

prototyping?prototyping?

Page 412: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(glad you asked)(glad you asked)

Page 413: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 414: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

it enables location it enables location independence for servicesindependence for services

Page 415: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 416: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 417: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

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

Page 418: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

with 100% reusability!with 100% reusability!

Page 419: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

we call them we call them Interactive Use CasesInteractive Use Cases

Page 420: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

requirementsrequirements

Page 421: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

no more server-focused no more server-focused developmentdevelopment

Page 422: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 424: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

quick iterations quick iterations

Page 425: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

fully functional fully functional

(at every point)(at every point)

Page 426: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

stakeholdersstakeholders

Page 427: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

product managersproduct managers

Page 428: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

service developersservice developers

Page 429: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

documentation teamdocumentation team

Page 430: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

QA QA

Page 431: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

sales team sales team

Page 432: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

and even customersand even customers

Page 433: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

after incorporating after incorporating feedback feedback

Page 434: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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

Page 435: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

1.1. fully functional fully functional RIA prototypeRIA prototype

(100% reusable) (100% reusable)

Page 436: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

2. fully defined 2. fully defined message contractsmessage contracts

Page 437: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

(makes service (makes service development and development and

integration a snap)integration a snap)

Page 438: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Page 439: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

fully integrated fully integrated RIA+SOA platformRIA+SOA platform

Page 440: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator

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: Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator