Back in Olden Times, I was a craftsman, with my ever-versatile Java Hammer always by my side.
The Java Hammer (made by the Sun Quality Tool Company) was a magnificent specimen, wielded across the world in equal measure by the adept, and the inept – used to construct a mind boggling proportion of the digital world during that age. There were other tools available, falling in and out of favour as time went on, but none surpassed the popularity of the Java Hammer, leading to an awe-inspiring range of compatible Java Nails being produced to fulfill whatever construction need was on the bill.
The things I regularly hit with my Java Hammer included:
- Applets to run in the browser
- Desktop applications with Swing and JWT/SWT
- Games with JOGL
- Web services (smaller construction projects) with Play and Spring
- Web services (cross-country sprawling construction ventures, mired in bureaucracy and unnecessary complexity) with Java EE
- Simulations with Akka
- Controlling Lego robots with Lejos
- Games for Feature Phones with MIDP and J2ME
- Android apps and games
- Data processing with Hadoop and Spark
- Interfacing with hardware projects or lower-level libs with JNI
- Making Java Cards (smart cards) do silly things
Nowadays, my Java Hammer is a bit worn around the edges, the handle has all but fallen off, and it gives me splinters. After decades of additions to the Java Hammer (with a combination of gaffa tape and Java Nails), there are so many bits dangling off, it’s difficult to know how to use it properly.
Over the last 30 or so years, I have amassed quite an arsenal of weaponry to tackle some of the things that Java Hammers were capable of (not necessarily “good at” but got the job done):
- Basic (even VBA/VBS on occasion)
- Pascal (with Delphi/Kylix)
- C/C++ (with QT/GTK+/wxWidgets/Dear ImGui/FLTK, Unreal)
- C# (with WPF, Unity)
- Z80 ASM (my calculator needed some love)
- Python ❤️ (with django, flask, …)
- PHP (with Cake, Silex, Symphony, Laravel, and of course WordPress!)
- Ruby (and Rails)
- All the “Web Stuff” (html/js/css, Ajax (lol), Prototype, jQuery, script.aculo.us, MooTools, AngularJS, Angular, React)
- Dart / Flutter
- Erlang ❤️ (with Cowboy)
- Go (with Gin)
- Rust (with winit, warp)
and probably a few more along the way that I’ve built the odd cabinet here and there with. This doesn’t even touch on all the auxillary stuff (build tools, hosting providers, infrastructure management, containers, monitoring, …..)
So nowadays, when I want to build something new, what do I pick? I have a few standard gotos for “boring stuff”, but if it’s a new idea, I’ll pick up my absolutely enormous toolbag, rifle around inside until I find a tool roughly appropriate for the job, and immediately realise the ecosystem has changed so dramatically in the last 12 months that the tools I thought I knew have changed shape. There’s a parallel trend to make everything in the browser (or outside the browser, in a browser wrapper like Electron) – and that feels odd too. There’s a growing hype-movement towards Rust For Everything – maybe that’s the future?
Maybe I just want my Java Hammer back.