问题标签 [jep]

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 投票
1 回答
580 浏览

java - JEP 295 AOT:多次编译的对象

我正在尝试使用JDK9 的新 AOT功能编译应用程序服务器,并且面临许多挑战。

应用服务器由约 180 MB 的 jars 组成;一起编译会溢出整数,所以我尝试将每个模块编译为一个(.so)库。这些模块依赖于其他模块,所以我不得不使用-J-cp -Jdependencies将它们放在类路径中。这导致了 4.4 GB 的库 - 因为 AOT 应该加速服务器启动,您可以想象从磁盘加载它并没有真正帮助。(可以剥离这些库的调试信息,但我们仍在讨论与 jar 相比规模增长的顺序。)

我很失望jaotc实际上类加载编译的类,这会触发静态构造函数(这有时会给我带来错误)。此外,编译器无法处理缺少的引用类,有时这只是运行时依赖——即使没有它们,服务器也可以正常运行。所以我不得不提供空的模拟类来满足编译器。

但是,当使用 AOT 跟踪(-Xlog:aot+class+load=trace:file=/tmp/aot.txt:none而不是 stdout -XX:+PrintAOT)运行服务器时,我发现这些库也包含一些依赖项:

这证实了我的怀疑,即 lib 包含的不仅仅是我给编译器编译的 jar 中的代码,但至少还包含超类的代码。我也不确定 JVM 在多个库中找到同一个类时的行为。

是否有可能消除重复?大/多库项目的推荐方法是什么?

0 投票
1 回答
1984 浏览

java - Java 10 Panama Project - 将 JNI 解决方案移植到巴拿马

我最近一直在阅读有关巴拿马项目的信息。

我知道它将成为 JNI 的下一代替代品——它将允许 Java 开发人员使用 Java 在本机层上进行编码(恕我直言)。

从我可以看出jnr-posix 来看,用法很简单,例如:

我的问题是 - 与 JNI 合作过,并且知道它有多麻烦,是否有将现有 JNI 解决方案移植到巴拿马格式的解决方案?

IE - 检查生成的(通过已弃用的 javah)C 头文件和在 C 中给出的头文件实现,识别可以被巴拿马 API 替换的函数,然后生成 java 输出文件?

还是需要手动重构现有的 JNI 解决方案?

附加链接:

0 投票
1 回答
555 浏览

java - JEP 12:预览语言和 VM 功能 - 可能的使用见证

我在搜索 JDK 12 时遇到了JEP 12 并且很感兴趣。

简介: 预览语言或 VM 功能是 Java SE 平台的一项新功能,它完全指定、完全实现,但不是永久性的。它在 JDK 功能版本中提供,可根据实际使用情况激发开发人员的反馈;这可能会导致它在未来的 Java SE 平台中成为永久性的。

在回答了这个问题之后,我只想问以下问题:

  • 你能提供这个 JEP 的使用示例——在代码中加入新语言和/或 VM 特性吗?
0 投票
1 回答
7466 浏览

java - JLS、JSR 和 JEP 之间有什么区别(或关系)?

这三者之间有什么区别(或关系)?

0 投票
1 回答
365 浏览

java - Valhalla 的值对象可以保存泛型类型并在它们是原始类型的情况下将它们展平吗?

JEP 169: Value ObjectsJEP 218: Generics over Primitive Types规范会一起工作吗?

或者更好的是,以下情况是否可能?

接着


我问这个是因为我还没有看到@ValueCapableClass使用泛型类型的示例,只有这样的示例

我从JEP 218 中读到:Generics over Primitive Types(强调我的):

泛型类型参数被限制为扩展 Object,这意味着它们与原始实例不兼容,除非使用装箱,这会损害性能。随着可能向 Java 中添加值类型(单独的 JEP 的主题),这种限制变得更加繁重。我们建议通过在使用原始类型参数实例化时支持泛型类和接口的特化来解决这个问题。我们建议通过在使用原始类型参数实例化时支持泛型类和接口的特化来解决这个问题。

八种原始类型是唯一对泛型有敌意的类型,这是可以容忍的,但很烦人;随着value types的出现,这种限制将更加痛苦。

但我不清楚它们是要一起工作(218是 的扩展169),还是泛型@ValueCapableClasses只能用于非泛型类。

0 投票
1 回答
682 浏览

java - 由于本机代码,JVM 因 ArrayIndexOutOfBoundsException 而崩溃

我有一个 JSP 程序,我试图通过使用 xls 中的列动态加载复选框,为此我使用名为JEP的本机库来使用 Python 获取数据。我知道我可以使用 ApachePOI 之类的东西来做相同,但稍后我需要在同一个 Web 应用程序中使用 JEP。

复选框的 JSP:

处理表单数据

列吸气剂代码:

JVM 崩溃并出现以下错误:

所以我删除了本机代码(JEP 代码)并且程序可以工作。

问题

避免使用本机代码不是解决方案。所以我看到了错误日志,根据说有一个“ArrayIndexOutOfBoundsException”

我试图推断可能导致这种情况的原因,但我一无所获。JEP 代码用于生成复选框,效果很好。我尝试使用 sys.out 来调试代码。当我按下按钮时会发生错误,这会导致枚举被填充,此时当检查 while 条件时,JVM 崩溃,ArrayIndex 越界。我尝试使用字符串数组作为表单值,然后使用 .length ArrayUtils.isNotEmpty 方法,这两种方法都不应该抛出该错误。

