Good point, Romain. We need to look at what to do to make sure all artifacts are included and transformed if this becomes a cxf module.
BTW, Spring 6 GA supports jakarta ee9 will come in Q4 2022 : https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6 On Fri, Sep 3, 2021 at 6:20 PM Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > > > > Le ven. 3 sept. 2021 à 11:30, Jim Ma <mail2ji...@gmail.com> a écrit : > >> >> >> On Wed, Aug 25, 2021 at 9:39 PM Romain Manni-Bucau <rmannibu...@gmail.com> >> wrote: >> >>> >>> >>> Le mer. 25 août 2021 à 13:39, Jim Ma <mail2ji...@gmail.com> a écrit : >>> >>>> >>>> >>>> On Fri, Aug 20, 2021 at 2:10 PM Romain Manni-Bucau < >>>> rmannibu...@gmail.com> wrote: >>>> >>>>> >>>>> >>>>> Le jeu. 19 août 2021 à 22:45, Andriy Redko <drr...@gmail.com> a >>>>> écrit : >>>>> >>>>>> Hi Romain, >>>>>> >>>>>> Sorry for the delayed response. I have been thinking about your (and >>>>>> Jim) suggestions >>>>>> and came to surprising conclusion: do we actually need to officially >>>>>> release anything >>>>>> to shade/overwrite javax <-> jakarta? Generally, we could shade >>>>>> Spring or/and any other >>>>>> dependency but we would certainly not bundle it as part of CXF >>>>>> distribution (I hope you >>>>>> would agree), so not really useful unless we publish them. As such, >>>>>> probably the best >>>>>> interim solution is to document what it takes to shade CXF (javax <-> >>>>>> jakarta) and let >>>>>> the end users (application/service developers) use that when needed? >>>>>> In this case >>>>>> basically CXF, Spring, Geronimo, Swagger, ... would follow the same >>>>>> shading rules. At >>>>>> least, we could start with that (documenting the shading process) and >>>>>> likely get some >>>>>> early feedback while working on full-fledged support? WDYT? >>>>>> >>>>> >>>>> >>>>> This is what is done and makes it hard for nothing to maintain/fix - >>>>> dont even look at tomee solution for shading please ;) - IMHO. >>>>> Being said it costs nothing to cxf to produce jakarta jars, that it >>>>> makes it ee 9 compliant and more consistent for all but spring usage (ee >>>>> integrators, plain tomcat 10 users etc...), I think it is worth doing it, >>>>> at minimum. >>>>> At least a jakarta jaxrs (over jakarta servlet) bundle would be a good >>>>> progress, not sure jaxws and other parts would be helpful since they tend >>>>> to be in maintainance mode from what I saw. >>>>> So IMHO the best is a shade/relocation in the parent to deliver a >>>>> jakarta artifact for all module + a few jakarta bom. But if too much - >>>>> which I can see/hear - a jakarta jaxrs bundle would work too short term. >>>>> >>>> >>>> I agree to start with something to preview and collect more ideas to >>>> support ee9. It's good to have a branch to really start something for this >>>> topic. >>>> @Romain, do you have a prototype with shading or other tools for a >>>> jakarta jaxrs bundle or just some basic idea that we can have a look at ? >>>> >>> >>> >>> Not ready for cxf but looking at meecrowave-core pom you would have some >>> idea. >>> I just suspect pom deps need some refinement like with/without the >>> client (it is useless with java 11 now and less and less desired AFAIK). >>> >> >> @Romain Manni-Bucau <rmannibu...@gmail.com> Thanks for the update. I >> looked at the meecrowave-core pom and understood how it transforms package >> names with the shade plugin. Both shade plugin or eclipse transformer tool >> works for this purpose . >> >> I created one prototype project which pulls in cxf dependencies, >> transforms to jakarta namespace and installs to local maven repository : >> https://github.com/jimma/cxf-ee9-transformer >> This doesn't need more effort and no need the code/dependency change >> which breaks/mixes with javax support codebase. It can be simply added with >> another maven module in cxf repo to produce transformed jakata cxf >> artifacts or binary distribution. Your thoughts ? >> > > If not all artifacts are proposed with jakarta support it is an option > otherwise it would need a build module to synchronize this submodule(s) to > ensure none are forgotten - this is where I prefer the classifier approach > even if it has this exclusion pitfalls - but cxf has it anyway due to its > transitive dependencies so not worse IMHO ;). > > >> >> > >> >> >> >> >>> >>> >>>> Thanks, >>>> Jim >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>> >>>>> >>>>>> Thank you. >>>>>> >>>>>> Best Regards, >>>>>> Andriy Redko >>>>>> >>>>>> >>>>>> RMB> I'm not sure I see why you need spring to start this work. The >>>>>> expected is >>>>>> RMB> there already so spring module can still rely on javax, be made >>>>>> jakarta >>>>>> RMB> friendly using shade plugin or alike and that's it until a >>>>>> spring native >>>>>> RMB> integration is there. >>>>>> RMB> Worse case cxf-spring will not be usable with jakarta - which >>>>>> still enabled >>>>>> RMB> all other usages, best case if spring makes the transition >>>>>> smooth is that >>>>>> RMB> it will work smoothly without more investment than for the rest >>>>>> of the >>>>>> RMB> build. >>>>>> RMB> The pro of that options is that it will reduce the number of >>>>>> unofficial cxf >>>>>> RMB> relocations sooner IMHO. >>>>>> >>>>>> RMB> Romain Manni-Bucau >>>>>> RMB> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>>>> RMB> <https://rmannibucau.metawerx.net/> | Old Blog >>>>>> RMB> <http://rmannibucau.wordpress.com> | Github < >>>>>> https://github.com/rmannibucau> | >>>>>> RMB> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book >>>>>> RMB> < >>>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance >>>>>> > >>>>>> >>>>>> >>>>>> RMB> Le lun. 16 août 2021 à 23:40, Andriy Redko <drr...@gmail.com> a >>>>>> écrit : >>>>>> >>>>>> >> Hi Jim, >>>>>> >>>>>> >> I will try to answer your questions, other guys will definitely >>>>>> share more >>>>>> >> thoughts, please see mine inlined. >>>>>> >>>>>> >> >> What's the task for JDK-17 LTS preparation ? Do we need to >>>>>> support >>>>>> >> build 3.5.0 with JDK-17 ? >>>>>> >>>>>> >> Build + All tests are green. >>>>>> >> Apache Karaf 4.3.3 will support JDK17 so our OSGi test suites will >>>>>> pass. >>>>>> >> Besides that, there is still some work to do [1] but at least we >>>>>> have >>>>>> >> workarounds. >>>>>> >>>>>> >> >> For Jakarta ee9 support branch 4.x with source code change to >>>>>> support >>>>>> >> jakarta namespace , we have to wait for spring and other >>>>>> >> >> third party dependencies jakarta ee9 ready. Now we don't know >>>>>> when >>>>>> >> these dependencies are all ready and we can start this work. >>>>>> >>>>>> >> This is correct, the earliest we could expect something is Q4/2021 >>>>>> (fe >>>>>> >> Spring). >>>>>> >>>>>> >> >> Given there is no features added in Jakarta ee 9.1 besides the >>>>>> >> namespace change, we can provide the jakarta calssfier maven >>>>>> artifacts >>>>>> >> >> and binary release in 3.6.x or 4.x with transformation or other >>>>>> better >>>>>> >> approach will be enough.We provide jakarta ee9 support early, >>>>>> >> >> then we can get more feedback on this topic. >>>>>> >>>>>> >> It is definitely the option we have among others to discuss. I >>>>>> have no >>>>>> >> doubts that everyone has rough idea of the pros and cons >>>>>> >> each option has, as the team we are trying to pick the best path >>>>>> forward. >>>>>> >> Jakarta EE 10 is coming in Q1/2022 [2], we should keep it >>>>>> >> in mind as well. >>>>>> >>>>>> >> Thank you! >>>>>> >>>>>> >> [1] https://issues.apache.org/jira/browse/CXF-8407 >>>>>> >> [2] >>>>>> >> >>>>>> https://eclipse-ee4j.github.io/jakartaee-platform/jakartaee10/JakartaEE10#jakarta-ee-10-release-plan >>>>>> >>>>>> >>>>>> >> Best Regards, >>>>>> >> Andriy Redko >>>>>> >>>>>> >> JM> On Wed, Aug 11, 2021 at 8:26 PM Andriy Redko <drr...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> >> >> Hey Jim, Romain, >>>>>> >>>>>> >> >> Thank you guys, I think Romain's suggestion to move 3.5.x to >>>>>> JDK-11 >>>>>> >> >> baseline is good idea, we would >>>>>> >> >> still be maintaining 3.4.x for a while, covering JDK-8 based >>>>>> >> deployments. >>>>>> >> >> Regarding Jakarta, yes, I >>>>>> >> >> certainly remember the discussion regarding the build time >>>>>> approach, >>>>>> >> >> personally with time I came to the >>>>>> >> >> conclusion that this is not the best option for at least 2 >>>>>> reasons: >>>>>> >> >> - differences between source vs binary artifacts are very >>>>>> confusing >>>>>> >> >> (source imports javax, >>>>>> >> >> binary has jakarta, or vice versa), I think we all run into >>>>>> that from >>>>>> >> >> time to time >>>>>> >> >> - Jakarta is the way to go, the mainstream should have first >>>>>> class >>>>>> >> support >>>>>> >>>>>> >> >> Just my 5 cents, but we certainly should consider this approach >>>>>> as well, >>>>>> >> >> there are good points to >>>>>> >> >> follow it, summarizing what we have at the moment: >>>>>> >>>>>> >> >> Option #1: >>>>>> >> >> - release 3.5.0 in preparation to JDK-17 LTS, keeping JDK-8 as >>>>>> baseline >>>>>> >> >> - move master to 3.6.x (4.x?) with JDK-11 as the minimal >>>>>> required JDK >>>>>> >> >> version (Jetty 10, ...) >>>>>> >> >> - branch off 5.x (4.x?) to continue the work on supporting >>>>>> Jakarta >>>>>> >> 9.0+, >>>>>> >> >> with JDK-11 as the minimal >>>>>> >> >> required JDK version (Jetty 11, ...) >>>>>> >>>>>> >>>>>> >> JM> What's the task for JDK-17 LTS preparation ? Do we need to >>>>>> support >>>>>> >> build >>>>>> >> JM> 3.5.0 with JDK-17 ? >>>>>> >>>>>> >> JM> For Jakarta ee9 support branch 4.x with source code change to >>>>>> support >>>>>> >> JM> jakarta namespace , we have to wait for spring and other >>>>>> >> JM> third party dependencies jakarta ee9 ready. Now we don't know >>>>>> when >>>>>> >> these >>>>>> >> JM> dependencies are all ready and we can start this work. >>>>>> >>>>>> >> JM> Given there is no features added in Jakarta ee 9.1 besides the >>>>>> >> namespace >>>>>> >> JM> change, we can provide the jakarta calssfier maven artifacts >>>>>> and binary >>>>>> >> JM> release in 3.6.x or 4.x with transformation or other better >>>>>> approach >>>>>> >> will >>>>>> >> JM> be enough.We provide jakarta ee9 support early, then we can >>>>>> get more >>>>>> >> JM> feedback on this topic. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >> >> Option #2: >>>>>> >> >> - release 3.5.0 in preparation to JDK-17 LTS, use JDK-11 as >>>>>> baseline >>>>>> >> >> - handle javax by a build setup (with api validation at build >>>>>> time to >>>>>> >> >> avoid regressions) and use jakarta package as main api in the >>>>>> project >>>>>> >> >> (Romain), or >>>>>> >> >> adding a new maven module to transform cxf artifacts with >>>>>> jakarta >>>>>> >> >> package name (Jim) >>>>>> >>>>>> >> >> Option #3: >>>>>> >> >> - release 3.5.0 in preparation to JDK-17 LTS, use JDK-11 as >>>>>> baseline >>>>>> >> >> - move master to 4.x to continue the work on supporting >>>>>> Jakarta 9.0+, >>>>>> >> >> with JDK-11 as the minimal >>>>>> >> >> required JDK version (Jetty 11, ...) >>>>>> >>>>>> >> >> Thank you! >>>>>> >>>>>> >> >> Best Regards, >>>>>> >> >> Andriy Redko >>>>>> >>>>>> >>>>>> >> >> JM> On Wed, Aug 11, 2021 at 10:05 AM Andriy Redko < >>>>>> drr...@gmail.com> >>>>>> >> >> wrote: >>>>>> >>>>>> >> >> >> Hey guys, >>>>>> >>>>>> >> >> >> I would like to initiate (or better to say, resume) the >>>>>> discussion >>>>>> >> >> >> regarding CXF 3.5.x and beyond. >>>>>> >> >> >> The 3.5.x has been in the making for quite a while but has >>>>>> not seen >>>>>> >> any >>>>>> >> >> >> releases yet. As far as >>>>>> >> >> >> I know, we have only pending upgrade to Apache Karaf 4.3.3 >>>>>> (on >>>>>> >> SNAPSHOT >>>>>> >> >> >> now) so be ready to meet >>>>>> >> >> >> JDK 17 LTS next month. I think this is a good opportunity to >>>>>> release >>>>>> >> >> 3.5.0 >>>>>> >> >> >> but certainly looking >>>>>> >> >> >> for ideas and opinions here. Importantly, I think for 3.5.x >>>>>> the JDK-8 >>>>>> >> >> >> should be supported as the minimal >>>>>> >> >> >> required JDK version (just an opinion since JDK-8 is still >>>>>> very >>>>>> >> widely >>>>>> >> >> >> used). >>>>>> >>>>>> >> >> >> On the other side, many libraries (Jetty, wss4j, ...) are >>>>>> bumping the >>>>>> >> >> >> baseline to JDK-11. The work >>>>>> >> >> >> @Colm is doing to update to OpenSaml 4.x [1] is a good >>>>>> argument to >>>>>> >> have >>>>>> >> >> >> the JDK-11+ release line. Should >>>>>> >> >> >> we have a dedicated 3.6.x or 4.x.x branch(es) for that? >>>>>> >>>>>> >> >> >> Last but not least, Jakarta 9.0+ support. Last year we >>>>>> briefly talked >>>>>> >> >> >> about it [2], at this moment it >>>>>> >> >> >> looks like having dedicated release line (4.x/5.x) with >>>>>> Jakarta >>>>>> >> >> artifacts >>>>>> >> >> >> is beneficial in long term. >>>>>> >> >> >> Large chunk [3] of work has been already done in this >>>>>> direction. The >>>>>> >> >> >> Spring 6 milestones with Jakarta >>>>>> >> >> >> support are expected to land in Q4/2021 [4] but I am not >>>>>> sure what >>>>>> >> plans >>>>>> >> >> >> Apache Karaf team has, @Freeman >>>>>> >> >> >> do you have any insights? >>>>>> >>>>>> >>>>>> >> >> JM> For Jakarta EE9 support , the another option could be >>>>>> adding a new >>>>>> >> >> maven >>>>>> >> >> JM> module to transform cxf artifacts >>>>>> >> >> JM> with jakarta package name. This transformed artifact can >>>>>> coexist >>>>>> >> with >>>>>> >> >> the >>>>>> >> >> JM> javax namespace with "jakarta" classifier, >>>>>> >> >> JM> and we don't have to maintain two branches until Jakarta >>>>>> EE10 and >>>>>> >> >> there are >>>>>> >> >> JM> new features added. >>>>>> >>>>>> >> >> JM> Other projects like hibernate and jackson use this shade >>>>>> plugin or >>>>>> >> >> Eclipse >>>>>> >> >> JM> transformer to support jakarta ee9: >>>>>> >>>>>> >> >> JM> >>>>>> >> >> >>>>>> >> >>>>>> https://github.com/hibernate/hibernate-orm/blob/main/hibernate-core-jakarta/hibernate-core-jakarta.gradle#L100 >>>>>> >>>>>> >> >> JM> >>>>>> >> >> >>>>>> >> >>>>>> https://github.com/FasterXML/jackson-jaxrs-providers/blob/2.12/json/pom.xml#L115 >>>>>> >>>>>> >>>>>> >>>>>> >> >> >> To summarize briefly: >>>>>> >> >> >> - release 3.5.0 in preparation to JDK-17 LTS, keeping JDK-8 >>>>>> as >>>>>> >> baseline >>>>>> >> >> >> - move master to 3.6.x (4.x?) with JDK-11 as the minimal >>>>>> required >>>>>> >> JDK >>>>>> >> >> >> version (Jetty 10, ...) >>>>>> >> >> >> - branch off 5.x (4.x?) to continue the work on supporting >>>>>> Jakarta >>>>>> >> >> 9.0+, >>>>>> >> >> >> with JDK-11 as the minimal >>>>>> >> >> >> required JDK version (Jetty 11, ...) >>>>>> >>>>>> >> >> >> I think it is very clear that maintaining JavaEE + JDK8 / >>>>>> JavaEE + >>>>>> >> >> JDK11 / >>>>>> >> >> >> Jakarta + JDK11 would consume >>>>>> >> >> >> much more time from the team, but I am not sure we have other >>>>>> >> options if >>>>>> >> >> >> we aim to evolve and keep CXF >>>>>> >> >> >> up to date. Any thought, ideas, comments, suggestions guys? >>>>>> >>>>>> >> >> >> Thank you! >>>>>> >>>>>> >> >> >> [1] https://github.com/apache/cxf/tree/opensaml4 >>>>>> >> >> >> [2] >>>>>> >> >> >> >>>>>> >> >> >>>>>> >> >>>>>> http://mail-archives.apache.org/mod_mbox/cxf-dev/202012.mbox/%3c1503263798.20201226124...@gmail.com%3E >>>>>> >> >> >> [3] https://github.com/apache/cxf/pull/737 >>>>>> >> >> >> [4] >>>>>> >> >> >> >>>>>> >> >> >>>>>> >> >>>>>> https://github.com/spring-projects/spring-framework/issues/25354#issuecomment-875915960 >>>>>> >>>>>> >> >> >> Best Regards, >>>>>> >> >> >> Andriy Redko >>>>>> >>>>>> >>>>>>