| Smalltalk/X zwitschert |
Für unsere Smalltalker - folgt ST/X online: www.twitter.com/SmalltalkX |
|
Besonderheiten Verlässlicher PartnerViele Firmen und Technologien kamen und gingen wieder in den vergangen 15 Jahren. Wir setzen auf Smalltalk und sind nach wie vor davon überzeugt, dass keine andere Technologie auch nur näherungsweise an Smalltalk heranreicht. Wer vor 15 Jahren z.B. eine graphische Anwendung in C/C++ entwickelte, erlebte einen Wartungsalbtraum und musste diese bis heute mehrmals um- und neuentwickeln. Allein der Umstieg auf neue Compiler und Sprachstandards erforderte grosse Aufwände. Ganz zu schweigen von der Graphikunterstützung. Xlib, Xt, Motif, Qt, Win3, WinXP usw. fordern unterschiedliche Anbindungen und teils sogar unterschiedliche Programmstruktur. Im Gegensatz dazu laufen bei manchen unserer Kunden noch heute Smalltalk Anwendungen, welche seit 15 Jahren unverändert blieben, also so gut wie keine Codewartung erforderten. Java oder C# ? Das ist im Moment für viele die Gretchenfrage. Mit Java erhalten Sie in der Windows-Welt wenig Unterstützung seitens Microsoft. Mit C# binden Sie sich langfristig an einen Monopolisten. Auch kämpfen Java und C# Entwickler schon wieder mit Inkompatibilitäten. So wiederholte sich die Geschichte erneut beim Umstieg von AWT zu Swing oder dem Eclipse Toolkit, sowie beim Umstieg auf neue Sprachversionen. Mit Smalltalk waren und sind Sie auf einer unabhängigen und stabilen Platform, und können sich in beiden Welten bewegen, ohne auch nur eine Zeile Code ändern zu müssen. Eine der wichtigsten Maxime der eXept Software AG ist
Rückwärtskompatibilität um die Investitionssicherheit für unsere Kunden
zu garantieren. Bewährt im echten EinsatzSmalltalk/X wird in vielen, auch kritischen Projekten mit Erfolg eingesetzt. Darunter befinden sich Fabriksteuerungen und Anlagen zur Prozessvisualisierung, Handelsplatformen für Aktien, Logistik und Steuerung eines Paketversandsystems, Verwaltungssysteme für kryptographische Schlüssel eines Mobilfunkbetreibers, ein System zur Analyse und Speicherung von Logdateien, Automatische Testsysteme für grosse Telekommunikationsanlagen, Web-Services und viele andere.
Viele davon werden im 24/7 Dauerbetrieb mit sehr geringen Downzeiten gefahren. Wartung und Upgrade erfolgen im laufenden Betrieb, wobei die Anwendung nicht angehalten werden muss.
Wenn Sie heute in Europa telefonieren, mit Kohle heizen, ihr Wasser zur Aufbereitung geben, ein Paket von einem Versender erhalten oder Aktien elektronisch handeln, ist gut möglich, dass hierzu Smalltalk/X seinen Teil dazu beigetragen hat. Syntaktische und semantische Kompatibilität zum Industriestandard
- Ausnahmebehandlung mit fortsetzbarer Ausführung nach der Behandlung (Proceedable Exceptions).
- Speicherverwaltung mit automatischer Freigabe nicht mehr referenzierter Datenobjekte (Garbage Collection).
- Prozesse (Threads) mit prioritätsgesteuertem preemtivem Scheduler.
- Nichtblockierendes GUI / Nichtblockierende API-Aufrufe.
- Komplettes Metamodell mit Klassen, Metaklassen, Methoden etc.
- Echte Kontexte und Blöcke (Block Closures).
- Beliebig genaue Integer- und Rationale Arithmetik mit automatischer Konvertierung der numerischen Datentypen.
- Offen. Sämtliche Smalltalk-Komponenten liegen im Quellcode vor und können an individuelle Wünsche angepasst werden.
Leistungsfähige Virtuelle Maschine (VM) und Support System
- Inkrementelles Übersetzen in interne Bytecode für kurze Entwicklungszyklen. Binärdateien mit Bytecode sind maschinenunabhängig und damit auf allen Rechnerarchitekturen lauffähig.
- Der Bytecode wird automatisch (und für das Programm transparent) vor der Ausführung intern in Methodengranulat bei Bedarf in echten Maschinencode übersetzt (sog. dynamischer Übersetzer oder auch "JITTER").
- Ein zusätzlicher Standalone Compiler erzeugt effizienten Maschinencode und ermöglicht die Übersetzung von Klassen in echten Maschinencode. Dies erlaubt die Generierung von shared Libraries (dlls), sowie Ausführbarer Programme ohne Image Datei. Die Produktion kann auch in einer shell-Umgebung erfolgen, d.h. Bibliotheken und Anwendungen können automatisch durch Makefiles oder batch Anweisungen erzeugt werden. Applikationen können ohne Quellcode oder dekompilierbaren Bytecode ausgeliefert werden.
- Soweit vom Betriebssystem unterstützt, können diese Bibliotheken dynamisch durch den Anwender oder programmgesteuert in ein laufendes System eingebunden und wieder entfernt werden.
- Bytecode- und Maschinencodemethoden können innnerhalb einer Applikation oder sogar innnerhalb einer Klasse gemischt werden. Für das Programm und den Programmierer ist dies transparent.
- Inline C-Code: C-Code kann direkt in Smalltalk-Methoden eingebunden werden, aus C kann auf Globale-, Instanz-, Klassen- und Methodenvariable zugegriffen werden. Damit können zeitkritische Operationen optimiert- oder existierende C-Bibliotheken leicht an Smalltalk angebunden werden.
- Optional können externe Funktionen auch via FFI aufgerufen werden. Der Aufruf wird durch ein kompatibles Compilerpragma gesteuert.
- Generative Speicherverwaltung mit automatischer Freispeicherbereinigung. (Garbage Collection mit „generation scavenging“ Algorithmus). Die Erkennung von nicht mehr referenziertem Speicher erfolgt automatisch, im Hintergrund und im Allgemeinen ohne merkliche Verzögerung. Speicher wird bei Bedarf automatisch vom Betriebsystem angefordert und freigegeben.
- Namensräume zur Vermeidung von Namenskonflikten in grossen Projekten.
Flexible und robuste Klassenbibliothek
- Prozessverwaltung erfolgt im (abschaltbaren) Zeitscheibenbetrieb.
- Optional dynamische Prozessprioritäten (d.h. Hintergrundprozesse erhalten garantiert eine Zeitscheibe - auch wenn Fordergrundaktivitäten das System blockieren würden).
- Klassenbibliothek wurde speziell im Hinblick auf Unterbrechbarkeit und Multitasking überarbeitet (z.B. wurden entsprechende locks in der dependency Verwaltung, beim Zugriff auf Fenster, Transcript etc. eingefügt).
- GUI Komponenten sind vollständig ereignisgesteuert. Kein polling oder programmgesteuerte Weitergabe der Kontrolle.
- Jedem Fenster ist ein eigener Thread zugeordnet, so daß im Falle einer Blockierung (oder eines Programmfehlers) nur das jeweilige Fenster betroffen ist. Die GUI Komponenten sind intern durch den "Dependency" Mechanismus (= "Observer Pattern") verbunden.
- Möglichkeit der Erzeugung von Standalone Applikationen ohne graphische Benutzeroberfläche („headless“ Operation, z.B. in Server Anwendungen).
- Unterstützung mehrerer Bildschirme („multiHeaded“ Operation) Hiermit lassen sich mehrbenutzer Anwendungen leichter (ohne komplizierte Interprozesskommunikation oder Dateizugriffssperren) realisieren.
- Unter Unix können mehrere X-Fenster auf verschiedenen Maschinen geöffnet und bedient werden; unter Windows können neben dem lokalen Schirm auch X-Fenster auf anderen bedient werden (z.B. Unix Maschinen, X-Terminals oder andere Windows Maschinen mit einem X-Server).
- Das „look and feel „ der GUI Komponenten (widgets) wird durch parametrisierte Viewstyles gesteuert; diese können vom Anwender modifiziert oder erweitert werden, um das Aussehen an bestehende Applikationen anzupassen („Corporate Identity“ colors). Mitgeliefert werden Standart-StyleSheets um das Aussehen von ST/X-Applikationen an motif, kde, windows, irix und einige andere Umgebungen anzupassen.
- Nationale Sprachvarianten werden durch die Klassenbibliothek unterstützt. Sprachabhängige Texte werden in externen Textdateien verwaltet. Zusätzliche Sprachvarianten können auch zu jedem späteren Zeitpunkt (durch Editieren dieser Dateien) hinzugefügt werden. Eine Neuübersetzung oder gar Änderung des Programms ist dazu nicht nötig.
- Sowohl 8bit als auch 16 und 32bit Zeichensätze werden unterstützt (Unicode). Unter Windows werden auch die Unicode APIs (-W API Calls) unterstützt und genutzt.
- Die Bibliothek beinhaltet XML Parser/Generatoren, Server- und Client-Implementierungen von SOAP, HTTP, FTP, Telnet, NFS, JSON und anderen Internet Protokollen.
- Eingebaute Internetdienste für HTTP, SOAP, FTP und andere. Damit können Ihre Anwendungen sehr leicht in bestehende Infrastrukturen integriert werden. Die Konfiguration kann über einen komfortablen graphischen Dialog erfolgen.
Leistungsfähige Entwicklungsumgebung
- Integrierte Programmierumgebung mit Datei- und Klassenbrowsern. Zusätzliche Monitore zur Prozeß- und Speicherüberwachung und ein symbolischer Debugger unterstützen effektive und kostengünstige Softwarentwicklung.
- Änderungen können im laufenden Programm erfolgen, woraus sehr kurze turn-around Zeiten resultieren (ein Abbrechen, Neuübersetzen und Neustart ist nicht erforderlich).
- Optional dynamische Prozessprioritäten (d.h. Hintergrundprozesse erhalten garantiert eine Zeitscheibe - auch wenn eine höher periorisierte Fordergrundaktivitäten das System blockieren würden).
- Integrierter GUI Builder. Dieser erlaubt die Entwicklung von graphischen Benutzeroberflächen sowie von Menus und Tabellen mittels Drag-and-Drop. Neben einer großen Anzahl existierender GUI Komponenten, können auch eigene, benutzerdefinierte Widgets leicht integriert werden.
- Integriertes Versionsmanagement (Anbindung an CVS). Dieses ermöglicht Versionskontrolle und unterstützt damit die Softwareentwicklung im Team.
- Integrierter WebServer. Dieser kann sowohl im standAlone Mastermodus, als auch unterhalb eines Masterservers (z.B. Apache mit fast-cgi Anbindung) eingesetzt werden. Er unterstützt neben traditionellen Dateizugriffen auch Embedded Smalltalk (STT), Smalltalk Services, CGI und SOAP. Ausserdem wird ein vorkonfiguriertes und somit sofort einsetzbares Swiki mitgeliefert.
- Online Dokumentation als Hypertext (HTML). Sie kann über einen in ST/X integrierten HTML - Betrachter (oder einen anderen HTML-Browser) angezeigt werden.
- Ein Klassendokumentationsgenerator erzeugt online die Dokumentation der ST/X Klassenbibliothek und der Anwenderklassen aus dem Quellcode als Hypertext (HTML).
- Gut dokumentierte Klassen und Methoden. Der Quellcode aller Klassen wird mitgeliefert.
- Viele Demo- und Beispielprogramme. Neben der Demonstration besondererer Konzepte oder Eigenschaften einzelner Klassen können diese auch als Ausgangspunkt bei der Entwicklung neuer Anwendungen dienen.
|