标签: openjdk

OpenJDK - 准备生产?

想知道是否有人从Sun/Oracle JDK切换到OpenJDK?

生产准备好了吗?版本7发行版与Oracle版本有何不同?

java openjdk

13
推荐指数
2
解决办法
2622
查看次数

sun.misc.Unsafe的本机方法在哪里实现?

我一直在阅读sun.misc.Unsafe类(openjdk6),因为我很好奇它实际引用了多少本机方法.可以理解的是,类中有大量本机方法,但我似乎无法找到它们的实现位置.

我已经通过openjdk6 repo grep了,虽然我可以找到其他类的本机方法的实现,但我找不到Unsafe的.我猜他们不是openjdk代码,而是编译为热点的一部分?

我在openjdk中查找错误的位置还是确实在热点中实现了?我们将非常感谢您对其所在地的参考.

java openjdk jvm jvm-hotspot

13
推荐指数
1
解决办法
2541
查看次数

在OpenJdk中,如何设置具有attachmentfontpath属性的字体目录

我试图让我的应用程序中使用使用的字体从特定位置在OpenJDK的安装appendedfontpath属性,但它不是为我工作.

../jre1.8.0_121+1/bin/java  -Dappendedfontpath=/usr/lib/fonts/  -jar lib/songkong-4.7.jar -m /mnt/disk1/share
Run Code Online (Sandbox Code Playgroud)

报告没有安装字体,但/ usr/lib/fonts文件夹确实包含字体 ipag.ttf

请注意:

  • OpenJdk没有预装的字体,它依赖于系统上安装的字体
  • 这是一个嵌入式系统,报告服务器上没有安装任何字体,fc-list什么都不返回
  • 如果我将字体复制到jre/lib/fonts文件夹中,它可以工作,但我不允许将任何内容复制到此文件夹中.
  • 也不允许我运行诸如的root命令 fc-cache -f

如果我可以通过指定包含字体的字体文件夹来使其工作,那对我来说它将是一个有效的解决方案.

java fonts openjdk

13
推荐指数
1
解决办法
4100
查看次数

OpenJDK与OracleJDK的字体略宽

我注意到使用OpenJDK与OracleJDK相比,字体间距的差异.我把它缩小到了字体.它们由OpenJDK渲染得更宽......上面截图的仔细目视检查显示字符宽度相同,唯一的区别是间距.我还通过对所有字符A-Za-z0-9的字体度量的编程检查来确认这一点.

OpenJDK vs OracleJDK字体

例如,12pt的字符串"Dialog - plain"是

  • OpenJDK宽125px - 我的8u131-b11版本
  • OpenJDK宽125px - 来自redhat磁盘的存储RPM - 1.8u45-b13
  • OracleJDK中的120px宽度 - 来自Oracle网站的8u131-b11版本

我已经广泛地搜索信息就这个问题和发现的各种选项,包括-Dawt.useSystemAAFontSettings,-Dswing.useSystemFontSettings,-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeelJava_Runtime_Environment_fonts.我试过改变所有这些,但结果保持不变.

进一步的调查发现sun.font.FontScaler,这使用了不同的底层fontscaler.这看起来部分可配置,sun.font.FontUtilities其中检查系统属性-Dsun.java2d.font.scaler=t2k,但设置这没有区别.

我的问题:可以FreetypeFontScaler配置为以类似或更接近T2KFontScaler的方式运行吗?

if (FontUtilities.isOpenJDK) {
      scalerClass = Class.forName("sun.font.FreetypeFontScaler");
} else {
      scalerClass = Class.forName("sun.font.T2KFontScaler");
}
Run Code Online (Sandbox Code Playgroud)

这是我一直在使用的测试程序

