Smalltalk für Quereinsteiger

Werbung
Smalltalk für Quereinsteiger
Clemens Hoffmann
IT-Berater
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
• Was ist Smalltalk
VisualWorks 5i, Philosophie, Architektur
• Wie arbeite ich mit Smalltalk
Werkzeuge, Design, Teams
• Was habe ich für ein Umfeld
Schnittstellen, Web, Verteilte Systeme
Wie startet man eine Revolution
VisualWorks - Historie
1972
Entstanden im XEROX PARC
1981
Going Public
1987
Gründung Firma Georg Heeg
1988
Gründung ParcPlace Systems
1990
ObjectWorks
1992
VisualWorks
1999
Cincom übernimmt VisualWorks
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
Das Verhalten (die Menge der verfügbaren
Methoden) definiert ein Objekt.
Automatische Speicherverwaltung
Nicht mehr referenzierte Objekte werden
automatisch abgeräumt
Reflexivität
Smalltalk ist in Smalltalk geschrieben
Klasse, Methode, Werkzeuge, Compiler, ...
VisualWorks - Philosophie
Alles ist ein Objekt
Jede Komponente im einem VisualWorks
System ist ein Objekt, das mit anderen
Objekten interagiert.
“Lebende“ Objekte
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
Uniformer Zugriff auf alle Konstrukte im
Image.
Erweiterbarkeit
Alle Klassen können in sich erweitert
werden
Wissensbasis
Der gesamte Sourcecode des Systems kann
direkt eingesehen werden.
Java - Architektur
Bibliothek in Verzeichnisstruktur
und jar-Dateien
Werkzeuge
Laufzeitumgebung und Anwendung
VM
VM
VM
VM
VM
VM
Windows
Linux
Macintosh
Sun
IBM
HP
VisualWorks - Architektur
Image
Werkzeuge
Anwendung(en)
Bibliothek
VM
Windows
Linux
Macintosh
Sun
IBM
HP
Werkzeuge - PackageBrowser
Kategorien
Klassenliste
Klassendefinition
Protokolliste
Methodenliste
Programmierzyklus - Java
Source
*.java
kompilieren
Kompilierfehler
Laufzeit- oder
Logikfehler
Laufzeitumgebung
Binärcode
Binärcode
Binärcode
*.class
Binärcode
*.class
Binärcode
*.class
*.class
*.class
Laden und testen
Programmierzyklus - VW
Klassendefinition
Methodendefinition
Syntaxfehler
Syntaxfehler
Class
Erstellen
CompiledMethod
Image
Speichern
Instant kompiliert und verfügbar
Design
Anforderungsanalyse
Systemanalyse
Use-Cases
Use-Case-Diagramm
Klassendiagramme
Aktivitätsdiagramme
Klassendiagramme
Design
Sequenzdiagramme
Implementierung
Test
Quellcode
Anwendung(en)
Testprotokolle
Design
Smalltalk (VisualWorks)
und
UML
Anforderungsanalyse
Systemanalyse
Design
Implementierung
Test
Roundtrip
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
Werkzeuge
VM
Laufzeitumgebung
Entwickler
Werkzeuge
VM
Laufzeitumgebung
Bibliothek in Verzeichnisstruktur
und jar-Dateien
Versionsverwaltung
(SourceSave,
PVCS,
CVS, RCS,
...)
Teams - VisualWorks
Entwickler
ChangeSet
VM
Image
Entwickler
VM
Image
Parcels
Teams - VisualWorks
Entwickler
VM
Image
Oracle
DB2
MS-SQL
PostgreSQL
Access
Entwickler
VM
StORE-Repository
Image
Betriebssystemschnittstelle
*.h
*.h
*.h
Datenbankenschnittstellen
Java
VisualWorks
SUN JDO
Toplink
OR-Mapping
ObjectLens
GLORP
JDBC
Datenbankschnittstelle
EXDI
Database
Database
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
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 Servlets
doPost: aServletRequest
response: aServletResponse
HTTPServlet
HTTP Request
(POST)
Web Server
service: aServletRequest
response: aServletResponse
VisualWave
ApplicationServer
Marty Hall: Core Servlets and JavaServer Pages
ToyzInput
Web - Application Server
Web Server
(Apache, IIS, ...)
HTTP
Request
CGI
Fast
CGI
ISAPI
HTTP
Request
TinyHTTP
Server
VisualWave
ApplicationServer
Web-Services
VisualWorks als Web-Services Client
UDDI
Request
WSDL
Response
UDDI
Server
SOAP
Request
SOAP
Response
SOAP
Server
Distribution - CORBA - RMI
Java
CORBA
IBM Component Broker
Borland VisiBroker
IONA OrbixWeb
ORBacus
...
Portable Object Adaptor
RMI
Java to Java
Kommunikation
VisualWorks
CORBA
Distributed Smalltalk
(DST)
Basic Object Adaptor
OpenTalk
Smalltalk to Smalltalk
Kommunikation
CORBA
Remote Browsing
Remote Debugging
Remote Development
Herunterladen