问题标签 [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.

0 投票
5 回答
21042 浏览

java - 为什么项目 Jigsaw / JPMS?

Java 的包管理系统在我看来总是简单而有效。它被 JDK 本身大量使用。我们一直在使用它来模仿命名空间和模块的概念。

拼图项目(又名Java 平台模块系统)试图填写什么?

来自官方网站:

该项目的目标是为 Java SE 平台设计和实现标准模块系统,并将该系统应用于平台本身和 JDK。

0 投票
1 回答
690 浏览

java - Eclipse Indigo 与 JDK9

我想用我相当古老的 Eclipse尝试来自openJdk9 存储库的最新 Java。我下载、构建并安装了它,一切正常。java.lang.CharSequence然后我将它设置为 Eclipse 的默认 JVM,一切都重新编译了,但是由于找不到基本的 Java 类,所以出现了错误。

构建路径看起来不错,也是如此rt.jar构建路径

有什么东西阻止了 Eclipse Indigo 使用 JDK9?我不是想研究新的 Java 特性,只是想使用最新版本来衡量性能。

0 投票
3 回答
4100 浏览

java - 如何正确关闭 MappedByteBuffer?

这是我正在运行的代码:

在按下某个键之前,我试图在 FAR Manager 中手动删除该文件。但 FAR 说文件被锁定:

只有在按下一个键后,应用程序才会终止,我可以删除文件。

我的代码有什么问题?

0 投票
2 回答
1555 浏览

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 进行了测试。

0 投票
1 回答
7472 浏览

java - 什么是 sjavac,它适用于谁以及如何使用它?

关于OpenJDK 邮件列表中称为工具的一些讨论。sjavac此外,还有两个相关的 JEP:JEP 139:增强 javac 以提高构建速度JEP 199:智能 Java 编译,第二阶段

我的问题是:

  • 工具到底是什么sjavac
  • 它是为谁准备的?
  • 我该如何使用它?

免责声明:自我回答的问题。只是想把这个工具的知识带到 StackOverflow 社区,并创建对未来 sjavac 常见问题的参考。

0 投票
0 回答
1433 浏览

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.

0 投票
6 回答
77555 浏览

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.

0 投票
3 回答
6857 浏览

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 中?

0 投票
3 回答
14091 浏览

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()默认方法中。这会导致代码重复,这是不可取的。

因此,这会导致重构出现问题,并且要删除此类代码重复,允许使用私有默认方法。

谢谢回答!

0 投票
2 回答
732 浏览

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 文件夹仅作为单独的文件夹安装。我该怎么做才能编译和运行我的程序?