The JAXB RI seems to have removed the code that generates and loads accessor bytecode as the Injector [1] looks like it is unused. So initializing JAXB has probably gotten a lot faster compared to when SXC was introduced in tomee.
However, JAXB Context initialization still takes significantly longer than just invoking SXC code. As Richard said, I did a very basic benchmark deserializing a-faces-config-22.xml from FacesConfig22Test just to get a feeling of how big the gap is: sxc1: 30ms sxc2: 2ms jaxb1: 278ms jaxb2: 4ms Once the JAXB Context is initialized and “warmed up” the gap is really insignificant. But what we do care about is initial startup performance. JAXB needs to do a ton of reflection to build an internal meta model while SXC moves a lot of this work to build time by generating source code. Note that I only compared the pure time it takes to unmarshal a String in memory, total time with JVM startup etc is probably a bit slower as there are right now 271 more classes to load that SXC generated. But likely still a lot faster than just using JAXB RI. [1] https://github.com/eclipse-ee4j/jaxb-ri/blob/4.0.5-RI/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java > On 9. Sep 2024, at 10:21, Richard Zowalla <r...@apache.org> wrote: > > I think, that Markus did some tests. Maybe he can share? :) > >> Am 09.09.2024 um 09:48 schrieb Jean-Louis Monteiro >> <jlmonte...@tomitribe.com>: >> >> Is the performance reason still accurate nowadays? >> Someone tested with recent JVMs? >> -- >> Jean-Louis Monteiro >> http://twitter.com/jlouismonteiro >> http://www.tomitribe.com >> >> >> On Mon, Sep 9, 2024 at 9:30 AM Richard Zowalla <r...@apache.org> wrote: >> >>> Any other thoughts? >>> >>>> Am 05.09.2024 um 11:08 schrieb Richard Zowalla <r...@apache.org>: >>>> >>>> Yes. It is done for startup performance reasons only. At runtime, there >>> is not a big difference. >>>> Regarding your points. >>>> >>>> (1) I think, that metatype.org <http://metatype.org/> has expired / is >>> parked at a domain service, so it might not be possible to release SXC >>> under that umbrella (again). We cannot put that under the ASF umbrella >>> because of licensing constraints. >>>> (2) The build looks good (as far as I can remember) and if we have >>> regressions in that area, we will find out with our early adopters in an M3 >>> milestone. >>>> (3) I am fine with that but would see that in a next stage ;-) >>>> >>>> Thanks for the work, Markus. It is really appreciated! >>>> >>>> Gruß >>>> Richard >>>> >>>>> Am 03.09.2024 um 16:16 schrieb Markus Jung <ju...@apache.org>: >>>>> >>>>> AFAIK sticking to SXC is a decision purely made for startup performance >>> reasons, see David's reply in >>> https://lists.apache.org/thread/09powc11z4rnzvyzmt4xy5bcbrqwkfkh >>>>> >>>>> On 03.09.24 13:43, Thomas Andraschko wrote: >>>>>> i thought it in the past that i would be better to get rid of SXC >>>>>> completely but maybe thats a to big task: >>>>>> https://lists.apache.org/thread/0p4m1rw8vmv17l29s1lgclsd9bfrr7s4 >>>>>> >>>>>> Am Di., 3. Sept. 2024 um 13:15 Uhr schrieb Markus Jung < >>> ju...@apache.org>: >>>>>> >>>>>>> Hey all, >>>>>>> >>>>>>> >>>>>>> I had to modify the JAXB models in openejb-jee for the concurrency 3.0 >>>>>>> implementation [1] but noticed the changes were not taken into affect. >>>>>>> This is where I found out what openejb-jee-accessors was for. >>>>>>> >>>>>>> Long story short, I was not able to get the old SXC maven plugin >>> running >>>>>>> and Richard and I decided to fork SXC and update it to Jakarta XML >>>>>>> Binding 4.0. The fork can be found here [2] and Richard has done a >>>>>>> release on maven central under the groupId >>>>>>> io.github.rzo1.org.metatype.sxc. I integrated this new SXC release in >>> a >>>>>>> PR [3] and would highly appreciate if we can get some eyes from long >>>>>>> time contributors on this. >>>>>>> >>>>>>> I think there are 3 topics that require attention: >>>>>>> 1. Do we want to switch to Richards fork? Maybe we could merge with >>> the >>>>>>> original code from David and release that again, though it seems the >>>>>>> metatype.org domain is expired and owned by a parking service. We >>> likely >>>>>>> can't fork it in tomee as the code is not fully under the Apache 2.0 >>>>>>> License. >>>>>>> 2. Some tests were failing after I fully regenerated the SXC accessor >>>>>>> classes because the generated code has been modified in some places to >>>>>>> allow unknown XML nodes. I recreated this behavior by adding >>>>>>> @XmlAnyAttribute annotated fields where needed. We should be double >>>>>>> checking that I did not miss anything. >>>>>>> 3. (optional) The accessors are 100% matching the JAXB model now. IMO >>> we >>>>>>> should highly consider to delete these from the repository and treat >>>>>>> them as generated sources. This would remove tens of thousands of >>> lines >>>>>>> of code and force future developers to make adjustments in the JAXB >>>>>>> Model instead of hiding them in generated code. WDYT? >>>>>>> >>>>>>> >>>>>>> Any feedback would be highly appreciated as this is a pretty >>> significant >>>>>>> change. The diff for the PR that regenerates all accessors [3] is 30k+ >>>>>>> lines long. >>>>>>> >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> Markus >>>>>>> >>>>>>> >>>>>>> [1] https://github.com/apache/tomee/pull/1458 >>>>>>> [2] https://github.com/rzo1/sxc >>>>>>> [3] https://github.com/apache/tomee/pull/1469 >>>>>>> >>>>>>> >>>>>>> >>>> >>> >>> >