Hi All, On Mon, May 8, 2017 at 10:46 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> So I keep reading up on Java modules and the more I do the more confused I > get about how this can ever work properly. > > 1. I am confused about how we are supposed to create a module and > reference something that is not yet a module. As I understand it, it will > either be an automatic module on the module path or just be in the > “unnamed” module on the class path. Well, a jar that has made no attempt to > be modularized will be known by the wrong name - essentially the jar file > name without the version so I don’t see how that can just be dropped on the > module path. Also, as I understand it in order for it to be accessed on the > class path we can’t declare a requirement on it (which makes sense I guess > since it isn’t a module), but it means our module declaration is incomplete. > For this one, this could be a case where module users will have to wrap jars in a module like some people do in OSGi: wrapping a jar to create a bundle. Eclipse ended up with a whole repository of these. Yikes. > > 2. This one scares me. The module system doesn’t allow circularities. So > picture a case where HttpClient is a module and it uses the Log4j 2 or > SLF4J API (it doesn’t really matter which). Then Log4j has an Appender that > uses HttpClient. Now you have Log4j that has an Appender that uses > HttpClient (so an optional dependency is declared) and then HttpClient uses > Log4j (and so declares that as a dependency) you now have a system that > won’t run. Even if HttpClient uses SLF4J instead you will still have a > problem if that then gets routed to Log4j. > Nothing to do about that which is what one of the items the JBoss folks where dismayed about... :-( It's good that we are finding this out early but it sure seems worse and worse :-( Gary > I’ve written to a couple of folks off list but at the moment I’m not clear > on how this can work for libraries like Log4j. > > Ralph > > > On Apr 24, 2017, at 7:58 AM, Matt Sicker <boa...@gmail.com> wrote: > > > > Support Java 9 modules sounds a lot stricter than OSGi modules. > Essentially > > what is best practices in OSGi is required in JPMS. > > > > Anyways, the ServiceLoader for log4j-api sounds reasonable. The current > > solution is basically a custom version of that with additional metadata > > (the required API version), but we can probably support that differently. > > From what I recall, it's basically two service loaders combined into one. > > > > On 24 April 2017 at 09:22, Mikael Ståldal <mikael.stal...@magine.com> > wrote: > > > >> Doing things for Java 9 modules that are beneficial also in Java 7/8 is > >> good. > >> > >> Using Java ServiceLoader seems like a good idea, and we should > definitely > >> do it if required to support latest SLF4J. > >> > >> I am not so sure about refactoring package the structure though. > Especially > >> not if doing so will break BC. > >> > >> On Mon, Apr 24, 2017 at 4:00 PM, Ralph Goers < > ralph.go...@dslextreme.com> > >> wrote: > >> > >>> It is and it isn’t. I’ve been working on module support all weekend. > >>> There are a couple of changes that must be made before modules can be > >>> effectively implemented and IMO it is worth doing them whether we > support > >>> modules or not. Note that none of these changes require Java 9. > >>> > >>> 1. Modify the API provider mechanism to use Java ServiceLoader. Modules > >>> require that the kind of mechanism we are using be implemented with > >>> ServiceLoader. However, our current implementation makes this easy and > >>> creating a binding for for an implementation is dirt simple. I will be > >>> checking something in for this in the next few days. > >>> 2. Refactor our existing package structures. Modules essentially make > >>> everything in a package public. We currently have a mixture of public > and > >>> private classes in both our API and in core. We need to go through all > >>> these classes and determine which are really public and move the > private > >>> ones to a different package. This isn’t trivial. I think there is > >> benefit > >>> in doing this whether we support modules or not. Right now many methods > >>> have “consider this private” in the header. But some classes in API > that > >>> are marked this way are used by Core, which means they are required to > be > >>> public to an implementation. These kinds of classes should be in the > spi > >>> package. > >>> > >>> I should also note that SLF4J now supports Java modules in the 1.8.0 > >> alpha > >>> releases. I tried integrating with that, and was somewhat successful, > but > >>> since Logback isn’t modularized our build fails in the various points > >> where > >>> we have tests that use it. SLF4J also changed its binding mechanism to > >> use > >>> SeviceLoader and it will ignore implementations that use the current > >>> binding mechanism. I have implemented support for that and will be > >>> committing that in the next few days as well. > >>> > >>> Ralph > >>> > >>>> On Apr 24, 2017, at 3:15 AM, Mikael Ståldal < > mikael.stal...@magine.com > >>> > >>> wrote: > >>>> > >>>> I think that it might be a bit early for us to do too much work for > >>>> supporting Java 9 modules. > >>>> > >>>> On Mon, Apr 24, 2017 at 12:03 PM, Mikael Ståldal < > >>> mikael.stal...@magine.com> > >>>> wrote: > >>>> > >>>>> This option will only be supported in JDK 9. > >>>>> It will be removed in JDK 10. > >>>>> > >>>>> > >>>>> On Sun, Apr 23, 2017 at 6:51 PM, Gary Gregory < > garydgreg...@gmail.com > >>> > >>>>> wrote: > >>>>> > >>>>>> The "big kill switch" straight from the source: > >>>>>> http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017- > >>> March/011763.html > >>>>>> > >>>>>> --permit-illegal-access > >>>>>> > >>>>>> Gary > >>>>>> > >>>>>> On Apr 23, 2017 9:44 AM, "Matt Sicker" <boa...@gmail.com> wrote: > >>>>>> > >>>>>>> “I have too often seen APIs that seemed like a good idea at the > time > >>> but > >>>>>>> were, in fact, woefully deficient, baked into the Java Platform > >> where > >>>>>> they > >>>>>>> fester for ages, cause pain to all who use it, and torment those > who > >>>>>>> maintain it. I will not let that happen > >>>>>>> Here“ - Mark Reinhold > >>>>>>> > >>>>>>> That sounds like JPMS in general to be honest, but I'm just being > >>>>>> cynical. > >>>>>>> ;) > >>>>>>> > >>>>>>> On 23 April 2017 at 11:34, Gary Gregory <garydgreg...@gmail.com> > >>> wrote: > >>>>>>> > >>>>>>>> On Apr 23, 2017 9:19 AM, "Matt Sicker" <boa...@gmail.com> wrote: > >>>>>>>> > >>>>>>>> One potential scenario I see is that many users may just end up > >>>>>> disabling > >>>>>>>> JPMS in all their applications to the point that it's > significantly > >>>>>>> revised > >>>>>>>> or scaled back for Java 10 or later. > >>>>>>>> > >>>>>>>> > >>>>>>>> That's my plan the first time I see an IllegalAccessError :-( what > >> is > >>>>>> the > >>>>>>>> command line kill switch called? > >>>>>>>> > >>>>>>>> Gary > >>>>>>>> > >>>>>>>> > >>>>>>>> On 23 April 2017 at 11:04, Gary Gregory <garydgreg...@gmail.com> > >>>>>> wrote: > >>>>>>>> > >>>>>>>>> Worse: Are Java 9 modules its Titanic? > >>>>>>>>> https://developer.jboss.org/blogs/scott.stark/2017/04/14/ > >>>>>>>>> critical-deficiencies-in-jigsawjsr-376-java-platform- > >>>>>>>>> module-system-ec-member-concerns > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> Gary > >>>>>>>>> > >>>>>>>>> On Apr 22, 2017 5:02 PM, "Ralph Goers" < > >> ralph.go...@dslextreme.com> > >>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> This is an interesting look at the problems faced in getting > >>>>>>> Hibernate > >>>>>>>> to > >>>>>>>>>> work. http://stackoverflow.com/questions/43258796/hibernate- > >>>>>>>>>> support-for-java-9 <http://stackoverflow.com/ > >>>>>>>>> questions/43258796/hibernate- > >>>>>>>>>> support-for-java-9>. > >>>>>>>>>> > >>>>>>>>>> The issue with the compile problem with javax.xml are familiar > to > >>>>>> me > >>>>>>> - > >>>>>>>> I > >>>>>>>>>> had to modify some Log4j code to not use the DataType converter > >>>>>> as it > >>>>>>>>> isn’t > >>>>>>>>>> present in the java.base module. > >>>>>>>>>> > >>>>>>>>>> Ralph > >>>>>>>>>> > >>>>>>>>>>> On Apr 22, 2017, at 4:40 PM, Ralph Goers < > >>>>>>> ralph.go...@dslextreme.com > >>>>>>>>> > >>>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>> Oh - I just reread this. S far as I know Java 9 has a scheduled > >>>>>>>> release > >>>>>>>>>> date. It is July 27. > >>>>>>>>>>> > >>>>>>>>>>> BTW - here is the complete set of features - > >>>>>>>> https://docs.oracle.com/ > >>>>>>>>>> javase/9/whatsnew/toc.htm#JSNEW-GUID-BA9D8AF6-E706-4327- > >>>>>>>>> 8909-F6747B8F35C5 > >>>>>>>>>> <https://docs.oracle.com/javase/9/whatsnew/toc.htm# > >>>>>>>>>> JSNEW-GUID-BA9D8AF6-E706-4327-8909-F6747B8F35C5>. > >>>>>>>>>>> > >>>>>>>>>>> Ralph > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>> On Apr 22, 2017, at 10:45 AM, Gary Gregory < > >>>>>>> garydgreg...@gmail.com> > >>>>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> Let me play devil's advocate here for a sec... > >>>>>>>>>>>> > >>>>>>>>>>>> Java 9 modules and this auto naming business sounds painful. > Is > >>>>>>>> there > >>>>>>>>>> any > >>>>>>>>>>>> chance that this feature will be ignored like > >>>>>> java.util.logging is > >>>>>>>> or > >>>>>>>>>>>> should be? > >>>>>>>>>>>> > >>>>>>>>>>>> Can we stop tying ourselves into unreleased pretzels over a > >>>>>> moving > >>>>>>>>>> target > >>>>>>>>>>>> since we do not know when Java 9 will be out. > >>>>>>>>>>>> > >>>>>>>>>>>> Can't we refocus this energy on getting the best out of Java > 8? > >>>>>>>>>>>> > >>>>>>>>>>>> Ducking from incoming tomatoes, > >>>>>>>>>>>> Gary > >>>>>>>>>>>> > >>>>>>>>>>>> On Fri, Apr 21, 2017 at 8:48 PM, Matt Sicker < > boa...@gmail.com > >>>>>>> > >>>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>>> I'm a fan of splitting packages up better due to OSGi support > >>>>>> in > >>>>>>>> the > >>>>>>>>>> first > >>>>>>>>>>>>> place. Hierarchical packaging is definitely something new > >>>>>> (OSGi > >>>>>>>>> doesn't > >>>>>>>>>>>>> care about that; each package is considered separately), and > >>>>>> it > >>>>>>>> could > >>>>>>>>>> help > >>>>>>>>>>>>> in making some classes more organized. > >>>>>>>>>>>>> > >>>>>>>>>>>>> On 21 April 2017 at 14:55, Stefan Bodewig < > bode...@apache.org > >>>>>>> > >>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>>> On 2017-04-21, Ralph Goers wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I have not started work on this yet, but from looking at > >>>>>>>>>>>>>>> http://blog.joda.org/2017/04/j > >>>>>> ava-9-modules-jpms-basics.html > >>>>>>>>>>>>>>> <http://blog.joda.org/2017/04/ > >>>>>> java-9-modules-jpms-basics.html> > >>>>>>>> it > >>>>>>>>>>>>>>> seems we are going to have problems with a) plugins that > >>>>>> are in > >>>>>>>>>>>>>>> different jars (modules) that use the same namespace and b) > >>>>>>>>>> log4j-core > >>>>>>>>>>>>>>> as it currently exists. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Item b is a problem because the module-info for log4j-core > >>>>>>> should > >>>>>>>>>> have > >>>>>>>>>>>>>>> a requires ONLY for log4j-api. For example, I’m not sure > >>>>>> how we > >>>>>>>> can > >>>>>>>>>>>>>>> have an optional dependency on Jackson. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> requires static module-name-of-jackson; > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> http://cr.openjdk.java.net/~mr/jigsaw/spec/lang-vm.html > >>>>>> section > >>>>>>>>> 1.1.1 > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> The requires keyword may be followed by the modifier > >>>>>> static. > >>>>>>>> This > >>>>>>>>>>>>>> specifies that the dependence, while mandatory at compile > >>>>>>> time, > >>>>>>>> is > >>>>>>>>>>>>>> optional at run time. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Of course "requires static" captures this way more clearly > >>>>>> than > >>>>>>>>>> "require > >>>>>>>>>>>>>> optional" which was proposed intially > >>>>>>>>>>>>>> http://openjdk.java.net/projects/jigsaw/doc/topics/ > >>>>>>> optional.html > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> :-) > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Without knowing the structure of log4j too well I agree the > >>>>>>> strict > >>>>>>>>>>>>>> package hierarchies mandated by JPMS will be a problem. > >>>>>> Probably > >>>>>>>> for > >>>>>>>>>>>>>> many other projects with more than one artifact as well. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Stefan > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> -- > >>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> -- > >>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >>>>>>>>>>>> Java Persistence with Hibernate, Second Edition > >>>>>>>>>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >>>>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > >>>>>>>>>> linkCode=as2&tag=garygregory-20&linkId= > >>>>>>> cadb800f39946ec62ea2b1af9fe6a2 > >>>>>>>> b8> > >>>>>>>>>>>> > >>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>> 1617290459> > >>>>>>>>>>>> JUnit in Action, Second Edition > >>>>>>>>>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >>>>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > >>>>>>>>>> linkCode=as2&tag=garygregory-20&linkId= > >>>>>>> 31ecd1f6b6d1eaf8886ac902a24de4 > >>>>>>>>> 18%22 > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>> 1935182021> > >>>>>>>>>>>> Spring Batch in Action > >>>>>>>>>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >>>>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > >>>>>>>>>> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > >>>>>>>>>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >>>>>>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >>>>>>>>> garygregory-20&l=am2&o=1&a= > >>>>>>>>>> 1935182951> > >>>>>>>>>>>> Blog: http://garygregory.wordpress.com > >>>>>>>>>>>> Home: http://garygregory.com/ > >>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> -- > >>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> [image: MagineTV] > >>>>> > >>>>> *Mikael Ståldal* > >>>>> Senior software developer > >>>>> > >>>>> *Magine TV* > >>>>> mikael.stal...@magine.com > >>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > >>>>> > >>>>> Privileged and/or Confidential Information may be contained in this > >>>>> message. If you are not the addressee indicated in this message > >>>>> (or responsible for delivery of the message to such a person), you > may > >>> not > >>>>> copy or deliver this message to anyone. In such case, > >>>>> you should destroy this message and kindly notify the sender by reply > >>>>> email. > >>>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> [image: MagineTV] > >>>> > >>>> *Mikael Ståldal* > >>>> Senior software developer > >>>> > >>>> *Magine TV* > >>>> mikael.stal...@magine.com > >>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > >>>> > >>>> Privileged and/or Confidential Information may be contained in this > >>>> message. If you are not the addressee indicated in this message > >>>> (or responsible for delivery of the message to such a person), you may > >>> not > >>>> copy or deliver this message to anyone. In such case, > >>>> you should destroy this message and kindly notify the sender by reply > >>>> email. > >>> > >>> > >>> > >> > >> > >> -- > >> [image: MagineTV] > >> > >> *Mikael Ståldal* > >> Senior software developer > >> > >> *Magine TV* > >> mikael.stal...@magine.com > >> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > >> > >> Privileged and/or Confidential Information may be contained in this > >> message. If you are not the addressee indicated in this message > >> (or responsible for delivery of the message to such a person), you may > not > >> copy or deliver this message to anyone. In such case, > >> you should destroy this message and kindly notify the sender by reply > >> email. > >> > > > > > > > > -- > > Matt Sicker <boa...@gmail.com> > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> JUnit in Action, Second Edition <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> Spring Batch in Action <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory