They usually flow differently. com.mycompany.myproduct.Widget is an interface, and com.mycompany.myproduct.fancy.Button implements it.
There are, however, big exceptions to this general rule, and there is no reason why this should be the rule.
Packages themselves are just folders, with the exception of the rules of primitive access to methods and fields.
What is much more important is the relationship between the bundles, that is (in their basic form) banks. The presence of jar A depends on jar B, depending on jar C, which again depends on jar A, is a real problem. If you have the same circle between packages in the same bank, it can cause disappointment for people who read or debug your code or read it by elitists, but this is not a big problem.
source share