What does Dart's output look like?
main() { print('Hello, Dart!');}
When compiled with dart2js (as of 2013-04-26) (see note at bottom) it is converted into:
// Generated by dart2js, the Dart to JavaScript compiler.// The code supports the following hooks:// dartPrint(message) - if this function is defined it is called// instead of the Dart [print] method.// dartMainRunner(main) - if this function is defined, the Dart [main]// method will not be invoked directly.// Instead, a closure that will invoke [main] is// passed to [dartMainRunner].function Isolate() {}init();var $ = Isolate.$isolateProperties;// Bound closures$.Primitives_printString = function(string) { if (typeof dartPrint == "function") { dartPrint(string); return; } if (typeof window == "object") { if (typeof console == "object") console.log(string); return; } if (typeof print == "function") { print(string); return; } throw "Unable to print message: " + String(string);};$.main = function() { $.Primitives_printString("Hello, Dart!");};$.String = {builtin$cls: "String"};var $ = null;Isolate = Isolate.$finishIsolateConstructor(Isolate);var $ = new Isolate();// BEGIN invoke [main].if (typeof document !== "undefined" && document.readyState !== "complete") { document.addEventListener("readystatechange", function () { if (document.readyState == "complete") { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.main(); }); } else { $.main(); } } }, false);} else { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.main(); }); } else { $.main(); }}// END invoke [main].function init() { Isolate.$isolateProperties = {}; Isolate.$finishIsolateConstructor = function(oldIsolate) { var isolateProperties = oldIsolate.$isolateProperties; isolateProperties.$currentScript = typeof document == "object" ? document.currentScript || document.scripts[document.scripts.length - 1] : null; var isolatePrototype = oldIsolate.prototype; var str = "{\n"; str += "var properties = Isolate.$isolateProperties;\n"; var hasOwnProperty = Object.prototype.hasOwnProperty; for (var staticName in isolateProperties) { if (hasOwnProperty.call(isolateProperties, staticName)) { str += "this." + staticName + "= properties." + staticName + ";\n"; } } str += "}\n"; var newIsolate = new Function(str); newIsolate.prototype = isolatePrototype; isolatePrototype.constructor = newIsolate; newIsolate.$isolateProperties = isolateProperties; return newIsolate; };}//@ sourceMappingURL=out.js.map
Note for posterity: The original answer to this question has been modified to reflect the current state of affairs.
On 2012-05-12 the dart output for Hello World was 18,718 characters.
On 2012-08-29 the output was 1531 characters.
On 2013-04-26, the output was 2642 characters.
dart2js can minify code. Here is an example (as of 2013-04-26)
// Generated by dart2js, the Dart to JavaScript compiler.function I(){}init()var $=I.p$.ib=function(a){if(typeof dartPrint=="function"){dartPrint(a)return}if(typeof window=="object"){if(typeof console=="object")console.log(a)return}if(typeof print=="function"){print(a)return}throw "Unable to print message: " + String(a)}$.E2=function(){$.ib("Hello, Dart!")}$.qU={builtin$cls:"qU"}var $=nullI = I.$finishIsolateConstructor(I)var $=new I()if (typeof document !== "undefined" && document.readyState !== "complete") { document.addEventListener("readystatechange", function () { if (document.readyState == "complete") { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.E2(); }); } else { $.E2(); } } }, false);} else { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.E2(); }); } else { $.E2(); }}function init(){I.p={}I.$finishIsolateConstructor=function(a){var z=a.pz.$currentScript=typeof document=="object"?document.currentScript||document.scripts[document.scripts.length-1]:nullvar y=a.prototypevar x="{\n"x+="var properties = I.p;\n"var w=Object.prototype.hasOwnPropertyfor(var v in z){if(w.call(z,v)){x+="this."+v+"= properties."+v+";\n"}}x+="}\n"var u=new Function(x)u.prototype=yy.constructor=uu.p=zreturn u}}//@ sourceMappingURL=out.js.map
On 2013-04-26, the minified code was 1386 characters.
The output of the Dart->JavaScript compiler is a moving target. The first release (technical preview) didn't do a lot of tree shaking and was thus pretty big.The new (experimental) frog compiler is much better in this respect (David Chandler's blog), but I expect DartC to improve considerably too.