问题标签 [openjdk]
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 - Java 虚拟机 (JVM) 及其性能比较
我想知道是否有人知道是否有一些基准可以比较以下 jvm。
sun jvm vs. openjdk jvm vs. rockit jvm vs. j9 jvm vs. apache 和谐。
哪一个的性能最好?
math - 使用贝塞尔曲线的圆近似
我有 2 个关于贝塞尔曲线的问题,并使用它们来近似圆的部分。
给定单位圆弧 (1,0)->(cos(a),sin(a)) 其中 0 < a < pi/2,是否会导致该弧的良好近似以找到贝塞尔曲线的控制点 p1 , p2 通过求解由要求 B(1/3) = (cos(a/3), sin(a/3)) 和 B(2/3) = (cos(2a/3), sin( 2a/3))。(换句话说,要求贝塞尔曲线通过弧中两个均匀间隔的点)。
如果我们有一个仿射变换 A 将圆弧变成椭圆弧,那么变换后的控制点 Ap0、Ap1、Ap2、Ap3 是否会定义椭圆弧的良好贝塞尔近似?
p0 和 p3 当然是曲线的起点和终点:(1,0) 和 (cos(a), sin(a))。
谢谢
java - Hotspot JVM 中未编译方法的原因
有可用的标志提供有关已编译方法的日志信息。有关未编译的方法以及为什么未编译的方法的信息在哪里?能够看到热点编译器如何做出决定以及它不编译某些方法的原因将使我对 JVM 有更好的理解,并允许我编写更好的代码并可能优化我的一些方法。有人对这个问题有任何想法吗?
java - Java 命令 lastModified() 在 Clojure 中不起作用
我试图通过执行 Java 命令从 Clojure 中的文件中获取最后修改时间。通过使用 java.io.File.lastModified 我应该能够获得 UNIX 时间,这不能通过执行脚本或在 REPL 中工作。
我的代码是:(java.io.File.lastModified "/home/lol/lolness.txt")
我的错误是: java.lang.ClassNotFoundException: java.io.File.lastModified (NO_SOURCE_FILE:24)
(java.io.File.separator) 但是有效。
编辑:Clojure 版本 1.2.0-master-SNAPSHOT Java 版本 OpenJDK 1.6.0
java - 任意 JVM 行为
想象一下,6-7 台服务器的设置都与相同的 java 版本“1.6.0_18”OpenJDK 运行时环境 (IcedTea6 1.8) (fedora-36.b18.fc11-i386) OpenJDK Server VM(build 14.0-b16,混合模式)相同
每个人都运行一个程序(内存和 CPU 密集型)数小时甚至数天,多次成功完成(获取统计数据之类的东西),但在一台机器上,无论参数或我如何编译(javac -source 1.5 * .java/javac -O -source 1.5,javac **,自己想象任何组合:))
或运行它(-Xms200000k 或只是 java blabla.java 你明白了)
我最终得到,而不是在特定时刻或迭代“java.lang.ArrayIndexOutOfBoundsException:-1341472392”?!首先,该程序永远不会使用如此大的值,更不用说负值了。(代码行是一个包含整数的 ArrayList 调用)(这个数字每次都不同,正如我所注意到的)
另请注意,我可以“恢复”崩溃的测试,并且我可以在这台机器上进行更多测试,再次崩溃。
没什么麻烦,我不拥有这些盒子,而其他所有的盒子都可以工作,但这对我来说很奇怪。
出于个人兴趣,这在无论如何都不太乐观的 OpenJDK 上是如何发生的?
graphics - 贝塞尔路径加宽
我有一条贝塞尔曲线 B,其中点 S、C1、C2、E 和一个表示宽度的正数 w。有没有一种方法可以快速计算两条贝塞尔曲线 B1、B2 的控制点,使得 B1 和 B2 之间的东西是由 B 表示的加宽路径?
更正式地说:计算 B1、B2 的良好贝塞尔近似的控制点,其中 B1 = {(x,y) + N(x,y) (w/2) | (x,y) 在 C}
B2 = {(x,y) - N(x,y) (w/2) | (x,y) in C},
其中 N(x,y) 是 C 在 (x,y) 处的法线。
我说好的近似值是因为 B1、B2 可能不是多项式曲线(我不确定它们是否是)。
java - Java:如何动态覆盖类的方法(类最终不在类路径中)?
如何动态+有条件地调用类的方法?
(类最终不在类路径中)
比方说,我需要 class NimbusLookAndFeel
,但在某些系统上它不可用(即OpenJDK-6
)。
所以我必须能够:
- 了解该类可用(在运行时),
- 如果不是这种情况,请跳过整个过程。
- 我如何设法覆盖动态加载类的方法
(从而创建它的匿名内部子类)?
代码示例
编辑:
现在我按照建议编辑了我的代码,以NoClassDefFoundError
使用 try-catch 进行拦截。它失败。我不知道,这是否是 OpenJDK 的错。我明白InvocationTargetException
了,造成的NoClassDefFoundError
。有趣的是,我无法捕捉到InvocationTargetException
:无论如何它都被抛出了。
EDIT2: :
发现原因:我正在环绕SwingUtilities.invokeAndWait(...)
测试的方法,并且在加载 Nimbus 失败时invokeAndWait
会抛出该调用。NoClassDefFoundError
EDIT3: :
任何人都可以澄清一下可能发生的地方吗? NoClassDefFoundError
因为它似乎总是调用方法,而不是使用不存在的类的实际方法。
fonts - OpenJDK 与 Sun JDK 1.6 [Linux 平台] 上的字体
我注意到 OpenJDK 和 Sun JDK 上的字体看起来不同。Java JDK 附带了更好的字体集。有谁知道“字体”是什么包以及如何在 OpenJDK 安装中使用它?
谢谢
java - java.lang.Math 类的纯 java 实现
我刚刚下载了 openjdk 源代码并意识到几乎所有的 java.lang.Math 类都是用原生 c/c++ 代码实现的。我想知道是否有任何完全用 java 编写的实现。
java - RMI 绑定问题(从 Windows RMI 服务器到 Ubuntu RMI 注册表)
我有一个 RMI 服务器,它在 localhost 上运行时正确绑定到 RMI 注册表(以证明设置正确)。执行此操作的代码是:
我的 localhost 使用以下 Java 版本运行 Windows:
现在,我的问题是我想绑定到在另一台机器上运行的 RMIRegistry(运行 Ubuntu 10.04,使用 OpenJDK IcedTea6 1.8.1,java 版本 1.6.0_18)。
在这台 Ubuntu 机器上,我的 CLASSPATH (echo $CLASSPATH) 中没有任何内容,并且正在运行 OpenJDK RMIRegistry(而不是与 Ubuntu 捆绑的那个):
现在,在上面的代码中,当变量 rmiServerHostname 是“localhost”并且 RMIRegistry 在我的 Windows localhost 上运行时,代码可以正常工作(RMI 服务器代码绑定到 RMI 注册表)。但是,当 rmiServerHostname 是我的远程 Ubuntu 机器(“神”)时,“重新绑定”调用会引发以下异常:
如果我杀死 RMIRegistry,我会收到一条不同的错误消息(我希望):
我会假设 RMIRegistry 的这些实现(Windows Java6 和 Ubuntu OpenJDK 6)之间没有不兼容性......但是,我不确定如何深入了解这一点。特别是因为我知道代码可以正常工作(在第一个 Windows/localhost 示例中)。
迄今为止的进展
非常感谢您的帮助。我知道我对 rmiServerHostname(在我的本地主机上运行)和 rmiRegistryHostname(在“神”上运行)感到困惑。我已经用以下内容修改了代码,但仍然遇到同样的问题(注意“Registry registry = LocateRegistry.getRegistry( rmiRegistryHostname )”行中的更改):
打印语句的输出是(注意,我的本地主机是 'RTPC-16')
该文件确实存在:
所以,再次总结一下:
- 当 RMIRegistry 和 RMIServer 位于同一物理主机(例如,localhost)上时,此代码有效
- 当我尝试在单独的主机上仅运行RMIRegistry 进程时会出现问题(即 RMIRegistry 正在“神”上运行,而 RMIServer 正在我的本地主机“RTPC-16”上运行)
- 我在客户端和服务器上捆绑了 RMI 接口代码库(“ReutersTickHistoryInterface.jar”),所以我没有预料到 RMI 需要传输任何类定义 - RMI 只是在客户端上创建存根类并处理实际的 RMI 调用