JZMQ ZeroMQ的java绑定下载和编译安装
来源:互联网 发布:算法的乐趣 知乎 编辑:程序博客网 时间:2024/06/02 08:57
Source Code
The Java binding requires a recent release of 0MQ, which you can download fromthe download area, or the latest development version, which you can download and build from thethe github repository.
Build and installation
UNIX-like platforms
Get the jzmq source code by cloning the jzmq git or using github's download function, then do the following:
$ autogen.sh$ configure$ make$ make install
On Linux you must run the ldconfig command as root after running make install to ensure that the system library cache is updated.
Make sure that you have set the Java classpath to the directory where ØMQ classes reside.
Finally, for Java to find the libzmq and libjzmq shared libraries you must ensure thatjava.library.path is set to the directory where these are installed (normally/usr/local/lib on UNIX-like systems).
Example command line for running a Java test program on Linux:
$ java -Djava.library.path=/usr/local/lib -classpath /home/user/zeromq/libjzmq/:./local_lat tcp://127.0.0.1:5555 1 100
Fedora
Specific Fedora instructions from Steven McCoy on the mailing list:
Required packages:
autoconf automake libtool gcc gcc-g++ make libuuid-dev git java-1.6.0-openjdk-devel
1) Download and unpack ZeroMQ 2.1.10.
$ wget http://download.zeromq.org/zeromq-2.1.10.tar.gz
$ tar zxf zeromq-2.1.10.tar.gz
2) Build
$ cd zeromq-2.1.10$ ./configure --with-pgm$ make$ sudo make install
Now libzmq.so should reside in /usr/local/lib
3) Clone JZMQ from GitHub.
$ git clone https://github.com/zeromq/jzmq.git
4) Build
$ cd jzmq$ ./autogen.sh$ ./configure$ make$ sudo make install
5) Setup environment
$ sudo bash
optional step #1 (not required on Debian platforms)
# echo /usr/local/lib > /etc/ld.so.conf.d/local.conf # ldconfig
optional step #2
# echo CLASSPATH=/usr/local/share/java/zmq.jar:. >> /etc/environment Incredibly limiting as you will still need to override to include any other directory or JAR file.
optional step #3
# echo export LD_LIBRARY_PATH=/usr/local/lib > /etc/profile.d/ldlibrarypath.sh This is pretty much a workaround to a JRE defect: http://lists.fedoraproject.org/pipermail/java-devel/2011-March/004153.html
# exit
Then log out and log back in again.
6) Verify new environment
$ echo $CLASSPATH/usr/local/share/java/zmq.jar:.$ echo $LD_LIBRARY_PATH/usr/local/lib
7) Test with Java ØMQ performance examples
$ cd jzmq/perf$ java local_lat tcp://127.0.0.1:5000 1 100
This will fail if zmq.jar cannot be found in the class path.
This will fail if libjzmq.so or libzmq.so cannot be found in java.library.path or LD_LIBRARY_PATH.
If you skip optional step #1 you will need to specify the library path:
$ LD_LIBRARY_PATH=/usr/local/lib java local_lat tcp://127.0.0.1:5000 1 100
If you skip optional step #2 you will need to specify the class path:
$ java -cp /usr/local/share/java/zmq.jar:. local_lat tcp://127.0.0.1:5000 1 100
Note that setting -Djava.library.path is insufficient for libjzmq.so to find libzmq.so but it is sufficient if you take optional step #1 and skip optional step #3, i.e. LD_LIBRARY_PATH is not overridden but ld.so.conf is updated.
$ java -Djava.library.path=/usr/local/lib local_lat tcp://127.0.0.1:5000 1 100
Windows
Get the source code, then use MSVC (2008 or later) to open the solution file builds\msvc\msvc.sln and build the projects.
Ensure that the javac binary is in the Path variable.
Note that ØMQ and JDK header file has to be on "include path" (Tools|Options|Projects and Solutions|VC++ Directories|Include files) and ØMQ libraries have to be on "library path" (Tools|Options|Projects and Solutions|VC++ Directories|Library files):
Include files: <jdk>\include\win32 <jdk>\include <zeromq>\includeLibrary files: <zeromq>\lib
To run it, firstly check whether libzmq.dll is on the system PATH. Secondly, make sure that you add zmq.jar and the jzmq perf directory to the Javaclasspath. Thirdly, for Java to find the jzmq.dll shared library you must ensure thatjava.library.path is set to the directory where it is installed.
Example command to run Java test program on Windows:
C:\zmq\java\perf> set PATH=%PATH%;C:\zmq\libC:\zmq\java\perf> java -Djava.library.path=C:\zmq\java\lib -classpath C:\zmq\java\lib\zmq.jar;. local_lat tcp://127.0.0.1:5555 1 100
Windows 64bit Build Instructions
Alternative Windows instructions from Steven McCoy on the mailing list:
1) Build ZeroMQ or install a prepared package. I built with SDK 7.1 but I also have MSVC 2010 Express and Pro installed.
2) Clone JZMQ from GitHub, might be easier with Cygwin.
$ git clone https://github.com/zeromq/jzmq.git
3) Insert attached CMakeLists.txt, you probably want to install CMake for Windows too.
4) With a suitable JDK installed prepare the build:
c:\zeromq\jzmq\jzmq> mkdir build64c:\zeromq\jzmq\jzmq> cd build64c:\zeromq\jzmq\jzmq> cmake .. -G "NMake Makefiles"-- The C compiler identification is MSVC-- The CXX compiler identification is MSVC-- Check for CL compiler version-- Check for CL compiler version - 1600-- Check if this is a free VC compiler-- Check if this is a free VC compiler - no-- Check for working C compiler: c:/Program Files (x86)/Microsoft Visual Studio10.0/VC/bin/amd64/cl.exe-- Check for working C compiler: c:/Program Files (x86)/Microsoft Visual Studio10.0/VC/bin/amd64/cl.exe -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working CXX compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/amd64/cl.exe-- Check for working CXX compiler: c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/amd64/cl.exe -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Java version 1.6.0.27 configured successfully!-- Found Java: C:/Program Files/Java/jdk1.6.0_27/bin/java.exe (found version "1.6.0.27")-- Found JNI: C:/Program Files/Java/jdk1.6.0_27/lib/jawt.lib-- Configuring done-- Generating done-- Build files have been written to: C:/zeromq/jzmq/jzmq/build64c:\zeromq\jzmq\jzmq> cmake-gui .
Change "Debug" to "Release", hit "Configure" and "Generate".
Java version 1.6.0.27 configured successfully!
Configuring done
Generating done
5) With NSIS installed you can jump to build the package or just build the libraries.
c:\zeromq\jzmq\jzmq> nmake packageorc:\zeromq\jzmq\jzmq> nmake
Then output similar to as follows:
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01Copyright (C) Microsoft Corporation. All rights reserved.[ 11%] Generating config.hpp[ 22%] Generating org/zeromq/ZMQ.class, org/zeromq/ZMQ$$Context.class, org/zeromq/ZMQ$$Socket.class, org/zeromq/ZMQ$$Poller.class, org/zeromq/ZMQ$$Error.class, org/zeromq/ZMQException.class, org/zeromq/ZMQQueue.class, org/zeromq/ZMQForwarder.class, org/zeromq/ZMQStreamer.class, org/zeromq/EmbeddedLibraryTools.class, org/zeromq/App.class[ 33%] Generating org_zeromq_ZMQ.h, org_zeromq_ZMQ_Error.h, org_zeromq_ZMQ_Context.h, org_zeromq_ZMQ_Socket.h, org_zeromq_ZMQ_Poller.h[ 44%] Generating lib/zmq.jarScanning dependencies of target jzmq[ 44%] Generating org/zeromq/ZMQ.class, org/zeromq/ZMQ$$Context.class, org/zeromq/ZMQ$$Socket.class, org/zeromq/ZMQ$$Poller.class, org/zeromq/ZMQ$$Error.class, org/zeromq/ZMQException.class, org/zeromq/ZMQQueue.class, org/zeromq/ZMQForwarder.class, org/zeromq/ZMQStreamer.class, org/zeromq/EmbeddedLibraryTools.class, org/zeromq/App.class[ 44%] Generating org_zeromq_ZMQ.h, org_zeromq_ZMQ_Error.h, org_zeromq_ZMQ_Context.h, org_zeromq_ZMQ_Socket.h, org_zeromq_ZMQ_Poller.h[ 55%] Building CXX object CMakeFiles/jzmq.dir/src/Context.cpp.objContext.cpp[ 66%] Building CXX object CMakeFiles/jzmq.dir/src/Poller.cpp.objPoller.cpp[ 77%] Building CXX object CMakeFiles/jzmq.dir/src/Socket.cpp.objSocket.cppC:\zeromq\jzmq\jzmq\src\Socket.cpp(176) : warning C4267: 'argument' : conversion from 'size_t' to 'jsize', possible loss of dataC:\zeromq\jzmq\jzmq\src\Socket.cpp(182) : warning C4267: 'argument' : conversion from 'size_t' to 'jsize', possible loss of dataC:\zeromq\jzmq\jzmq\src\Socket.cpp(476) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of dataC:\zeromq\jzmq\jzmq\src\Socket.cpp(500) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data[ 88%] Building CXX object CMakeFiles/jzmq.dir/src/util.cpp.objutil.cpp[100%] Building CXX object CMakeFiles/jzmq.dir/src/ZMQ.cpp.objZMQ.cppLinking CXX shared library lib\jzmq.dll Creating library lib\jzmq.lib and object lib\jzmq.exp[100%] Built target jzmqRun CPack packaging tool...CPack: Create package using NSISCPack: Install projectsCPack: - Run preinstall target for: JZMQCPack: - Install project: JZMQCPack: Create packageCPack: - package: C:/zeromq/jzmq/jzmq/build64/JZMQ-2.1.10-win64.exe generated.
Then to test copy all the libraries into the perf directory from the jzmq package and build some examples.
C:\zeromq\jzmq\jzmq\perf>"\Program Files\Java\jdk1.6.0_27"\bin\javac -cp zmq.jar;. local_lat.javaC:\zeromq\jzmq\jzmq\perf>"\Program Files\Java\jdk1.6.0_27"\bin\javac -cp zmq.jar;. remote_lat.java
Then test:
C:\zeromq\jzmq\jzmq\perf>"\Program Files\Java\jdk1.6.0_27\bin"\java -Xcheck:jni -verbose:jni,class -classpath .;zmq.jar local_lat tcp://127.0.0.1:5000 1 100C:\zeromq\jzmq\jzmq\perf>"\Program Files\Java\jdk1.6.0_27"\bin\java -classpath .;zmq.jar remote_lat tcp://127.0.0.1:5000 1 100message size: 1 [B]roundtrip count: 100mean latency: 85.0 [us]
The perf directory looks like this:
10/26/2011 01:18 PM <DIR> .10/26/2011 01:18 PM <DIR> ..10/26/2011 01:09 PM 16,384 jzmq.dll10/03/2011 12:47 PM 445,952 libzmq.dll10/26/2011 12:53 PM 1,492 local_lat.class10/05/2011 05:07 PM 1,723 local_lat.java10/05/2011 05:07 PM 68 local_lat.sh10/05/2011 05:07 PM 2,278 local_thr.java10/05/2011 05:07 PM 68 local_thr.sh10/05/2011 05:07 PM 512 Makefile.am10/05/2011 05:07 PM 9,988 Makefile.in10/26/2011 01:18 PM 1,853 remote_lat.class10/05/2011 05:07 PM 2,049 remote_lat.java10/05/2011 05:07 PM 69 remote_lat.sh10/05/2011 05:07 PM 1,722 remote_thr.java10/05/2011 05:07 PM 69 remote_thr.sh10/26/2011 01:09 PM 15,350 zmq.jar 15 File(s) 499,577 bytes
Bug Reporting
http://github.com/zeromq/jzmq/issues
Mailing list
zeromq-dev@lists.zeromq.org
- JZMQ ZeroMQ的java绑定下载和编译安装
- 编译zeromq的java绑定:jzmq
- 编译zeromq的java绑定:jzmq
- centos下zeromq和jzmq的安装
- windows下zeromq和jzmq的编译与使用
- 非root帐号安装zeromq和jzmq
- zeroMQ/jzmq 安装
- 转载:zeroMQ/jzmq 安装
- centos安装zeromq, jzmq
- ZeroMQ/jzmq安装使用
- ZeroMQ + jzmq Windows 编译和运行环境配置
- ZeroMQ下载、安装、编译
- ubuntu下安装 ZeroMQ, JZMQ
- ubuntu下安装 ZeroMQ, JZMQ
- Ubuntu 14.04安装zeromq jzmq
- 消息中间件ZeroMQ+jzmq在centos上的安装调试
- ZeroMQ学习:window下编译zeromq-3.2.3和jzmq-master
- ZeroMQ在windows下编译zeromq-4.0.5和jzmq-master(32位系统)
- Java读取TXT文件内容的方法
- 一无所有
- ZeroMQ下载和安装
- http://hi.baidu.com/pkucbj/item/37e1e8de1ffc7d57d63aae82
- 深入浅出设计模式(12)——Command模式
- JZMQ ZeroMQ的java绑定下载和编译安装
- 使用XML和XMLList类处理XML数据
- ZeroMQ 手册
- 通过 libvirt和convirt来管理 KVM 虚拟机
- AutoMake文档
- 面试必备:常见排序算法的实现
- OpenGL绘图学习笔记
- oracle 创建表空间 一般情况
- KVM简介