I’d like to add some points to your thesis related to Processing.js (Pjs) retired library.
At 1.1 Introduction - Background on page 7, you state:
However, as it is built with Java, Processing projects cannot directly be put on the web.
Previously this had been solved through the use of Java applets, small programs that could be integrated on websites, but these are practically defunct on the web nowadays.
Instead, a modern solution is using a JavaScript library called p5.js.
It was created by Lauren McCarthy and the first beta version was released in 2014.
Indeed Java applets were used back then in order to put Processing’s Java Mode sketches on web pages.
However, for sketches which used only the Processing API w/o 3rd-party libraries, Pjs was pretty much capable to transpile most of those sketches to the JS language, as far back as 2010 it seems:
ProcessingJS.org/blog/2010/02/03/processingjs-04-released.html
And it is still so even today! As an example, the sketch hosting site OpenProcessing still accepts & runs Java Mode sketches via an engine switch (default is p5.js):
Although it’s a retired project and less featured than p5.js, it’s much more mature than the latter, especially when using the 3D WebGL renderer, as can be seen on the “3D Knot” sketch versions below:
- p5.js (buggy) → 3D Knot (p5js) - OpenProcessing
- Pjs/Java (correct) → 3D Knot (Java) - OpenProcessing
Obviously, p5.js is still at beta stage for years. And hopefully it will catch up on Pjs someday.
And although Pjs was primarily made as a transpiler from Processing/Java to Pjs/JS, it can perfectly be used as a regular JS library too, as p5js is.
However, we need to use what in p5js is called “instance mode” style when dealing w/ Pjs:
Like this sketch written in p5js/TS transpiled to JS using the instance mode approach:
- GitHub.com/GoSubRoutine/Ball-in-the-Chamber/tree/master/p5js-instance
- GoSubRoutine.GitHub.io/Ball-in-the-Chamber/p5js-instance
Below is the same sketch above, but now re-written in Pjs/CS transpiled to JS:
- GitHub.com/GoSubRoutine/Ball-in-the-Chamber/tree/master/pjs-cs
- GoSubRoutine.GitHub.io/Ball-in-the-Chamber/pjs-cs
So Pjs can also be a viable p5js replacement if we prefer a closer API to Processing Java than what p5js offers.