火曜日 6 10, 2014

メモリの最適化について - Java SE Embedded 8

JavaはOSから見ると、1つのプロセスとして動作しますが、内部的には大きく分けて以下のような3つのメモリ領域が存在します。

HEAP: Javaアプリがインスタンスを生成すると、この領域にメモリが確保されます。

NON-HEAP: NON-HEAP領域は、JVMが実行の最適化のために使用する領域で、Code CacheとMetaspaceという2つの領域に分かれています。

Code Cache: 実行中にJITコンパイラにより変換されたマシン語を保持するための領域
Metaspace: HEAPにロードされたクラスに関するメタ情報等を保持する領域  

JavaVM内部で使用される領域: VMが実行時に内部的に使用する領域です。


メモリの構成と測定方法について

次に、メモリが実際にどのぐらい使われているかを計測する方法についてです。以下はそれぞれの領域と、メモリの状況を見る方法について表した図となります。



HEAPはJava Mission Controlを使って画面から確認することもできますし (下図参照)、 あるいはJava SE標準で提供されている下記のAPIをアプリから呼び出すことで実際の使用量を取得することが可能となっています。 Mission Controlを使うか、APIをご使用になるかは状況次第で使い分けていただければと思います。さてAPIですが、以下のようになります。

HEAPの最大値を取得できます。 VMの起動オプション"-Xmx"で指定した値の近似値となります。
java.lang.Runtime.maxMemory();

利用可能なHEAPの総量を示します。 基本的にはVMの起動オプション"-Xms"で 指定した値の近似値となり、 "-Xms"がない場合は、"-Xmx"の近似値となります。
java.lang.Runtime.totalMemory();

測定時点での使用可能なHEAPサイズの概算値を返します。
java.lang.Runtime.freeMemory();

またNON-HEAPの状況を見る場合ですが、 APIによる計測方法はなく、 Java Mission Controlを利用して行います。 以下は参考となりますが、Java Mission Controlの該当する画面をキャプチャしたものとなります。 タイプが"NON_HEAP"となっている箇所がNON-HEAPとなります。

最後に、 HEAPでもなくNON-HEAPでもない領域についてですが、 Java VM内部で使用する領域ということもあり、この部分だけを解析するツールは存在しません。 強いてやるとするならば、プロセス全体が使っているメモリの量を計測し、 そこからHEAP/NON-HEAPのサイズを差し引く。というやり方になるかと思います。 OSにより様々かとおもいますが、 Linuxを例にとると、procfsでJavaプロセスが使用中の全物理メモリのサイズ (VmHWM or VmRSS) を計測し、 そこからHEAP/NON-HEAPを引くことで概算値を取得することができるかと思います。


使用メモリを調節するためのオプション

