Hi, Daniel:
I am in a similar situation, just getting back into Web GUIs after dealing with mostly Swing (yes, with a w) for the past 5 years. Before that, I used Struts-2. But I have looked at and tried various technologies over the interim, and recently have built some small web GUIs.
* Ruby: I took a course on Coursera (the Hopkins course). That's another programming language. It is weakly typed, so they lean heavily on
unit testing. It can be thrilling to get something working, but it can be frustrating to deal with versioning, and a whole lot of code you have no control over. I know folks who used to do exclusive Java but now do exclusive Ruby.
*
JSF (Java Server Faces). I learned a little of this for a certification a couple of years ago. It was similar in many ways to Struts/2 (probably the typical Oracle response). If you do Struts/JSP, this won't be alien to you. It is hard to tell how popular this is, really, but it has been proven. Perhaps you could post to the forum on that.
* Struts2: still being used in various scattered pockets.
* GWT: this is Java being turned into JavaScript. I found it rather fun for the few months I did it. It resembles AWT more than it does Swing (the model backing is not there, as in TableModel). It allows folks to decorate with CSS. This is not at this time terribly popular. I think Google has pushed that out into open source land. But you may see it in use.
*
AngularJS: this is the way folks are really going nowadays. This and Reactive, and probably other JavaScript toolkits. JavaScript has grown a lot since its "I had to validate, and that's all I could get" days. These frameworks are better thought out, some even have unit test capabilities ready to hand, and they can talk to RESTful very naturally.
On the backend, you'll want to go with RESTful instead of EJBs. They work well for wider variety of non-Oracle technologies. These can be implemented with Java, Ruby, Node.JS (backend JavaScript, which I have never tried) or a lot of other things.
One thing I will caution you about: I have tried annotating EJBs to make them spew
SOAP output. That works, but it is an imperfect solution because you design EJBs as middle ware, and you want them to share rich objects, etc. If you try to use them as an endpoint, they become an API, and you will find that your design
philosophy "leaks" out to the client or backward into the middle tier. So I would not do that. If you need EJBs for transactions, or all the other cool stuff they do, make another REST tier to talk to them.
Finally, I find that the backing on the server tends far more often to be Spring than EJBs. Indeed, EJBs seem to be getting short shrift compared with Oracle's own CDI (Contexts and Dependency Injection).
If you want to do MVC / all server (not JavaScript), and you have full control, and you are not worried about transporting your skills, I would look into JSF, which is an Oracle / JEE offering, but has various 3rd party impls. I do not know how performant that is, so you may wish to research. otherwise, I would go for a framework like Angular (2 is starting to catch on), and I would implement RESTful backends in your favorite way.
I hope this helps.