Java EE は、実際にはさまざまなテクノロジーの仕様のセットです。通常、各仕様には API (例: javax.servlet.*、javax.ejb.* など) があり、さまざまなベンダー (例: IBM websphere、JBoss、Weblogic など) によって実装されています。アイデアは、一度だけコードを学習して記述することです。 、ただし、さまざまなベンダーの実装に関するコードと知識を使用できます (多少の調整が必要です)。
war をコンパイルするときは、通常、クラスパスに特定のバージョンの java ee api コンポーネント (例: java-servlet-2.5) を含める必要があります (コンパイル目的のみ - 必ずしもパッケージ化する必要はありません)。API コンポーネントは、多くの場合、特定のバージョンの Java SE に依存しています (例: API/ベンダーの実装がジェネリックを使用している場合、Java SE 5 以降が必要です)。
Java EE には下位互換性が必要です。したがって、Java EE 6 API に対する war をコンパイルしてパッケージ化すると、Java EE 7 コンテナーで実行されます。
Java EE 7 でコードを実行するために必ずしも Java SE 7 API を使用する必要はありません。古いバージョンの Java EE API (したがって、古い Java SE) に対していつでも戦争をコンパイルできます。新機能は、API の最新バージョンに対してコンパイルする場合にのみ使用できます。