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
Top Related