What happened to the proliferation of Java web frameworks from the early 2000s?

Back in the early 2000s if you were a Java developer working on building web apps, chances are you were using Apache Struts. It was the de facto, go-to web framework of it’s time, pretty much used everywhere by everyone (it was even noticeable online for it’s pattern of using ‘*.do’ URLs for its Actions). However, it wasn’t the only framework in town. Around early to mid 2000s there was an explosion of Java based web frameworks being developed, for a while it seems like it was the-thing-to-do to build your own web framework because after all, you know better than all the other guys right?

Joking aside, other major frameworks that appeared, some of the other big names were Wicket, Cocoon, Tapestry, Webwork (Webwork and Struts merged to form Struts 2), GWT and Vaadin. In the Java EE space the standard web framework became JSF but never really gained traction over any of the others. The one that stayed the course and probably the only one still in serious usage would be Spring Web MVC.

The funny thing about all this churn that occurred is that it feels like it’s all happening again, but now in the Javascript space. Sure, once we realized we could could offload some of this backend rendering of the UI to the frontend and after Google had shown the way with GMail showing us how the user experience of a single page app is far better than the traditional request/response of web apps we had become used to, it was inevitable that serverside based Java web frameworks would fall out of favor and get replaced by Javascript clientside frameworks. Was it inevitable that the industry would go through the same learning pains once again though? I’m not sure, but it happened.

At one point jQuery was the de facto JavaScript framework, much like Struts was in the Java space back in it’s time. Then came the flood: backbone, ember, Dojo, Knockout seemed to to be the main players, eventually settling down to ‘the big 3’ that we have today, Angular, React and Vue.

So what happened to all the Java web frameworks? Spring Web MVC is still around and still in use. With the change in technologies and a shift in focus from backend web frameworks to frontend, the backend web frameworks became less relevant. Could this shift happen again? Sure, when the next big things comes along.

Moral of the story: tech changes quick in software development. Keep an eye out for whats coming next, because what’s hot today can quickly become irrelevant tomorrow.

Additional reading: if you’re interested to read more about Java web frameworks, Zeroturnaround’s Rebel Labs used to do a survey on framework usage, and you can see their findings from their relatively recent reports, from 2014, 2015 and 2017:

https://www.jrebel.com/blog/java-tools-and-technologies-landscape-2014#Web%20Frameworks

https://www.jrebel.com/blog/java-web-framework-usage-stats

https://www.jrebel.com/blog/java-web-frameworks-index

Replacing a failed CD-ROM in a Sun Ultra 60

The CD-ROM drive in the Sun Ultra 60 that I recently picked up from ebay lasted long enough to get an initial install of Solaris 10 installed, and then the tray refused to stay closed. I picked up a replacement used DVD drive from www.anysystem.com

It came with free plastic ducks. Yay!

One thing I’ve noticed is that used retro computer gear is often shipped with far more care and with better packing than new gear – good job on the packing anysystem.com:


Here’s a side view of what the Sun Service Manual for the Sun Ultra 60 calls the ‘Removable Media Assembly’, or RMA:

Here’s the front view before removing the face plate:

The front plate is removed by squeezing the left and right sides then it pops off. Remove the screws seen here on the front left and right:

… and then the whole RMA section slides out:

Undo the 2 screws on the left and right of the CD-ROM drive, remove the cables at the back and then slide it out of the assembly. Here’s the CD drive out, and the new DVD drive inserted:

RMA pushed back into place and front plate re-attached. Done!

Resetting HP Proliant server ILO network settings from power on System Settings

As part of reorganizing of my home network and homelab setup, I’m moving everything running on my DL380 G7 server from 19.168.1.0/24 addresses to it’s own network under 10.0.0.0/24

I thought I knew what new ip and gateway settings I needed in ILO on my server, so I changed them through the web interface, only to find out the gateway was incorrect and now I could no longer access ILO remotely on my network.

Luckily from the power on System settings, you can access the ILO config if you connect a monitor and keyboard and press F8 when prompted (see detailed step by step and timings of each option here). The F8 to access ILO settings is only on the screen for about 2 seconds, so if you miss it you’ll get the System Settings menu like this:

If you get into this Setup Utility menu then you need to exit and try again.

The F8 prompt you’re looking for appears only for about 2 seconds before the HP RAID array info appear – if you see this then you’ve already missed it and you’ll need to reboot and try again:

This is the ILO menu you should see after pressing F8 when prompted:

I had previously changed the gateway so a router on my 192.168.1.0 network that was unreachable from there. Changed, now we’re ready to reboot:

Success, ILO is now accessible on 10.0.0.2!

awk basics

I’ve tinkered with awk and sed for quick one off tasks before in the past but I always have to go back and check the syntax for awk as it’s one of those things I use only once in a while.

Some quick notes for reference for later:

  • awk splits records in an input file by default by white space chars
  • uses $0 to refer to a whole line, and $1 … $n to refer to each matching token on a line
  • to split using column delimiters other than whitespace use -F

Examples:

Example file – example1.txt:

aaa bbb ccc
ddd eee fff

$ awk {'print $1'} example1.txt

Will print the first matching column:

aaa
ddd

If file has other column delimiters use -F to specify the delimiter, for example, example2.txt:

aaa,bbb,ccc
ddd,eee,fff

$ awk -F , {'print $2'} example2.txt

Will match column 2:

bbb
eee

More info on awk here.