Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dart VM - foreign browsers (non Google)

Tags:

dart

I have played a little with Dart and I think it's great. I understand that it can output native JS and that the VM will likely be supported by Google in their browser. As it is possible that other browser suppliers won't support the Dart VM, is it at all possible to install the Dart VM on client machines for use in foreign browsers?

like image 424
Brian Oh Avatar asked Jan 06 '13 06:01

Brian Oh


2 Answers

is it at all possible to install the Dart VM on client machines for use in foreign browsers?

It is, however it is easier to supply the Dart VM yourself.


Javascript is perfectly able to:

  • Find a script of a specific type
  • Convert the script into Javascript
  • Execute the compiled script

While this is technically not a Dart Virtual Machine, it will get your Dart code executed at full speed. However, you do have to wait for the compilation to complete. The usual way is to do the compilation on the server (once), and only send the compiled javascript to clients.

Another option is interpreted code. Instead of compiling to javascript, the Dart instructions are executed one-by-one. Dart is not a machine-level language, so it needs parsing, but what follows is interpretation. The downside is reduced performance. This will get you as close to having a full-blown virtual machine (separate from the Javascript one) as possible.

Normally, you don't care which one you get (maybe you'll even get a just-in-time compiler), but it does make a difference in terms of a Dart virtual machine being present (rather than just getting your code executed).


The Dart compiler needs to be present on the page somehow (unless you precompile).

The easiest way is to just write <script src="path/to/your/dart-compiler.js"></script> into the head.

The Dartium browser does support Dart natively, but it is not designed for common use. Wikipedia says:

In the Dartium Browser: The Dart SDK ships with a version of the Chromium web browser modified to include a Dart virtual machine. This browser can run Dart code directly without compilation to Javascript. It is currently not intended for general-purpose use, but rather as a development tool for Dart applications.[7] When embedding Dart code into web apps, the current recommended procedure is to load a bootstrap JavaScript file, "dart.js", which will detect the presence or absence of the Dart VM and load the corresponding Dart or compiled Javascript code, respectively,[8] therefore guaranteeing browser compatibility with or without the custom Dart VM.

If you want the ability to run Dart be dependent on the client machine rather than on the page, there are a few ways too.

One way is to include the compiler as a user-script. This will work in all both modern desktop browsers. However, I'm not sure if there's an existing way to add user-script support to Internet Explorer.

One way is to add a browser extension. All modern desktop browsers support extensions, and Internet Explorer has Browser Helper Objects.

All of these will require the extra Javascript step. If you want native interpretation that bypasses Javascript, you need a plugin. Plugins require a specific mime-type to run (not sure if the script type counts), but you can install an extension that will trigger the use of the plugin. However, DOM manipulation still needs the extra Javascript step. There is no way around it.

A desktop installer can definitely install a plugin into a browser. Indeed, this is the way plugins normally get installed. Installing extensions from a desktop installer might be possible as well, but I can't confirm or deny this last claim for now.

like image 115
John Dvorak Avatar answered Sep 30 '22 13:09

John Dvorak


As far as I know there is no way to just simply install a plugin (like Flash) for Dart. For Internet Explorer one could install Chrome-frame, but I haven't seen something similar for Firefox and Safari.

like image 44
Florian Loitsch Avatar answered Sep 30 '22 14:09

Florian Loitsch