public class FontTester {
    public static void main(String[] args) throws Exception {
        System.out.println(String.format("java.home=%s", System.getProperty("java.home")));

        String family = Font.DIALOG;
        int style = Font.PLAIN;
        describeFont(new Font(family, style, 12));

        JFrame frame = new JFrame();
        frame.setSize(800, …
Run Code Online (Sandbox Code Playgroud)

java openjdk

13
推荐指数
1
解决办法
1722
查看次数

java会间歇性地不解析Linux上的符号链接

我正在尝试解决文件夹树中所有文件的规范路径,但由于某种原因它无法解决它们(并且间歇性地JVM安全代码将在FilePermission中正确解析符号链接并导致安全性错误).

ENV:

$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

系统中已知的符号链接是/usr/share/java/gnome-java-bridge.jar:

$ ls -l /usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar
lrwxrwxrwx 1 root root 50 2012-02-24 13:39 /usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar -> ../../../../../../share/java/gnome-java-bridge.jar
Run Code Online (Sandbox Code Playgroud)

以下代码应解析此已知符号链接:

String symlinkedFilePath =
    "/usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar";

File symlinkedFile = new File(symlinkedFilePath);

System.out.println(symlinkedFile.getAbsolutePath());
System.out.println(symlinkedFile.getCanonicalPath());
Run Code Online (Sandbox Code Playgroud)

但产生:

/usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar
/usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar
Run Code Online (Sandbox Code Playgroud)

使用以下代码进行的进一步测试有时会返回true以进行权限检查,但有时会返回false:

String symlinkedFilePath =
    "/usr/lib/jvm/java-6-openjdk/jre/lib/ext/gnome-java-bridge.jar";

File symlinkedFile = new File(symlinkedFilePath);

FilePermission recursivePermission = new FilePermission(
    symlinkedFile.getParentFile().getParent() + "/-", "read");

FilePermission filePermission = new FilePermission(
    symlinkedFile.getAbsolutePath(), "read");

System.out.println(recursivePermission);
System.out.println(filePermission); …
Run Code Online (Sandbox Code Playgroud)

java linux permissions openjdk

12
推荐指数
1
解决办法
3465
查看次数

Linux上的OpenProj JAVA_EXE错误

我已经openproj_1.4-2.deb在我的ubuntu上安装了.而且我在打开同样的时候会遇到以下错误.

Your Java vendor is "Oracle Corporation". To run OpenProj, you need the Sun Java implementation.
The auto-detected Java Runtime used is..
Run Code Online (Sandbox Code Playgroud)

我试图$HOME/.openproj/run.conf通过更新JAVA_EXE变量来编辑文件来修复.但它没有用.如何在Linux上运行openproj?请帮助,提前致谢.

(抱歉无法创建新标签,openproj)

linux openjdk

12
推荐指数
2
解决办法
8551
查看次数

java-1.7.0-openjdk-i386和java-7-openjdk-i386有什么区别

当我安装netbeans它给了我选择java环境的选项,我有3个选项,oracle java和这两个(java-1.7.0-openjdk-i386java-7-openjdk-i386).这两个有什么区别?如果是ubuntu的os.

java openjdk jvm

12
推荐指数
1
解决办法
9308
查看次数

适用于centos 6.5的openjdk 1.8软件包

我想尽快将我们的生产设置转移到openjdk 1.8.目前我们在centos 6.5上运行openjdk 1.7u55.

麻烦的是,我似乎无法直接从谷歌那里找到一个1.8的yum存储库.是否已在某处释放可用的rpm?如果是的话,在哪里?如果没有,那么可能会发生粗略的ETA(例如,centos 7或epel?).我可能要等几个星期但不会太久.

我至少能找到一些fedora软件包:https://apps.fedoraproject.org/packages/java-1.8.0-openjdk/builds

所以,这表明人们至少在研究这个问题,但我不知道这些软件包是否与centos一样稳定(或根本不工作).

为清楚起见,我知道这是jdk 1.8的早期阶段,并且我很清楚这些权衡.我不是在寻找有关如何从Oracle下载Oracle Java的构建说明或指令,因为它们缺少yum repo和许可证点击是令人讨厌的.

java openjdk centos6

12
推荐指数
1
解决办法
1万
查看次数

String.equalsIgnoreCase - UpperCase v.LowerCase

我正在浏览openjdk并注意到String.equalsIgnoreCase中的一个奇怪的代码路径,特别是方法regionMatches:

if (ignoreCase) {
    // If characters don't match but case may be ignored,
    // try converting both characters to uppercase.
    // If the results match, then the comparison scan should
    // continue.
    char u1 = Character.toUpperCase(c1);
    char u2 = Character.toUpperCase(c2);
    if (u1 == u2) {
        continue;
    }
    // Unfortunately, conversion to uppercase does not work properly
    // for the Georgian alphabet, which has strange rules about case
    // conversion.  So we need to make one last check …
Run Code Online (Sandbox Code Playgroud)

java string openjdk equals

12
推荐指数
1
解决办法
1932
查看次数

Oracle JDK和OpenJDK的性能

我有Oracle JDK7(JavaSE Hotspot Embedded JRE)和OpenJDK7(Cacao,JamVM,ZeroVM).平台是:PPC32嵌入式平台(e550)

我用两个java运行简单的素数java应用程序.由于coclusion Oracle JRE比使用cacao或jamvm或零VM的open jdk快得多.

我希望用openjdk提高执行速度.需要与oracle JRE相同的执行时间.如何提高java应用程序(单线程或多线程)的执行速度.

哪些是Oracle和Open JDK中不同的组件.

java performance openjdk

12
推荐指数
0
解决办法
2万
查看次数

标签 统计

openjdk ×10

java ×9

jvm ×2

linux ×2

centos6 ×1

equals ×1

fonts ×1

jvm-hotspot ×1

performance ×1

permissions ×1

string ×1