私はしばらくこのことをしてきましたが、今私は考え始めました。なぜjavax.servlet.http.HttpServletRequestの標準的な定義がないのですか?
HttpServletRequestは、Java標準で定義されたインタフェースです。なぜ我々は常に(アパッチを使用して)以下のような、でもコンパイルのために、具体的な、それのサードパーティ製の定義が必要です:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
これはjavaxのを使用している純粋な標準、ベンダーに依存しないコードを書くことを意味しています。サーブレットは不可能ですか?
P.S.私はApacheの代わりにGlassfishを手に入れることができます。しかし、これは、共通のインターフェイスにコーディングするのではなく、別の具体的な実装を使用することを意味します。
P.P.S.私の質問をさらに明確にしましょう。 HttpServletRequestインターフェース(と私は実装について話していません)は、ApacheとGlassfishの両方のライブラリーで定義されています。 1つはApache Software Foundationにライセンスされ、もう1つはOracleによって著作権が保護されています。標準的なHttpServletRequestインターフェイスのようなものはありますか?
P.P.P.S.今私は私の質問をさらに洗練することができるように見えます。規格が、複数のベンダーの間にバラツキがないようにインターフェイスをきちんと定義している場合、それを標準ライブラリの一部にしないのはなぜですか?なぜ真実の複数のソースを許可するのですか?
あなたの依存関係の例には、Apacheに関連する** nothing **があります。 – Kayaman
_Java標準を定義します。 –
私は、3.0.1 jar(私が見つけたもの)にApacheの実装が含まれているという事実が混乱していると思います。しかし、たとえば3.0-alpha-1のjarを見ると、javaxパッケージ(つまり標準API) –