Version française
Home     About     Download     Resources     Contact us    
Browse thread
question about the jvm backend
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: forum@x9c.fr <forum@x...>
Subject: Re: [Caml-list] question about the jvm backend

Le 10 juin 2010 à 16:27, Martin DeMello a écrit :

> I have an OCaml implementation of an algorithm that I now want to use
> from clojure. As I see it, my options are:
> 
> 1. Port to clojure
> 2. Port to scala (better support for pattern matching will make it
> easier to port, also scala might be faster)
> 3. Recompile the OCaml code against the JVM
> 
> (3) seems like the easiest choice, but from what I could gather from
> the docs, there is not much support for generating a library that can
> be consumed by a main program in another language. Is this going to
> change in 2.0?

Well, there are indeed two ways to call OCaml code from another JVM language:
  - by callbacks;
  - by scripting.

Callback from a JVM language work similarly to callback from C to
either ocamlc- or ocamlopt-compiled code. This is described in the
fourth chapter of [1], original callbacks being described by the chapter [2].
However, beware that the representation of OCaml values is going
to change in the upcoming 2.0 version of OCaml-Java.

Scripting is based on the "javax.script" package introduced by JDK 1.6.
It allows to execute arbitrary OCaml code, and can call OCaml compiled
code. It is slower than callbacks, as the script code has to be compiled
at runtime.


Finally, here are some key points that may help you making up your mind:
  - performance in version 2.0 should stand between ocamlc and ocamlopt;
  - version 2.0 will be based on JDK 1.7;
  - hopefully an alpha version should be released during summer, with the
    goal of having a stable version by the end of the year (current target of
    JDK 1.7 release).


Feel free to ask for further explanations if needed.


Regards,

Xavier Clerc


[1] http://cadmium.x9c.fr/distrib/cadmium.pdf
[2] http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html