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.