Sprache Smalltalk / Portabilität
 
StartSeite | SpracheSmalltalk/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Die Laufzeitumgebungen der verschiedenen Smalltalk-Systeme sind z. T. unterschiedlich aufgebaut. Die meisten Dialekte halten sich an die Designprinzipien von Smalltalk-80 und einen ANSI Sprachstandard jüngeren Datums. Es gibt jedoch auch Dialekte, die nicht plattformunabhängig sind.

Am Beispiel von VisualWorksSmalltalk kann man deutlich machen, wie Portabilität im Sinne der Smalltalk-80 Prinzipien umgesetzt werden kann. Die VirtuelleMaschine von VisualWorks ist nicht in Smalltalk sondern in C oder C++ geschrieben. Die VM führt ein Image bestehend aus Smalltalk-Bytecode aus. Der Bytecode enthält Referenzen auf eine weitere Datei, in der der eigentliche Sourcecode abgelegt ist. Sowohl das Image als auch die Sourcen können auf mehrere Dateien verteilt werden. Das Programm ist auch ohne Sourcen lauffähig und aus Image und VM lassen sich auch reine Executables bauen. Bis hierher entspricht das in etwa dem, was auch in Java gemacht wird.

Ein Smalltalk-Image enthält zunächst die Entwicklungsumgebung oder zumindest Teile davon. Diese lässt sich jedoch entfernen, Ergebnis ist dann meist ein sogenanntes Runtime-Image. Runtime-Image plus VM ergeben zusammen die fertige Anwendung. In das Runtime-Image kann je nach Art der Runtime-Erstellung auch dynamisch Code nachgeladen werden. Dafür braucht die Anwendung nicht beendet werden. In einem Entwicklerimage besteht der Prozess der Softwareentwicklung darin, dass man genau das tut. Man verändert und ergänzt ein bereits laufendes System, welches als Snapshot jederzeit abgespeichert werden kann. Ich kann also eine Anwendung laufen lassen, sie währen sie läuft ändern, sie jederzeit abspeichern und am nächsten Morgen dort weitermachen, wo ich aufgehört habe.

Was bedeutet in diesem Kontext Portabilität?

Damit ein Smalltalk-Image auf einer bestimmten Plattform ausgeführt werden kann, muss zunächst eine zum Samalltalk-Dialekt passende VM für diese Plattform existieren. Prominente Smalltalk-Dialekte wie VisualWorks und SqueakSmalltalk laufen auf immens vielen Plattformen, darunter auch viele mobile Geräte.

Existiert eine VM, dann kann ich bei VisualWorks ein auf Plattform A erstelltes Image abspeichern, nach Plattform B kopieren und dort an dem Punkt weitermachen, wo ich vorher aufgehört habe. Natürlich werden sämtliche nativen Threads beim Abspeichern beendet. Ein Großteil einer Smalltalk-Anwendung läuft jedoch in Instanzen der Smalltalk-Klasse Process ab und diese "leichten" Prozesse sind wie alle Smalltalk-Objekte durch das Abspeichern des Images persistenzierbar. Ich kann also laufende Smalltalk-Prozesse auf eine andere Plattform transportieren.

A Smaltalk environment isn't an IDE, it's more like a viewport into a running process.
http://groups.google.com/groups?hl=de&lr=&selm=20050101171433.GA27093@lb.tenfour

Die GUI von VisualWorks emuliert den Look & Feel der Plattform. Man kann den Look frei wählen, default ist automatische Umstellung auf den Look der Plattform. SqueakSmalltalk macht das ähnlich, hat aber im Grunde einen ganz eigenen Look.

Die Krux in Bezug auf Portabilität in Smalltalk: Der ANSI-Standard legt nur ein Kerngerüst der Sprache und Klassenbibliothek als Standard fest. Die GUI-Anteile verschiedener Smalltalk-Dialekte sind meist nicht portabel.

Gerade der hohe Grad an Portabilität des Original-Smalltalk (VisualWorks ist der direkte Nachfolger von Smalltalk-80) hat dazu geführt, dass es in Smalltalk eine Reihe plattformspezifischer Dialekte gibt.

Siehe auch:


StartSeite | SpracheSmalltalk/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 3. Januar 2005 16:37 (diff))
Suchbegriff: gesucht wird
im Titel
im Text