首页 > 编程语言 >java调用rust 共享库的一些方法简单说明

java调用rust 共享库的一些方法简单说明

时间:2024-01-03 12:32:55浏览次数:35  
标签:调用 java github https jni com rust native

java 与rust 的调用,核心还是基于jni 进行处理,rust社区实现了不少方便的工具可以提供rust 到c 的处理(比如生成头文件)
以下是整理的一些资料,方便学习

几个不错的包

  • jni-rs 
    目前还在活跃更新中,同时github 的start 也比较多,同时不少开源软件在用,比如questdb
  • robusta 
    一个比较新的项目,使用上比较简单,但是目前还是有一些缺点,具体可以参考官方文档
  • panama以及周边项目 
    实际上panama并不是rust 周边的,但是可以加速jni 的开发,比如我们已经构建好rust 的共享库之后,基于此可以 
    方便java 代码使用
  • graalvm 的native 能力 
    graalvm 对于native 的处理也比较强大,而且是oracle 官方的,也是不错的选择

说明

参考资料中包含了一些链接,可以方便参考学习

参考资料

https://openjdk.org/projects/panama/https://github.com/openjdk/jextract

https://github.com/jni-rs/jni-rs

https://docs.rs/jni/latest/jni/

https://github.com/mozilla/cbindgen

https://github.com/MaulingMonkey/jni-bindgen

https://github.com/mozilla/uniffi-rs

https://questdb.io/blog/leveraging-rust-in-our-high-performance-java-database/

https://github.com/questdb/rust-maven-plugin

https://github.com/giovanniberti/robusta

https://github.com/java-native-access/jna

https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-shared-library/

https://www.baeldung.com/java-project-panama

https://docs.oracle.com/javase/8/docs/technotes/guides/jni/

https://www.baeldung.com/jni

https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/jniTOC.html

https://www.graalvm.org/latest/reference-manual/native-image/native-code-interoperability/

https://www.graalvm.org/latest/reference-manual/native-image/native-code-interoperability/C-API/

https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/JNI/

标签:调用,java,github,https,jni,com,rust,native
From: https://blog.51cto.com/rongfengliang/9082160

相关文章

  • mrml mjml 的rust 实现
    mrml是mjml的rust实现,同时还提供了webassembly的支持,当然比较强大的是mrml同时也实现了pythonbindingwebassembly使用代码const{Engine}=require("mrml");constengine=newEngine();constresult=engine.toHtml("<mjml><mj-body>HelloWorld</mj-body>......
  • 无涯教程-Java 正则 - X*+ 匹配函数
    PossesiveQuantifier[X*+]匹配X出现零次或多次。X*+-示例packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPossesiveQuantifierDemo{privatestaticfinalStringREGEX="T*+";privatestaticfinal......
  • javascript的Map和Set概念以及区别和使用场景
    Map和SetJavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。MapMap是一组键值对的结构,具有极快的查找速度。举个例子,假设要根......
  • 25个JavaScript One-Liner让你更专业
    今天我们分享一些单行代码技巧,了解这些技巧,可以提升我们的工作效率,现在,我们一起来看一下今天的这些单行代码技巧吧。数组1.检查变量是否是数组constisArray=Array.isArray(arr);constisArray=arrinstanceofArray;2.数字数组的和constsum=(arr)=>arr.reduce((a,b)......
  • pytest自动化测试中的fixture的声明和调用
    1.fixture的声明我们使用@pytest.fixture()来声明fixture函数。fixture()即可无参数进行声明,也可以带参数声明。示例1:@pytest.fixture()无参数进行声明[email protected]#fixture()未带任何参数,声明一个fixture函数deffixture_demo():print("这个是一......
  • 基于java的奶茶店管理系统的设计与实现
    一、 本课题的意义与概况是针对奶茶行业的经营特点及行业发展需求,专门为奶茶店经营管理量身定做的专业的奶茶店管理系统,为奶茶行业发展提供助力。系统集基础数据、原材料的入库、入库退货、今日领取原料数量、今日剩余退回原料数量、前台消费、购物订单、商品结账、财务管理等功......
  • 无涯教程-Java 正则 - X?+ 匹配函数
    PossesiveQuantifier匹配一次存在的X或根本不存在的X。X?+-示例以下示例显示了所有格修饰符的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPossesiveQuantifierDemo{privatestaticfinalStringRE......
  • 老板要Java做闲鱼采集 套用模版又摸一天鱼
    咸鱼上面商品繁多让人眼花缭乱,如果遇到自己喜欢的商品如何筛选出来价格便宜又实惠的东西,如果不看上半天筛选估计很难找到,带着这样的问题,老板让我写个咸鱼采集的程序,然后需要什么类型商品直接让程序自动筛选出来让我们自己选择对比,不说了,打算利用三两个小时完成项目,剩余的就看看电视......
  • 面向Java应用网络流的非侵入可观测指标采集联合方案 – Sermant & Gopher
    作者:杨奕华为云技术规划专家|殷森道华为云高级软件工程师|张豪鹏华为云高级软件工程师摘要随着2022年来eBPF的技术大火,该技术以其非侵入的优点在可观测领域开始大放异彩。我们基于eBPF技术也做了许多实践,总的来看,eBPF在网络运维的四层网络客观性方面具备得天独厚的优势,然而......
  • 基于JAVA的网上药品系统
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上药品售卖系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功......