java-bridge: Bindings to the JNI and a high level interface generator.
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
andhs2j
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 toFalse
. NO_TOOLS
- Do not build the
j2hs
andhs2j
executables. Defaults toFalse
. 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 toFalse
. EXAMPLES
- Build a set of examples. They are prefixed
with
java-
and located along your haskell executables. Defaults toFalse
.
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
- 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
- Foreign.Java.Bindings
- Foreign.Java
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
only_core | Build only the Core Modules which offer a direct binding to the Java Native Interface. | Disabled |
no_tools | Do not build the | 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
- java-bridge-0.20130606.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
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 | 5674 total (30 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] |