2012-01-19 5 views
3

私は新しいJavaプロジェクトを作成するときに、私のようなオプションを参照してください。Eclipseで新しいJavaプロジェクトを作成する際に使用するJREバージョンとその欠点は何ですか? Eclipseで

enter image description here

は、今私が知りたい、すべてのユーザーができるようになります私はjarファイルをエクスポートする際に考慮を使用するための最も安全な選択肢ものですこれを使って。表示されたオプションを選択した場合、誰かがJRE 1.6を持っていれば、そのjarファイルを実行できなくなるか、それとも下位互換性がありますか?

私のプロジェクトには、1.7の依存関係はありません。

答えて

5

これは非常に広い質問です。使用するJREは、要件に応じて異なります。 JRE固有の複数のプロジェクトがある場合は、プロジェクト固有のJREを使用できます。 EclipseのデフォルトJREに満足すれば、続行できます。純粋にあなたの決断です。

コンパイルレベルが1.6に設定されている限り、JRE 1.6を使用している人は1.6で実行できるはずです(コードに1.6の一部ではない1.7の機能が含まれていると、これが発生する可能性があります)。

+0

ありがとう、ちょっと知っておきたいのは、ユーザーが特定のJREを持つように明示的にロックすることができるメカニズムがあるかどうかです。ここでオプションを設定するか、これらのオプションは無関係で、すべて自分のコードに依存します。 – Johnydep

+0

特定のjdkにコンプライアンスレベルを設定すると、ユーザーが同じレベルのJRE/JDKを使用するよう強制されます。そうでない場合、UnsupportedClassVersionErrorがスローされます。あなたのコードをコンパイルするとき、特定のjdkは、コードが最終的にそのバージョンのJDK APIに従うことを意味します。このSOのリンクには例がありますhttp://stackoverflow.com/questions/1611312/java-error-bad-version-number-in-class-file-error-when-trying-to-run-cassandra – kosa

+0

これは非常に興味深い知っていること。ありがとう!! – Johnydep

3

JDK 7に特有の機能(新しいNIO.2/TheパスAPIなど)を使用すると、Java 6で動作しなくなる可能性が高くなります。さらに、Java 6はテストされ、その結果、ほとんどの(すべてではないにしろ)バグが撲滅されました。 Java 7はまだかなり新しく、リリースされてもリリース後数日で現われる厄介なバグがあり、ループの最適化が必要でした。したがって、JDK7の機能が特に必要な場合を除き、JDK6に固執することをお勧めします。一方、プロジェクトがミッションクリティカルでない場合は、ユーザーベースにJRE 7があることを前提に、新しいJDK7の機能を試してみてください。 ...

+0

私はJDK6を使用していますが、ターゲットユーザーがJDK7を実行している場合、それはまだ正しく動作するでしょうか?私は明示的にEclipseでJDKのバージョンを設定する必要がありますか?だから安全な習慣は、あなたのプロジェクトで動作する最低限のバージョンを使用することでしょうか? – Johnydep

+2

@Johnydep:はい(まあ、ほぼいつも;-))。 Javaは下位互換性を提供することを確かめているので、古いコードは新しいJRE上で実行する必要があります。その地域にはいくつかの問題がありますが、かなり稀です。一般的に、JDKのいくつかのバージョンで開発すると、これとそれ以降のバージョンで実行されます。 – sleske

+0

私はJDK7がJavaのPython3であるという感覚を与えるので、私はこの答えが好きです。 – Eric

関連する問題