Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ When I started my internship, my main task was to help bump CheerpJ's supported

One of the first things I learned was that upgrading a runtime is much easier to understand when it is done step by step. Instead of jumping directly from one major version to another, comparing the smaller changes between JDK versions helped me identify where behaviour started to change and made problems easier to isolate. This also helped me understand that supporting a newer Java version is not just about adding new APIs—changes inside the JDK can affect many different parts of the runtime.

Once Java 21 support was working reasonably well with our default test cases, we released it in the nightly build so that the community could try it with their own applications. One particularly interesting case involved getting [Elemental](https://github.com/martin-honnen/martin-honnen.github.io/tree/master/cheerpj-elemental-fiddle), a modern database platform that includes libraries from eXist-db, working with CheerpJ. This gave me a much more realistic example of how CheerpJ is used together with larger applications and external Java libraries.
Once Java 21 support was working reasonably well with our default test cases, we released it in the nightly build so that the community could try it with their own applications. One particularly interesting case involved getting [Elemental](https://github.com/evolvedbinary/elemental), a modern database platform that includes libraries from eXist-db, working with CheerpJ. This gave me a much more realistic example of how CheerpJ is used together with larger applications and external Java libraries.

Before I could debug the problem, I first had to understand what the application was trying to do, reproduce the setup locally, and determine what the expected behaviour should be. Sometimes the problem came from the way an external API was being used, while other times CheerpJ was missing support for a particular feature. These cases were challenging because there were many layers involved, and the error shown at the top was often not the actual root cause. They taught me to keep digging through those layers instead of stopping at the first exception.

Expand Down
Loading