设为首页 加入收藏

TOP

Java: 未来已来(二)
2018-10-28 10:11:17 】 浏览:413
Tags:Java: 未来
egrate native libraries

Mark Reinhold 在演讲中举了两个例子,首先是为 POSIX 操作系统  API 的头文件 unistd.h 中的函数生成 Java 的可访问代码。

jextract 工具会生成一堆的函数和类型,关键这些是从c的头文件中自动生成的,你不必费劲心思去自己设计类型和方法了。这一点比Go语言中的 CGO 要方便多了,快捷度可以和C#互操作性相媲美。

所以,以后你要是想从 Java 中访问 C 的链接库,可以使用 jextract 一步生成,

调用方法也很方便。

另一个例子是调用 C 标准库 time.h 中的 clock_gettime 函数,它的参数需要 struct 类型,使用上面相同的手段可以生成访问类:

当然这两个例子只演示了这个项目的一个功能,更多的功能我们可以持续关注。

Project Valhalla

包含两个Feature:值类型和基本类型的泛型。

  • 值类型:提供不可变类型和非引用类型的支持。不可变类型在 Scala 中很常用,Java 中也会引进这中类型。使用这种类型有很多好处,一个就是可以显著地提高性能,因为数据不可变,你也不必担心同步更新的问题。
  • 基本类型的泛型: 为 primitive type 提供泛型的支持,不必再进行装箱开箱操作。

Mark Reinhold 用一个复数矩阵相乘的例子来测试,测试工具使用 JMH。

首先是正常的 public class Complex {...} 类,然后改成值类型 public value class Complex{...} 再次测试,结果显示,
正常测试花费3.6秒内存分配3.7G;值类型则只需要0.3秒花费3.8M左右,效果惊人!

目前这些特性还在开发之中,Mark Reinhold 用 Java12 + 这些项目已经能跑一些例子了,我们可以期待不远的将来能在 Java 中使用到这些美妙的特性。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring Security 5.0的Delegating.. 下一篇说说 MQ 之 Kafka(三)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目