oracle sprout core presentation 2008 08 12

53

Upload: sproutit

Post on 18-Jul-2015

3.117 views

Category:

Technology


1 download

TRANSCRIPT

• Architecture

• Framework

• Deployment

How can we build desktop-class

applications on the web?

Like this...

Not this...

Desktop Class Means...

Immediate response

Rich interactions

Offline mode

Document Driven

Web Server Web Browser User

Click

Request

Response

Render

Click

Request

Response

Render

Document Driven

Document Driven

Immediate ResponseRich InteractionsOffline Mode

Rarely

None

None

Ajax

"3270" Ajax

"3270" Ajax

Web Server Web Browser User

Click

RequestResponse

Update Page

Initial Page Load

Render

Document Driven "3270" Ajax

Immediate ResponseRich InteractionsOffline Mode

Rarely Occasionally

None Some

None Rare

"3270" Ajax

"They" say... But really...

Client computers are too slow

Most clients are as fast as servers 2 years ago

JavaScript is too slow JS engines are 2x-3x faster

HTML is too limited Have you seen Safari lately?

Browser Advancements

Why Not Flash (or Silverlight)?

Proprietary

Not available everywhere

No longer necessary!

Web Client-Server

UserIMAP/POP

User

Apache

Backend Service

Web Client-Server Is...

JavaScript app in browser

Loads data via Ajax

User interaction is not bound by the server

Document Driven

Web Server Web Browser User

Click

Request

Response

Render

Click

Request

Response

Render

"3270" Ajax

Web Server Web Browser User

Click

RequestResponse

Update Page

Initial Page Load

Render

Web Client-Server

Web Server Web Browser User

Click

RequestResponse

Update Page

Load JS Client

Render

Click

Update Page

Document Driven "3270" Ajax Web

Client-ServerImmediate ResponseRich InteractionsOffline Mode

Rarely Occasionally Usually

None Some Always

None Rare Offline Capable

Web Client-Server

Web Client-Server

Framework

Framework Objectives

Provide common applications features for free

Optimize across web browsers

Eliminate Glue Code

Make coding fun!

Cocoa

SproutCore

• Full MVC framework• Has common Cocoa features such as:

■ Bindings■ Key-Value Observing■ View controls■ Drag and drop■ Delegate patterns

• Embraces JavaScript• State-based programming• Runs in Safari, FireFox, IE6/7 - and on iPhone

JavaScript is Great!

Late binding

"Hackable" Object ModelClosures

Lambda Functions

Anatomy of a Project

Anatomy of a Project

Project config file

Anatomy of a Project

Shared libraries

Anatomy of a Project

Your application code

Anatomy of a Project

Anatomy of a Project

Models-Views-

Controllers

Anatomy of a Project

main()

Namespace and constants

Anatomy of a Project

HTML, Images, CSS, and

localized JS

Localize in any language!

Anatomy of a Project

Unit testing built right in

Fixture data (use before the server

is ready)

Demo

SproutCore

sudo gem install sproutcore

www.sproutcore.com

Deployment

User

Apache

Backend Service

Backend Service

User

Apache

sc-build

Before Build

After Build

User

Apache

Backend Service

How You Explain to Mgmt

UserProxy-Cache Server

Apache(serving SC app)

Login/Auth

Config

Data Store

Mail, etc.

The Real World

• Web Client-Server is the future

• SproutCore can help you build those apps today

• Future of web apps = JavaScript apps + simple back-end services + sync