Development for web browsers has always been complicated. There are many frameworks and languages to choose from. These have changed rapidly, as a Cambrian Explosion occurred with the advent of Web 2.0 in the mid-2000's (see https://en.wikipedia.org/wiki/Cambrian_explosion ).
The original web browser was a pure static page display system. Once the web caught on, it was obvious things like shopping carts and web pages needed to have interaction. To achieve this, what began as pure HTML pages began to morph into dynamically generated HTML pages, often by Java based server-side software.
One of the most prominent Java language book authors is Brucke Eckle, who published Thinking in Java (see https://en.wikipedia.org/wiki/Thinking_in_Java ).
Bruce made headlines when he penned an opinion piece basically stating "The Web Is a Mess" which explained the problems of what become a hybrid model of static web pages in a browser being generated dynamically by the server (see https://www.artima.com/weblogs/viewpost.jsp?thread=193593 ).
Apache Royale (see https://royale.apache.org ) is a solution for the broken hybrid model of web development. It also addresses by being open source and Apache Foundation backed the more recent problems of corporations having changing rules for their backing of popular frameworks such as React.