さて、実際にJVMのメモリの使用量を調節するにあたり、 まずは大前提として実行環境に最適なJVMが選択されていることを確認してください。 最適なJVMというのは、

  1. 組み込みデバイス向けには、 Embedded版のJVMが使われていること。 特にEmbedded向けのOracle JVMは組み込み用CPUに内部の処理が最適化されていたり、無駄なクラスをロードしないよう配慮されています。 なので、同じCPUアーキテクチャでも組み込みとそれ以外の環境によって適切な選択を行ってください。
  2. Minimal/Client/Server版のJVMが適切に使い分けられていること。 これらはJVMの起動オプションによって選択可能です。(参考URL: http://docs.oracle.com/javase/8/embedded/develop-apps-platforms/embedded-jvms.htm#CHDCHECF
  3. 必要最小限のCompactプロファイルが選択されていること。(参考URL: http://docs.oracle.com/javase/8/embedded/develop-apps-platforms/compact-profiles.htm#CHDGIIGE

またJVMの起動オプションの内、 メモリに影響を与えるものを以下に示します。

  • -Xms: ヒープサイズの初期値。 初期値を指定すると、 メモリ確保をコミットしようとする傾向から、使用している物理メモリの値が若干高くなる可能性があります。
  • -Xmx: ヒープサイズの最大値。
  • -XX:ReservedCodeCacheSize: Code Cacheのサイズ指定。 注) JITオプションを使わない場合でもCode Cacheの領域が使用されるため、0にはできません。
  • -Xint: JITオプションを無効とし、 インタプリタで動作します。 JIT使用時に比べメモリの使用量が減りそうですが、 意外とメモリサイズは変わりません。
  • -Xss: スレッド毎のスタックサイズを指定します。 スタックサイズの総数はスレッド数にも依存するため、 スレッド数が大きい場合はメモリの低減効果が大きくなります。
  • -XX:CompileThreshold: JITコンパイラは同じコードが指定回数以上呼び出されると動作し始めますが、 その時の呼び出し回数のしきい値を設定します。 指定した値が大きくなれば、 コンパイルされる可能性が下がるため、 Code Cacheの使用量が減るため、NON-HEAP領域のサイズが減る可能性があります。

上記のオプションは、 アプリを動作させるための要件にも依るため、 一概にどれを使えば良いかを言うのは難しいのですが、 パフォーマンスとメモリのバランスを取りながら、 少しずつパラメータの調整を行ってください。


火曜日 6 03, 2014

jdepsでCompactプロファイルの依存関係を調べる

Java SE Embedded 8からCompactプロファイルが導入され、 デバイスのROMサイズに応じたプラットフォームの選択が可能となりました。 Compactプロファイルは、compact1, compact2, compact3の3つがあります。 またさらに全てのSEのAPIを含んだFull JREも利用可能となっており、 エンベデッド向けのJava SEとしては、全部で4つの選択肢があることになります。

そこで、自分のアプリケーションがどのプロファイルであれば動作可能なのかを知る方法として、jdepsというツールを使って調べる方法を紹介いたします。なお、jdepsはJDK 8から新規追加されたツールで、JDKの中に同梱されており($JAVA_HOME/bin/jdeps)、いつでも無償にて利用することが可能です。

以下にサンプルとして、jdepsでCompactプロファイルを確認する方法を示します。

---------------------------------------------------------------------------------------------------------------------

 > jdeps -P helloworld.jar           # パッケージ単位で依存関係を調べる場合

helloworld.jar -> /opt/jdk1.8.0_05/jre/lib/rt.jar (compact1)
   com.example (helloworld.jar)
      -> java.io                                            compact1
      -> java.lang                                        compact1
      -> java.util.logging                              compact1

---------------------------------------------------------------------------------------------------------------------

>jdeps -P -v helloworld.jar           # クラス単位で依存関係を調べる場合

com.example.HelloWorld                           -> java.io.PrintStream                             compact1
com.example.HelloWorld                           -> java.lang.Class                                   compact1
com.example.HelloWorld                           -> java.lang.InterruptedException           compact1
com.example.HelloWorld                           -> java.lang.Object                                  compact1
com.example.HelloWorld                           -> java.lang.OutOfMemoryError             compact1
com.example.HelloWorld                           -> java.lang.Runtime                               compact1
com.example.HelloWorld                           -> java.lang.String                                   compact1
com.example.HelloWorld                           -> java.lang.StringBuilder                        compact1
com.example.HelloWorld                           -> java.lang.System                                compact1
com.example.HelloWorld                           -> java.lang.Thread                                 compact1
com.example.HelloWorld                           -> java.lang.Throwable                            compact1
com.example.HelloWorld                           -> java.util.logging.Level                          compact1
com.example.HelloWorld                           -> java.util.logging.Logger                       compact1
---------------------------------------------------------------------------------------------------------------------

また、出力結果をファイルに出力する場合は、"-dotoutput"オプションに出力ディレクトリを指定することで、ファイルへの書き出しが可能となっています。 ちなみに出力ファイルのフォーマットはDOT言語の形式となっています。

参考URL:

1. jdeps

http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html

2. Compactプロファイルについて

http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html?ssSourceSiteId=otnjp

3. CompactプロファイルのFootprint

http://www.oracle.com/technetwork/java/embedded/resources/se-embeddocs/index.html#sysreqs

Java Mission Control for SE Embedded 8

今まで主にサーバ環境でのJavaの診断・監視目的で使われてきた、Java Mission Controlですが、Java SE 8 Embeddedからエンベデッド環境のJavaでも利用できるようになりました。Java Mission Controlを使うことにより、JVMやJavaアプリについての、 CPUやメモリの使用状況、 スレッドの状態、 詳細ログの取得等が、 グラフィカルなUIから簡単に行えるようになります。 エンベデッド環境でも使える機能自体は同じなのですが、若干注意する点があり、それを踏まえつつ以下に紹介させていただきます。(Java Mission Controlの一般的なことについては、ページ最下部のリンクを参照してください)

1. Java Mission Controlが利用可能な、 Javaエンベデッドプラットフォーム

 JMXコンソール(MBeanサーバー)

  → Java SE Embedded 8のCompact 3とFull JREでサポート(ただしMinimal版VMは未サポート)

 フライト・レコーダ

  → Java SE Embedded 8のFull JREのみサポート(ただしMinimal版VMは未サポート)

 ※ ちなみに現状、Java ME 8では利用することができません。

2. 監視対象となるJVMの起動方法

    2.1. JMXコンソール(MBeansサーバ)を使う場合

 >java -Dcom.sun.management.jmxremote=true
              -Dcom.sun.management.jmxremote.port=7091                # ポート番号の設定
              -Dcom.sun.management.jmxremote.authenticate=false   # 認証設定
              -Dcom.sun.management.jmxremote.ssl=false                  # SSL有無
              -jar appliation.jar

※ 監視対象デバイスにつながらない場合は、以下のJVM起動オプションを追加してみてください。

"-Djava.rmi.server.hostname=192.168.0.20"                     # 監視対象デバイスのIPアドレス/ホスト名

もしくはこちらのリンク(http://docs.oracle.com/javase/7/docs/technotes/guides/management/faq.html)の5に書かれている内容について調べて見てください。

    2.2. フライト・レコーダを使う場合

  JVMの起動オプションに以下を追加してください。

  "-XX:+UnlockCommercialFeatures -XX:+FlightRecorder"

3. Java Mission Controlの起動方法。 JDKに同梱されているjmcコマンドを起動します。

 >$JAVA_HOME/bin/jmc

4. Java Mission ControlからJVMへの接続方法

 Java Mission Controlの「ファイル」→「接続」→「新規接続の作成」を開き、以下を設定してください。

- 監視対象となるデバイスのIPアドレス・ポート番号を設定します。ポート番号はJVMの起動オプションで指定したものを使います。

- 必要に応じて認証情報(ユーザ名・パスワード)を指定してください。

- 接続名は任意のものでOKです。

設定が終わったら接続のテストを行い、問題がなければ設定画面を閉じてください。接続が完了していれば、自動的に監視対象となるJavaプロセスがJava Mission Controlに表示されます。



参考URL)

http://www.oracle.com/technetwork/jp/java/javaseproducts/mission-control/index.html

http://www.oracle.com/technetwork/jp/java/javaseproducts-old/mission-control/java-mission-control-wp-2008279-ja.pdf

http://www.oracle.com/technetwork/java/embedded/resources/tech/java-flight-rec-on-java-se-emb-8-2158734.html

金曜日 9 20, 2013

ハードフロートABI対応版 Java SE Embedded 7

組み込み向けのJava SEの最新版 Java SE Embedded 7 update 40が発表されました。

http://www.oracle.com/technetwork/java/javase/emb7u40-relnotes-2004166.html

今までのARM/Linux向けのJava実行環境バイナリでは、浮動小数点ABI がソフト(arm-sflt, arm-vfp-sflt)のみに対応していましたが、本アップデートにより、ハード(arm-vfp-hflt)にも対応しています。

水曜日 7 03, 2013

リコーMFPにJava SEを搭載

オラクルの顧客事例サイトに、株式会社リコー様のデジタル複合機(MFP)へのJava SE搭載事例が掲載されました(PDF版はこちら)。2003年からJava MEを採用頂いていましたが、2011年よりJava SEを搭載しています。この事例サイトでは、Java採用に至る背景や、Java MEからSEへの移行の経緯などが紹介されています。

株式会社リコー様
リコー、MFPを中核とした「オフィスの生産性向上」と「ワークスタイル変革」の提供を目指し、プリントエンジンを制御するコントローラにJava SE を搭載
株式会社リコーは、事業の中核となる画像&ソリューション事業において、MFPのプリントエンジンを制御するためのコントローラに、Java Platform, Standard Edition(Java SE)を搭載。顧客の課題解決やニーズに合わせた画像機器およびソリューションを提供することで、オフィスの生産性向上やワークスタイルの変革に貢献することを目指している。

火曜日 6 04, 2013

オムロンのPLCにJava SEを採用

オラクルマガジンVol.16 2013年5月号の国内最新導入事例に、オムロン株式会社様の事例が掲載されました。産業用制御機器であるPLC (Programmable Logic Controller)にJava SEが採用されています。

オムロン株式会社様
最新FAコントローラの開発プラットフォームにJavaを採用
シンプル・確実・高速にデータベースと接続
オムロン株式会社(以下、オムロン)の事業の1つ、制御機器、およびファクトリーオートメーション(FA)システム事業を運営するインダストリアルオートメーションビジネスカンパニーは、FA用コントローラからセンサー、スイッチ、リレー、セーフティ機器まで、10万仕様を超える製品を提供。制御機器の分野において約40%という国内トップシェアを誇っている。さらなる競争優位性向上を目指して同カンパニーは、Sysmacマシンオートメーションコントローラ「NJシリーズ」のデータベース接続プラットフォームとして「Java Platform, Standard Edition(Java SE)」を採用した。

土曜日 12 15, 2012

新セキュリティ機能を搭載した Oracle JDK 7u10 をリリース

原文: https://blogs.oracle.com/henrik/entry/oracle_jdk_7u10_released_with

数日前、JREとJDK 7のupdate 10がリリースされました。このリリースでは以下の新しいプラットフォームのサポートが追加されました:

  • x86-64上のWindows 8 注:新しいUI(Metro)モードは非サポート
  • Windows 8のInternet Explorer 10
  • Mac OS X 10.8 (Mountain Lion)
またこのリリースでは、Javaアプレットやwebstartアプリのセキュリティを強化する次のような新機能が導入されています:
  • Javaランタイムは、自身が最新のセキュリティ基準に更新されているかどうかを確認します。古いバージョンのJavaで非署名アプレットを実行しようとすると、更新を促す警告ダイアログが表示されます。
  • Javaランタイムには有効期限がハードコードされており、この期限より前に新バージョンがリリースされることが想定されています。もしこの期限までに更新を確認できなかった場合、Javaランタイムはこれを安全ではないと見なし、アプレットの実行前には常に警告するようになります。
  • Javaコントロールパネルには、セキュリティレベル設定(低 - 中 - 高 - 非常に高)や、Javaアプレットとwebstartを完全に無効にできるオプションが含まれるようになりました。このレベルは、Javaランタイムが非署名コードを実行できるか、できる場合ユーザにどのような警告を表示するか、といったことを制御します。
セキュリティ設定の詳細についてはドキュメントをご覧ください。以下はスクリーンショットの例です。

新しいJREとJDKのアップデートはOTNから入手できます。このリリースに関するより詳しい情報はリリースノートを参照してください。 

金曜日 8 17, 2012

Oracle、Linux ARM用JDKおよびMac OS X用JREをリリース

本日、JDK 7 Update 6の公開をアナウンスしました。このリリースにはMac OS X版のアップデートや、Linux ARM向けの新しい移植版の追加が含まれています。

Java 7のMac OS Xへの移植は長い時間をかけて進められてきました。2010年11月からAppleとともにOpenJDKでの作業を始め、ここまでにJDK/JRE側とOS X側の両方で本当に多くの作業が必要でした。舞台裏では、ビルドやテストのインフラを拡張したり、JavaとOSのリリースサイクルの分離方法を見つけ出すといった、一見些細ですが時間のかかるタスクのために多くの作業が行われてきたのです。ともかく、この7u6リリースでのデスクトップJREの追加によって、ついに全機能セットが完成しました。java.oracle.comからダウンロードが可能になっており、一週間くらいでjava.comからも入手可能になるでしょう。

JDK 7u6では、汎用向けのLinux ARM版JDK(デスクトップJREではありません)も追加され、他のプラットフォーム用のOracle Javaと同じライセンス条件で利用可能になりました。このJDKリリースは、新興のARMサーバ市場や、BeagleBoardPandaBoardRaspberry Piといった開発用ボードコミュニティを狙っています。この移植版では、ARMv6およびv7用の32ビットバイナリが提供され、これはSwing/AWTやクライアント(C1)およびサーバ(C2)の両コンパイラをフルサポートし、多くのLinuxディストリビューションで実行可能です。一つ注意すべき点は、現在のバイナリはsoftfloat ABIだけなので、例えばRaspbianディストリビューションのようなhardfloat ABIを使うものでは動作しないことです。今後のJDKリリースでは、hardfloatサポートの追加、そしてARM版JavaFXのサポートも予定しています。

ARM版については多くの質問があると思いますので、簡単なFAQを用意しました:
  • Java SE EmbeddedとARM版JDKとの関係は?Java SE Embeddedは、フットプリントの小さなデバイス向けに最適化されたJava SE準拠の実行環境です。ARM v5/6/7やx86、PPCなど複数のアーキテクチャ用のものが用意されています。組み込み利用向けにOracleが商用ライセンスしている製品です。JDKは、開発者やサーバーサイドアプリケーション向けの汎用Java実行/開発環境です。x86やSPARC(そして今回からARMも)といったアーキテクチャ向けのものが利用できます。汎用の利用は無償ですが、Java SEサポートプログラムという商用サポートも用意されています。
  • ARM版JDKは無料ですか?それとも商用ライセンスが必要ですか?すべての汎用向けJDKやJREバイナリと同様、開発目的での利用や、汎用ハードウェア上での業務利用は無料です。また、汎用コンピュータをターゲットとするアプリケーションには無償でバンドルして再配布することもできます。正確なライセンス条件についてはエンドユーザライセンスをご覧ください。いくつか例を挙げると、データセンターに設置してTomcatやGlassfishを走らせるARMサーバは汎用といえます。また、Rasberry PiボードをPCのように使う場合も同様です。工業用コントローラやキオスク機器は汎用ではないため、どちらも商用ライセンスが必要です。
  • Oracle JDKのARM移植版はOpenJDKでも利用可能ですか?いいえ、現時点ではこれをオープンソース化する予定はありません。
  • 私はRaspberry Pi/BeagleBoard/PandaBoardを持っています。これらの上でJavaを走らせる方法は?まず、softfloat ABIを使ったLinuxディストリビューションを使っていることを確認してください。後はOracle JDKをダウンロードしてインストールするだけです。
  • なぜOracleはARM移植に投資し、そしてそれを無料で配布するのですか?ARM上でのJava開発の推進はJavaの繁栄に寄与するでしょう。また、いつかARMサーバ上で何かミドルウェアを売れるかもしれませんね。
  • グラフィックスはサポートされますか?サウンドはどうでしょう?はい、このJDKバイナリはheadful版ですからSwing/AWTとサウンドの両方をサポートしています。ちなみに、headless版Java SE Embeddedのバイナリではサウンドは利用できませんが、これはweb上で見られるいくつかのサウンド問題の報告が主な原因です。Swing/AWTにはX11R6が必要で、フレームバッファはサポートされていません。JavaFXはLinux ARM上ではまだ利用できませんが、ロードマップ上にはあります。
  • Linux ARM版JDKは、他のプラットフォーム上のJDKと機能面で完全に同等ですか?JDKの機能の大部分はサポートされていますが、いくつか利用できないものもあります。例えば、G1 GC、階層型コンパイル、プラグインやwebstartなどの機能はありません。詳しくはリリースノートを参照してください。これらのうちいくつかは将来のリリースで追加されます。
  • softfloat、hardfloatとは何のことですか?Oracle JDKはいつhardfloatをサポートしますか?ARMチップには浮動小数点演算をハードウェアでサポートするもの(hardfloat)とソフトウェアで行うもの(softfloat)があります。ハードウェアによる浮動小数点演算をサポートするARMチップ上で実行されるOSは、関数呼び出しのパラメータの受け渡しに浮動小数点レジスタを使うことができるため性能が向上します。パラメータの受け渡し方法はOS、ライブラリ、そして(JVMのような)アプリケーションの間の契約であり、ABI(Application Binary Interface)と呼ばれます。単純なケースでは、softfloat ABIのOSは、すべてのライブラリやアプリケーションがsoftfloat対応にコンパイルされることを要求し、hardfloatのOSは、ライブラリやアプリケーションがhardfloat対応にコンパイルされることを要求します。hardfloat OSが、softfloatアプリケーションを実行できる互換レイヤを提供できる特別なケースもあります。最近まで大半のLinuxディストリビューションはsoftfloatでした。このところ、Linuxディストリビューションの多くは積極的にhardfloatに移行しており、そのうちいくつかは(Ubuntu 12.04が良い例です)softfloat互換性も提供しています。一方でRaspbianなどはhardfloat専用です。ARM版Oracle JDKの最初のリリースはsoftfloat ABIを使っているので、softfloatのディストリビューションか、softfloat互換性を持つhardfloat上で動作し、hardfloatのみでは動作しません。これは単にタイミングの問題で、将来的にはhardfloat版のJDKが提供されます。おそらく段階的に、例えばまずARMv7、その後にARMv6といった形で提供され、初期リリースはheadless、すなわちSwing/AWTなしになるかもしれません。できるだけ早く早期アクセスビルドを用意し、java.net上で公開する予定です。まだ公表できるような具体的な日程はありませんが、JavaOne 2012ではロードマップをお知らせできることを望んでいます。
  • 今回、一般向けのARM版ができたわけですが、他のOS、例えばiOS版をサポートする予定は?Linuxはシンプルな移植でしたが、iOSはそうではありません。すでにいくつかの試作は行いましたが、現時点ではまだロードマップ上にあるとはいえないでしょう。論点の1つはUIをどうするか、ということです。JavaFXも選択肢の1つですし、ADFモバイルで使われているようなJava+Webの組み合わせもあります。これは、どのソリューションがその投資に見合うだけ幅広く受け入れられるだろうか、という問題です。もし今すぐに欲しいのなら、OpenJDKに直行してハックし始めてください! :-)
  • Oracleの顧客ではない場合、ARM版JDKの問題点はどこに報告すべきでしょうか?OTNのJava developer forumを使ってください。
  • Jazelleのハードウェアバイトコード実行はサポートされていますか?いいえ。優れたJITがあるときはJazelleは不要です。そのためにメモリやCPUパワーを買うことができます。

