问题标签 [java-8]

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 投票
2 回答
463 浏览

java - 部署 java.policy

我已经编写了一些 Java 小程序并将它们捆绑到一个签名的 JAR 中。即使 Applet 已签名,它们仍然需要在客户端上对java.policy文件进行一些更改。例如,执行打印作业。

为了帮助最终用户,用户可以使用小型 Swing 应用程序下载另一个 JAR,该应用程序会将条目添加到他们的.java.policy.

我的问题:

是否有一个众所周知的库来部署/交付/安装java.policy

小型应用程序将简单地附加到.java.policy. 如果运行多次,程序将多次附加相同的数据。如果我只添加一次条目会更好。为此,我必须解析.java.policy并写回。是否有任何库来操作java.policy条目?

0 投票
2 回答
380 浏览

java - Java 中的闭包将如何使 API 设计取代语言设计?

我可以看到闭包的一些好处,例如它们如何在简化现有库和使一些未来的设计更容易和更高效方面占有一席之地。

但是,提案草案 (http://www.javac.info/consensus-closures-jsr.html) 中提到的关键点之一在第 2.5 节 e 点:

(规范将通过改进语言)

e)使未来的 API 设计能够取代语言设计以扩展 Java 平台。

我很难看到这是怎么回事,当然语言设计就是这样 - 语言本身的设计,并且不能被 API 取代,除非 Java 使用闭包打开各种奇怪的 API 来修改语言(我非常怀疑这会发生。)

任何人都可以对此有所了解,并可能提供一个以前需要更改语言的示例,但是随着闭包的添加,不再需要一个?

0 投票
2 回答
1224 浏览

java - Java闭包介绍

任何人都可以描述这种代码来理解Java闭包。

0 投票
2 回答
2724 浏览

scala - Scala 中的闭包与 Java 中的闭包

前段时间,Oracle 决定在 Java 8 中添加闭包是一个好主意。我想知道与 Scala 相比,那里的设计问题是如何解决的,Scala 从第一天开始就关闭了。

引用javac.info的未解决问题

  1. 方法句柄可以用于函数类型吗? 如何使其工作尚不清楚。一个问题是方法句柄具体化了类型参数,但是以一种干扰函数子类型的方式。

  2. 我们可以摆脱“抛出”类型参数的显式声明吗? 这个想法是在声明的绑定是检查异常类型时使用析取类型推断。这不是严格向后兼容的,但不太可能破坏真实的现有代码。然而,由于句法歧义,我们可能无法摆脱类型参数中的“抛出”。

  3. 禁止在旧式循环索引变量上使用 @Shared

  4. 处理像 Comparator 这样定义多个方法的接口,除了其中一个方法之外,所有这些接口都将由继承自 Object 的方法实现。“单一方法的接口”的定义应该只计算不会由 Object 中的方法实现的方法,并且如果实现其中一个方法将实现所有方法,则应该将多个方法计算为一个。主要是,这需要更精确地说明接口只有一个抽象方法意味着什么。

  5. 指定函数类型到接口的映射:名称、参数等。我们应该完全指定函数类型到系统生成的接口的映射。

  6. 类型推断。需要扩充类型推断的规则以适应异常类型参数的推断。同样,闭包转换使用的子类型关系也应该体现出来。

  7. 删除异常类型参数以帮助改进异常透明度。 也许使省略的异常类型参数意味着界限。这可以通过添加新的泛型异常参数来改造没有异常类型参数的现有泛型接口,例如 java.util.concurrent.Callable。

  8. 函数类型的类文字是如何形成的? 是 #void().class 吗?如果是这样,如果对象类型被擦除,它是如何工作的?是 #?(?).class 吗?

  9. 系统类加载器应该动态生成函数类型接口。 与函数类型对应的接口应该由引导类加载器按需生成,以便在所有用户代码之间共享。对于原型,我们可能让 javac 生成这些接口,以便原型生成的代码可以在库存 (JDK5-6) 虚拟机上运行。

  10. lambda 表达式的求值必须每次都产生一个新对象吗? 希望不会。例如,如果 lambda 没有从封闭范围捕获变量,则可以静态分配它。同样,在其他情况下,如果 lambda 未捕获循环内声明的任何变量,则可以将其移出内部循环。因此,如果规范对 lambda 表达式结果的引用身份不承诺任何内容,那将是最好的,这样编译器就可以完成这种优化。

