Now that the Jakarta EE project is planning to release its next version (Jakarta EE 9), where the major change is the update of all its APIs to use jakarta.*
instead of javax.*
in the package names, and hence the issue of breaking binary compatibility, I decided to experiment a little bit with how code that uses javax.*
APIs can be dynamically modified (without the need to recompile) so that it runs against the target jakarta.*
namespace.
You may also like: Jakarta EE and the Great Naming Debate
It would also be a good opportunity to learn more about Javassist, which I'll be using to do the renaming at the bytecode level. Note that this post is not intended to propose a solution to this problem of API compatibility. It simply shares experimentation related to the subject.