I read that previously but if Log4J implements modules I don't see how the nodal appenders or flume appender can work.
I also got a reply to my query about referencing dependencies that are not yet modularized and the recommendation is to only use the manifest entry and not have a module-info.java until all dependencies are modularized. > On May 9, 2017, at 12:18 AM, Remko Popma <remko.po...@gmail.com> wrote: > > > > > > (Shameless plug) Every java main() method deserves http://picocli.info >> On May 9, 2017, at 15:35, Gary Gregory <garydgreg...@gmail.com> wrote: >> >> 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... :-( > > Mark Reinhold's reasoning in his response > (http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2017-May/000695.html) > makes sense to me. > > Also not sure if there really is a problem: > "Cycles are not allowed when modules are resolved but it is possible to > create them post-resolution via the API, if needed [4][5]. Cycles are also > set up amongst all automatic modules, after resolution, to make it easier to > treat existing JAR files as modules without change [6]." > > >> >> 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