java-bridge: Bindings to the JNI and a high level interface generator.

[ ffi-tools, foreign, java, jvm, mit ] [ Propose Tags ] [ Report a vulnerability ]

This package offers bindings to the Java Native Interface and a high level interface generator.

low level bindings to the JNI
The low level bindings are located in Foreign.Java.JNI.Safe and Foreign.Java.JNI.Unsafe. When using these bindings you will have to deal with pointers and manage global references manually.
medium level interface
The medium level interface is located in Foreign.Java. It offers an abstraction over the JNI, i.e. you will not have to deal with pointers explicitly nor do you need to manually do conversions between native types and Haskell types. Also references will automatically be released by the Haskell runtime when no longer needed. You will still need to manually lookup classes and methods in order to use them.
high level bindings generator
You can also generate high level bindings using the tools j2hs and hs2j that come along with this package. The tools works in both directions, i.e. you can generate glue code to use existing Java libraries from within Haskell as well as to use Haskell from within Java. This is the most convenient way to deal with a Java library.
>>> INSTALLATION / USAGE

It should suffice to do cabal install (or cabal install java-bridge when installing from hackageDB). /You need to have a JDK installed prior to installing this library/.

Setup will try to find the location of your java installation automatically. This is needed in order to load libjvm. Note that this library is loaded dynamically, which means that linking errors might not show up during installation.

You can specify the location of libjvm manually using the environment variable FFIJNI_LIBJVM. This environment variable is consulted by Setup.hs as well as by the library each time libjvm is loaded - which means that you can override the path to libjvm at any time. The function getCompiledLibjvmPath in Foreign.Java.JNI.Safe will tell you what path to libjvm has been set during compilation of the library.

>>> FUN WITH (cabal-) FLAGS

The following cabal flags are available to you for configuring your installation:

ONLY_CORE
Build only the Core Modules which offer a direct binding to the Java Native Interface. The core modules are Foreign.Java.JNI, Foreign.Java.JNI.Safe, and Foreign.Java.JNI.Unsafe. This implies NO_TOOLS. Defaults to False.
NO_TOOLS
Do not build the j2hs and hs2j executables. Defaults to False.
DEBUG
Enable a debug build. Defaults to False.
OSX_GUI
Build the library with special support for Cocoa on Mac OS X (you will not be able to use AWT or Swing without). Defaults to True on Darwin (OS X).
OSX_FRAMEWORK
Use the JavaVM framework on MacOS X instead of loading the dynamic library. Defaults to False. Enable this flag if building on your OS X machine fails. Defaults to False.
EXAMPLES
Build a set of examples. They are prefixed with java- and located along your haskell executables. Defaults to False.

Use for example cabal install -f OSX_FRAMEWORK -f EXAMPLES or cabal configure -f DEBUG.

>>> HACKING

See HACKING.txt and ISSUES.txt in the tar.gz-package.


[Skip to Readme]

Modules

[Last Documentation]

  • Foreign
    • Foreign.Java
      • Foreign.Java.Bindings
        • Foreign.Java.Bindings.HaskellTypes
        • Foreign.Java.Bindings.JavaTypes
        • Foreign.Java.Bindings.Support
      • Foreign.Java.Control
      • Foreign.Java.IO
      • Foreign.Java.JNI
        • Foreign.Java.JNI.Safe
        • Foreign.Java.JNI.Unsafe
      • Foreign.Java.Maybe
      • Foreign.Java.Tutorial
      • Foreign.Java.Utils
      • Foreign.Java.Value

Flags

Automatic Flags
NameDescriptionDefault
only_core

Build only the Core Modules which offer a direct binding to the Java Native Interface.

Disabled
no_tools

Do not build the j2hs and hs2j executables.

Disabled
debug

Enable a debug build.

Disabled
osx_gui

Build the library with special support for Cocoa on Mac OS X.

Enabled
osx_framework

Use the JavaVM framework on MacOS X instead of loading the dynamic library.

Disabled
examples

Build a set of sample executables.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.9, 0.99, 0.20130602, 0.20130606, 0.20130606.1, 0.20130606.2, 0.20130606.3
Dependencies base (>=4.5 && <5), bimap (>=0.2.4), containers (>=0.4.2.1), cpphs (>=1.16), directory (>=1.1.0.2), filepath (>=1.3), hinduce-missingh, hint (>=0.3.3.4), java-bridge, mtl (>=2.1.1), multimap (>=1.1), named-records (>=0.5), names (>=0.3.1 && <0.4), split (>=0.2.1.1), strings (>=1.1), syb (>=0.3.6.1), transformers (>=0.3), unix [details]
License MIT
Author Julian Fleischer <julian.fleischer@fu-berlin.de>
Maintainer Julian Fleischer <julian.fleischer@fu-berlin.de>
Category Foreign, Java, JVM, FFI Tools
Uploaded by JulianFleischer at 2013-06-08T12:23:24Z
Distributions
Reverse Dependencies 3 direct, 0 indirect [details]
Executables java-system-properties, java-calculator, h2js, j2hs
Downloads 5681 total (7 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-21 [all 7 reports]

Readme for java-bridge-0.20130606

[back to package description]

java-bridge