I am new to Java 9 and was going though the modular video lectures by Java on YouTube. They mentioned 3 benefits of modularization- 1. No missing dependencies 2. No cyclic dependnpcies 3. No split packages.
As far as I understand about split packages is that let's say an application is dependant on multiple dependncies and let's say package abc.pqr.xyz is present in more that 1 jar. Then there is a chance that some of the classes in that package will be used from jar1 while other classes from jar2. This might lead to some problems at runtime which will be hard to debug.
Video says modularization solves this issue. But how that's what I am trying to understand?
Let's say there is test.module1 which has below module info -
module test.module1{
exports abc.pqr.xyz;
}
Another module2 with below module info-
module test.module2{
exports abc.pqr.xyz;
}
Now let's say in my application I added dependencies of both of these modules-
module test.myapp{
requires test.module1;
requires test.module2;
}
Now again I have 2 modular dependencies where there is a chance that some of the classes will be present in both of these modules. So at runtime how it will be resolved from which module to pick up the class definitions? How Java 9 will avoid split packages problem?
bridge extended to the classpath
... and it makes not sense to me. For example packagesio.confluent
from apache suffers from split package really badly, I need to import all of these jars and reading this explanation how to fix this issue does not help at all. Can someone please write some actionable steps how to resolve the issue? I have N jars with split package, I cannot adopt them. I need to somehow import them suppressing warnings/errors about issues they bear. How to do that, so that module-info.java won't complain about it? – Hammerhead