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 Entstanden im XEROX PARC 1972 Going Public 1981 Gründung Firma Georg Heeg 1987 Gründung ParcPlace Systems 1988 ObjectWorks 1990 Parc Alan Kay Daniel H. H. Ingalles Adele Goldberg Peter Deutsch Glen Grasner ParcPlace Adele Goldberg VisualWorks 1992 Cincom übernimmt VisualWorks 1999
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ät Das Verhalten (die Menge der verfügbaren Methoden) definiert ein Objekt. Nicht mehr referenzierte Objekte werden automatisch abgeräumt Smalltalk ist in Smalltalk geschrieben Klasse, Methode, Werkzeuge, Compiler, ...
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 Uniformer Zugriff auf alle Konstrukte im Image. Alle Klassen können in sich erweitert werden Der gesamte Sourcecode des Systems kann direkt eingesehen werden.
Laufzeitumgebung und Anwendung Java - Architektur Werkzeuge Bibliothek in Ver- zeichnisstruktur und jar-Dateien 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 Protokolliste Methodenliste Klassendefinition
Programmierzyklus - Java Source *.java Binärcode *.class kompilieren Laufzeit- oder Logikfehler Kompilierfehler Binärcode *.class Binärcode *.class Binärcode *.class Binärcode *.class Laufzeit- umgebung Laden und testen
Programmierzyklus - VW Klassendefinition Methodendefinition Class Erstellen Syntaxfehler CompiledMethod Speichern Syntaxfehler Es kann jederzeit getestet werden Image Instant kompiliert und verfügbar
Design Use-Cases Anforderungs- analyse Use-Case-Diagramm System- analyse Klassendiagramme Aktivitätsdiagramme Design Klassendiagramme Sequenzdiagramme Implementierung Quellcode Anwendung(en) Test Testprotokolle
Smalltalk (VisualWorks) 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 Bibliothek in Ver- zeichnisstruktur und jar-Dateien Versionsverwaltung (SourceSave, PVCS, CVS, RCS, ...) VM Laufzeitumgebung Entwickler Werkzeuge VM Laufzeitumgebung
Teams - VisualWorks Entwickler export ChangeSet Image VM import export Parcels import VM
Teams - VisualWorks Entwickler Image VM StORE-Repository Oracle DB2 MS-SQL PostgreSQL Access Entwickler Image VM
Betriebssystemschnittstelle
Datenbankenschnittstellen Java VisualWorks SUN JDO Toplink ObjectLens GLORP OR-Mapping JDBC Datenbank- schnittstelle 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" /> </body> </html>
Web - Smalltalk ServerPages
Web - Smalltalk ServerPages
Web - Smalltalk Servlets doPost: aServletRequest response: aServletResponse HTTPServlet ToyzInput service: aServletRequest response: aServletResponse HTTP Request (POST) VisualWave ApplicationServer Web Server Marty Hall: Core Servlets and JavaServer Pages
Web - Application Server Web Server (Apache, IIS, ...) HTTP Request Fast CGI CGI ISAPI HTTP Request VisualWave ApplicationServer TinyHTTP Server
VisualWorks als Web-Services Client UDDI Request WSDL Response SOAP Request SOAP Response UDDI Server SOAP Server
Distribution - CORBA - RMI Java VisualWorks IBM Component Broker Borland VisiBroker IONA OrbixWeb ORBacus ... CORBA Distributed Smalltalk (DST) CORBA Basic Object Adaptor Portable Object Adaptor Smalltalk to Smalltalk Kommunikation OpenTalk CORBA Java to Java Kommunikation RMI Remote Browsing Remote Debugging Remote Development