JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Java修炼终极指南:141 Panama架构和术语

wys521 2024-12-23 11:18:15 精选教程 22 ℃ 0 评论

当我们谈论架构时,我们必须展示一个有意义的图表,所以这是它:


图7.8 - Project Panama架构

这张图揭示了Panama组件的互操作性。这张图的高潮是Jextract工具。正如您将在本章中看到的,Jextract是一个非常有用的工具,能够使用本地库的头文件并生成低级别的Java本地绑定。这些绑定是Project Panama两个主要API的工作单元:

外部内存API - 用于分配/释放堆外/堆内内存 外部链接器API - 用于直接从Java调用外部函数以及反之

到目前为止描述的过程完全是机械的。当这些API和低级别的Java本地绑定对我们的任务不够时,我们可以进一步采取措施,创建一组更高级别的Java绑定。当然,这不是新手的任务,但它非常强大。例如,您可能有一个用于生成JNI绑定的现有自动化工具,现在您想将您的工具现代化,以生成Panama风格的更高级别的纯Java绑定。Project Panama使用的抽象包括以下内容:

java.lang.foreign.MemorySegment - 这个API形成了堆或本地内存段。堆段访问堆内存,而本地段访问堆外内存。在这两种情况下,我们谈论的是受空间和时间限制的连续内存区域。

java.lang.foreign.Arena(或JDK 20之前版本中的MemorySession) - 这个API可以控制内存段的生命周期。

java.lang.foreign.SegmentScope - 这个API表示内存段的范围(全局、自动或区域范围)。

java.lang.foreign.MemoryLayout - 这个API描述内存段的内容作为内存布局。例如,在基本Java数据类型(int、double、long等)的上下文中,我们有内存值布局(java.lang.foreign.ValueLayout)。

当然,除了这三个支柱之外,我们还有许多其他类和助手。在接下来的问题中,我们将涵盖几个旨在让我们熟悉使用Project Panama API的主要方面的几个场景。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表