火曜日 5 22, 2012

Mac OS X用のOracle JDKとJavaFX SDKを正式リリース

Oracle JDK 7およびJava FX 2.1 SDKのMac OS X版が公開されました。このリリースは、Oracle JavaのMacへの展開における重要なマイルストーンです。今後、Oracle JDK 7とJavaFX 2.1(そして後続バージョン)のすべてのリリースで、Linux、WindowsやSolaris版と同時にMac版も公開されます。

OS X用のJDKとJavaFXはどこからダウンロードできますか?

java.oracle.comからどうぞ。このJDKダウンロードにはJava FX SDKも含まれています。

このリリースには何が含まれていますか?

Java SE 7の完全互換実装、JDKの開発ツールの大部分と完全なJavaFX 2.1 SDKです。保守やデバッグ用のツールや、JavaプラグインやWeb Startといったデプロイメント技術の一部は未提供ですが、後続のリリースで追加される予定です。詳細については、JDKのリリースノートJavaFXのリリースノートをご覧ください。

OracleはMac上のJDK 7でのNetBeansの使用をサポートしますか?

はい!NetBeans 7.1.2がJDK Update 4と同時にリリースされ、これにはMac用Oracle JDKのフルサポートが含まれています。こちらの発表をご覧ください。ダウンロードはこちら

