Man benötigt nur ein installiertes SIlverlight 3 oder besser im Browser, sonst nichts. Microsoft behauptet, etwa 25% aller Browser (wahrscheinlich meinen sie allerdings nur Desktop-Browser) haben Silverlight installiert. Mein Problem: Ich nutze Chrome 6 (dev) und Safari 5 auf dem Mac, beides Browser, die nicht von Silverlight unterstützt werden. Mit dem aktuellen Chrome 5 unter Windows hätte man ebenfalls Pech. Man bräuchte FF3 oder IE7 oder IE8.
Das Silverlight-Plugin ist auf dem Mac 13 MB groß. Unter Windows ist es etwa 6 MB.
Will man jetzt IronPython benutzen benötigt man eine 37k große JS-Datei (komprimiert knapp 8k) die das Gestalt-Plugin initialisiert, sodass man einfach "<script type=text/python>" statt "<script type=text/javascript>" schreiben kann. Das lädt eine 680k große DLR-DLL und dan eine 870k große Bibliothek für IronPython oder eine 750k große Bibliothek für IronRuby. Hat man also erst einmal Silverlight installiert, ist der Overhead 1,5 MB. Ich meine eigentlich auch, dass diese DLLs nur einmal geladen werden müssen und dann von Silverlight gecacht werden. Jython als Applet - zum Vergleich - wäre deutlich größer.
Der Trick mit dem Script-Element ist übrigens nicht weiter schwer. Angenommen, ich hätte JQuery geladen, könnte ich folgendes machen:
Code: Alles auswählen
<script>
$(function(){
$("script[type=text/sma]").each(function(){
$(this).replaceWith("<script>" + compileSma(this.text) + "<\/script>");
});
});
</script>
wobei jetzt `compileSma` eine JavaScript-Funktion ist, die ein ein Stück Quelltext in der Sprache "sma" in JavaScript übersetzt und den Rest dem Browser überlässt. Man könnte hier z.B. CoffeeScript benutzen. Oder man baut einen Python nach JavaScript-Übersetzer, bzw. eine Sprache, die syntaktisch so aussieht wie Python, aber die Semantik von JavaScript hat, weil das viel einfacher und effizienter zu übersetzen ist.
Stefan