据我了解 2.、6. 和 7. 在 Scala 中不是问题,因为 Scala 不使用 Checked Exceptions 作为某种“影子类型系统”,如 Java。

其余的呢?

0 投票
1 回答
982 浏览

swing - Java 8 能否发布 Swing 的另一个版本?

考虑到 Java 8 的 Jigsaw 项目(以模块化 JDK),是否可以考虑“新”的 Swing框架

考虑意味着:

  • 有人真正重写它
  • 将其包含在 JDK 版本中

我在想,由于可以将模块包含在 JDK 中,因此可以创建一个新的 Swing 框架并将其交付给新的应用程序开发人员使用,而对于遗留应用程序,将包含当前的 Swing 框架。

重写一个新的 Swing 并将其包含到新的 JDK 中是 Java 8 的一个选项吗?(您对这项任务有什么看法和考虑?)

0 投票
2 回答
3277 浏览

java - Java - SAM 类型优化

一份描述Project Lambda状态的工作文档提到了所谓的 SAM(单一抽象方法)类型。据我所知,当前的 lambda 提案不会影响运行时,只影响编译器,因为它可以实现从 lambda 表达式到这些类型的自动转换。

我认为在理想情况下,SAM 类型的实例可以在内部由函数指针表示。因此,JVM 可以避免为这些实例分配内存。

我想知道现代虚拟机是否能够提供这样的优化。

0 投票
1 回答
714 浏览

java-8 - 有哪些用例证明 310 OffsetDate 类型是合理的?

OffsetDate表示具有区域偏移的日期。我不明白这个类的目的,证明它存在的主要用例是什么?

0 投票
8 回答
20020 浏览

java - JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

JDK 8 中的一项新功能允许您添加到现有接口,同时保持二进制兼容性。

语法就像

这样,对于所有现有的实现,SomeInterface当他们升级到这个新版本时,他们不会突然出现编译错误newInterface()

虽然这很简洁,但是当您实现两个接口时会发生什么,这两个接口都添加了一个您没有实现的新默认方法?让我用一个例子来解释。

这是否已被定义为 JDK 8 的一部分?

我发现 Java 之神在这里谈论类似的事情http://cs.oswego.edu/pipermail/lambda-lib/2011-February/000068.html,但它是私人邮件列表的一部分,我不能直接问他们。

有关如何在 JDK 8 中使用默认值以及扩展 Collection 接口以支持 lambdas 的更多详细信息,请参阅此处: https ://oracleus.wingateweb.com/published/oracleus2011/sessions/25066/25066_Cho223662.pdf

0 投票
5 回答
76930 浏览

java - 如何让 Eclipse 使用 JDK8 编译项目?

我正在试验新的 jdk8,这里有什么可用的http://jdk8.java.net/lambda/

我能够从命令行编译和运行我的项目。

我还可以Installed JREs在 Eclipse 中添加这个新的 JDK。但是,我无法让 Eclipse 使用这个 JDK 编译和运行项目。

我正在尝试更改设置,Project Properties/Java Compiler但该Use [JDK] compliance from execution environment on the 'Java Build Path'复选框已禁用,无论我在此页面上单击什么,我都无法使其工作。

我有 Eclipse 平台版本:3.7.1

有任何想法吗?

谢谢

0 投票
2 回答
312 浏览

java - 在 Java 8 lambda 语法中需要指定参数类型有什么原因吗?

我已阅读http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html并注意到所有示例都明确声明了参数类型,即使它已经从接口函数声明中知道.

我们不能一起去吗

更新:在JSR-335 Draft 中,我发现最有可能支持推断类型参数