Java 9 will have modules in addition to packages. Usually languages have one or the other. And most programmers perceive two terms as synonyms.
Modules are built on top of packages, treating them as primitives.
Composite pattern suggests to treat primitives and composites uniformly. Otherwise bad things will happen. For example, look at project Valhalla, where they try to retrofit common supertype for primitive (value) and reference types.
Do modules and packages represent semantically separate notions?
Meaning it is sensible to have both for any language (separation of concerns). Or Java has to have both as a tribute to backward compatibility?
Why introduce a new concept instead of augmenting the existing one?
JSR 376: "Java platform module system" implemented within project Jigsaw.
According to SOTMS
A module is a named, self-describing collection of code and data. Its code is organized as a set of packages containing types, i.e., Java classes and interfaces; its data includes resources and other kinds of static information.
JLS carefully avoids defining what is a package. From Wikipedia:
A Java package is a technique for organizing Java classes into namespaces similar to the modules of Modula, providing modular programming in Java.
I know that quoting Wikipedia is a bad practice, but it reflects common understanding. From the entry on modular programming:
The term package is sometimes used instead of module (as in Dart, Go, or Java). In other implementations, this is a distinct concept; in Python a package is a collection of modules, while in the upcoming Java 9 the introduction of the new module concept (a collection of packages with enhanced access control) is planned.
jigsaw
-style modules just a technical improvement over packages? 3) (if not 1 and if 2), is Java simply (or seemingly) keeping both concepts for backward compatibility. Some of these questions are answerable, some are primarily opinion-oriented. I think an edit simplifying the clarification(s) sought is in order here.package
is/does/means, nor are they going to change to (let's face it, pretty horrible) classpath system(s) in the JRE. Question #2 I feel is primarily opinion-oriented (it's answerable, but my answer and someone else's may differ and neither of us would necessarily be wrong).