このリリースに既知の問題点はありますか?

Mac OS Xへの対応は私たちにとってかなりの大仕事でした。また、新プラットフォームの追加はずいぶん久しぶりのことです。今回のリリースは"1.0"と考えられるべきで、既知の問題点も多く含まれています。詳しくはリリースノート(JDK, JavaFX)を参照してください。

問題点を見つけた場合、どうすればよいですか?

まず、それが既知の問題でないかリリースノートを確認してください。次に、適切なメーリングリストwebフォーラムで検証や解決への助力を求めることができます。その後でバグ管理システムにレポートを登録してください。

OS X版のソースコードは公開されていますか?

はい!JDKのすべてのコードは、OpenJDKコミュニティJDK 7 Updatesプロジェクト内にあります。JavaFXは、OpenJFXプロジェクトで部分的にオープンソース化されており、Oracleは残りの部分についてもオープンソース化に向けて作業中です。

どのAppleハードウェア、OS Xのバージョンがサポートされますか?

OracleのJDKとJavaFXリリースは、64ビット対応のIntelベースMac上のOS X Lionをサポートしています。この実装は64ビットのみなので、64ビットのOSが必須なことに特に気をつけてください。

OS Xの古いバージョンでもOracle JDKを使えますか?

いいえ、難しそうです。根本的な問題は、Oracle JDKが、AppleがLionで導入したいくつかのAPIを必要としていることです。この新しいAPIで導入された機能は、古いOS Xバージョンにもある程度は存在しましたが、正式なAPIではありませんでした。