问题

为什么JVM在崩溃的地方崩溃?如果是 JEP 的问题,它不应该在生成复选框之前崩溃吗?

0 投票
2 回答
907 浏览

python - 使用 JEP 将数据帧从 scala 传递到 python

这是我正在尝试做的事情:

  1. 我将数据读入scala
  2. 提取几列
  3. 使用 JEP 将创建的数据帧传递给 Python 脚本
  4. Python 脚本将数据帧转换为 pandas 执行一些操作并将其返回

但是我不确定如何将数据框传递给 python 脚本。这是python脚本(这只是示例脚本,而不是实际脚本):

它一直失败并出现以下错误:

谁能建议我如何使用 Jep 将数据帧从 scala 传递到 pyspark (如果这是重复的,请指向正确的线程,因为我找不到)?

0 投票
1 回答
70 浏览

java - 在将 JSR/JEP 作为提案输入之前,是否有一种有意义的方式来收集对 JSR/JEP 的反馈?

我打算启动一个 JEP/JSR 以将替代访问运算符引入 Java 语言规范。我已经确定了提案的外观,现在我想收集有关该提案的反馈(例如,如果我是第 999 个提出这件事的人)。我想最好在实际开始提案之前执行此操作。然而,似乎没有围绕 openJDK 或 Java 社区进程的论坛或论坛。至少我什么也找不到。然而,我确实找到了一个#openjdk IRC 频道,但除了人们进出之外,那里似乎没有任何交流。

如果我想以最少侵入性/侵入性的方式将我的想法传达给其他人,我会选择哪种方式?除了实际启动 JSR 并等待积极反馈之外,没有其他选择吗?

除了实际问题之外,因为有人问到确切的想法是什么:

Java 编程语言允许链接表达式以表示更大表达式中的操作流,并简化对“深度”值的访问。

String fieldText = tableProvider.getTable(tableKey).getRow(rowKey).getField(columnKey).text;

但是,如果'.'访问器尝试访问空对象,则会引发 NullPointerException,从而使任何未经检查的访问都有风险。即使这种情况的后备是简单null的或静态的原始值,开发人员也需要明确地处理所有可能的 NullPointer 场景。或者,他们通常可以捕获NullPointerException,这需要将返回的值存储到try-catch块外范围内定义的变量中,以便以后可以在try-catch语句之外访问它。但是,这也捕获了NullPointerExceptions在任何访问的方法中抛出的问题,这可能不是有意的。

为了避免这种情况,提出了一个新的访问器,它中止链式表达式的解析,以防访问器访问空对象,而是回退到null或指定的默认值。

String fieldText = tableProvider.getTable(tableKey)°getRow(rowKey)°getField(columnKey)°text;

int i = tableProvider.getTable(tableKey)°getRow(rowKey)°getField(columnKey)°index ?: (-1);

在此示例中,如果任何调用方法(getTable、getRow 或 getField)返回null,则整个链接表达式将终止并返回null(或-1),而不是抛出 NullPointerException。

以上是我写的一个普通 JEP/JSR 的动机部分。 °只是任何运算符的占位符,不会导致任意解释。实际草案还指定了一堆目标,其中包括

  • null不必在意料之外的地方处理null
  • 弃用 NullPointerException。
  • 一般替换'.' 访问者。
  • 捕获已经抛出的 NullPointerExceptions。
  • 通常将其函数中的 Optional 类替换为返回类型。

编辑: 看来我建议的概念已经是 kotlin 的一部分(除其他外),但包含两个功能:“安全导航操作员”和“猫王操作员”。前者是我要重点关注的。

0 投票
1 回答
627 浏览

apache-spark - java.lang.UnsatisfiedLinkError: jep.Jep.init(Ljava/lang/ClassLoader;ZZ) on google cloud dataproc

Firstly I don't understand why people put negative score on this question. Either explain how can I improve question. I can further elaborate. This is a feedback form my side. Though I am new but I have no intention to ask question without putting my efforts.

I am trying to run spark job written in Scala on Google Cloud Platform Dataproc cluster which uses jep interpreter.

I have added jep as dependency.

Whats the full short solution to run jep on Scala using Google Cloud Platform Dataproc

in my install.sh script I have written

Still I am getting the below error (no jep in java.library.path)

(edited):-

1.) I have seen specific answers to on premises machine but not for Google Cloud Platform.

2.) I found https://github.com/ninia/jep/issues/141 but this did not help

3.) I also found answer but that is not answered and that's not accepted for Google Cloud Platform as well. And I have even performed all steps from there.

4.) If question is missing some snapshots I ll attach . But please provide some comments.

(Edited:- 08012020 I am adding install.sh used )

0 投票
1 回答
136 浏览

java - 如何为提议的 Java 语言特性提供反馈?

Java 语言的演变已经进入了一个新的阶段。Java 每 6 个月发布一次,具有“预览”功能,让每个人都可以测试,并且据说可以就新的语言想法提供反馈。

但是,我找不到如何实际提供反馈!以 JEP 305 为例,“Pattern matching for instanceof”作为 Java 14 中的预览功能引入。JIRA 页面没有评论。我想我可以向开发者邮件列表发送电子邮件,但这似乎过于严厉。

我如何通过主动提交 2 美分来为 Java 的开发做出贡献?