问题标签 [java-9]
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 - 为什么项目 Jigsaw / JPMS?
Java 的包管理系统在我看来总是简单而有效。它被 JDK 本身大量使用。我们一直在使用它来模仿命名空间和模块的概念。
拼图项目(又名Java 平台模块系统)试图填写什么?
来自官方网站:
该项目的目标是为 Java SE 平台设计和实现标准模块系统,并将该系统应用于平台本身和 JDK。
java - Eclipse Indigo 与 JDK9
我想用我相当古老的 Eclipse尝试来自openJdk9 存储库的最新 Java。我下载、构建并安装了它,一切正常。java.lang.CharSequence
然后我将它设置为 Eclipse 的默认 JVM,一切都重新编译了,但是由于找不到基本的 Java 类,所以出现了错误。
构建路径看起来不错,也是如此rt.jar
。
有什么东西阻止了 Eclipse Indigo 使用 JDK9?我不是想研究新的 Java 特性,只是想使用最新版本来衡量性能。
java - 如何正确关闭 MappedByteBuffer?
这是我正在运行的代码:
在按下某个键之前,我试图在 FAR Manager 中手动删除该文件。但 FAR 说文件被锁定:
只有在按下一个键后,应用程序才会终止,我可以删除文件。
我的代码有什么问题?
java - Nashorn 故障排除“方法代码太大!” 例外
在我的 JavaScript ( https://gist.github.com/also/005fd7c200b20f012e10 ) 上运行jjs
或运行时会出现此异常并且没有更多详细信息:ScriptEngine#eval
如何找出导致方法代码太大的原因?我已经尝试了一些jjs
( --log=codegen:info
) 的日志选项,但我没有看到任何指向罪魁祸首的东西。
我已经使用 Java 版本 1.9.0-ea-b34 和 1.8.0_20-b26 进行了测试。
java - 什么是 sjavac,它适用于谁以及如何使用它?
关于OpenJDK 邮件列表中称为工具的一些讨论。sjavac
此外,还有两个相关的 JEP:JEP 139:增强 javac 以提高构建速度和JEP 199:智能 Java 编译,第二阶段。
我的问题是:
- 工具到底是什么
sjavac
? - 它是为谁准备的?
- 我该如何使用它?
免责声明:自我回答的问题。只是想把这个工具的知识带到 StackOverflow 社区,并创建对未来 sjavac 常见问题的参考。
java - Why do I get "as of release 9, '_' is a keyword, and may not be used as an identifier" error when using a single underscore variable name?
Why do I get "as of release 9, '_' is a keyword, and may not be used as an identifier" error when using a single underscore variable name?
This happens when compiling Java code with javac version 8.
java - Optional orElse Optional in Java
I've been working with the new Optional type in Java 8, and I've come across what seems like a common operation that isn't supported functionally: an "orElseOptional"
Consider the following pattern:
There are many forms of this pattern, but it boils down to wanting an "orElse" on an optional that takes a function producing a new optional, called only if the current one does not exist.
It's implementation would look like this:
I'm curious if there's a reason such a method doesn't exist, if I'm just using Optional in an unintended way, and what other ways people have come up with to deal with this case.
I should say that I think that solutions involving custom utility classes/methods aren't elegant because people working with my code won't necessarily know they exist.
Also, if anyone knows, will such a method be included in JDK 9, and where might I propose such a method? This seems like a pretty glaring omission to the API to me.
java - 已弃用的认可标准覆盖机制和扩展机制的替代方案
Java 8 Update 40 (8u40)的发行说明:
认可的标准覆盖机制和扩展机制已被弃用,可能会在未来的版本中被删除。没有运行时更改。建议使用“认可标准覆盖”或“扩展”机制的现有应用程序不再使用这些机制。
还有一个问题澄清了 Jigsaw(计划用于 Java SE 9,AFAIK)这将以某种方式被模块化方法取代:
http://bugs.java.com/view_bug.do?bug_id=8065675
我知道 Oracle 现在想要弃用这些机制,因为它们在 Java SE 9 中不再支持它们。
另一方面,在不提供替代方案的情况下弃用某些东西并不是一个好习惯。
发行说明指出:“现有应用程序 [...] 建议不要使用这些机制”
那么如何“迁离”
- 认可的标准覆盖机制
- 扩展机制
在 Java SE 8 中?
java - 私有接口方法,示例用例?
“对接口中私有方法的支持曾一度考虑包含在 Java SE 8 中,作为增加对 Lambda 表达式支持的努力的一部分,但为了更好地专注于 Java SE 8 的更高优先级任务而被撤回。现在建议支持私有接口方法,从而使接口的非抽象方法能够在它们之间共享代码。”
所以说http://openjdk.java.net/jeps/213的规范 并在错误报告中说https://bugs.openjdk.java.net/browse/JDK-8071453。
但我真的想不出任何必要的用例,即使上面给出了简短的解释。我可以问一个“私有接口方法”在代码方面有用的例子吗?
编辑:所以答案是,由于在 Java 8 中如何将默认实现添加到接口中,可能存在默认实现使用相同代码库的实例。
例如,
愚蠢的例子,我知道。但是假设我们要initializeMyClass(MyClass, Params)
在这两种方法中使用。但是,如果我们这样做(默认方法),那么initializeMyClass(MyClass, Params)
将成为公共接口的一部分!为了防止这种情况发生,我们只能将整个代码保留initializeMyClass(MyClass, Params)
在createMyClass()
默认方法中。这会导致代码重复,这是不可取的。
因此,这会导致重构出现问题,并且要删除此类代码重复,允许使用私有默认方法。
谢谢回答!
netbeans - Netbeans - 无法安装 jdk 1.9.0 Build b53
我正在尝试安装 jdk 1.9.0 早期版本包以与 NetBeans 8 一起使用。我意识到 jdk 是在没有私有 jre 的情况下安装的(jdk1.9.0 文件夹内没有 jre 文件夹)。并且 Netbeans 不工作。在 Java 平台管理器中选择类选项卡下的 jdk1.9 字段后,不包含平台类路径。见下图。
jre1.9.0 文件夹仅作为单独的文件夹安装。我该怎么做才能编译和运行我的程序?