Hacker News new | ask | show | jobs
by ebiester 1930 days ago
But nobody chose the alternatives.

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.

5 comments

I think the answer would have been for Java desktop apps to take off. I think if we had had a more diverse desktop landscape in the late 90s / early 2000s Java desktop apps would have won. As it was that was peak Windows and Java desktop apps were never given the time they needed to mature since the cross platform pitch was at its least compelling. The browser pretty much won because it was able to unseat the Windows hegemony without directly attacking Windows the way any of the alternative OSes had to do.

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.

Web apps won because they didn’t need to be installed on the device. They were vastly inferior to desktop apps built with any framework (even java), but they were “good enough” and IT departments liked them because they were easy to deploy. Anything that required a local install never stood a chance. That advantage for web apps is still there, which is the thing that keeps web app dominance in place.
I feel like this could have been overcome by Java Web Start, which at the time it was released was too little too late. Even embedding applications as applets could have been a good solution.
I don't know.

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.

I think people forget how slow the Java applets were to load though. It wasn't a great experience at all.
I'm not saying there were no problems, and it's not like we haven't gone through massive teething pains to get to where we are with browser based apps either. However I'd argue if all the work that went into trying to turn a hypermedia system into an app runtime had instead been focused on fixing the Java issues, we'd be in a far better place.

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.

Java Web Start must have all stars aligned for the apps to work correctly.

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 don't think Java as an app platform ever really recovered from the reputation in picked up in the 90s in the form of applets (which were notorious for crashing your browser/machine) and in the 00s with desktop apps due to the high startup time and often alien-feeling UI toolkits.

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.

>Java or single operating system applications were the alternative.

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.

> 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.

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.

Flutter2 is trying to tackle this issue by using the same code across mobile desktop and web but also being AOT compiled. Maybe it'll be more efficient than electron?
Was there ever a JVM web browser?
Yes... even in its heyday, HotJava was far less usable than Mosaic or Netscape. But it did exist.
I would say the JavaFX webview API, but that's based on webkit.
It's interesting to me you're getting downvoted which signifies that people don't think you're adding to the conversation

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

>which signifies that people don't think you're adding to the conversation //

Point of fact: pg, the founder of HN endorsed downvoting for disagreement much to my chagrin.

I think the original wording suggested he accepted it since it's going to be done anyway. I actually think he's right, see Reddit
I forgot to mention though that the M1 has reduced complexity in "cross-platformness" for one dimension now that you can run iPhone apps on macOS. People have been sideloading .ipa from their phone to their laptop which is exciting. Seems like a step in the right direction