Smalltalk für Quereinsteiger

Preview:

DESCRIPTION

Clemens Hoffmann IT-Berater. Smalltalk für Quereinsteiger. Wen spricht der Vortrag an?. Entwickler mit Programmiererfahrung in C++ oder Java auf dem Weg zu neuen Ufern. Projektleiter, die Alternativen zu bestehenden Entwicklungssystemen kennenlernen möchten. - PowerPoint PPT Presentation

Citation preview

Clemens Hoffmann

IT-Berater

Smalltalk für Quereinsteiger

Wen spricht der Vortrag an?

• Entwickler mit Programmiererfahrung in C++ oder Java auf dem Weg zu neuen Ufern

• Projektleiter, die Alternativen zu bestehenden Entwicklungssystemen kennenlernen möchten

• Neugierige Menschen, die wissen wollen, was Smalltalk eigentlich ist

Was spricht der Vortrag an

• Wie arbeite ich mit Smalltalk

Werkzeuge, Design, Teams

• Was habe ich für ein Umfeld

Schnittstellen, Web, Verteilte Systeme

• Was ist Smalltalk

VisualWorks 5i, Philosophie, Architektur

Wie startet man eine Revolution

VisualWorks - Historie

Entstanden im XEROX PARC1972

Gründung ParcPlace Systems1988

ObjectWorks1990

VisualWorks1992

Cincom übernimmt VisualWorks1999

Going Public1981

Gründung Firma Georg Heeg1987

VisualWorks - Definition

VisualWorks ist wie eine Skriptsprache• mächtig• hoch skalierbar• extrem stabil• objektorientiert

ohne die gängigen Einschränkungen• Performanz• Komplexität• Unübersichtlichkeit• Wartbarkeit

VisualWorks - Philosophie

Keine Typen

Automatische Speicherverwaltung

ReflexivitätSmalltalk ist in Smalltalk geschrieben

Klasse, Methode, Werkzeuge, Compiler, ...

Nicht mehr referenzierte Objekte werden automatisch abgeräumt

Das Verhalten (die Menge der verfügbaren Methoden) definiert ein Objekt.

VisualWorks - Philosophie

Alles ist ein Objekt

“Lebende“ Objekte

Jede Komponente im einem VisualWorks System ist ein Objekt, das mit anderen Objekten interagiert.

Alle Objekte im System “leben“ in einem gemeinsamen Objektraum. Dieser Raum wird als Image gespeichert und existiert nach einem Neustart des Images exakt so weiter, wie er gespeichert wurde

VisualWorks - Philosophie

Uniformität

Erweiterbarkeit

Wissensbasis

Alle Klassen können in sich erweitert werden

Uniformer Zugriff auf alle Konstrukte im Image.

Der gesamte Sourcecode des Systems kann direkt eingesehen werden.

Java - Architektur

Windows Linux Macintosh Sun IBM HP

VM VM VM VM VM VM

Laufzeitumgebung und Anwendung

WerkzeugeBibliothek in Ver-zeichnisstruktur und jar-Dateien

VisualWorks - Architektur

Windows Linux Macintosh Sun IBM HP

Werkzeuge

Bibliothek

Anwendung(en)

Image

VM

Klassendefinition

Werkzeuge - PackageBrowser

Kategorien Klassenliste Protokolliste Methodenliste

Binärcode*.class

kompilieren

Binärcode*.class

Programmierzyklus - Java

Source*.java

Binärcode*.class

Binärcode*.class

Binärcode*.class

Kompilierfehler

Laufzeit- oderLogikfehler

Laufzeit-umgebung Laden und testen

Programmierzyklus - VW

Klassendefinition Methodendefinition

ClassErstellen

Syntaxfehler

CompiledMethodSpeichern

Syntaxfehler

ImageEs kann jederzeit g

etestet w

erden

Instant kompiliert und verfügbar

Design

Anforderungs-analyse

Use-Cases

Use-Case-Diagramm

System-analyse

Klassendiagramme

SequenzdiagrammeDesign

Implementierung

Test

Klassendiagramme

Aktivitätsdiagramme

Quellcode

Anwendung(en)

Testprotokolle

Design

Smalltalk (VisualWorks)und UML

AnforderungsanalyseSystemanalyseDesignImplementierungTestRoundtrip

Design

Keine explizite Trennung zwischen Design und Implementierung

Iterative (experimentelle) Implementierung

• Verfeinerung von Design nach Realisierung

• einfache Refaktorisierung (automatisiert mit RefactoringBrowser)

• direkt testbar (SUnit-Test)

Teams - Java

Entwickler

VM

Werkzeuge

Laufzeitumgebung

Entwickler

VM

Werkzeuge

Laufzeitumgebung

Bibliothek in Ver-zeichnisstruktur und jar-Dateien

Versionsverwaltung (SourceSave,

PVCS,CVS, RCS,

...)

Teams - VisualWorks

Entwickler

VM Image

Entwickler

VM Image

ChangeSetexport

impo

rt

Parcels

export

import

Teams - VisualWorks

Entwickler

VM Image

Entwickler

VM Image

OracleDB2

MS-SQLPostgreSQL

Access

StORE-Repository

Betriebssystemschnittstelle

*.h*.h*.h

Datenbankenschnittstellen

Database

JDBC

SUN JDOToplink

Database

EXDI

ObjectLensGLORP

Datenbank-schnittstelle

OR-Mapping

VisualWorksJava

Web - Basisdienste

• HTTP Client• FTP Client• IMAP Client• IMAP Mailbox• POP3 Client• POP3 Mailbox• SMTP Client• URI / URL Support• XML Support

Web - Smalltalk ServerPages

<?xml version="1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<% values := OrderedCollection new.count := (request anyParameterValueAt: 'count') asNumber.1 to: count do: [:i | values add: i factorial]. %>

<html><head><title>Computed factorials</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>List of all factorials up to <%=count%> <p><% values do: [:item |

response write: item key printString.response write: '! = '.response write: item value printString.response write: '<br>‘.Response cr]. %>

</body></html>

Web - Smalltalk ServerPages

Web - Smalltalk ServerPages

<?xml version="1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@ taglib uri="file:formel.tld" prefix="formel" %>

<html><head><title>Computed factorials</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>List of all factorials up to <formel:getParameterValue parameter="count" /> <p><formel:factorial parameter="count" /><p></body></html>

Web - Smalltalk ServerPages

Web - Smalltalk ServerPages

Web - Smalltalk ServerPages

Web - Smalltalk Servlets

VisualWave ApplicationServer

HTTPServlet

Web Server

HTTP Request(POST)

ToyzInput

service: aServletRequest response: aServletResponse

doPost: aServletRequest response: aServletResponse

Marty Hall: Core Servlets and JavaServer Pages

Web - Application Server

VisualWave ApplicationServer

TinyHTTPServer

HTTP Request

HTTP Request

CGI Fast CGI

Web Server(Apache, IIS, ...)

ISAPI

Web-Services

VisualWorks als Web-Services Client

UDDIServer

SOAPServer

UDDIRequest

WSDLResponse

SOAPRequest

SOAPResponse

Smalltalk to SmalltalkKommunikation

OpenTalk

Distributed Smalltalk(DST)

CORBAIBM Component BrokerBorland VisiBrokerIONA OrbixWebORBacus ...

CORBA

Distribution - CORBA - RMI

Java VisualWorks

Portable Object Adaptor

Basic Object Adaptor

Java to Java Kommunikation

RMI Remote Browsing Remote DebuggingRemote Development

CORBA

Recommended