This is a discussion page so please add your comments below.
Xavier Leroy's CamlJava describes itself as a very preliminary attempt to interface OCaml with Java. It does this indirectly via C and the JNI.
Chailloux and Henry's O'Jacaré builds on this to provide an object-oriented interface.
It requires an additional JVM in order to be able to run the bytecodes found in the class files however.
The goal of the OCaml-Java project is to allow seamless integration of OCaml and Java either by interpretation or compilation.
Nickel is a bridge generator that produces glue code for easy access to Java instances from the OCaml side.
OCamlScripting is an implementation of the Java JSR223 Scripting API (this API is defined by the javax.script package) for OCaml. It thus provides a script engine that allows execution of OCaml code snippets in a Java application.
A O'Caml bytecode interpreter for Java. Note: it is no longer maintained, but may be of interest for understanding Ocaml bytecode.