Java Users - Use the -aot postfixed version of the jar on clojars. Then import libjulia_clj.java_api. Each method in this namespace is exposed as a public static method on the java_api class so for instance -initialize is exposed as:



(-arrayToJVM jlary)

Returns a map with three keys - shape, datatype, and data. Shape is an integer array that is the reverse of the julia shape, datatype is a string denoting one of the supported datatypes, and data is a primitive array of data.


(-createArray datatype shape data)

Return julia array out of the tuple of datatype, shape, and data.

  • datatype - must be one of the strings `"int8" "uint8" "int16" "uin16" "int32" "uint32" "int64" "uint64" "float32" "float64".
  • shape - an array or implementation of java.util.List that specifies the row-major shape intended of the data. Note that Julia is column-major so this data will appear transposed when printed via Julia.
  • data may be a java array or an implementation of java.util.List. Ideally data is of the same datatype as data.


(-initialize options)

Initialize the julia interpreter. See documentation for libjulia-clj.julia/initialize!. Options may be null or must be a map of string->value for one of the supported initialization values. JULIA_HOME can be set by the user by setting the key "julia-home" in the options map to the desired value and this will supercede the environment variable version.


  (japi/-initialize (jvm-map/hash-map {"n-threads" 8}))


(-inJlContext fn)

Execute a function in a context where all julia objects created will be released just after the function returns. The function must return pure JVM data - it cannot return a reference to a julia object.


(-namedTuple data)

Create a julia named tuple. This is required for calling keyword functions. The path for calling keyword functions looks something like:

  • data - must be an implementation of java.util.Map with strings as keys.
(let [add-fn (jl "function teste(a;c = 1.0, b = 2.0)
          kwfunc (jl "Core.kwfunc")
          add-kwf (kwfunc add-fn)]
      (is (= 38.0 (add-kwf (jl/named-tuple {'b 10 'c 20})
      (is (= 19.0 (add-kwf (jl/named-tuple {'b 10})
      (is (= 11.0 (add-kwf (jl/named-tuple)

      (is (= 38.0 (add-fn 8.0 :b 10 :c 20)))
      (is (= 19.0 (add-fn 8 :b 10)))
      (is (= 11.0 (add-fn 8))))


(-runString data)

Run a string in Julia returning a jvm object if the return value is simple or a julia object if not. The returned object will have a property overloaded toString method for introspection.