seaside - the revenge of smalltalk

Post on 07-Nov-2014

4.318 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Seaside is a web application framework that is written in Smalltalk. Smalltalk has been hugely influential on the development of computer languages but realistically how many people have ever used it? Seaside is a practical application of Smalltalk to the web sphere.

TRANSCRIPT

The Revenge of Smalltalk

London Geek Nights

July 6, 2009

Lukas Renggli

Academics

PhD Student, University of Bern

Open-Source

Core-developer of Seaside

Author of Magritte and Pier

Industry

Independent Software Consultant

Agenda

Flow

Components

Security

Applications

Continuations

Objects

Closures

Debugger

1Natural Flow

So

urc

e: sto

ck.x

chng

, A

sif A

kb

ar

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="hidden" name="value1" value="<% value1 %>"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

<form action="result.html"> <input type="hidden" name="value1" value="<% value1 %>"> <input type="text" name="value2"> <input type="submit" value="OK"></form>

<p> <% value1 + value2 %></p>

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

is different

3 user interactions

3 lines of code

value1 := self request: ‘First Number’.

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

self inform: value1 + value2.

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

self inform: value1 + value2.It’s a DSL

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

self inform: value1 + value2.

It’s justSmalltalk

No request parsing

No string fiddling

No state machines

Demo

2Reusable

Components

So

urc

e: sto

ck.x

chng

, Lynne L

ancaste

r

Reuseable

Persistent

Model, View, Controller

Model

View Controller

Valid

Sou

rce:

sto

ck.x

chn

g, A

l N

akib

CSSDesigner

XHTMLDeveloper & Seaside

DRY

DRYIt’s a DSL

DRYIt’s just

Smalltalk

Demo

3Secure by

Default

So

urc

e: sto

ck.x

chng

, C

olin

Bro

ug

h

Cross Site Scripting

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Output is encoded

by default

Replay Attacks

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Session

_s=Ru8ZKgqjy0uDX3kf

96-bit

Page

_k=K5EQyqKE

48-bit

Parameter Tampering

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Names are generated

automatically

Names are bound

to functions

No manual

request parsing

html submitButton

! callback: [ self inform: ‘Hey’ ];

! with: ‘Click Here’

html submitButton

! callback: [ self inform: ‘Hey’ ];

! with: ‘Click Here’It’s a DSL

html submitButton

! callback: [ self inform: ‘Hey’ ];

! with: ‘Click Here’

It’s justSmalltalk

4Web 2.0

So

urc

e: F

lickr, B

enja

min

Jackso

n

So

urc

e: F

lickr, p

srm

an's

Comet

So

urc

e: F

lickr, p

srm

an's

It’s a DSL

It’s justSmalltalk

Demo

5Applications

So

urc

e: sto

ck.x

chng

, S

teve W

oo

ds

In productive use

since 2002

Seaside

MIT License

© Copyright 2007 Instantiations, Inc. VA Smalltalk, VA Assist, WidgetKit, and WindowBuilder are trademarks of Instantiations. All other trademarks mentioned are the property of their respective owners.

www.instantiations.com 1-800-808-3737Build Quality Software

Development ToolsA rich set of development tools includes a debugger, browsers, inspectors, application builders, and a performance monitor.Packager (Dev Tool) creates a runtime image including only necessary classes resulting in a smaller footprint.AsyncCallout, an extension of the platform function API, allows developers to make a platform function call in a separate virtual machine thread.Reports feature enables the creation of hardcopy and/or screen reports on any object that can be used in the VA Smalltalk environment, including parts provided in the Database and Communications features.

Custom Controls Popular WidgetKit technologyColumnar List boxes, table widgets and hierarchical listsCustomizable image buttons, toggles and value setsVertical, horizontal and circular gaugesData aware spin buttonsWindows 95/98/NT/2000 Notebook widgetSplitbar widget

!

!

!

!

!

!

!

