Hey guys, not sure anyone tried to run tomee on java 9 but wondered if j9 module system was kind of "fixed" since it was really broken last time i tested and tried to run our simple-singleton sample today.
Have to admit I tend to think it is a feature breaiking java ecosystem but here is a few more pragmatic feedback and how we can make this module running: - (easy) ORB/corba is not exported by default so we need to check by reflection we can access it or not, I guess the fix for us is to remove corba reference from our codebase, AFAIK it is not used and no more needed. - (medium) bytecode reading: our current code base can read until java 8 bytecode and we need to upgrade xbean-asm-shaded and xbean-finder-shaded (xbean snapshot is ready). We also need to upgrade the finders we have in our codebase to ASM6 (java 9) but nothing hurting a lot - that's what we do for each new java version. - (unknown) we need all our dependencies to upgrade - (open and likely hard if it takes into account our full stack) to run the simple-singleton example I needed to add jaxb dependency (alternative is to activate the module) and open a few modules, typically: --add-modules java.logging --add-opens java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED This globally request to add to our code the missing permission in the JVM (keep in mind i ran simple-singleton which doesnt cover much of our codebase/stack). The issue is this option is on the JVM so we can hide it in tomee in catalina scripts and in arquillian through RemoteServer but for embedded tests we'll require the user to do it. We can likely rework a bit our code to not require them all (some are easy to workaround like the logging one or the GET_PACKAGE usage for @Vetoed) but when we'll start to create a module-info.java ourself and our stack we'll not just be in the unamed module merged but in several modules we'll need to maintain these references exactly like we did when we were still handling OSGi and even if maven helps a bit it breaks the ability to change a little bit the stack (it was common to upgrade cxf for instance) since it depends if cxf export is stable or not. I'm not yet sure how we want to tackle it. Good news is "yes it will work". Bad one is "yes it will mess up each version". I fear jigsaw can't be removed from java 9 anymore (not sure why to be honest) but I start to wonder if we should do a system (subclassloader?) to completely bypass it and keep user experience smooth. Anyone having some other feedback? Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com>
