Java EE 5 に対して Netbeans で Web アプリをコンパイルしています。String.isEmpty()
関数が Java 6 でのみサポートされていることはわかっています。そうは言っても、コードで を使用してプロジェクトをコンパイルでき.isEmpty()
ます。
Java EE 5 に対してコンパイルしている場合、Netbeans が Web アプリケーションのコンパイルを許可するのはなぜですか?
コンパイラ レベルは、コンパイルに使用する JDK レベルと同じではありません。コンパイラ レベルは構文のみをチェックし、もちろん別の出力を作成します。ただし、コンパイラ自体はクラスパスで jdk を使用するため、Java 5 オプションを使用してコンパイルし、クラスパスに Java 6 jar を使用すると、コードはエラーなしでコンパイルされます。クラスパスを確認する必要があります。
多くの人が指摘しているように、Java EE のバージョンは Java SE (JDK) のバージョンと厳密に結び付いているわけではありません。ほとんどの場合、最小限の Java SE バージョンが必要ですが、それ以降のバージョンと互換性があります。
Java EE 5 仕様 (ダウンロード可能な PDF はこちら) は次のように述べています。
This specification requires that containers provide a Java Compatible™ runtime
environment, as defined by the Java 2 Platform, Standard Edition, v5.0 specification
(J2SE)
JSE バージョンは下位互換性があるため、Java 5 と互換性のあるコンテナーを使用して、Java SE 6 または Java SE 7 の上で実行できます。
プロジェクトの [プロパティ] > [ソース] > [ソース/バイナリ形式]を確認することで、Netbeans が使用している互換性レベルを確認できます。
「Java vs Java EE」についてまだ疑問がある場合は、SO で Java SE と Java EE の違いに関するいくつかの質問を探すことができます。