现在已经支持 `Java` 通过 `JNI` 调用 `C++` 的动态链接库。

## Unix-based

已经在以下环境测试成功:

* `Ubuntu16.04` + `java-8-openjdk-amd64`
* `Centos 7` + `java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64`
* `macOS Catalina` + `jdk-9.0.1`

用户环境可以自行修改 `javademo.sh`。

执行 `./javademo.sh`


## Windows

1. `javac -encoding utf-8 javademo/jni/AdemcoHbLibrary.java && javah -d javademo/cpp -jni javademo.jni.AdemcoHbLibrary`

2. 打开 `ademco_hb.sln`, 以 `Release/x64` 编译 `ademco_java` 项目,可能需要修改项目属性 `C/C++` --> `Additional Include Directories`,生成 `x64/Release/ademco_java.dll`

3. `java javademo.jni.SimpleServer 12345` 进行测试

## 二次开发

可以参考 `SimpleServer` 引入 `AdmeocHbLibrary` 进行解包、打包。

注意若使用预编译动态库,引入 `AdmeocHbLibrary` 时需整包引入,动态链接库会以包名查找 `AdmeocHbLibrary` 类,详情见 [dllmain.cpp](javademo/cpp/dllmain.cpp) 内 `Java_javademo_jni_AdemcoHbLibrary_nativeParse` 函数,包名不同则查找失败,用户自行编译动态库时需同时修改此函数内容。

## 作者对 `Java` 开发不熟悉,有任何意见、建议欢迎提 `issue` 及 `pr`