32ビットJVMや、古いPPCベースのMacのサポートが必要な場合、どうすればよいでしょう?

OpenJDKをベースとして、他のコンフィグレーション向けにJDK 7をビルドする、コミュニティベースの取り組みが存在します。お好みの検索エンジンで簡単に見つかるでしょう。こういった取り組みには拍手喝采です! :-)

Mac OS X用Oracle JDKおよびJavaFXのための商用サポートはありますか?

これらはOracleの標準リリースと認められるので、Java SE Supportプログラムの対象となります。ただし、Macのサポートは開発のみです。ビジネスクリティカルなサーバーサイドアプリケーションがMac上で運用されることは想定していません。

今後のロードマップについて教えてください

Mac版のOracle JDKとJavaFXの今後のリリースは、毎年4-6リリースという通常のJDKリリース計画に従います。次の重要なマイルストーンはJDK 7 Update 6で、ここでJavaプラグインやWeb Startのサポートを追加する予定です。早期アクセスビルドはこちらです。もちろん、JDK 8でもMac OS Xはサポートされます。

金曜日 4 27, 2012

5つのJavaアップデートリリース

本日、OracleのJavaチームは、Java SE、Java FX、Java SE for Embeddedのアップデートリリースを公開しました。

Java SE

Java SE 7 Update 4 

  • これはOracleが初めてMac OS X用に提供するJDKおよびJavaFX SDKです。(JavaFX SDKを含む)このJDKは、Oracle Technology Networkのダウンロードページから入手できます。
  • Oracleは、JRockitとHotSpot JVMそれぞれのベストな機能を活かすため統合を進めてきました。新しいJVM(Java HotSpot Virtual Machine, version 23)は、JRockit JVMの機能を統合しています。JRockit JVMの持つ付加価値機能のいくつかがHotpSpot JVMに再実装されています。
  • Java SE 7 Update 4では、次世代のガベージコレクションアルゴリズムであるGarbage First(G1)が正式サポートされます。
  • Java SE 7 Update 4は、Java.comでデフォルトバージョンとして提供されるJava 7 JREの、最初のエンドユーザ向けリリースです。最新の情報についてはHenrik Stahlのブログもご覧ください。
  • 詳細についてはJava SE 7 Update 4のリリースノートを参照してください。
  • ダウンロードはこちら

