Sadly here we are now with bigger computers, better performing JVMs, great Java dev tools, and still losing to the browser due to massive inertia.
For complex desktop apps I don't really think Java was a viable option until the 1.3 release in 2000 (from memory). You also always had that problem that you couldn't guarantee what version of Java somebody would have installed so you'd have to bundle whatever JRE version you needed into the installer. Deployment was always a challenge.
In the browser Java never really got past 1.1 because Sun and Microsoft fell out so you had to install a separate plugin, which almost nobody did, or just live within the restrictions of AWT.
Couple this with the fact that, as you've pointed out, Java Web Start was so late to the party and it's easy to see why it didn't do better, either on the desktop or in the browser.
Until Android came along I really thought Java was a dying technology platform. Obviously since then its fortunes have significantly improved.
Although what is interesting is that with the Java solutions, it was the user who felt the pain where developers had a decent experience. As the web platform has evolved, users have avoided most of the issues and the pain has been experienced by developers. This would go a long way to explaining why users have never had it so good as they have right now and every developer I know is trying to figure out how to get out of the industry, or at least get out of web dev.
Ever tried to use HP ILO's Remote Console via Web Start? (For additional nerd points, try doing that with Apple M1 machine). Compared to that, the HTML5 version just works.
I recall back in the 2000s there being a few Java apps for macOS that used Cocoa UIs via the Cocoa-Java bridge that used to exist. These tended to be embraced almost as readily by users as full-native Mac apps, and I think that was largely because these apps tended to start up more quickly and fit into the user's desktop better, removing those two barriers to adoption.
Not really - you could write cross-platform GUI applications from a single code base in 1996 if you wanted to without using Java. It was unpleasant, but it was absolutely possible.
>Where would we be today if you couldn't swap between Mac and Windows laptops -- or worse, had to have both -- because you depended on applications that had no common operating system?
Those days are still here, depending on the application.
>The reason we can use linux as a desktop is because of web applications.
I wouldn't say that's the reason. Certainly a reason, but not the definitive one.
There are still cross-platform applications from a single code base. This is actually easier due to better cross-platform toolkits that were developed and would have continued development even if webapps hadn't become a thing.
>Even today, it's a giant pain to write cross-platform apps in anything but C or C++
Python and Java are relatively painless in this regard.
>It turns out that nobody is willing to put in the effort when we already have web applications.
Web applications certainly do have the advantage from a monetization, time to market, and network effect standpoint, no doubt.
Right - as seen by Netscape. We can also speak about codeweavers and others we have, but in '96, those were out of reach by all but the largest applications. (Pagemaker, word, etc.) However, the honest truth is that web apps were an order of magnitude cheaper for anything that wasn't desktop-heavy in 1996.
Again, worse is better.
> Python and Java are relatively painless in this regard.
Does your user have the right version of python? Are you bundling python with your application? I haven't worked with pyinstaller - it might be better today, but
And as far as writing python gui applications... Tkinter and WxPython are ugly. PyQt and PyGtk, last I looked at it, was painful and effectively meant knowing C++, and Qt licensing from non-oss is rough. Jython is punting the java problem above. In what world is this not painless?
I wrote a JavaFX app just for myself a bit back because I didn't want the overhead of Electron for my simple app. The experience in bundling it for each was not straightforward, especially with post Java 9. Jpackage and jlink and graalvm exist today, but the work around them are not as straightforward as getting a webapp up and running.
The experience does not, by its very nature, have to be worse than web applications, but we've had two orders of magnitude in engineering effort to make the web application developer experience better. In 1996, even with as small as the internet was at that point, enterprise application deployment was so painful that web applications were a giant competitive advantage.
Is this a form of denialism by hardcore "I-Hate-Javascript"ers? I would like to add that I absolutely hate the subset of modern websites that choose to be slow, but I think the parent is completely right. If we keep making it hard to use useful applications across platforms, then we're going to continue to see pushes toward the lowest common denominator that consumer computers can run. Yes, yes, I know techies like you and I believe installing stuff is trivial if you spend even just a little amount of time, but _this doesn't matter to average users_
It's a nightmare even installing Python, Ruby on Rails packages properly without juggling a million virtual environments, and those are supposed to be tools that you can run with a single CLI command and it gives you debugging information if things go wrong. It's a bit much to think that average users can survive without any of the tools or knowledge we have, being locked in a stupid GUI, and at the rate that we encounter defective software (seems like I encounter bugs more frequently as time goes on).
Now we are definitely going to add ARM complexity into the mix because what Apple pushed (M1) is just too good and everyone else is jumping on board for it
Regarding the comment about consumer-Linux, I feel less strongly on your point about web applications being the killer reason why Linux desktop users exist. Anyone using Linux desktop is almost certainly a tech-hacker to begin with and isn't necessarily tied to web applications as their go-to reason, but it certainly helps surviving with it. There are tons of reasons to use Linux desktop with no relation to web, but for market share, it's going to need consumer applications bordering on exclusivity that makes Linux first-priority and dumps support for macOS/Windows. Many Windows users don't want to switch to macOS or Linux because of gaming
Windows games kept me tied to the platform until my life became more focused on software. I only left Windows entirely after I learned that programming was a first-class citizen on Linux and macOS. Yes, you can program on Windows, but making software and using other people's software is more enjoyable elsewhere. So to wrap up this example, what can we learn about this? Well I knew life/job functions would be easier if I replaced Windows, but me doing software is coincidental. Give people a reason to use Linux. Make their lives easier, somehow, and make it clear that it will only happen if they leave their current platform. Otherwise you start coming up with systems like Windows Subsystem for Linux which... I'm not entirely sure why it exists.
I think the oft-repeated ire for modern web does not add anything at this point without understanding that there are good reasons people prefer to use web applications
Or, rather, web applications /are/ the common, universal cross-platform applications that we theorized, just that it arrived in less ideal ways
Point of fact: pg, the founder of HN endorsed downvoting for disagreement much to my chagrin.
Java or single operating system applications were the alternative. Where would we be today if you couldn't swap between Mac and Windows laptops -- or worse, had to have both -- because you depended on applications that had no common operating system?
The reason we can use linux as a desktop is because of web applications. Now, it's possible that we could have ended up with Web Start or some alternative, but we didn't.
Even today, cross-platform applications are terrible or expensive or both. Even today, it's a giant pain to write cross-platform apps in anything but C or C++. (QT's documentation is not great for the alternatives IMO, and you end up needing to understand C++ anyway.)
If we want to get back to this, we need a better option. It turns out that nobody is willing to put in the effort when we already have web applications.
Worse is better.