Communications A set of parts supports communication with other computers using MQ series transactions.A set of parts supports communication with other computers using TCP/IP protocols.Socket Communications Interface is an API providing full support for TCP/IP protocols, as well as secure communications using SSL. The API uses OpenSSL, an implementation of SSL/TLS.

Database High-performance, robust support for DB2Support for Oracle through v10Support for any database which supports the ODBC interface.

Server SmalltalkServer Smalltalk (SST) provides a client/server framework flexible enough to accommodate various distributed architectures.Server Workbench is a cross-development envi-ronment used in developing distributed process-ing, web hosting, and other server applications. Target deployment environments include all VA Smalltalk platforms and z/OS using IBM’s VisualAge Smalltalk Server for OS/390 and z/OS.

Web ServicesA self-contained, modular framework, capable of creating, deploying and hosting web services.

External Interface SupportXML Support enables XML–Smalltalk object mapping, includes a server interface via XML request handlers and reading of remote resources via TCP sockets using HTTP requestsOLE Support enables an application to use OLE clients and custom control services.Domino Connection allows an application to retrieve and work with Domino documents as well as access Notes mail system.

!

!

!

100% VisualAge compatibleVA Smalltalk is a modern software development environment that is 100% VisualAge compatible. VA Smalltalk enables developers to quickly construct applications that are portable, highly scalable, simple to maintain, and fit easily into existing infrastructures.

Other Software RequirementsDatabase

DB2 Universal Database (Windows, AIX, Linux, Solaris)ORACLE 8i (8.1.6), 9i or 10

DominoLotus Notes (Windows only) [Not supported on Linux, AIX, Solaris]

VA Smalltalk’s HTML DocumentationTCP/IP protocolMicrosoft Internet Explorer 5.0 or later (Windows)Netscape 4.51 or later (Win, Linux, Solaris, AIX)Firefox 2.0 or later (Win, Linux)Opera 9.02 or later (Windows)

!

!

!

!

!

!

!

!

!

EMSRV 7.1a Library ManagerNetware 4.2 or 5.1OS/2 Warp 4.0 + FP11OS/2 Warp Server for e-BusinessWindows ME - EMADMIN onlyWindows 2000, 2000 Server, Advanced ServerWindows XP ProfessionalWindows Server 2003Windows Vista Business, Enterprise, or UltimateSun Solaris Version 8 or 9HP-UX Version 11.0 or 11iAIX Version 5.1, 5.2 or 5.3Red Hat Linux 9 and Advance Server 2.1SuSE Enterprise 10

!

!

!

!

!

!

!

!

!

!

!

!

!

Supported ConfigurationsOperating System Hardware PlatformWindows ME, 2000, XP, Server 2003, Vista . . . . . . . . . . . . . . . 300MHz PC, 256MB RAM, 400MB diskRedHat Linux 9, Enterprise AS 2.1, SuSE Linux . . . . . . . . . . . Pentium 300MHz PC, 128MB RAM, 400MB diskSun Solaris 8, 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPARC workstation or server, 64MB RAM, 200MB diskAIX 5.1, 5.2, 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RISC System/6000, POWERStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . or POWERServer, 128MB RAM, 400MB disk

For detailed system requirements visit www.instantiations.com/VAST

Download a risk-free trial copy:www.instantiations.com/VAST/download

Award-winning VA Assist™ technologyUniversal Drag/DropPowerful change propagation toolsCustomizable ToolbarsColor Code Syntax (Windows only)Dynamic & Batch-Oriented Spell CheckingAuto-Spell CorrectionVersion RenamingClass History/FindVersion TemplatesString SearchApplication Filtering

!

!

!

!

!

!

!

!

!

!

!

!

Enhanced DebuggerEnhanced InspectorsCode SynchronizationLocate ApplicationsLocate DependentsRevision NotesRelease All LatestAbbreviation ExpansionPopup Sender/ImplementorsBrowse Changes Including Required MapsEmbedded mode for seamless integration with the Composition Editor

!

!

!

!

!

!

!

!

!

!

!

Ergonomic Enhancements

top related