标签
作者
我们刚刚发布了包含一些增强功能的Hibernate Validator 6.0.7.Final版本。
这是为使用Hibernate Validator 6.0.x的所有人推荐的升级,并且是6.0.5.Final的替代品。
Java 9中最激动人心的特性之一是模块化运行时映像。使用新的jlink工具,您可以创建包含您的应用程序、其依赖项以及所需JDK模块的定制发行版。例如,基于Undertow网络服务器的简单服务可以打包成仅25MB的映像,包括电池组。
虽然这已经很酷了,但还有更酷的功能,因为jlink提供了一种插件机制,允许在创建模块化运行时映像时调整其内容。JDK附带了一些jlink插件,例如用于压缩映像内容或删除调试符号的插件。但许多其他用例可能也受益于此API,例如,可以想象用于删除未使用代码或对JPA实体执行字节码插装的插件。在下面的内容中,我们将创建一个插件,用于向创建的映像添加注释索引。在运行时,可以使用该索引非常高效地发现注释,即不加载类和使用反射。
听起来很棒?当然,只是有一个问题:jlink插件API不是Java 9支持的JDK部分。事实上,其包甚至没有被从jdk.jlink
模块导出。这意味着需要一些技巧才能创建自定义插件并启用插件运行jlink工具。API可能会在未来的Java版本中更改,因此任何自定义插件都可能中断。
尽管如此,探索API并了解它能够做什么绝对是值得的。我希望它最终会被提升为公共API。
欢迎阅读Hibernate社区通讯,我们将分享与我们的用户特别相关的博客文章、论坛和StackOverflow问题。
在Java 9中通过程序调用JDK工具
无疑,模块系统(JPMS)是Java 9最突出的特性。但JDK还有很多其他有用的补充,还没有被广泛讨论。
其中之一是新的ToolProvider
SPI,它定义了一种统一的方式来以编程方式调用 JDK 中的所有工具(例如jar
、jlink
等)。例如,想象一下您想在 Java 应用程序中创建 JAR 存档。在 Java 9 之前,您有两种选择来实现这一目标
-
启动一个单独的进程来运行
jar
二进制文件 -
找出
jar
命令内部使用的类,并直接调用它们
这两种选择都不理想。前者在创建 OS 级别进程时会产生一些开销,并且需要一些编码来定位在 Java 安装目录中要执行的二进制文件,以及正确捕获分叉进程的任何输出。第二种选择没有分叉新进程的缺点,但它需要了解要执行的工具的实现。例如,在jar
命令的情况下,您必须知道java.util.jar.JarOutputStream
用于生成 JAR 文件。
最初作为 Google Summer of Code 项目启动,由Mincong Huang创建,Hibernate Search 5.9 将具有与 JSR 352 的集成,“Java 平台上的批处理应用程序”。这种集成通过作为 JSR 352 作业的大规模索引(索引大量实体)提供了一种新的实现。
昨天我们发布了 5.9.0.Beta1,您可以开始尝试了!
为什么这很好?如何使用它?让我们来看看!
我们刚刚发布了 5.9.0.Beta1,这是 5.9 分支的第一个 beta 版本。这个版本包含了一些错误修复,但更重要的是,它带来了基于 JSR 352 规范的“Java 平台上的批处理应用程序”的新大规模索引器!
欢迎阅读Hibernate社区通讯,我们将分享与我们的用户特别相关的博客文章、论坛和StackOverflow问题。
我们刚刚发布了包含一些重要错误修复和一些增强功能的 Hibernate Validator 6.0.5.Final 版本。
这是为所有使用 Hibernate Validator 6.0.x 的用户推荐的一次升级,并且是 6.0.4.Final 的直接替换品。
欢迎阅读Hibernate社区通讯,我们将分享与我们的用户特别相关的博客文章、论坛和StackOverflow问题。
如您所知,Bean Validation 2.0 几个月前已经发布,而 Hibernate Validator 6.0 是其参考实现。
Hibernate Validator 并非唯一的 Bean Validation 实现,我们还有一个友好的竞争对手,名为 Apache BVal。
Apache BVal 尚未赶上 Bean Validation 2.0,但正如 Bean Validation 领域中的最后基准测试 已于2010年发布(还记得“Machete don’t text”吗?),我认为是时候重新审视这个基准测试并获得一些新的数据。
特别是在我们对6.0版本所做的所有优化工作之后。