DLR & Silverlight – Microsofts Scripting-Plattform

Wolfgang Miedl arbeitet Autor und Berater mit Schwerpunkt IT und Business. Daneben publiziert er auf der Website Sharepoint360.de regelmäßig rund um Microsoft SharePoint, Office und Social Collaboration.
Moderne Web-Anwendungen beruhen meist auf Script-Sprachen wie Javascript in Ajax-Programmen. Microsoft stellt für diesen Bereich mit Silverlight 1.1 seine neue .NET-Scripting-Plattform vor: die "Dynamic Language Runtime" (DLR) mit Ruby, Python und Co.

Microsoft hat seit den 90er Jahren alternativ zu Programmiersprachen wie C++ und Visual Basic eine Reihe von Skriptsprachen entwickelt. Im Gegensatz zu den populären Web-Skriptsprachen wie Perl, PHP und Javascript hatten die Redmonder mit ihren Produkten jedoch meist Administrations- und Anwendungsszenarien im Client-Server-Umfeld im Visier. So ermöglichte beispielsweise der 1997 eingeführte Windows-Scripting-Host mit Sprachen wie VB Script erstmals umfassende Automatisierungsszenarien in der Windows-Verwaltung. Im Office-Umfeld wiederum fand Visual Basic for Applications (VBA) große Verbreitung und kam dabei sowohl für einfache Hilfsfunktionen wie auch in mancher größeren Geschäftslösung zum Einsatz.

Als Scripting-Umgebung soll die Dynamic Language Runtime (DLR) insbesondere die Entwicklung von Browser-Anwendungen mit Silverlight vereinfachen. (Quelle: Scott Hanselman)
Als Scripting-Umgebung soll die Dynamic Language Runtime (DLR) insbesondere die Entwicklung von Browser-Anwendungen mit Silverlight vereinfachen. (Quelle: Scott Hanselman)

Mit der Einführung von .NET renovierte Microsoft seine gesamte Programmierplattform und führte mit der Common Language Runtime (CLR) gleichzeitig eine neuartige universelle Laufzeitumgebung ein. Im Unterschied zum konzeptionell verwandten Java ermöglicht die CLR die Verwendung unterschiedlichster Programmiersprachen innerhalb einer einheitlichen Laufzeitumgebung. Bisher profitieren von dieser Technik in erster Linie klassische Sprachen (Systemsprachen) wie C#, C++ oder Visual Basic, die sich dadurch auszeichnen, dass der Quellcode in Maschinensprache oder wie im Fall von .NET in eine Intermediate Language (IL) kompiliert wird. Skriptsprachen hingegen sind dadurch charakterisiert, dass ihr Programmcode stets im Klartext vorliegt und erst zur Laufzeit interpretiert wird. Zwar beeinträchtigt dieses Prinzip die Ausführungsgeschwindigkeit, doch steigert der direkte Zugang zum Programmcode die Produktivität, was wohl der Hauptgrund für die enorme Popularität von Skriptsprachen sein dürfte.

PHP .NET /Phalanger

Unter .NET wurden Skriptsprachen bisher allerdings eher stiefmütterlich behandelt. Als erstes größeres Projekt einer .NET-Skriptsprache gilt PHP.NET/Phalanger, das von tschechischen Studenten an der Prager Universität 2003 gestartet wurde. Mittlerweile arbeiten die Initiatoren an der Version PHP.NET 2.0 und verfolgen damit das Ziel einer umfassenden CLR-Unterstützung. Die neue Sprache unterstützt PHP 4, 5 und Teile von PHP 6, erhielt aber auch einige proprietäre, .NET-spezifische Erweiterungen, um in den Rang einer vollwertigen .NET-Framework-Sprache zu gelangen.

Findige Skriptsprachen-Experten gaben sich mit diesen ersten Resultaten jedoch nicht zufrieden und suchten nach Erweiterungsmöglichkeiten der CLR. Einer von ihnen war Jim Hugunin, der sich als Erfinder von Jython und Miterfinder von AspectJ bereits einen Namen im Java-Lager gemacht hat. Hugunin befasste sich ähnlich wie seine Phalanger-Kollegen schon früh mit einer Portierung von Python auf .NET und entwickelte schließlich "IronPython für .NET". Bei Microsoft war man offenbar von seinem Talent beeindruckt und engagierte ihn 2004 als Entwicklungschef im CLR-Team. Hugunin sah die Chance, die Grundlagenarbeit voranzutreiben, wie er sagt: "Mein Ziel bei Microsoft war es von Anfang an, die CLR insgesamt für Skriptsprachen zu verbessern." Die Integration von IronPython in das .NET-Framework erhielt denn auch den Rang eines Pilotprojekts, aus dem schließlich eine neue .NET-Skripting-Plattform entstehen sollte. Seit diesem Jahr liegt das Ergebnis in Form der neuen Dynamic Language Runtime vor.

Enge Verknüpfung von DLR und Silverlight

