Java
Java SE
次のリストには、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が追加されており、クラス・ローディング処理に対するよりきめ細かいロック・メカニズムとパラレル・ローディングがサポートされています。カスタム・クラス・ローダーでこの機能を利用する場合、推奨されるモデルや要件について『Class Loader API Modifications for Deadlock Fix』ドキュメントを参照し、これに従って実装する必要があります。分野: API:AWT
java.awt.Cursorクラスには"predefined"と呼ばれる"保護された静的フィールド"が含まれていました。このフィールドは削除されました。分野: API:AWT
java.awt.Color.darker()メソッドとjava.awt.Color.lighter()メソッドによって維持されるようになりました。
javac、HotSpot(および関連ツール)、Java SE 7 APIの実装に対する変更が含まれています。
Java SEへの変更は、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を使用したBlowfish、DES、DESede、AES ECBモードとPKCS5Paddingを使用したAES、DES、DESede ECBモードとNoPaddingを使用したAES、DES、DESede
分野:JCE
Cipher.getInstance("AES/CTR/NoPadding")コール)を使用したAES暗号化がサポートされるようになりました。分野:JCE
CKM_SSL3_KEY_AND_MAC_DERIVECKM_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環境変数にレガシー・ランタイムへのパスが含まれる場合、LD_LIBRARY_PATHとバリアント型をSolarisに設定することで、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
jinfojmapjstack -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セッションを使用して認証が実行されます。このため、あるユーザー名とパスワードをブラウザに提供した後で、別のユーザー名とパスワードを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の欠陥というよりも、ウィンドウ・マネージャのバグである点に注意してください。詳しくは、CR 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(OEL)5.6以前に影響を与えることがわかっています。年代の近いその他のバージョンにも、同様の影響が及ぶ場合があります。この問題の解決策は、0.9.3以降のバージョンのXrenderライブラリをインストールするか、新しいLinuxディストリビューション(OEL 6など)にアップグレードすることです。XrenderパイプラインはJDK 7ではデフォルトで無効化されていますが、システム・プロパティに"-Dsun.java2d.xrender=True"を設定することで、有効化できます。こうすることで、このバグが存在しないことを実装から確認できない場合、Xrenderバグに関する警告が通知されます。分野:API:テキスト
Bidi(AttributedCharacterIterator)コンストラクタにチェックインされます。インデックスが最初の文字に設定されていない場合、Bidi.baseIsLeftToRight()メソッドから間違った値が返されます。 反復インデックスがテキスト範囲の外にある場合、この問題を回避するには、Bidi(AttributedCharacterIterator)コンストラクタを呼び出す前にAttributedCharacterIterator.first()メソッドを呼び出して、反復インデックスをリセットします。