Java SE 7のガイド・ドキュメント内の各拡張機能のページに対するリンクを以下のリストに示します。 詳しい情報を確認するには、対象のテクノロジーを選択してください。
Java SE 7のOracle実装であるJDK 7での変更点については、JDK 7で対処された重要なRFEセクションに記載されています。
分野:HotSpot
GetLocalInstance
メソッドを追加するため、JVM/TIバージョン番号が1.1から1.2へ変更されています。分野: セキュリティ
java.security.Signature
)のクラス・サマリーが更新され、実装要件が追加されています。 また、これらの要件のすべては、標準アルゴリズム・ドキュメントのImplementation Requirementsセクションに記載されています。分野: API: JSSE
KeyManagerFactory
に対する標準アルゴリズム名が定義されていませんでした(デフォルト・アルゴリズムを除く)。 Java SE 7リリースでは、KeyManagerFactory
の標準アルゴリズム名として"PKIX"がエクスポートされます。KeyManagerFactory
アルゴリズムは、次のように定義されています。javax.net.ssl.KeyStoreBuilderParameters
を使用した初期化をサポートする必要があります。分野: API: JSSE
分野: API: 言語
java.lang.ClassLoader
クラスに新しいAPIが追加されており、クラス・ローディング処理に対するよりきめ細かいロック・メカニズムとパラレル・ローディングがサポートされています。 カスタム・クラス・ローダーでこの機能を利用する場合、推奨されるモデルや要件について、クラス・ローダーAPIの修正によるデッドロックの回避ドキュメントを参照し、これに従って機能を実装する必要があります。分野: API: AWT
java.awt.Cursor
クラスには"predefined"と呼ばれる"保護された静的フィールド"が含まれていました。 このフィールドは削除されました。分野: API: AWT
java.awt.Color.darker()
メソッドとjava.awt.Color.lighter()
メソッドによって維持されるようになりました。
javac
、HotSpot(および関連ツール)、Java SE 7 APIの実装に対する変更が含まれています。Java SE 7での変更点については、Java SE 7で対処された重要なRFEセクションに掲載されています。
分野: スクリプト
分野: ツール
分野: ツール
分野: ツール
jre/lib/libjvm.so->client/libjvm.so
が含まれていました。 これは、Solaris Production JREからJava Referenceバージョン(より正確にはExactVMからHotSpot)への移行を支援するために提供されていたものです。 このsymlinkは削除されており、今後はサポートされません。分野: ツール
分野: ツール
keytool
ユーティリティとjarsigner
ユーティリティで使用される暗号化アルゴリズムのデフォルト値が更新され、強化されています。 詳しくは、keytool
とjarsigner
のツール・ドキュメントを参照してください。分野: ツール
keytool
ツールとjarsigner
ツールの鍵ペア生成とjar署名で、ECCアルゴリズムがサポートされるようになりました。分野: ツール
keytool
コマンド(-gencert
)が提供されています。 新オプション(-ext
)を使用すると、-gencert
、-genkeypair
、-certreq
コマンドでいくつかのX.509 v3の拡張を生成できます。 また、keytool
ツールとjarsigner
ツールには、その他の新しいコマンドとオプションも追加されています。 詳しくは、keytool
とjarsigner
のツール・ドキュメントを参照してください。分野: ツール
javadoc
ツールが更新され、生成されたページのスタイルを制御するスタイル・マークアップ・クラスを使用できるようになりました。 -stylesheetfile
オプションを指定すると、代わりのスタイルシート・ファイルを使用できます。 このオプションを指定しない場合、javadoc
ツールによって"stylesheet.css"というスタイルシート・ファイルが自動的に作成されます。 たとえば、次のように別のファイル名を指定すると、このデフォルトをオーバーライドできます。
C:> javadoc -stylesheetfile C:\user\exampleStylesheet.css com.examplePackage生成されるページには、さまざまなセクションに対応するスタイル・マークアップが含まれています。 スタイルシート・ファイルを使用すると、これらのセクションのスタイルを定義できます。 デフォルトのスタイルシート・ファイルは、そのセクションに含まれる各スタイルに基づいてソートされます。 次の要素のスタイルをカスタマイズできます。
分野: HotSpot
StackMapTable
属性が含まれる必要があります。 バージョン50のクラス・ファイルについては引き続き、ファイル内のスタックマップが欠如しているか、正しくない場合に、HotSpot JVMによってタイプ推測型の検証機能へのフェイルオーバーが実行されます。 このフェイルオーバー動作は、バージョン51(JDK 7のデフォルト・バージョン)のクラス・ファイルに対しては実行されません。分野: HotSpot
String.intern()
メソッドを多用したりする大規模アプリケーションでは、大きな違いが現れます。分野: HotSpot
分野: HotSpot
CMSUseOldDefaults
フラグが提供されました。 このフラグを指定すると、多数の設定がデフォルトの状態に戻されます。 ここ数年間で、このフラグの使用は最小限にとどまっており、ほとんどの顧客はCMSのパフォーマンス改善を選択していました。 このリリースでは、CMSUseOldDefaults
フラグは削除されています。分野: HotSpot
jstack
やjmap
などの一部のコマンドライン・ツールは、G1コレクタを使用する際に正しく動作しない場合があります。分野: HotSpot
Thread.interrupt()
メソッドによって一部のブロッキングI/O処理が妨げられるため、ターゲット・スレッドによってInterruptedIOException
がスローされ、ソケット・ストリームやファイル・ストリームが整合性を欠いた状態のままになっていました。 この、いわゆる"割込み可能なレガシーI/Oサポート"は、JDK 7では無効化されています。 Solaris固有のこの動作に以前から依存しているアプリケーションの場合は、コマンドラインから-XX:+UseVMInterruptibleIO
オプションを指定して実行することで、このサポートを再び有効化できます。 ただし、将来のJDKリリースでは、割込み可能なレガシーI/Oサポートは完全に削除される可能性があります。分野: JSSE
分野: JSSE
分野: SASL
分野: インストーラ
分野: インストーラ
分野: インストーラ
分野: インストーラ
-F
オプションを指定することです。分野: インストーラ
java.exe
バージョンの処理が失敗します。分野: デプロイメント
"--segment-limit=nnnnn"
または同等のプロパティ"SEGMENT_LIMIT
"を使用して、適切にセグメント化することを推奨します。分野: デプロイメント
$USER\Local Settings\Application Data\Sun\Java\Deployment\cache
になりました。 必要であれば、キャッシュ・ディレクトリとしてネットワーク共有フォルダを指定することによって、複数のドメイン・マシン間で1つのアプリケーション・キャッシュを利用できます。分野: デプロイメント
jnlp_embedded
を使用すると、JNLPコンテンツをHTMLページ上にキャッシュすることで、ネットワーク・アクセスを省略してアプレットの起動時間を短縮できます。 jnlp_embedded
パラメータの値は、アプレットのJNLPファイルのコンテンツをbase64でエンコードしたものになります。 次に例を挙げます。
<applet width="710" height="540" > <param name="jnlp_href" value="launch.jnlp"/> <param name="jnlp_embedded" value="PD94bWwgdmVyc2lvbj0iMS4wIiB . . . dC1kZXNjPg0KPC9qbmxwPg0 K"/> <param name="draggable" value="true"/> </applet>
jnlp_embedded
パラメータが指定されると、この値によって、jn.p_href
パラメータで指定したJNLP値のコンテンツが置換されます。 この状況では、jnlp_ref
の値は省略可能であり、jnlp_embedded
のコンテンツが無効である場合にのみ予備として使用されます。 JNLPコンテンツの埋込みに関しては、いくつかの制限事項があります。
jnlp
の属性href
は、相対的でなければなりません。jnlp
の属性codebase
は空白でなければなりません(コードベース値はドキュメントのベースURLから取得される)。分野: デプロイメント
javaws -XClearCache
を呼び出すと、インストールされていないリソースのみがキャッシュから削除されます。javaws -uninstall
を呼び出すと、インストールされたリソースとインストールされていないリソースの両方が削除されます。分野: JNLPファイル
-XX:HeapDumpOnOutOfMemoryError
フラグがサポートされています。分野: JNLPファイル
os="Windows\ XP"
、os="Windows\ Vista"
、os="Windows\ 7"
といった詳細な値を指定した"os"属性が期待どおりに機能するようになります。 os-"Win"
やos="Windows"
という値も、引き続きすべてのWindowsプラットフォームに適合しています。 このリリースでは、os="Windows\ Vista Windows\ 7"
という値はVistaまたはWindows 7にのみ適合し、Windows XPには適合していません。分野: プラグイン
分野: プラグイン
分野: プラグイン
分野: プラグイン
分野: プラグイン
分野: セキュリティ
分野: API: JSSE
分野: API: 言語
javax.lang.model.type
パッケージに含まれる2つの例外タイプ、MirroredTypeException
とMirroredTypesException
の間に関係はありませんでした。 javac
実装では、MirroredTypesException
がスローされるべきケースでMirroredTypeException
がスローされていました。 この問題を解決する目的もあって、MirroredTypeException
はMirroredTypesException
のサブクラスになりました。 この変更にはバイナリ互換性があり、通常、既存のアノテーション・プロセッサの動作は維持されます。 ただし、この変更によってクライアント・プログラムのソースに非互換性が生じる可能性があります。そのような場合は、catch句の順序を変更するとプログラムを再度コンパイルできるようになります。分野: API: 言語
javax.lang.model.*
でいくつかの更新が行われました。一例を挙げると、javax.lang.model.type.TypeVisitor
インタフェースにメソッドが追加されています。 この追加によって、TypeVisitor
インタフェースを直接実装したライブラリとソースの間に非互換性が生じます。 ただし、このような追加はAPIの発展の一環として予測されていたものであり、ライブラリに直接インタフェースを実装するのではなく、ユーティリティ・ビジターを拡張するよう指示する明示的な警告が出されています。分野: API: ユーティリティ
java.util.TreeMap
のエラーのため、無効なNULL要素やComparable
を実装していない要素を空のTreeMaps
やTreeSets
に挿入することが可能となっていました。 空のTreeMaps
またはTreeSets
に挿入できるのは1つの無効な要素のみであり、その他の要素では、想定どおりにNullPointerException
またはClassCastException
が発生していました。 また、コレクションに対する他の操作のほとんども失敗していました。 JDK 7では、無効なNULL要素やComparable
を実装していない要素を空のTreeMap
またはTreeSet
に挿入すると、NullPointerException
がスローされます。分野: API: NIO
java.nio.ByteBuffer.allocateDirect(int)
を使用して割り当てられるダイレクト・バッファをページ境界に合わせていました。 JDK 7では実装が変更され、ダイレクト・バッファをページに合わせていないため、多数の小さなバッファを作成するアプリケーションのメモリ要件が軽減されます。 この文書化されていない位置合わせに以前から依存しているアプリケーションの場合は、コマンドライン・オプション-XX:+PageAlignDirectMemory
を指定して実行することで、以前の動作に戻すことができます。分野: API: AWT
java.awt.Component
クラス仕様と"See Also"リンクを参照)と記事Mixing Heavyweight and Lightweight Componentsを参照してください。 コンポーネントの組合せの問題を解決するためにカスタム・コードを使用しているアプリケーションで、組合せに対するサポートの組込みによって問題が発生している場合は、-Dsun.awt.disableMixing=true
システム・プロパティを指定してこの機能を無効化できます。分野: API: AWT
TrayIcon
API)をサポートしているかどうかを検出する仕組みが変更されました。 現在のウィンドウ・マネージャを調べる代わりに、System Tray Protocol Specificationが使用されます。分野: API: AWT
WToolkit
はWindowsで、XToolkit
はLinuxまたはSolarisでサポートされています。 LinuxまたはSolarisでのMToolkit
の実装サポートは廃止されました。分野: API: AWT
java.awt.Window
オブジェクト(フレームやダイアログは除く)が、X11における標準のトップレベル・ウィンドウになります。 JDK 6リリースでは、これらはOverrideRedirect
ウィンドウでした。分野: API: AWT
PERPIXEL_TRANSLUCENT
と同様の透明性を実現しているウィンドウでは、子の重量コンポーネント(AWTなど)が正しく表示されない可能性があります。 AWTは、ピクセル単位の半透明ウィンドウのみで軽量コンポーネント(Swingなど)をサポートしています。 2種類のコンポーネントの違いについて、詳しくはComponent
クラス仕様と記事Mixing Heavyweight and Lightweight Componentsを参照してください。分野: API: DnD
java.awt.AWTPermission.accessClipboard
権限を持たないユーザーがシステム・クリップボードにアクセスすることはできません。分野: JGSS
分野: JGSS
krb5.conf
を設定するJGSS向けに、デフォルト構成ファイルが提供されるようになりました。 これによって、JGSSやkrb5のプログラムのデプロイ、特にJavaアプレットのデプロイが非常に簡単になります。分野: JCE
Cipher.getInstance("RSA/ECB/NoPadding")
を呼び出すことができます。 また、Cipher
オブジェクトをリクエストする際に、SunPKCS11は、"RSA"を"RSA/ECB/PKCS1Padding"変換のエイリアスとして認識します。分野: JCE
Cipher.getInstance(...)
コールに対して次の変換がサポートされています。
CBCモードとPKCS5Paddingを使用したDES、DESede、AES、Blowfish ECBモードとPKCS5Paddingを使用したDES、DESede、AES ECBモードとNoPaddingを使用したDES、DESede、AES
分野: JCE
Cipher.getInstance("AES/CTR/NoPadding")
コール)を使用したAES暗号化がサポートされるようになりました。分野: JCE
CKM_SSL3_KEY_AND_MAC_DERIVE
CKM_TLS_KEY_AND_MAC_DERIV
分野: Java DB
分野: ツール
Object[] o = new ArrayList<>[42];このプログラムは(JLSによると)誤った形式であるため、拒否されなければなりません。
分野: ツール
LD_LIBRARY_PATH
環境変数の使用がJavaランチャから削除されました。 この修正は、ほとんどのSolarisおよびLinuxユーザーにとってシームレスな変更ですが、旧バージョンのJDKからJDK 7を起動するJavaアプリケーションでは、JDK 7を実行する前に必ずLD_LIBRARY_PATH
環境変数をクリーンアップする必要があります。もしくは、単純に、JDK 7を使用してJDK 7を起動します。 詳しくは、ブログ・エントリPurging LD_LIBRARY_PATHを参照してください。分野: ツール
LD_LIBRARY_PATH
環境変数が削除されたため、JDK 6の実行可能ファイルからJDK 7実行可能ファイルが実行されます。そのため、親の実行可能ファイルにおける設定が子の実行可能ファイルに適用される場合、JDK 7ランチャはLD_LIBRARY_PATH
値に対して脆弱になります。 このような状況を回避するために、LD_LIBRARY_PATH
環境変数にレガシー・ランタイムへのパスが含まれる場合は、Solaris上でLD_LIBRARY_PATH
とバリアント型を設定してJavaランチャ自体を保護します。分野: ツール
javac
コンパイラから例外がスローされる可能性があります。 この問題の回避策としては、定数値への静的なインポートを追加します。これによって、アノテーション値として使用する場合でも、定数値への最初の参照にはなりません。分野: ツール
import java.util.*; interface A { List<Number> getList(); } interface B { List getList(); } interface AB extends A, B {} class Test { void test(AB ab) { Number n = ab.getList().get(1); //error here } }この問題は、以前は
ab.getList()
がA.getList()
として解決されていたものが、このリリースではB.getList()
として解決されることが原因となっています。 これに対して、次の回避策を使用できます。
Number n = ((A)ab).getList().get(1); //works
分野: HotSpot
分野: HotSpot
-XX:-UseLoopPredicate -XX:-LoopLimitCheck
フラグを指定することです。分野: HotSpot
分野: HotSpot
jinfo
jmap
jstack -F
/proc/sys/kernel/yama/ptrace_scope
の値を0に変更します。2) より永続的な設定にする場合には、/etc/sysctl.d/10-ptrace.conf
の値を0に変更します。 オプション1ではリブートの必要はありませんが、オプション2ではリブートが必要になります。分野: HotSpot
PorterStemmer
の実行中に、segv
によってHotspotがクラッシュします。-XX:-UseLoopPredicate
を指定することです。-XX:+AggressiveOpts
を使用した際に発生しています。しかし、6942326向けの修正の一環として、定数String
の長さを定数として扱うコードがデフォルトで有効化されたため、JDK 7ビルド134ではコマンドライン・フラグは提供されていません。分野: インストーラ
%TEMP%
フォルダに作成されるMSI*.log
ファイルに、次の内容が含まれます。
MSI (s) (*:*) [*:*:*:*]: Product: Java(TM) 7 -- Removal failed. MSI (s) (*:*) [*:*:*:*]: Windows Installer removed the product. Product Name: Java(TM) 7. Product Version: 7.0.0. Product Language: 1033. Removal success or error status: 1602.この問題を回避するには、
HKEY_CURRENT_USER\Software\JavaSoft\FIUCancel
レジストリ・キーを削除し(存在する場合)、アンインストールを再試行します。分野: Webstart
href
タグがJNLPファイルに含まれておらず、offline-allowed
が指定されていない場合分野: プラグイン
https
セッションを使用して認証が実行されます。 このため、あるユーザー名とパスワードをブラウザに提供した後で、もう1つのユーザー名とパスワードをJavaプラグインに提供する必要があります。分野: プラグイン
showDocument
APIを使用してアプレットからドキュメントを開くことはできません。 W3CのサイトにあるHTMLの仕様で、正式な名前付け規則が定義されています。 次にその一部を抜粋します。 IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、任意の数の文字、数字([0-9])、ハイフン("-")、アンダースコア("_")、コロン(":")、ピリオド(".")が含まれます。 たとえば、次のコードは正しく動作しません。
showDocument("http://myhost/myDoc.html", "my window"); // 誤次のコード・スニペットで使用しているウィンドウ・ターゲット名は名前付け規則に準拠しているため、コードは正しく動作します。
showDocument("http://myhost/myDoc.html", "my_window"); // 正RFE: 7074254
分野: セキュリティ
分野: セキュリティ
分野: 国際化
javax.xml.datatype.XMLGregorianCalendar
でtoGregorianCalendar()
メソッドを呼び出すことで作成されたGregorianCalendar
インスタンスが、週の最初の日を誤った日付で返す場合があります。 次に、週の最初の日が異なる日付を持つOSロケールに対して、別のロケール形式とロケーションが設定されている事例を示します。 例:
OS | ロケール形式/ロケーション |
---|---|
en_US | de_DE |
en_CA | de_DE |
de_DE | en_CA |
iw_IL | fi_FIなど |
分野: 国際化
分野: JSSE
分野: API: JMX
MLet
クラス・ローダーを使用して、jarファイルに格納されたリソース・ファイルをロードすることができません。 このバグは、JDK 6リリースとJDK 7リリースで発生します。 この問題の回避策は、クラスパスからjarファイルを取得することです。分野: API: AWT
Windows.setOpacity()
、Windows.setShape()
、またはWindows.setBackground()
といったメソッドを起動して視覚効果を有効化する前に、開発者は、目的の効果がサポートされているかどうかを確認する必要があります。 この確認を行うには、GraphicsDevice.isWindowTranslucencySupported()
メソッドを呼び出し、目的の効果を引数として指定します。 メソッドから効果がサポートされていると通知された場合は、その効果を有効化しても例外はスローされません。 ただし、X11システム(Linux、Solaris)での視覚効果の使用には、いくつかの問題があります。
Windows.setBackground()
): この効果はサポート対象として通知される場合がありますが、システムが合成マネージャを実行していないために、この効果を有効化したウィンドウが視覚的に透明に見えないことがあります。 システムでは、合成ウィンドウ・マネージャ(compizなど)か個別の合成マネージャ(xcompmgrなど)のいずれかを実行する必要があります。 残念ながら、合成マネージャが実行中であるかどうかを検出する方法はないため、透明ウィンドウが実際に透明に見えるかどうかをJavaから通知することはできません。 Javaがチェックおよび通知できるのは、ウィンドウに対する効果の有効化がネイティブ・プラットフォームでサポートされているかどうかという点のみです。Window.setOpacity()
):Javaからこの効果は使用できないと通知される場合がありますが、実際には、ウィンドウ・マネージャはアクティブ・アプリケーションに対してこの効果をサポートしており、半透明ウィンドウを表示できます。 この問題は、ウィンドウ・マネージャ(Metacityの一部のバージョンなど)がこの効果をサポートしていることを通知しないために発生します。 これはJavaの欠陥というよりも、ウィンドウ・マネージャのバグである点に注意してください。 詳しくは、6762511を参照してください。分野: API: AWT
Window.toFront()
とWindow.toBack()
の動作に固有の問題です。 AWTは、常に、ウィンドウイング・システム(X11システム向けのICCCMやEWMHなど)の仕様に従って、ウィンドウをスタック順序の最上位または最下位にするために必要なすべてのアクションを実行します。 アクションが有効になるかどうかは、システムで実行されているウィンドウ・マネージャによって異なります。 一部のウィンドウイング・システムでは、ウィンドウをスタック順序の最上位にする際に、追加の制約が適用されます。 ほとんどの場合、このような追加の制約は、これらのウィンドウ環境におけるユーザビリティやセキュリティの向上を目的としたものです。 それ以外の場合、これらは単純にウィンドウイング・システムのバグである可能性があります。 つまり、Window.toFront()
メソッドやWindow.toBack()
メソッドを起動しても、常に期待した結果が得られるとは限りません。toFront()
メソッドの仕様がこの問題の一因であると言えますが、JDK 7の開発中には、この特有の動作に関する苦情がユーザーから複数寄せられました。 AWTは追加制約を省くことも、サード・パーティのソフトウェアのバグを回避することもできないため、これらのCRはすべて"Not a Defect"としてクローズされています。 Javaアプリケーションでこの問題が発生する場合、通常は、ネイティブ・アプリケーションでも同じように動作するかどうかを確認し、ウィンドウイング・システムに対するバグとして届け出ることをお勧めします。分野: API: 2D
/usr/lib/libXrender.so
にバグが含まれるため、新しいJava 2D Xrenderパイプラインによって、JREがハングするか、またはXserverからアプリケーションへの接続が切断されて警告なしで終了する場合があります。 このバグはfreedesktop.orgで文書化されており、GradientPaint
クラスを使用するアプリケーションに影響を及ぼします。 アプリケーションでグラデーションの使用を避ける以外に、既知の回避策はありません。 このバグは、Red Hat Enterprise Linux(RHEL)5.6以前とOracle Enterprise Linux 5.6以前に影響を与えることが分かっています。 年代の近いその他のバージョンにも、同様の影響が及ぶ場合があります。 この問題の解決策は、バージョン0.9.3以降のXrenderライブラリをインストールするか、Oracle Enterprise Linux 6などの新しいLinuxディストリビューションにアップグレードすることです。 Xrenderパイプラインは、JDK 7ではデフォルトで無効化されていますが、システム・プロパティに"-Dsun.java2d.xrender=True
"を設定することで有効化できます。 こうすることで、このバグが存在しないことを実装から確認できない場合でも、Xrenderバグに関する警告が通知されます。分野: API: テキスト
Bidi(AttributedCharacterIterator)
コンストラクタにチェックインされます。 インデックスが最初の文字に設定されていない場合、Bidi.baseIsLeftToRight()
メソッドから間違った値が返されます。 反復インデックスがテキスト範囲の外にある場合、この問題を回避するには、Bidi(AttributedCharacterIterator)
コンストラクタを呼び出す前にAttributedCharacterIterator.first()
メソッドを呼び出して、反復インデックスをリセットします。