O Java 9 terá módulos além dos pacotes. Normalmente, os idiomas têm um ou outro. E a maioria dos programadores percebe dois termos como sinônimos. Os módulos são criados sobre os pacotes, tratando-os como primitivos. Padrão composto sugere tratar primitivos e compostos uniformemente. Caso contrário, coisas ruins vão acontecer. Por exemplo, veja o projeto Valhalla, onde eles tentam adaptar o supertipo comum para tipos primitivos (valor) e de referência.
Os módulos e pacotes representam noções semanticamente separadas? Significando que é sensato ter ambos para qualquer idioma (separação de preocupações). Ou o Java precisa ter os dois como um tributo à compatibilidade com versões anteriores?
Por que introduzir um novo conceito em vez de aumentar o existente?
JSR 376 : "Sistema de módulo de plataforma Java" implementado no projeto Jigsaw .
De acordo com SOTMS
Um módulo é uma coleção nomeada e auto-descritiva de código e dados. Seu código é organizado como um conjunto de pacotes contendo tipos, como classes e interfaces Java; seus dados incluem recursos e outros tipos de informações estáticas.
O JLS evita cuidadosamente definir o que é um pacote . Da Wikipedia :
Um pacote Java é uma técnica para organizar classes Java em espaços de nomes semelhantes aos módulos do Modula, fornecendo programação modular em Java.
Eu sei que citar a Wikipedia é uma prática ruim, mas reflete um entendimento comum. Desde a entrada na programação modular:
O termo pacote às vezes é usado em vez de módulo (como em Dart, Go ou Java). Em outras implementações, esse é um conceito distinto; no Python, um pacote é uma coleção de módulos, enquanto no próximo Java 9 é planejada a introdução do novo conceito de módulo (uma coleção de pacotes com controle de acesso aprimorado).
package
é / significa / nem vai mudar para (vamos ser sinceros, muito horrível) sistemas de caminho de classe no JRE. Pergunta nº 2, que eu acho que é principalmente orientada para a opinião (é responsável , mas minha resposta e a de outra pessoa podem ser diferentes e nenhum de nós necessariamente estaria errado).
jigsaw
módulos -style são apenas uma melhoria técnica em relação aos pacotes? 3) (se não 1 e 2), é Java simplesmente (ou aparentemente) mantendo ambos os conceitos para compatibilidade com versões anteriores. Algumas dessas perguntas são respondidas, outras são principalmente orientadas para a opinião. Acho que uma edição que simplifica os esclarecimentos solicitados está em ordem aqui.