web-dev-qa-db-ja.com

Apple Retina Display Support in Java JDK 1.7 for AWT / Swing

Java JDK 1.7(JDK 7u15以降)でのAWT/Swingは、Apple MacbookPros。NetbeansなどのRetinaディスプレイをサポートしていないことに気づきました。 、Retinaディスプレイで実行し、JDK1.7を使用して数分以上使用するのはほとんど耐えられません。

これは、StackExchangeの質問 ここ でいくらか対処されており、1つの特定の投稿を引用しています:

AppleのJava 6 JREはHiDPIをサポートしますが、現在OracleのJava 7 JREではサポートされていません。また、の最新の開発ビルドでは機能しません。 Java 8. Retinia MacBookではSwingアプリとJavaFXアプリがぼやけています。これが、IntelliJがJava 6で実行される理由です。

私の質問は、上記のスレッドのOPによって尋ねられたものよりも具体的です。

1か月未満の私の雇用主は、すべてのアプリケーションでSwingを使用しています。いくつかの理由で、Java 7 from Java 6.に移行することに関心があります。過去数日以内に、別の開発者(Windowsを使用している)がプラットフォームをJava 7. retina Macbook Proを実行しているときに、コードの最新の安定したブランチをプルしたときに問題に気づきました。

私はコミュニティでの経験が1年未満のJavaに慣れていないので、私の質問:Javaコミュニティは、この問題にかなり反応しますか? 、またはSwing in Java 7はApple Retinaディスプレイと互換性がありますか?

24
kalefranz

Java 7u40 Early Accessは、 this changelog に示すように、HiDPI(Retina)ディスプレイをサポートするようになりました。そのため、Retinaサポートは次の場所で利用できるようになりました。

  • Java 6
  • Java7u40ea以降
  • Java 8
19
Thunderforge

先月も同じトピックに興味があり、しばらくしてネット上で誰も質問に正確に答えられないことに気づきました。

Oracleにはこれに関する未解決のバグがあります: http://bugs.Sun.com/view_bug.do?bug_id=8000629

それによると、Java 1.8で修正する必要があります。しかし、私が恐れているのは、Swingでも修正されるのか、JavaFXのみで修正されるのかわからないということです。はすでにJavaFXで修正されていますが(公式かどうかはわかりません)、Swingの問題は解決されません。

簡単に言うと、インターネットで数日間検索した後、残念ながら答えが見つかりませんでした...

よろしく、ルボス

7
Lubos

Retinaは、1.7.0_40ea以降のOracleによって完全にサポートされています。ただし、Retina用のAPIはありません。たとえば、Apple JDKのようなHiDPIScaledImagesのサポートはありません。OracleJDKでのRetinaサポートに関するいくつかのクールなヒントはここにあります http://bulenkov.com/2013/ 06/23/Retina-support-in-Oracle-jdk-1-7 /

6

私が数ヶ月前に読んだ長いスレッドによると( http://lists.Apple.com/archives/Java-dev/2012/Oct/msg00127.html )Retinaを入手する唯一の方法SwingはApple JDKをインストールすることです。これは、「ハック」を使用してアプリケーションをRetina互換にします。そのスレッドでは、回避策としてJavaFXについて言及しています(もちろん、実際の回避策ではありません。すでにSwingで書かれた複雑なソフトウェアがあります)。

私自身、上記のスレッドを読んだ後、Java 7で簡単なJavaFXアプリケーションを作成しようとしましたが、Retinaではより鮮明に見えました。Ensamble(JavaFXデモアプリケーション、App Storeで入手可能)と同じです。通常のSwingアプリケーション(Javaコントロールパネルなど)よりもはるかに優れているように見えましたが、おそらくそれは単なる提案の力です。

新しいJava 8スナップショットリリース)を積極的にテストしているので、SwingをRetinaディスプレイで問題なく表示するための作業がほとんどまたはまったく行われていないことも確認できます。

現時点での最善の策(意見ですが、秘密の知識はありません)は、Oracleの誰か(またはOpenJDKの寄稿者)がRetina Macを購入し、Java 8で修正することです。 Appleの人がJavaと言ったので、Apple 6つの修正を提供することによってそれを修正するとは思わないQuartzへのレンダリングに関連するコードを元に戻しただけです。望ましい結果が得られましたが、オープンソースではない独自のOSX内部に大きく関係しています。

2
SiCN