Interop with Java
Provides a low-level, unsafe interface between OCaml and Java and high-level, typed OCaml interface using a PPX rewriter.
This is still a work in progress.
Heavily inspired by camljava
A simple example that use the Java's DateFormat class
let () = Java.init [| "-Djava.class.path=bin/ocaml-java.jar" |]
class%java date "java.util.Date" = object end
class%java format "java.text.Format" = object end
class%java date_format "java.text.DateFormat" =
object
inherit format
method format : date -> string = "format"
method parse : string -> date = "parse"
method [@static] get_instance : date_format = "getInstance"
end
let () =
let format = Date_format.get_instance () in
let date_string = "09/13/1996 9:45 AM GMT+1" in
let date = Date_format.parse format date_string in
print_endline (Date_format.format format date)
Example jbuild
file:
(jbuild_version 1)
(executable
((name test)
(libraries (ocamljava.camljava))
(preprocess (pps (ocamljava-ppx)))))
Modules interfaces:
- Java
- Jcall, unsafe low-level api for calling Java methods
- Jclass to query class/method/field handles
- Jarray to manipulate Java arrays
- Jrunnable to create and run Runnable objects
- Jthrowable to throw and access Java exceptions
Ppx: README
Java side: Caml