问题标签 [java-14]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 设置 -illegal-access=deny 时授予不受信任的代码“suppressAccessChecks”是否安全?
如果没有非法访问 ( --illegal-access=deny
) 和拒绝访问jdk.unsupported
(使用accessClassInPackage
检查完成),看起来ReflectPermission "suppressAccessChecks"
不会再导致完整的沙箱逃逸。
真的吗?当将此权限授予不受信任的代码时,还有其他方法可以损害 JVM 的安全性吗?
这是设置:
- java.policy 文件授予所有代码
ReflectPermission "suppressAccessChecks"
。 - 使用默认的 java 安全管理器。这是通过添加
-Djava.security.manager
到 VM 选项来完成的。 - 通过添加
--illegal-access=deny
到 VM 选项来禁止非法访问。
要清楚:
- 安装了 SecurityManger。(为什么我什至必须说明这一点?)
- 要加载您需要的本机库
RuntimePermission("loadLibrary.*")
- 这是不被授予的 - 要访问
sun.misc.Unsafe
,您需要访问RuntimePermission("accessClassInPackage.sun.misc")
未授予的 - ClassLoader.defineClass
要通过反射和访问例如setAccessible(true)
,java.base
必须打开java.lang
您的模块 - 它没有。
所以要么:
ReflectPermission "suppressAccessChecks"
如果被授予,还有其他方法可以绕过/逃避 java 沙箱吗?- 或者模块边界是否被视为安全边界,这样的沙箱绕过将被视为安全漏洞?
简而言之:
如果我有以下策略文件my.policy
:
和一个正常的Main.java
:
并运行它java --illegal-access=deny -Djava.security.manager -Djava.security.policy=my.policy Main
,沙箱可以逃脱吗?
java - Eclipse IDE 支持 Java 14 早期访问版本
我找不到任何资源列出任何支持 JDK 14 EA 构建的插件。是否有更新版本的 Eclipse Java IDE 支持 JDK 14,或者至少有一个插件可以从市场上支持它?
java - 配置 IntelliJ 以使用 Java 14 和记录
我试图让 IntelliJ 与 SDK-14 一起工作,但我显然在让记录工作时遇到问题。由于发布日期是 3 月,我认为 Jetbrains 的好人已经接近拥有与 SDK-14 兼容的版本。我需要使用 --enable-preview 运行 SDK 14。我已经用谷歌搜索了几天没有任何运气。
我对 Sublime 有一些运气,但我错过了代码完成。如果还有其他选择,请随时提及。
java - 如何为提议的 Java 语言特性提供反馈?
Java 语言的演变已经进入了一个新的阶段。Java 每 6 个月发布一次,具有“预览”功能,让每个人都可以测试,并且据说可以就新的语言想法提供反馈。
但是,我找不到如何实际提供反馈!以 JEP 305 为例,“Pattern matching for instanceof”作为 Java 14 中的预览功能引入。JIRA 页面没有评论。我想我可以向开发者邮件列表发送电子邮件,但这似乎过于严厉。
我如何通过主动提交 2 美分来为 Java 的开发做出贡献?
java - Java jpackage原生打包,未找到WiX工具报错
我正在使用JDK14早期访问版本附带的 beta jpackage 工具(JEP 343)。
我在 Windows 中运行了以下 .bat 脚本
我在运行脚本时收到以下错误。
警告:使用孵化器模块:jdk.incubator.jpackage
找不到 WiX 工具(light.exe、candle.exe) 从https://wixtoolset.org下载 WiX 3.0 或更高版本并将其添加到 PATH。错误:无效或不受支持的类型:[null]
我已经下载了 WiX311.exe 并尝试将其放在与 jpackage.exe 相同的文件夹中以及与 MAIN_JAR.jar 相同的文件夹中,但都没有解决这个问题。
所以我的问题是我需要将它添加到什么“PATH”才能将其打包?
java - 在箭头 (->) 的帮助下切换表达式,现在可以产生/返回值
Java 14 中扩展的 switch 表达式,除了程序员/审阅者的视觉清晰度之外,对 switch 表达式的需求还不清楚。是吗
- 与旧的 switch 表达式不同的字节码实现?
- 在执行方面比以前的版本有任何性能改进吗?
参考:https ://www.techgeeknext.com/java/java14-features
JDK 14 版本:
JDK 14 字节代码
JDK - 10 代码
JDK - 10 字节代码
除了块内的局部分配减少了 JIT 指令外,原语没有重大区别。
java - 如何将 java 图像与 jpackage 捆绑并修改为 .app 文件?
我刚刚创建了一个 java 应用程序并使用 moditect-jlink 创建了一个图像,包括 JRE。但现在我想知道如何将它捆绑到 OSX 的 .app 文件中。有人试过吗?jpackage 似乎在不断变化,教程很快就过时了。
java - 发布 Java-14 getter/setter 命名约定
Java 14 引入了记录功能。Record 创建与字段同名的 getter,因此可以编写print(person.name())
例如。但是旧的 Java bean 约定规定应该将此方法命名为getName()
.
在同一个代码库中使用这两种样式看起来不太好。将所有内容迁移到记录是不可能的,因为它们太有限而无法替换所有用例。
是否有任何官方或半官方指南如何在新代码中在 Java 14 之后命名 getter 和 setter?
java - 没有找到带有 Java 记录和 BeanPropertyRowMapper 的默认构造函数
我正在使用新的 Java 14 和 Spring Boot。我使用了新的很酷的记录,而不是用于数据持有者的常规 Java 类。
稍后在我的服务类中,我使用 SpringBeanPropertyRowMapper
来获取数据。
我最终得到以下错误:
如何为记录添加默认构造函数,或者有没有其他方法可以解决这个问题?