3

複数のプラットフォームでファイルシステムイベントを監視する必要があるプログラムを作成しています。Java 7には、さまざまなタイプのファイルシステムイベントハンドラー( 、など)WatchServiceの抽象化として機能する新しい標準ライブラリが含まれています。inotifyFSEventsFileSystemWatcher

Java 7コンパイラでコンパイルされたコードを実行するには、Java 7 JVMが必要ですか?

もしそうなら、JVM 7がインストールされていない/そのプラットフォームで利用できないクライアントマシン(古いOSX、Windows XPなど)であらゆる種類の問題が発生しますか?

4

4 に答える 4

5

Java 7コンパイラでコンパイルされたコードを実行するには、Java 7 JVMが必要ですか?

はい。

Java 7コンパイラを使用してコンパイルする-target 6.0ことはできますが、コードがJava 7に依存している場合(特定のクラスライブラリ...)、それは役に立ちません。

もしそうなら、JVM 7がインストールされていない/そのプラットフォームで利用できないクライアントマシン(古いOSX、Windows XPなど)であらゆる種類の問題が発生しますか?

はい。それは確かに「インストールされた」フロントの場合です。コードがJava7に依存している場合、最良のオプションは、顧客にJava7JVMをインストールして実行させることです。(Javaの複数のバージョンを並べてインストールするのは簡単なことであり、他のJavaアプリがJava 7 JVMで正常に動作する可能性があります。)

「利用可能な」面では、Oracleが実際にJava 7をリリースするまで、どのプラットフォームがサポートされるかはわかりません。サポートされていない重要なプラットフォームがある場合は、次のいずれかの可能性があります。

  • 誰かがOpenJDK7をプラットフォームに移植するか、または
  • サードパーティベンダー(IBMなど)は Java7製品でそれをサポートします。

(しかし、私はWindows pre-XPをサポートしている人には賭けません、そして古いバージョンのOSXは疑わしいです、IMO。)


私のアドバイスは、Java7に「ジャンプ」しないことです...まだ...古いプラットフォームをサポートすることが重要な要件である場合。

于 2011-03-13T23:25:57.963 に答える
2

はい、いいえ、Java7バージョンはJavaバイトコード仕様です。フラグを使用して古いバージョンのバイトコードにコンパイルできますが、-targetJava 7コアライブラリを使用するには、Java7ディストリビューションが必要です。

OSX用のJava7を提供するプロジェクトが進行中です。私はそれを使用しましたが、それは私にとってはかなりうまくいきました。 Mac用のバイナリJava7

于 2011-03-13T23:25:44.667 に答える
1

Java7コンパイラはJDK7以下のコードをコンパイルしますが、JDK6以下はJDK7のオブジェクト/クラスを使用するコードをコンパイルできません。

Java 7コンパイラでコンパイルされたコードを実行するには、Java 7 JVMが必要ですか?

はい!!!!

もしそうなら、JVM 7がインストールされていない/そのプラットフォームで利用できないクライアントマシン(古いOSX、Windows XPなど)であらゆる種類の問題が発生しますか?

はい。クラスのバージョン番号は、Java6以下のJVMに必要なバージョン番号よりも高くなります。JVMをJava7にアップグレードするには、クライアントに通知する必要があります。

于 2011-03-13T23:29:38.110 に答える
1

いいえ、Java6VMでJava7用にコンパイルされたコードを実行する際にあらゆる種類の問題が発生することはありません。問題は1種類だけです。Java6VMでは、クラスファイルのバージョン番号がJava 6 VMが認識しているものよりも高いことを認識するため、コードの実行が拒否されます。簡単に診断できる単一のエラーが発生します。

顧客はコードを使用できなくなりますが、少なくとも微妙な問題の原因を特定しようとはしません。

于 2011-03-14T01:02:50.750 に答える