Java 9 tendrá módulos además de paquetes. Por lo general, los idiomas tienen uno u otro. Y la mayoría de los programadores perciben dos términos como sinónimos. Los módulos están construidos sobre paquetes, tratándolos como primitivos. El patrón compuesto sugiere tratar los primitivos y los compuestos de manera uniforme. De lo contrario, sucederán cosas malas. Por ejemplo, mire el proyecto Valhalla, donde intentan adaptar el supertipo común para primitivo (valor) y tipos de referencia.
¿Los módulos y paquetes representan nociones semánticamente separadas? Lo que significa que es sensato tener ambos para cualquier idioma (separación de preocupaciones). ¿O Java tiene que tener ambos como tributo a la compatibilidad con versiones anteriores?
¿Por qué introducir un nuevo concepto en lugar de aumentar el existente?
JSR 376 : "Sistema de módulo de plataforma Java" implementado dentro del proyecto Jigsaw .
De acuerdo con SOTMS
Un módulo es una colección de código y datos con nombre y autodescripción. Su código está organizado como un conjunto de paquetes que contienen tipos, es decir, clases e interfaces Java; Sus datos incluyen recursos y otros tipos de información estática.
JLS evita cuidadosamente definir qué es un paquete . De Wikipedia :
Un paquete de Java es una técnica para organizar clases de Java en espacios de nombres similares a los módulos de Modula, proporcionando programación modular en Java.
Sé que citar Wikipedia es una mala práctica, pero refleja un entendimiento común. Desde la entrada en programación modular:
El término paquete a veces se usa en lugar de módulo (como en Dart, Go o Java). En otras implementaciones, este es un concepto distinto; en Python, un paquete es una colección de módulos, mientras que en el próximo Java 9 se planea la introducción del nuevo concepto de módulo (una colección de paquetes con control de acceso mejorado).
package
es / hace / significa, ni van a cambiar a sistemas de classpath (seamos sinceros, bastante horribles) en el JRE. Pregunta # 2 Creo que está orientada principalmente a la opinión (es responsable , pero mi respuesta y la de otra persona pueden diferir y ninguno de nosotros necesariamente estaría equivocado).
jigsaw
módulos de estilo solo una mejora técnica sobre los paquetes? 3) (si no es 1 y si es 2), es Java simplemente (o aparentemente) manteniendo ambos conceptos por compatibilidad con versiones anteriores. Algunas de estas preguntas son respondibles, algunas están principalmente orientadas a la opinión. Creo que una edición que simplifica las aclaraciones buscadas está en orden aquí.