Java SE 6 Update 32

Java SE 6u32は、Olsonタイムゾーンデータのバージョン2011lと、いくつかのバグ修正を含んだものです。より詳しい情報はJava SE 6 Update 32のリリースノートをご覧ください。ダウンロードはこちら

Java FX

JavaFX 2.1リリースは、WindowsとMac OS Xプラットフォーム用のJavaFX Software Development Kit (SDK)を含んでいます。JavaFX SDKは、JavaFXアプリケーションの開発に必要なツールやテクノロジを提供します。以下の新機能が含まれています:
  • H.264/AVCビデオとAdvanced Audio Coding (AAC)オーディオを格納した、MPEG-4マルチメディアコンテナ形式のデジタルメディアの再生サポート。
  • WebVeiwで、JavaScriptからのJavaメソッド呼び出しを新たにサポート。HTML/JavaScriptを表示したとき、特定の処理をJavaに委ねるため(WebView内の)JavaScriptからJava APIを呼び出しが可能に。
  • JavaFX 2.1リリースでは、WindowsスタイルのLCD用サブピクセルレンダリング機能が追加されています。Windows上ではデフォルトでJavaFXのすべてのUIコントロールでLCD用テキストがオンになっており、WebView(Webコンテンツレンダリング用のWebkitベースのノード)でも同様です。新しいAPIを使えば、シーングラフの低レベルテキストノードでも任意にLCD用テキストを使うことができます。
  • JavaFX 2.1で追加されたユーザインタフェース: コンボボックス、スタックされたチャート、アプリケーション全体用のメニューバー
  • JavaFX Scene Builder 1.0 Early Access - JavaFXプラットフォーム用のビジュアルレイアウトツール。JavaFX Scene Builderでは、シンプルにオブジェクトをドラッグして配置することでUI画面を設計できます。
  • より詳しい情報については、JavaFX 2.1のリリースノートをご覧ください。
  • ダウンロードはこちら

Java SE for Embedded

Java SE for Embedded 7 Update 4 & Java SE for Embedded 6 Update 32

組み込みデバイス向けのJava Standard Edition (Java SE)です。ネットワークベースのデバイスには理想的な、セキュアで最適化された実行環境です。両リリースともいくつかのバグ修正を含んだものです。
ダウンロードはこちら

About

日本オラクルのエンベデッドJavaチームから、最新情報をお送りしていきます。

Search

Archives
« 7月 2015
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Today