330 likes | 486 Views
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.
E N D
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 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 Was spricht der Vortrag an
Entstanden im XEROX PARC 1972 1981 Going Public Gründung ParcPlace Systems Gründung Firma Georg Heeg 1988 1987 ObjectWorks 1990 1992 VisualWorks 1999 Cincom übernimmt VisualWorks VisualWorks - Historie
ohne die gängigen Einschränkungen • Performanz • Komplexität • Unübersichtlichkeit • Wartbarkeit VisualWorks - Definition VisualWorks ist wie eine Skriptsprache • mächtig • hoch skalierbar • extrem stabil • objektorientiert
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.
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
kompilieren Binärcode *.class Kompilierfehler Laufzeit- oder Logikfehler Laufzeit- umgebung Laden und testen Programmierzyklus - Java Source *.java Binärcode *.class Binärcode *.class Binärcode *.class Binärcode *.class
Syntaxfehler Syntaxfehler Class Erstellen CompiledMethod Speichern Instant kompiliert und verfügbar Programmierzyklus - VW Klassendefinition Methodendefinition Es kann jederzeit getestet werden Image
Design Anforderungs- analyse Use-Cases Use-Case-Diagramm System- analyse Klassendiagramme Aktivitätsdiagramme Design Klassendiagramme Sequenzdiagramme Implementierung Quellcode Anwendung(en) Test Testprotokolle
Anforderungsanalyse Systemanalyse Design Implementierung Test Roundtrip Design Smalltalk (VisualWorks) und UML
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 Entwickler Image Parcels import VM
Teams - VisualWorks Entwickler Image VM StORE-Repository Oracle DB2 MS-SQL PostgreSQL Access Entwickler Image VM
*.h *.h *.h 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 <?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>
VisualWave ApplicationServer Web - Smalltalk Servlets doPost: aServletRequest response: aServletResponse HTTPServlet ToyzInput service: aServletRequest response: aServletResponse HTTP Request (POST) Web Server MartyHall: Core Servlets and JavaServer Pages
VisualWave ApplicationServer Web - Application Server Web Server (Apache, IIS, ...) HTTP Request Fast CGI CGI ISAPI HTTP Request TinyHTTP Server
UDDI Request WSDL Response SOAP Response Web-Services VisualWorks als Web-Services Client SOAP Request UDDI Server SOAP Server
CORBA CORBA IBM Component Broker Borland VisiBroker IONA OrbixWeb ORBacus ... Distributed Smalltalk (DST) OpenTalk Smalltalk to Smalltalk Kommunikation RMI Java to Java Kommunikation Distribution - CORBA - RMI Java VisualWorks Basic Object Adaptor Portable Object Adaptor CORBA Remote Browsing Remote Debugging Remote Development