An Agile tech coach's job is never done in a world where relatively few people can do eXtreme Practices such as TDD. Part of the job is entertainer (make training fun), part of the job is teacher (how the heck do I test this!), and part of the job is adoption (how to get my organization to support me doing this). So I'm faced with creating an enjoyable—no, exciting!—experience for training Java developers TDD. So the formula for success looks like this:
Well it turns out you CAN. However I had to sift through a lot of claims about "full stack Java" which sometimes means building TCP/IP clients for macro test automation. But come on! Nothing impresses the folks at the IT bar like showing off a build that actually works on a smart phone.
But I've got an additional "hangup." To me, modern technologies in the UI ought to be *reactive* (event driven), meaning, when an event happens on the server side, it updates the web clients.
So I went through RayGun's article on 17 popular Java frameworks, investigated them, and filtered the list down to three potential candidates. See the following table.
- Useful modern technologies for mainstream workers
- Fun
- TDD
But WAIT! Can one use Java to build a graphical user interface in the web browser?
Well it turns out you CAN. However I had to sift through a lot of claims about "full stack Java" which sometimes means building TCP/IP clients for macro test automation. But come on! Nothing impresses the folks at the IT bar like showing off a build that actually works on a smart phone.
But I've got an additional "hangup." To me, modern technologies in the UI ought to be *reactive* (event driven), meaning, when an event happens on the server side, it updates the web clients.
So I went through RayGun's article on 17 popular Java frameworks, investigated them, and filtered the list down to three potential candidates. See the following table.
Conclusions
So ladies and gentleman, full stack Java Web Apps are FACT!- There are actually THREE frameworks that will allow you to use Java to build a web application view! (See "yes"s in the third column.)
But full stack reactive Java web apps need more investigation.
- The big problem for me is that none of the reactive choices use Java to describe a view, with the exception of some branches of GWT.
Next steps
It comes down to the practicality of TDD in one of the GWT branches that are reactive. If it works, then I'm all good. If it doesn't do reactive well or if it doesn't make sense to do TDD in GWT, then I move onto one of the other reactive alternatives.
I'll build some POC's and evaluate what will work for a Java TDD course that's fun and uses mainstream technologies.
I'll build some POC's and evaluate what will work for a Java TDD course that's fun and uses mainstream technologies.