Excerpt of email reply from Nathan Myhrvold is mostly correct:
>The new Java applications are NOT credible threats to traditional PC software any time soon. [...] Cool new technology always expands rapidly into NEW ares (where there is a vacuum).
Java's hype of Write-Once-Run-Anywhere to kill Microsoft Windows didn't happen on client desktop apps like many expected. Desktop apps are still C++ and some newer apps are Javascript(Electron). Yes, there are a few niche desktop apps using Java like JetBrains IDEs but history has shown that Java made more market penetration on server-side code. The 1990s dot coms like Ebay and Amazon were early users of Java on their servers. I read that Google uses Java on the web servers to generate the results page. (To be clear, I think Google uses C++ for the crawlers to build the index and the algorithms for search engine ranking.)
Java didn't kill the desktop. The web - Javascript - has put a huge dent in it, especially via the medium of smartphones which were never going to run Windows desktop software. (+). The desktop limps on but it's not quite as dominant as it once was. You can run an entirely successful multibillion dollar software business without a single Windows machine being involved at either the client or the server or developer ends.
(+ don't mention Continuum or UWP or Windows Phone)
>Java didn't kill the desktop. The web - Javascript - has put a huge dent in it
Nah, I disagree. Mobile killed the desktop, 85% of that is Android, and most Android apps are written in Java. So yeah, Java did eventually "kill" the desktop. But I would point out it was mostly low cost, battery powered, untethered mobile, not the Java language or runtime. What Java solved was a chicken/egg problem where there are no developers because there's no market because there's no developers...
The web never killed the desktop. There are no high end games on the web. There are no native features on the web. The web provided forms and ssl; an e-commerce platform. That's it. Everything outside of e-commerce on the web is ad supported which leads back to e-commerce. All roads lead to Rome. That sums up the total contribution of the web on humanity as a whole IMO. Yes, you can list off small exceptions, but most people using the web are participating in e-commerce at some level.
You mean the native app stores on smartphones? Because that's what competes with desktop software now that people user their phones for computing. But you can still get the app version of windows desktop software.
IMHO this was because the JVM at the time had bad performance compared to native apps. I certainly avoided Java apps on my machine as much as possible if there was a native alternative, the extra load on consumer machine resources at the time just wasn't worth it.
I think you're ignoring the giant world of custom, bespoke, enterprise software which is majorly written in Java (and these days on web) - the fact which makes Windows in the Enterprise (Microsofts main money maker) much much less sticky as they would have liked.
The little bubble you're talking about is far from Microfts main concern.
Luckly, Linux and macOS never really could grow out of their niches to really hurt Microsoft.
> Luckly, Linux and macOS never really could grow out of their niches to really hurt Microsoft.
"Kind of" (indirectly as others pointed out) - the Dotcom bubble from a systems perspective was based on "Put these words on your VC funding paperwork and we'll throw money at you: Netscape Enterprise Webserver, ATG Dynamo (or similar), Solaris 5/6/7 on Sun E250s and E450s, Oracle Database and Java". I was at a services company doing systems work for Java engineers and built countless versions of this stack; java code was written on Windows workstations and deployed to the Sun servers (this might help explain why Java is deployed the way it is - many devs just zipped up a directory, uploaded it and unzipped it remotely).
Then Blackdown JDK[1] entered the room and changed the game - it gained it's first release right after the Dotcom bust and turned that stack on it's ear; now you could use Apache, Tomcat and MySQL (because Java developers could run MySQL on Windows, it "won the war" against Postgres at that time) creating a way to survive in the money-vacuum years following the Dotcom bubble crash when things were very scrappy and people were looking to just survive the storm if they could. My services company had to lay off some 80% of employees because all the clients dried up during the bubble burst.
There was a shot right here to have Java production workloads run on Windows Server (NT etc.) since all the java devs were doing it personally, but running on Linux was a much higher performing stack at the time and of course pennies compared to the previous stack even in the kernel's younger years or paying for Windows licenses (and more hardware). Red Hat's IPO in 1999 preceded the Dotcom bubble, putting them in the right place to handle these workloads post-Dotcom as they had a mature Linux offering with a business plan to Enterprise minded shops (appeal to the business folks - save money, have someone to blame if it breaks). Techs loved it because we'd been doing Linux for a decade and here it was about to take over the server world, and Java workloads were helping make that happen.
my understanding was that java was originally envisioned as a runtime for iot. i remember reading a lot about how they were expecting it to land in cell phones, set top boxes and other internet connected devices.
they started with applets in the browser. at the time javascript was incredibly immature and used mostly for client side validation of form fields; but was hated by users and developers alike because browser support was inconsistent leading to spaghetti code and bad ux.
java applets were also frowned upon. the jvm was quite heavyweight and would struggle to start up on the pcs of the time. the immaturity of the technology made the uis sluggish and fragile.
i don't think anyone expected it at first, but using java in web backends became very popular. i suspect this was because performance was reasonable once a server was warmed up and it was sort of turning into an ecosystem that a lot of money was being poured into. the microsoft ecosystem for internet stuff at the time was buggy and terrible, with its "systems built to run internally on corporate networks" lineage showing. on the backend, iis was known to be insecure and hard to code for and on the front end, nobody wanted to aid microsoft lock-in with client side vbscribt and activex.
the geeks wanted internet native unix based servers and the well trod options there were java, perl and php (or bespoke options built on them). nobody wanted to do strings in c/c++, further pushing towards high level languages of which java could be a performant one for heavy workloads.
ironically, the java iot dream was eventually realized by google with android. even more ironically, it's probably the most complicating and complained about part of the platform.
> I am literally losing sleep over this issue since together with a move to more server based applications it seems like it could make it easy for people to do competitive operating systems.
Gates was talking about server applications, and he was right. Within 10 years, people were using Gmail instead of Outlook and Google Docs instead of Word. Both are written in Java on servers not running Windows, exactly as Gates feared.
I mean it's also a lot of client-side JavaScript, but yeah, I thought this line was the most prescient.
As I've moved back and forth between Windows and Linux over the past 15 years, I've found it increasingly easy to do everything on Linux, and that's mostly because more and more of what I do is just in the browser. At this point, it's Linux on my personal laptop with a Windows virtual machine for only two or three Windows-only desktop applications that I still occasionally require.
As long as Firefox and Chrome are cross-platform, the OS matters less and less.
> Desktop apps are still C++ and some newer apps are Javascript(Electron)
I think the reason java failed on desktop and electron works is because electron is an entire runtime packaged into the app. The java team failed to recognize that people want to install an app without worrying about external dependencies. Later on the Adobe AIR team failed to realize this as well and while AIR had a promising start it flopped as well due to external dependencies.
I’ve always wondered why Java didn’t take off more for desktop apps. Was it a compromised user experience vs native apps? Was Swing bad to work with? Did Web 2.0 come in and steal the show right when it was starting to gain traction?
I think it's the core, the 2D engine, just never got the love it needed to be a great place to start. Nobody seemed to prioritize making that happen.
Like, the antialiasing was noticably fuzzy. I never found an applet that looked like it belonged on the webpage. And when I built a few, it was a lot of work to even get font rendering to not be horrendous. And even then, you'd see what the browser rendered vs what the applet rendered and they were always off. I remember using images instead of font rendering sometimes.
So, if you made a swing app, it was easy to put together, but hard to make look "professional".
By the time of the Oracle acquisition, I'm pretty sure everyone just realized the browser and mobile "won" and that's why we just had JavaFX get broken off the platform and basically put out to pasture. But it's not like much went into the core platform itself to make building great UIs easy. The underlying 2D rendering just a great place to start.
When I look at where JetBrains is going, it sure seems like they are building on top of a better 2D engine, in this case, skia: https://github.com/JetBrains/skija.
It was a PITA to manage for end users. They had to install the JVM and update it when the JVM updater told them so. Many people didn't update (slow connections for a file size comparable to today's one, no time, etc.)
Then the application had its own non native widgets and was noticeably slower than native ones.
Then (more importantly IMHO) developers discovered that HTML interfaces were good enough even 25 years ago and being able to update a web application (they were no app back then) even only once per month was so much better than having to distribute thousands or millions of copies of a desktop application. Game over. BTW that was web 1.0.
I wrote a Java Webstart app for internal users way back when. It was harder to work with and not as end user friendly as what I could create in VB5. Of course all my internal client were on Windows so VB was an option.
Then the web came in and stole the show. Even a slower web app was so much faster to develop and push out to 10k internal clients (that was a lot then hah).
As an end user, the UX was always goofy. If the devs made a lot of effort, it could look like a bad impression of a native app, but never exactly right. As soon as you'd hit an error state or edge case, you'd see some weird ass Java-looking error.
Electron is different, because we all got used to web apps, and electron apps are just web apps.
Through IE, Microsoft controlled what you could run in the browser and they refused to upgrade the embedded JVM. Java Applets started becoming popular but then they stagnated.
Microsoft control was broken when Google decided create Chrome. Chrome is what allowed javascript to flourish.
It didn't happen because Microsoft was able to kill it.
See, for a few years MS had a tight control over the browsers and they refused to upgrade the JVM in IE when they lost their infamous lawsuit against Sun. So Java Applets never flourish.
Microsoft control was broken when Google decided create Chrome. Chrome is what allowed javascript to flourish.
I think Gates was losing sleep because he had come to expect to win everywhere all the time. Myrhvold’s reply (in a lower tweet) is a gentle way of saying that Microsoft doesn’t have to, to succeed as a company.
I think as a company finds continuous, outsized success, there is a risk for a leader’s mindset to get warped and resistant to anything but outsized success. Anything less than domination looks like a problem, an anomaly that must be found and destroyed.
I think it might explain some otherwise indefensible behavior, like HP spying on their board, or all the shady stuff that Uber was doing, or even MS’s own anti-competitive behavior.
I think leaders have to get shocked out of this mindset or just removed. Gates was shocked by MS’s conviction and stepped down. Ballmer and Kalanick were pressured to resign by investors. Both MS and Uber have benefited from new leadership that lowered the temperature and refocused the company.
I also think it explains why Facebook is the way it is now. There doesn’t seem to be such pressure points available for Zuckerberg though.
Microsoft's new leadership may have "lowered the temperature and refocused the company" to open-source software, but now they're more than ever anticompetitively promoting Edge and Videos and etc., progressively making it harder to switch browsers or make Start/F1 search open a different browser, manipulating users who use Edge search for Chrome, making Edge run in the background for fast start (I suspect to make it appear faster to start than Chrome), baking telemetry into Windows and VS Code and PowerShell and vcpkg, releasing proprietary extensions for proprietary VS Code which won't run on open-source VSCodium, performing hostile takeovers of .NET Foundation projects, etc.
One of the weird things about this is that Microsoft had compiler and programming language stuff as their bread and butter for a time. So Myrhvold's reply does include "embrace and extend" and that they'll do J++, but I'm not sure why that point wasn't emphasized more. A programming language ecosystem was their wheelhouse. They of course got in trouble trying to out-Java Java, and still calling it Java. They did C# and while it did not "kill Java", it was hugely successful for them.
It'd be a somewhat reasonable and simple answer, and an honest one, to Gates's concern: "well, let's be a kickass platform to run Java on."
Uber made the smart choice. They can always buy back into autonomous vehicles when a company comes up with an autonomous vehicle the works well in all weather conditions. All they have to do is buy them and add them to their fleet and combine with their current app infrastructure.
Tech companies don't have a choice but to grow fast all the time. As soon as the growth stops even a little, they lose investor interest and their stock will crash unless they find the way to keep going.
Since this thread contains a lot of comments about Java's ergnomics and speed of innovation, it might be interesting what has changed in the last years:
It is pretty impressive how Java keeps up to date over decades! I think in the long run it is very wise to be conservative over new language features. For example the work von "green threads" (project Loom) is a really good, fundamental approach with backwards compatiblity and there are some voices on the web thinking that such an approach is more clever then introducing "async" to the language (C#, Python, etc). I really appreciate how careful the engineering is and how they don't shy away from putting years into some topics.
I guess I've never read these emails before. I was a child when these emails were released, so I really wasn't following these events in real time.
I'm blown away at how openly they discuss being anti-competitive. When I think about a company being monopolistic, I usually envision market and environmental pressures that culminate in actions that can be broadly identified as anti-competitive. I don't typically envision leaders sending emails to each other on how to best be cartoonish villainous monopolists. And I guess it's strange that there was a time that it was considered even feasible that Windows could corner the whole web. Then seeing "embrace and extend" literally quoted in the email feels like some bad hit piece on Microsoft.
Developers my age grew up with multiple OSes with web capability. When I graduated, Chrome OS just came out, Android, iOS, and OS X were all widely used. Most of my career Microsoft has... "embraced" FOSS. Just some thoughts from a different perspective.
yeah, in addition, a lot of younger people see Gates as some sort of savior given his philanthropy. I think a lot of older people in the tech industry see it as Gates trying to buy his way into heaven.
It's easy to handwave away Bill's concern today because windows is still the main OS on PCs and laptops.
That's kind of missing the point. What you don't see is all the areas where MS could have 'won' had the world not moved in a more platform agnostic direction. Remember all of the little miniature laptops in the 90s? Practically all of them ran some version of windows even if it was laughably impractical for such a device. MS completely missed the 'mobile' train and could have dominated if they were paying attention.
Remember all of the enterprise systems running some version of windows server? Imagine a world where java didn't exist and the .net runtime was dominant. That's a cash cow without end.
As it is, MS missed out on both mobile and most of the enterprise infra pie. If they had managed to capture both they'd be an absolute behemoth.
> Remember all of the little miniature laptops in the 90s?
In the 90s? Laptops barely existed, definitely not "little minature" ones. I remember e.g. the https://en.wikipedia.org/wiki/Asus_Eee_PC launched in 2007, and many follow-ons after that.
PCs took a hard turn towards power-constrained (i.e. laptop running on battery) right around the same time Windows took a hard turn towards "resources are cheap and plentiful, just toss seven levels of XML in it"
The apps of tomorrow are not exclusive to Windows I would say, Instagram, Google, eBay, etc so I would say he was right also.
The response emails were also right in that the existing business was not immediately threatened, but it is definitely diminished.
"Java" in 1996 isn't what Java is today. In 1996 Suns focus was providing a runtime for executing code anywhere on the network, on any machine. That's why security managers, class loaders, applets, rmi, and jndi were baked in from the beginning. That future didn't pan out; no one wanted to run other peoples code. So J2EE was the pivot to the Enterprise and server apps. That's what we ended up with.
In a way, Gates may have been imagining or extrapolating the "run code anywhere" idea to the cloud services of today, which we've seen is a bit of a threat to proprietary operating systems. Well, more than a bit.
This obviously didn't stay true; the browser is everything the JVM wanted to be today. A JIT for a universal programming language and multiple layers of sandboxing.
I don't think people care about running other people's code. Java just wasn't seamless enough. Or they lost some key political battles (few major OSes shipped with it).
Microsoft had already established itself as the dominant market player in the early 90s. Bill Gates was the richest person in America by 1992 and the richest in the world by 1995.
The 90s Java hype must really have been otherworldly to make him panic this much.
You lose the developers, you lose the platform. That's what Bill Gates was thinking.
Microsoft was "lucky" that:
1. JVM was too slow to run desktop apps on machines even in the early 2000s
2. Web and Javascript became so important that it reduced the impact of losing out on Java
3. Linux killed Sun Microsystems.
Still, so much server infrastructure runs on Linux+JVM stacks that you could argue that it was a major reason Microsoft failed to gain dominance outside their desktop stronghold. Years later, their biggest existential threat in the form of Android was basically a modified Linux+JVM stack.
People may think Bill was over-pessimistic, but looking back, their failure to kill off potential competitors like Java was one of the reasons Microsoft stagnated post-2000s.
The 90s Java hype must really have been otherworldly to make him panic this much.
I think it is a certain personality type that has more than $50 million* in assets and still has this level of competitive edge.
I think most people have a number that would drive them to relax a bit and just do whatever they wanted. I think for some people whatever they want though is to engage in cutthroat competition.
if anything, Gates-era Microsoft was known for being anti-competitive. What the very-wealthy want, I think, is power and control, and for the number to go up to stroke their egos.
> Bill Gates was the richest person...the 90s Java hype must really have been otherworldly to make him panic this much
I kind of disagree with this line of reasoning. I think very successful people sometimes overestimate possible threats, and it may be one of the reasons for their success. I had this realization when watching the most dominant Age of Empires player stream once. I once struck by how paranoid he was about what the opponent might be doing, but it meant he was constantly prepared for worst-case scenarios. He seemed genuinely worried most of the game, rather than confident like I expected given his first-rank status.
If you read Nathan Myhrvold's reply he says something very similar:
"It is a new and uncomfortable feeling to be the incumbent rather than the challenger in one of these battles. However, we must not panic. The current perceptual battle is a long way distant from actual business and revenue issues, and we can't let perceptual issues cloud our thinking too much."
It was the battle for "the web" and the sun+netscape partnership was an actual menace to microsoft's activex and vbscript things. There is an espisode the Lex Fridman podcast with Brendan Eich where he talks a little about that specific time.[1]
The "panic" was right imo (only in that specific area) i mean, there is almost 0 microsoft on the web today.
C#, TypeScript, Azure, Visual Studio, VSCode, GitHub, the npm package ecosystem, Microsoft Edge, having the de facto monopoly of several markets with office and its web integrations, Microsoft Teams suite for enterprise and I think I'm missing a lot more stuff.
Claiming there's no Microsoft on the web seems far fetched when Microsoft de facto controls extremely large parts of producing modern web applications, deploying them and serving the tools necessary for businesses to coordinate.
It may have lost share to competing applications or it missed the train exactly, but I cannot think of any other single company you can lock in your organization from management, production to deployment and even consumption on Microsoft own devices from Surfaces to Xbox.
I've worked (as a consultant) on a number of 'boring' B2B web applications targeting 'boring' industries and one thing they all had in common was that they where all in on the Microsoft stack.
Ain't Java the 2nd most used language in the world, after JavaScript? The enterprise world uses Java everywhere. Java powers pretty much the entire banking infrastructure.
Aren't there billions of Java smartcards that people carry in their pocket/wallet and use on a daily basis?
Aren't there billions of Android apps installed that are, basically, Java?
One can dispute the numbers a bit but... How is Java not one of the biggest success story ever for a programming language?
I'd also add: it's kinda funny to see so many programmers hating on Java and thinking that, somehow, Java is dead or dying, yet on a daily basis they'll use one of the JetBrains tools, written in Java, to work on their "non Java" code.
I do not only think he was right to lose sleep over it: I think Java delivered.
> How is Java not one of the biggest success story ever for a programming language?
It absolutely is.
Java isn't sexy, for the most part. It lets a lot of innovation happen in other languages, then takes the successful parts for itself. This is how we (eventually) got generics, lambdas, streams, and local type inference, for example.
Java slowly becomes more ergonomic, and that slowness - the slowness to change, not execution speed - is why it gets a lot of hate. Why use Java, when $LANGUAGE_OF_THE_DAY has $FEATURE_OF_THE_DAY?
What people fail to realize, what people fail to see the value of, is that this slowness means Java doesn't get worse. Java has avoided most unforced errors. It's not like C++, where the template language is both Turing complete and the fastest way to summon Beelzebub from the depths of his infernal pit, and where you need a team of PhDs to decide which version of `auto_pointer` actually works the way you think it does. It's not Javascript, where the framework your front-end lead sold you on last week has already been superseded by the hot new thing.
And you don't generally have to worry about compatibility. Until v9, you could take code written against the 1.0 spec of the language and expect it to run pretty much out of the box. And the changes post v9 honestly aren't that difficult to work through, as opposed to Python's 2 -> 3 split.
Java isn't the sexiest language out there, but it hits a very sweet spot, right in the middle of the "familiar", "stable", and "productive" Venn diagram. It's probably the second-most important computer language developed in my lifetime, after Javascript, and is without a doubt a smashing success story.
Java's (Oracle's) strategy is to spend most the innovation on the runtime, and in that regard, it's probably the most advanced platform. The net effect is that you can write some pretty naïve and boring OO-style code that will almost always perform superbly. This is a good thing, and something that I envy as a C# programmer.
Writing Java in my day job currently, I really miss C#. It feels slightly more like a "Java done right" -- the same strategy of bringing "fancier" features from F# or other languages, but it has just a _few_ more features that make day to day development just a little more pleasant.
In 1996, Java was pretty darn sexy. Managed runtimes in a high performance[1] language were an absolute revelation at the time.
It's absolutely true that as it evolved, Java grew to embrace the affects and aesthetics of its biggest customers (Enterprise backend coders). And that's not sexy at all. But at the time? We all thought this was going to be the systems language for the next century.
[1] Almost. At the time this email was written, the first JIT JVM was still a few months out from its early beta releases. But Gates could absolutely see where the wind was blowing.
It was about 10 years ago that the community agreed that it was the JVM that was successful. It's a platform with multiple viable languages. Scala obviously comes to mind. Kotlin is a somewhat mixed case because its popularity comes from the mobile world where you don't really have the JVM.
Java is not the most pleasant language for sure. It started as a dumbed-down as golang was (still is?) for years. It's still catching up with C++ (e.g. see all the Valhalla project discussions on HN). It certainly shows its age. It's not clear to me why so many people are still fixated on Java when solid alternatives have existed for years within the same ecosystem.
> It's not like C++, where the template language is both Turing complete and the fastest way to summon Beelzebub from the depths of his infernal pit, and where you need a team of PhDs to decide which version of `auto_pointer` actually works the way you think it does.
Value types on the JVM have been described as "6 PhDs, knitted together". In C and C++, this is just struct.
> It's not Javascript, where the framework your front-end lead sold you on last week has already been superseded by the hot new thing.
You should stop spreading stuff like that, it's false. React has been the most popular frontend framework for 6 years at this point, and Express the most popular backend framework in JS for at least 8 years. The backwards compatibility of JS is at least as good as Java, ES5 and ES6 were great upgrades (a bit like Java 5 and 8 in a way).
I like Java and I think it's very important. I can say that without feeling the need to dismiss other languages that are as important as Java to the modern world.
> It lets a lot of innovation happen in other languages
Only if you're defining innovation as syntax and semantics to the language. Java has been the pinnacle and cutting edge of language implementation innovation decades - Sun/Oracle is/was the Bell Labs of VM and JIT research.
> It lets a lot of innovation happen in other languages, then takes the successful parts for itself
The only time I've ever had to use Java was for a computer science class, and I thought it was a solid language (pun intended), but I hated its half-assed attempt at operator overloading.
I think it's a major feature that's long overdue to be fully implemented in Java, because it's already used for some of Java's built-in classes and it's proven useful in many other programming languages.
Most of Java seems very well-thought-out to me, but for some reason they decided to add only some operator overloading, instead of planning ahead more.
I remember hearing somewhere that they were planning on adding operator overloading, but last I checked it didn't look like it was going anywhere.
And lets not forget that the JVM runs all kinds of things that aren't Java. So Java devs who get bored can write a few packages in whatever new hotness they like until either they're sated, Java catches up, or all new development moves over.
One of the biggest turn off to me of java has always been the poor quality of many java apps. Especially on mac, you know when its a java app vs native.
And when you leave aside Java (the language) and consider the jvm platform broader ecosystem with all the various interoperable languages like kotlin, scala, clojure… it’s a huge space.
I understand some level of heathy criticism but, I don’t really understand the level of hate the jvm gets.
When you look at recent and upcoming features, a lot of the complaints about it being “heavy” are being directly addressed.
There is a wide spectrum of age, experience, and attitude in the programming population. Hot take: I am guessing that a lot of the noisy hating and hemming and hawing comes from the newer, less experienced cohort, we just can't tell on the Internet and so the perception skews that a significant fraction of all programmers think this way. I am basing this on having been there, done that, where I would scoff with indignation at any software not written in hand-optimized assembler with a bunch of unnecessary (to my newbie self) layers of abstraction.
JVM is not really that heavy since the Intel released "Core i" series processors. Also, JVM uses its resources well. It's one of the best engineered software artifacts if you ask me.
I really enjoyed using the language back then, and will not hesitate to restart if there's a scenario which would fit the bill to use it.
I really dislike Java but I like the JVM and am a big fan of clojure. I don’t trust/like Oracle, and maybe it’s just confirmation bias, but I hear much more along these lines than people who just dislike the jvm.
It's not heavy, it's the syndrome where wild success gets you associated with the good and the bad.
Enterprise Java is extremely slow, over-engineered, complex, that's where the majority of hate comes from. Then they had their security debacle, coupled with a couple strange roadmap changes, and being bought out by Oracle, an unpopular company for different reasons.
Java the language then sat mired by the corporate world and went nowhere for almost a decade (java 6, 7, 8).
Oh, and don't forget Billy, wonder why C# has made such a comeback in recent years. It's a nice(r) more modern language, it's not that great, come on...and I say this currently working in it full time.
So yeah political prop and the normal stuff popularity brings with it. It has also happened to JS too...
>I do not only think he was right to lose sleep over it: I think Java delivered.
He's not losing sleep over Java, the language, becoming popular. He's losing sleep over the threat to the business (at the time, operating systems). I think if you consider Microsoft's market cap ($2.39 trillion this morning), despite some bumps along the way, Microsoft protected and grew its value.
It's not to say Java hasn't enabled monetization. But if you have "billions of Java smartcards" and the long tail of those installs don't create much value or affect Microsoft's bottom line, then, to Bill, that particular point is moot.
I think Gates didn't have anything to worry about regarding Java... at the end of the day, the company that created it went under the water in 2009. Java as a technology was great, but as a business just didn't cut it.
I had a summer job programming Java when it was still in beta.
I remember getting into an argument in the men's room of the basement of center Ithaca with two guys who were saying that Java was overhyped and I was saying "believe the hype"
That time I was right.
Java was one of the first programming languages to be specified by adults. (e.g. they didn't know how to specify PL/I and make it work, C worked by accident, ...) When researchers realized the memory model was broken the first instinct of the Java creators was "let's fix it" while other languages first made excuses and waited a decade + for a "fix"
The original promise of Java was cross-platform user-facing visual apps. (Which is why Gates was scared of it.) This promise certainly failed to deliver.
Instead Java is now Cobol 2.0, but nobody lost sleep over this fact.
PHP was a scripting language that got big because my aunt could create a “website” with it and host it for pennies. If anything, its popularity was the only surprising thing.
The JVM on the other hand was not chosen by Google, Apple, Alibaba and basically the majority of web servers to be the base stone of their functionality by accident.
>Java would be the same success as PHP .. it might be everywhere but due to all kinds of side forces.
People like you that complain about C,PHP,Java etc forget the history , your favorite cool language did not exist at that time or if it existed had probably a lot of downsides. Also many complainers do not work with the languages and repeat like parrots something they read. I would love to get some perfect programming language, something with more maths in it that forces thinking of solutions and less glueing shit together or rewriting X and CoolLang for my CV.
"How is Java not one of the biggest success story ever for a programming language?"
The language is an enormous success. But in one key area it did not succeed in popularity: in building cross-platform desktop GUI apps.
Many businesses did use it for building internal GUI desktop apps. However, Java did not find much success in consumer-facing desktop apps - despite the considerable effort made to encourage developers use Java for this purpose. For example, in the late 1990s Java had it's own GUI look-and-feel called 'Flush 3D'. It was designed to be consistent across operating systems.[1]
But Java desktop apps earned the reputation as being slow and unresponsive, not fast and nimble. The Java applets that ran in the browser were no better. Today, perhaps Java will find success creating consumer-facing, high-performance applications on web pages using WebAssembly?
I think much of the hate for java came from non-programmers, or future programmers who had to deal with runtime issues. For a long time if an app was written in Java it meant it was going to be a pain at some point.
I'd say it runs distant descendants of Java. The fact that Gates lost sleep not only over Java, but over JavaBeans is undeniably funny. JavaBeans delivered frustration and secure employment for a legion of developers.
Just a couple of weeks ago we got a reminder of how horrible early Enterprise Java was, with the Log4j exploit. The kind of thing everyone goes, "why would they think that was a good idea?" today, but the answer then was "almost everyone, certainly everyone who makes decisions..."
In a very indirect way; leveraging its popularity, and coming on the heels of Apple to create a captive audience for their ad networks and surveillance machinery, Google used Java to spring up a developer base for Android, which ate away at the use of MS product outside of the US like iOS did stateside.
None of those are wrong but I think they're missing the point slightly. Bill Gates seemed concerned that Java represented either some existential threat to MS or at least something that would heavily dent their bottom line and pierce their dominance of the desktop market. And really it turned out to neither. Java is indeed very popular and undeniably a successful language + ecosystem, but I don't think what it has become was what Gates had feared.
I'd be interested to see if, knowing how it all played out, Bill Gates now believes he was right to be fretting about Java back then. Given the position Microsoft is in today, maintaining its hold on the desktop with Windows and with a strong cloud offering in Azure, I think he'd answer "no, I wasn't".
> I'd also add: it's kinda funny to see so many programmers hating on Java and thinking that, somehow, Java is dead or dying, yet on a daily basis they'll use one of the JetBrains tools, written in Java, to work on their "non Java" code.
And even JetBrains is working on a language to replace Java (which yes, runs on the JVM, but it also runs not on the JVM).
Java is a fine language, and one that I have the most experience with. I'm glad it's there, but I also think that increasingly it will not be the default choice for greenfield projects. That is typically what people mean by a dying language: it's only used for projects in maintenance mode.
It actually failed at what Bill Gates feared it would to: it is pervasive, but not a competition to Windows and the Windows GUI stack. Smartcards were never MS's target market, and nobody was yet thinking about smartphones.
The move to server-based experiences made the Mac competitive and made iOS wildly useful despite not bundling jvm.
I think what most helped it was that it was the common language against early commercially-supported app servers from big vendors.
BSD started as a Pascal compiler for Unix and enabled a community of researchers to work with a common language on machines more accessible than those from DEC.
Bill was right that consumer-oriented products with server-side software had Java as the wind at their backs.
Actually, people were, even the non-technical everyday Joe. I remember a sales guy commenting once at a beginning of a meeting as he pulled out his PDA and set his oversized cell on the table "I'm just waiting for the day they combine these together so I only have to carry one of these". I think this would have been 1998 or 99, but people talked about "PDA phones" for quite some time before the iPhone appeared on the scene. The technology just wasn't there, and the CE based PDAs were clunky, nearly useless.
Except Java never truly threatened the Windows OS. Nathan's reply back was on point: Java expanded into some voids but didn't kill Windows.
Android beat Windows mobile because MS pissed away their advantage (they had a mobile OS before either Android or iOS but it sucked) and Windows mobile was too little, too late. Nothing to do with Java really.
Well in the context of the emails: no, Java failed at delivering.
Solaris OS is now history and many programming language competitors raised and won over it at its own game in all areas but android, although it was an industry leader for quite long time its time is over and now it is mainly corporative legacy.
Even as general programming language Python and JavaScript took over, and in dedicated areas like webservers it’s been long since Java’s time is gone. The analysis in the replies is correct.
> Even as general programming language Python and JavaScript took over, and in dedicated areas like webservers it’s been long since Java’s time is gone.
I don't think this is true. Yes in the US in the startups Python, RoR and JS are more popular but in the enterprise Java (and .Net to some extent) still rules. In India right now the demand for Java programmers is sky high. Salaries for Java programmers have increased by 100% or more in the past 6 months or so. Actually overall salaries for programmers have increased a lot in India in the past 6 months due to very high outsourcing demand but Java is in especially high demand.
Note: I am in the outsourcing industry since past 12 years.
Yes, Java is successful, both as a language and as a runtime. Obviously. You can't argue with billions of Android phones. Or the (possible?) news that FB has already given up and will be simply using Android for Meta.
I don't think a lot of folks here were around at the time to remember that a lot of the early hype around Java and the Web were both about unseating Microsoft.
Microsoft has thrived.
Sun is in the dustbin of history. Yes, mountains of cool tech came out of Sun, but as a company, as a existential threat to MS? Java didn't deliver.
That's not to say it couldn't have, had Sun managed it differently. But if Sun had managed it differently, it probably wouldn't have been the success that it is as a technology.
I'm inclined to cite that saying where there are those programming languages everybody complains about, and those that nobody is using. Doesn't hold for HN, though ;)
I hate on Java because it's terrible to program in and seems to make it harder to actually solve problems, between the store-brand version of object orientation that it's based on and the mountains of useless abstraction that begets. There's a reason its relative popularity is on a downward trend [0] - my generation of programmers were taught Java in college and learned to hate it. Though I will say that its narrowness and structure make it the best choice for outsourcing/getting the most out of the cheapest development resources. Just not something that I want to deal with.
Tiobe is next to useless, and Java doesn’t beget useless abstraction - it is entirely up to you how you write your code. Also, while it is indeed started out as an OOP language, it is a mixed paradigm one nowadays (just as almost all languages are) — you are entirely free to program it in a much more functional way. It is especially freeing with the new records.
>The new Java applications are NOT credible threats to traditional PC software any time soon. [...] Cool new technology always expands rapidly into NEW ares (where there is a vacuum).
Java's hype of Write-Once-Run-Anywhere to kill Microsoft Windows didn't happen on client desktop apps like many expected. Desktop apps are still C++ and some newer apps are Javascript(Electron). Yes, there are a few niche desktop apps using Java like JetBrains IDEs but history has shown that Java made more market penetration on server-side code. The 1990s dot coms like Ebay and Amazon were early users of Java on their servers. I read that Google uses Java on the web servers to generate the results page. (To be clear, I think Google uses C++ for the crawlers to build the index and the algorithms for search engine ranking.)
(+ don't mention Continuum or UWP or Windows Phone)
Nah, I disagree. Mobile killed the desktop, 85% of that is Android, and most Android apps are written in Java. So yeah, Java did eventually "kill" the desktop. But I would point out it was mostly low cost, battery powered, untethered mobile, not the Java language or runtime. What Java solved was a chicken/egg problem where there are no developers because there's no market because there's no developers...
The web never killed the desktop. There are no high end games on the web. There are no native features on the web. The web provided forms and ssl; an e-commerce platform. That's it. Everything outside of e-commerce on the web is ad supported which leads back to e-commerce. All roads lead to Rome. That sums up the total contribution of the web on humanity as a whole IMO. Yes, you can list off small exceptions, but most people using the web are participating in e-commerce at some level.
The little bubble you're talking about is far from Microfts main concern.
Luckly, Linux and macOS never really could grow out of their niches to really hurt Microsoft.
"Kind of" (indirectly as others pointed out) - the Dotcom bubble from a systems perspective was based on "Put these words on your VC funding paperwork and we'll throw money at you: Netscape Enterprise Webserver, ATG Dynamo (or similar), Solaris 5/6/7 on Sun E250s and E450s, Oracle Database and Java". I was at a services company doing systems work for Java engineers and built countless versions of this stack; java code was written on Windows workstations and deployed to the Sun servers (this might help explain why Java is deployed the way it is - many devs just zipped up a directory, uploaded it and unzipped it remotely).
Then Blackdown JDK[1] entered the room and changed the game - it gained it's first release right after the Dotcom bust and turned that stack on it's ear; now you could use Apache, Tomcat and MySQL (because Java developers could run MySQL on Windows, it "won the war" against Postgres at that time) creating a way to survive in the money-vacuum years following the Dotcom bubble crash when things were very scrappy and people were looking to just survive the storm if they could. My services company had to lay off some 80% of employees because all the clients dried up during the bubble burst.
There was a shot right here to have Java production workloads run on Windows Server (NT etc.) since all the java devs were doing it personally, but running on Linux was a much higher performing stack at the time and of course pennies compared to the previous stack even in the kernel's younger years or paying for Windows licenses (and more hardware). Red Hat's IPO in 1999 preceded the Dotcom bubble, putting them in the right place to handle these workloads post-Dotcom as they had a mature Linux offering with a business plan to Enterprise minded shops (appeal to the business folks - save money, have someone to blame if it breaks). Techs loved it because we'd been doing Linux for a decade and here it was about to take over the server world, and Java workloads were helping make that happen.
[1] https://en.wikipedia.org/wiki/Blackdown_Java
they started with applets in the browser. at the time javascript was incredibly immature and used mostly for client side validation of form fields; but was hated by users and developers alike because browser support was inconsistent leading to spaghetti code and bad ux.
java applets were also frowned upon. the jvm was quite heavyweight and would struggle to start up on the pcs of the time. the immaturity of the technology made the uis sluggish and fragile.
i don't think anyone expected it at first, but using java in web backends became very popular. i suspect this was because performance was reasonable once a server was warmed up and it was sort of turning into an ecosystem that a lot of money was being poured into. the microsoft ecosystem for internet stuff at the time was buggy and terrible, with its "systems built to run internally on corporate networks" lineage showing. on the backend, iis was known to be insecure and hard to code for and on the front end, nobody wanted to aid microsoft lock-in with client side vbscribt and activex.
the geeks wanted internet native unix based servers and the well trod options there were java, perl and php (or bespoke options built on them). nobody wanted to do strings in c/c++, further pushing towards high level languages of which java could be a performant one for heavy workloads.
ironically, the java iot dream was eventually realized by google with android. even more ironically, it's probably the most complicating and complained about part of the platform.
> I am literally losing sleep over this issue since together with a move to more server based applications it seems like it could make it easy for people to do competitive operating systems.
Gates was talking about server applications, and he was right. Within 10 years, people were using Gmail instead of Outlook and Google Docs instead of Word. Both are written in Java on servers not running Windows, exactly as Gates feared.
As I've moved back and forth between Windows and Linux over the past 15 years, I've found it increasingly easy to do everything on Linux, and that's mostly because more and more of what I do is just in the browser. At this point, it's Linux on my personal laptop with a Windows virtual machine for only two or three Windows-only desktop applications that I still occasionally require.
As long as Firefox and Chrome are cross-platform, the OS matters less and less.
I think the reason java failed on desktop and electron works is because electron is an entire runtime packaged into the app. The java team failed to recognize that people want to install an app without worrying about external dependencies. Later on the Adobe AIR team failed to realize this as well and while AIR had a promising start it flopped as well due to external dependencies.
web start enabled a user to double click to install (well cache) and run a Java application
Like, the antialiasing was noticably fuzzy. I never found an applet that looked like it belonged on the webpage. And when I built a few, it was a lot of work to even get font rendering to not be horrendous. And even then, you'd see what the browser rendered vs what the applet rendered and they were always off. I remember using images instead of font rendering sometimes.
So, if you made a swing app, it was easy to put together, but hard to make look "professional".
By the time of the Oracle acquisition, I'm pretty sure everyone just realized the browser and mobile "won" and that's why we just had JavaFX get broken off the platform and basically put out to pasture. But it's not like much went into the core platform itself to make building great UIs easy. The underlying 2D rendering just a great place to start.
I mean, even today, there's some serious performance issues with IntelliJ on 4k monitors with scaling. https://youtrack.jetbrains.com/issue/JBR-526
When I look at where JetBrains is going, it sure seems like they are building on top of a better 2D engine, in this case, skia: https://github.com/JetBrains/skija.
Then the application had its own non native widgets and was noticeably slower than native ones.
Then (more importantly IMHO) developers discovered that HTML interfaces were good enough even 25 years ago and being able to update a web application (they were no app back then) even only once per month was so much better than having to distribute thousands or millions of copies of a desktop application. Game over. BTW that was web 1.0.
Then the web came in and stole the show. Even a slower web app was so much faster to develop and push out to 10k internal clients (that was a lot then hah).
Electron is different, because we all got used to web apps, and electron apps are just web apps.
Through IE, Microsoft controlled what you could run in the browser and they refused to upgrade the embedded JVM. Java Applets started becoming popular but then they stagnated.
Microsoft control was broken when Google decided create Chrome. Chrome is what allowed javascript to flourish.
Swing is/was the same, and computers had way less power to make up for it in the early 2000s.
Just a nit, but .NET is used for significantly windows desktop apps than C++. I otherwise agree very much with your comment.
See, for a few years MS had a tight control over the browsers and they refused to upgrade the JVM in IE when they lost their infamous lawsuit against Sun. So Java Applets never flourish.
Microsoft control was broken when Google decided create Chrome. Chrome is what allowed javascript to flourish.
I think as a company finds continuous, outsized success, there is a risk for a leader’s mindset to get warped and resistant to anything but outsized success. Anything less than domination looks like a problem, an anomaly that must be found and destroyed.
I think it might explain some otherwise indefensible behavior, like HP spying on their board, or all the shady stuff that Uber was doing, or even MS’s own anti-competitive behavior.
I think leaders have to get shocked out of this mindset or just removed. Gates was shocked by MS’s conviction and stepped down. Ballmer and Kalanick were pressured to resign by investors. Both MS and Uber have benefited from new leadership that lowered the temperature and refocused the company.
I also think it explains why Facebook is the way it is now. There doesn’t seem to be such pressure points available for Zuckerberg though.
It'd be a somewhat reasonable and simple answer, and an honest one, to Gates's concern: "well, let's be a kickass platform to run Java on."
This is the same Uber that has given up on any future tech leadership and sold its autonomous driving group away right?
Tech companies don't have a choice but to grow fast all the time. As soon as the growth stops even a little, they lose investor interest and their stock will crash unless they find the way to keep going.
https://www.baeldung.com/new-java-9, https://www.baeldung.com/java-10-overview, https://www.baeldung.com/java-11-new-features, https://www.baeldung.com/java-12-new-features, https://www.baeldung.com/java-13-new-features, https://www.baeldung.com/java-14-new-features, https://www.baeldung.com/java-15-new, https://www.baeldung.com/java-16-new-features, https://www.baeldung.com/java-17-new-features
It is pretty impressive how Java keeps up to date over decades! I think in the long run it is very wise to be conservative over new language features. For example the work von "green threads" (project Loom) is a really good, fundamental approach with backwards compatiblity and there are some voices on the web thinking that such an approach is more clever then introducing "async" to the language (C#, Python, etc). I really appreciate how careful the engineering is and how they don't shy away from putting years into some topics.
I'm blown away at how openly they discuss being anti-competitive. When I think about a company being monopolistic, I usually envision market and environmental pressures that culminate in actions that can be broadly identified as anti-competitive. I don't typically envision leaders sending emails to each other on how to best be cartoonish villainous monopolists. And I guess it's strange that there was a time that it was considered even feasible that Windows could corner the whole web. Then seeing "embrace and extend" literally quoted in the email feels like some bad hit piece on Microsoft.
Developers my age grew up with multiple OSes with web capability. When I graduated, Chrome OS just came out, Android, iOS, and OS X were all widely used. Most of my career Microsoft has... "embraced" FOSS. Just some thoughts from a different perspective.
http://www.groklaw.net/staticpages/index.php?page=2005010107... among others, as a lot of the other stories had microsoft involvement.
Deleted Comment
What Microsoft avoided was this happening in PCs.
That's kind of missing the point. What you don't see is all the areas where MS could have 'won' had the world not moved in a more platform agnostic direction. Remember all of the little miniature laptops in the 90s? Practically all of them ran some version of windows even if it was laughably impractical for such a device. MS completely missed the 'mobile' train and could have dominated if they were paying attention.
Remember all of the enterprise systems running some version of windows server? Imagine a world where java didn't exist and the .net runtime was dominant. That's a cash cow without end.
As it is, MS missed out on both mobile and most of the enterprise infra pie. If they had managed to capture both they'd be an absolute behemoth.
In the 90s? Laptops barely existed, definitely not "little minature" ones. I remember e.g. the https://en.wikipedia.org/wiki/Asus_Eee_PC launched in 2007, and many follow-ons after that.
In 1999, I believed it was impossible for anyone to use anything that was not MSN messenger.
MSN was HUGE.
Today, it is a lot less nightmarish.
In a way, Gates may have been imagining or extrapolating the "run code anywhere" idea to the cloud services of today, which we've seen is a bit of a threat to proprietary operating systems. Well, more than a bit.
This obviously didn't stay true; the browser is everything the JVM wanted to be today. A JIT for a universal programming language and multiple layers of sandboxing.
I don't think people care about running other people's code. Java just wasn't seamless enough. Or they lost some key political battles (few major OSes shipped with it).
The 90s Java hype must really have been otherworldly to make him panic this much.
Microsoft was "lucky" that:
1. JVM was too slow to run desktop apps on machines even in the early 2000s
2. Web and Javascript became so important that it reduced the impact of losing out on Java
3. Linux killed Sun Microsystems.
Still, so much server infrastructure runs on Linux+JVM stacks that you could argue that it was a major reason Microsoft failed to gain dominance outside their desktop stronghold. Years later, their biggest existential threat in the form of Android was basically a modified Linux+JVM stack.
People may think Bill was over-pessimistic, but looking back, their failure to kill off potential competitors like Java was one of the reasons Microsoft stagnated post-2000s.
I think it is a certain personality type that has more than $50 million* in assets and still has this level of competitive edge.
I think most people have a number that would drive them to relax a bit and just do whatever they wanted. I think for some people whatever they want though is to engage in cutthroat competition.
* arbitrary number likely different for everyone
I kind of disagree with this line of reasoning. I think very successful people sometimes overestimate possible threats, and it may be one of the reasons for their success. I had this realization when watching the most dominant Age of Empires player stream once. I once struck by how paranoid he was about what the opponent might be doing, but it meant he was constantly prepared for worst-case scenarios. He seemed genuinely worried most of the game, rather than confident like I expected given his first-rank status.
"It is a new and uncomfortable feeling to be the incumbent rather than the challenger in one of these battles. However, we must not panic. The current perceptual battle is a long way distant from actual business and revenue issues, and we can't let perceptual issues cloud our thinking too much."
The "panic" was right imo (only in that specific area) i mean, there is almost 0 microsoft on the web today.
[1]: https://www.youtube.com/watch?v=krB0enBeSiE
Claiming there's no Microsoft on the web seems far fetched when Microsoft de facto controls extremely large parts of producing modern web applications, deploying them and serving the tools necessary for businesses to coordinate.
It may have lost share to competing applications or it missed the train exactly, but I cannot think of any other single company you can lock in your organization from management, production to deployment and even consumption on Microsoft own devices from Surfaces to Xbox.
I've worked (as a consultant) on a number of 'boring' B2B web applications targeting 'boring' industries and one thing they all had in common was that they where all in on the Microsoft stack.
Wdym? TS?
I'm sure a lot of billionaires would actually consider that drop to be something worth losing sleep over, as messed up as it is.
Aren't there billions of Java smartcards that people carry in their pocket/wallet and use on a daily basis?
Aren't there billions of Android apps installed that are, basically, Java?
One can dispute the numbers a bit but... How is Java not one of the biggest success story ever for a programming language?
I'd also add: it's kinda funny to see so many programmers hating on Java and thinking that, somehow, Java is dead or dying, yet on a daily basis they'll use one of the JetBrains tools, written in Java, to work on their "non Java" code.
I do not only think he was right to lose sleep over it: I think Java delivered.
It absolutely is.
Java isn't sexy, for the most part. It lets a lot of innovation happen in other languages, then takes the successful parts for itself. This is how we (eventually) got generics, lambdas, streams, and local type inference, for example.
Java slowly becomes more ergonomic, and that slowness - the slowness to change, not execution speed - is why it gets a lot of hate. Why use Java, when $LANGUAGE_OF_THE_DAY has $FEATURE_OF_THE_DAY?
What people fail to realize, what people fail to see the value of, is that this slowness means Java doesn't get worse. Java has avoided most unforced errors. It's not like C++, where the template language is both Turing complete and the fastest way to summon Beelzebub from the depths of his infernal pit, and where you need a team of PhDs to decide which version of `auto_pointer` actually works the way you think it does. It's not Javascript, where the framework your front-end lead sold you on last week has already been superseded by the hot new thing.
And you don't generally have to worry about compatibility. Until v9, you could take code written against the 1.0 spec of the language and expect it to run pretty much out of the box. And the changes post v9 honestly aren't that difficult to work through, as opposed to Python's 2 -> 3 split.
Java isn't the sexiest language out there, but it hits a very sweet spot, right in the middle of the "familiar", "stable", and "productive" Venn diagram. It's probably the second-most important computer language developed in my lifetime, after Javascript, and is without a doubt a smashing success story.
I also find it fun how Guy Steele had in retrospect the perfect plan for Java back in the 1990s, and it took them 15 years to come around to it:
https://www.youtube.com/watch?v=_ahvzDzKdB0
In 1996, Java was pretty darn sexy. Managed runtimes in a high performance[1] language were an absolute revelation at the time.
It's absolutely true that as it evolved, Java grew to embrace the affects and aesthetics of its biggest customers (Enterprise backend coders). And that's not sexy at all. But at the time? We all thought this was going to be the systems language for the next century.
[1] Almost. At the time this email was written, the first JIT JVM was still a few months out from its early beta releases. But Gates could absolutely see where the wind was blowing.
Java is not the most pleasant language for sure. It started as a dumbed-down as golang was (still is?) for years. It's still catching up with C++ (e.g. see all the Valhalla project discussions on HN). It certainly shows its age. It's not clear to me why so many people are still fixated on Java when solid alternatives have existed for years within the same ecosystem.
Also, if you don't like JPA try JOOQ.
Value types on the JVM have been described as "6 PhDs, knitted together". In C and C++, this is just struct.
> It's not Javascript, where the framework your front-end lead sold you on last week has already been superseded by the hot new thing.
You should stop spreading stuff like that, it's false. React has been the most popular frontend framework for 6 years at this point, and Express the most popular backend framework in JS for at least 8 years. The backwards compatibility of JS is at least as good as Java, ES5 and ES6 were great upgrades (a bit like Java 5 and 8 in a way).
I like Java and I think it's very important. I can say that without feeling the need to dismiss other languages that are as important as Java to the modern world.
Only if you're defining innovation as syntax and semantics to the language. Java has been the pinnacle and cutting edge of language implementation innovation decades - Sun/Oracle is/was the Bell Labs of VM and JIT research.
The only time I've ever had to use Java was for a computer science class, and I thought it was a solid language (pun intended), but I hated its half-assed attempt at operator overloading.
I think it's a major feature that's long overdue to be fully implemented in Java, because it's already used for some of Java's built-in classes and it's proven useful in many other programming languages.
Most of Java seems very well-thought-out to me, but for some reason they decided to add only some operator overloading, instead of planning ahead more.
I remember hearing somewhere that they were planning on adding operator overloading, but last I checked it didn't look like it was going anywhere.
I only ask because I've never gotten a straight answer with an actual number.
I understand some level of heathy criticism but, I don’t really understand the level of hate the jvm gets.
When you look at recent and upcoming features, a lot of the complaints about it being “heavy” are being directly addressed.
There is a wide spectrum of age, experience, and attitude in the programming population. Hot take: I am guessing that a lot of the noisy hating and hemming and hawing comes from the newer, less experienced cohort, we just can't tell on the Internet and so the perception skews that a significant fraction of all programmers think this way. I am basing this on having been there, done that, where I would scoff with indignation at any software not written in hand-optimized assembler with a bunch of unnecessary (to my newbie self) layers of abstraction.
I really enjoyed using the language back then, and will not hesitate to restart if there's a scenario which would fit the bill to use it.
Enterprise Java is extremely slow, over-engineered, complex, that's where the majority of hate comes from. Then they had their security debacle, coupled with a couple strange roadmap changes, and being bought out by Oracle, an unpopular company for different reasons.
Java the language then sat mired by the corporate world and went nowhere for almost a decade (java 6, 7, 8).
Oh, and don't forget Billy, wonder why C# has made such a comeback in recent years. It's a nice(r) more modern language, it's not that great, come on...and I say this currently working in it full time.
So yeah political prop and the normal stuff popularity brings with it. It has also happened to JS too...
He's not losing sleep over Java, the language, becoming popular. He's losing sleep over the threat to the business (at the time, operating systems). I think if you consider Microsoft's market cap ($2.39 trillion this morning), despite some bumps along the way, Microsoft protected and grew its value.
It's not to say Java hasn't enabled monetization. But if you have "billions of Java smartcards" and the long tail of those installs don't create much value or affect Microsoft's bottom line, then, to Bill, that particular point is moot.
(Edited typo)
I remember getting into an argument in the men's room of the basement of center Ithaca with two guys who were saying that Java was overhyped and I was saying "believe the hype"
That time I was right.
Java was one of the first programming languages to be specified by adults. (e.g. they didn't know how to specify PL/I and make it work, C worked by accident, ...) When researchers realized the memory model was broken the first instinct of the Java creators was "let's fix it" while other languages first made excuses and waited a decade + for a "fix"
Instead Java is now Cobol 2.0, but nobody lost sleep over this fact.
It's like playing snooker, claiming a ball, missing it but scoring all the other ones accidentally and bragging.
The JVM on the other hand was not chosen by Google, Apple, Alibaba and basically the majority of web servers to be the base stone of their functionality by accident.
People like you that complain about C,PHP,Java etc forget the history , your favorite cool language did not exist at that time or if it existed had probably a lot of downsides. Also many complainers do not work with the languages and repeat like parrots something they read. I would love to get some perfect programming language, something with more maths in it that forces thinking of solutions and less glueing shit together or rewriting X and CoolLang for my CV.
Dead Comment
The language is an enormous success. But in one key area it did not succeed in popularity: in building cross-platform desktop GUI apps.
Many businesses did use it for building internal GUI desktop apps. However, Java did not find much success in consumer-facing desktop apps - despite the considerable effort made to encourage developers use Java for this purpose. For example, in the late 1990s Java had it's own GUI look-and-feel called 'Flush 3D'. It was designed to be consistent across operating systems.[1]
But Java desktop apps earned the reputation as being slow and unresponsive, not fast and nimble. The Java applets that ran in the browser were no better. Today, perhaps Java will find success creating consumer-facing, high-performance applications on web pages using WebAssembly?
[1] http://ptitben2000.chez.com/info/lookandfeel/higc.htm
https://leaningtech.com/cheerpj/
https://www.teavm.org/
Just a couple of weeks ago we got a reminder of how horrible early Enterprise Java was, with the Log4j exploit. The kind of thing everyone goes, "why would they think that was a good idea?" today, but the answer then was "almost everyone, certainly everyone who makes decisions..."
I'd be interested to see if, knowing how it all played out, Bill Gates now believes he was right to be fretting about Java back then. Given the position Microsoft is in today, maintaining its hold on the desktop with Windows and with a strong cloud offering in Azure, I think he'd answer "no, I wasn't".
And even JetBrains is working on a language to replace Java (which yes, runs on the JVM, but it also runs not on the JVM).
Java is a fine language, and one that I have the most experience with. I'm glad it's there, but I also think that increasingly it will not be the default choice for greenfield projects. That is typically what people mean by a dying language: it's only used for projects in maintenance mode.
https://techmonitor.ai/technology/microsoft_to_slash_smart_c...: “Microsoft Corp has plunged into the smart card market with an operating systems that will compete with existing systems such as MultOS and Java Card
[…]
Microsoft’s Smart Cards for Windows is an 8-bit operating system with 8K of ROM”
That was October 1998. About a year later, there was https://news.microsoft.com/1999/11/15/microsoft-delivers-win...
I don’t think that went far, but they certainly tried.
I think what most helped it was that it was the common language against early commercially-supported app servers from big vendors.
BSD started as a Pascal compiler for Unix and enabled a community of researchers to work with a common language on machines more accessible than those from DEC.
Bill was right that consumer-oriented products with server-side software had Java as the wind at their backs.
Actually, people were, even the non-technical everyday Joe. I remember a sales guy commenting once at a beginning of a meeting as he pulled out his PDA and set his oversized cell on the table "I'm just waiting for the day they combine these together so I only have to carry one of these". I think this would have been 1998 or 99, but people talked about "PDA phones" for quite some time before the iPhone appeared on the scene. The technology just wasn't there, and the CE based PDAs were clunky, nearly useless.
Android beat Windows mobile because MS pissed away their advantage (they had a mobile OS before either Android or iOS but it sucked) and Windows mobile was too little, too late. Nothing to do with Java really.
Solaris OS is now history and many programming language competitors raised and won over it at its own game in all areas but android, although it was an industry leader for quite long time its time is over and now it is mainly corporative legacy.
Even as general programming language Python and JavaScript took over, and in dedicated areas like webservers it’s been long since Java’s time is gone. The analysis in the replies is correct.
I don't think this is true. Yes in the US in the startups Python, RoR and JS are more popular but in the enterprise Java (and .Net to some extent) still rules. In India right now the demand for Java programmers is sky high. Salaries for Java programmers have increased by 100% or more in the past 6 months or so. Actually overall salaries for programmers have increased a lot in India in the past 6 months due to very high outsourcing demand but Java is in especially high demand.
Note: I am in the outsourcing industry since past 12 years.
Yes, Java is successful, both as a language and as a runtime. Obviously. You can't argue with billions of Android phones. Or the (possible?) news that FB has already given up and will be simply using Android for Meta.
I don't think a lot of folks here were around at the time to remember that a lot of the early hype around Java and the Web were both about unseating Microsoft.
Microsoft has thrived.
Sun is in the dustbin of history. Yes, mountains of cool tech came out of Sun, but as a company, as a existential threat to MS? Java didn't deliver.
That's not to say it couldn't have, had Sun managed it differently. But if Sun had managed it differently, it probably wouldn't have been the success that it is as a technology.
Only contenders I can think of are C# or Go.
No.
[0] https://www.tiobe.com/tiobe-index/java/