Java 9には、パッケージに加えてモジュールがあります。通常、言語にはどちらか一方があります。そして、ほとんどのプログラマーは 2つの用語を同義語として認識しています。モジュールはパッケージの上に構築され、それらをプリミティブとして扱います。複合パターンは、プリミティブと複合物を均一に処理することを提案します。そうしないと、悪いことが起こります。たとえば、プロジェクトValhallaを見てください。そこでは、プリミティブ(値)および参照型の共通スーパータイプを後付けしようとしています。
モジュールとパッケージは意味的に分離した概念を表していますか?それを意味することの両方を持つことが賢明である任意の言語(関心事の分離)。または、Javaは後方互換性への賛辞として両方を持たなければなりませんか?
既存の概念を補強するのではなく、なぜ新しい概念を導入するのですか?
JSR 376:プロジェクトJigsaw内に実装された「Javaプラットフォームモジュールシステム」。
SOTMSによると
モジュールは、コードとデータの名前付きの自己記述型コレクションです。そのコードは、Javaクラスとインターフェースなどのタイプを含むパッケージのセットとして編成されています。そのデータには、リソースおよびその他の種類の静的情報が含まれます。
JLSは、パッケージとは何かを定義することを慎重に避けます。ウィキペディアから:
Javaパッケージは、JavaクラスをModulaのモジュールに似た名前空間に編成するための手法で、Javaでのモジュール式プログラミングを提供します。
ウィキペディアを引用するのは悪い習慣であることは知っていますが、それは一般的な理解を反映しています。モジュラープログラミングのエントリから:
パッケージという用語は、モジュールの代わりに使用されることがあります(Dart、Go、またはJavaなど)。他の実装では、これは明確な概念です。Pythonではパッケージはモジュールのコレクションですが、今後のJava 9では新しいモジュールの概念(強化されたアクセス制御を備えたパッケージのコレクション)の導入が計画されています。
package
もの/ 変更/意味を変更しようとしておらず、JREのクラスパスシステムに変更しようとはしていません。質問#2私の感触があり、主に意見指向(それはません釈明が、私の答えと他の誰かのは異なる場合がありますし、どちらも私たちの必ずしも間違っているだろう)。
jigsaw
styleモジュールは単なるパッケージの技術的な改善ですか?3)(1ではない場合、および2である場合)、Javaは単純に(または一見)下位互換性のために両方の概念を保持します。これらの質問の一部は回答可能であり、一部は主に意見志向です。ここでは、求めている明確化を簡素化する編集が整頓されていると思います。