Die DLR ist im derzeitigen Stadium eng mit Silverlight 1.1 verknüpft, Microsofts neuer Plattform für Browser-basierende Rich-Internet-Applikationen (RIA). Erstmals können damit .NET-Anwendungen mit dem von Rich Clients gewohnten Bedienkomfort innerhalb eines Web-Browsers laufen – und zwar im Internet Explorer, in Firefox und Opera sowie unter Windows und Macintosh. Zuvor beschränkte sich .NET entweder auf Web-Server-Anwendungen mit ASP.NET oder auf Windows-Rich-Clients auf Basis der .NET-Frameworks "Windows Forms" beziehungsweise der neuen "Windows Presentation Foundation" (WPF).

Jim Hugunin, der Erfinder von Jython und AspectJ, hat mit IronPython, der Python-Implementierung für .NET, den Grundstein für die Scripting-Plattform Dynamic Language Runtime (DLR) gelegt.
Jim Hugunin, der Erfinder von Jython und AspectJ, hat mit IronPython, der Python-Implementierung für .NET, den Grundstein für die Scripting-Plattform Dynamic Language Runtime (DLR) gelegt.

Kernstück der DLR ist ein dynamisches Typsystem. Es dient allen aktuellen und zukünftigen .NET-Skriptsprachen als kleinster gemeinsamer Nenner und ermöglicht so im Unterschied zu herkömmlichen Skripting-Architekturen eine uneingeschränkte Kommunikation zwischen verschiedenen Skriptsprachen. Ebenso lassen sich vorgefertigte Softwarekomponenten in Silverlight-Skripts einbinden. Neben diversen Verbesserungen für Skriptsprachen verfolgte Microsoft bei der Entwicklung der DLR noch ein weiteres Ziel: Wie schon die CLR sollte auch die DLR für alle möglichen Skriptsprachen offen sein.

Um sicherzustellen, dass die Portierung weiterer Sprachen ohne großen Aufwand zu bewerkstelligen ist, holten sich die Redmonder Anfang 2006 mit John Lam den Erfinder von RubyCLR .NET als weiteren Scripting-Experten ins Boot. Ziel der Ruby-Integration war nicht nur die Unterstützung einer populären Sprache, sondern es ging auch darum, die generischen Fähigkeiten der DLR als sprachunabhängige Basisinfrastruktur unter Beweis zu stellen.

IronRuby mit Dynamic Sites

Das neue IronRuby weist als Besonderheit unter anderem das DLR-Feature "Dynamic Sites" auf, mit dem sich die Verarbeitungsgeschwindigkeit von dynamischen Sprachen verbessern soll. Es handelt sich hierbei um ein Verfahren zum Cachen von Methoden bei der Ausführung mit bestimmten Objekttypen. Ebenso kommt das Feature "Lightweight Code Generation" zum Einsatz. Hierbei wird eine Skriptsprache zur Laufzeit im Arbeitsspeicher in die .NET-typische Intermediate Language (IL) übersetzt, um anschließend per Just-in-Time-Compiler zu Maschinencode verarbeitet zu werden. Auf diese Weise lässt sich die Geschwindigkeit im Vergleich zu herkömmlichem interpretiertem Skriptcode deutlich steigern.

Auch in puncto Sicherheit soll das DLR/Silverlight-Konzept Vorteile gegenüber anderen Scripting-Umgebungen aufweisen. Hugunin zieht dazu einen Vergleich mit alternativen Scripting-Hosts wie etwa dem älteren I-ActiveScript von Microsoft. Auch damit könne man Sprachen wie Python im Browser laufen lassen, doch obliege es hierbei dem Lieferanten der Sprachimplementierung, dafür zu sorgen, dass potenzieller Hackercode nicht auf das Host-System übergreifen kann. Im DLR-Modell hingegen schottet die Sandbox-Umgebung von Silverlight jegliche kompromittierenden Routinen wie etwa Buffer-Overruns ab – Sprachimplementierer müssen sich also nicht um Sicherheitsaspekte kümmern.

In ihrer ersten Implementierung unterstützt die DLR vier Skriptsprachen: neben IronPython und IronRuby auch Javascript und Dynamic VB. Bei Letzterem handelt es sich um einen neuen Visual-Basic-Compiler (Codename VBx), der zukünftig die bisherigen Visual-Basic-Implementierungen ablösen soll. Bewusst ausgeklammert wurde übrigens die relativ neue Windows-Scripting-Umgebung "Powershell", wie Hugunin erklärt: "Im ersten Anlauf richteten wir unseren Fokus auf Silverlight sowie Sprachen, die man in Browser-Umgebungen einsetzt. Powershell stellt demgegenüber eine Shell-Skriptumgebung dar, die auf jede Art von Steuerung einer lokalen Maschine ausgelegt ist."

Fazit

Mit der Dynamic Language Runtime verbessert Microsoft die Unterstützung von Skriptsprachen in der .NET-Umgebung. Ohne großen Programmieraufwand lassen sich damit Rich Internet Applications (RIAs) erstellen, die in gängigen Web-Browsern wie Internet Explorer und Firefox laufen. Voraussetzung dafür ist das Browser-Plug-in Silverlight 1.1 mit integrierter DLR, welche die derzeit vier Sprachimplementierungen Python, Ruby, Javascript und VB enthält. Weitere populäre Skriptsprachen sollen folgen. (ue)