Java succeeded because (1) targeting Unix and multi-platform development was awful, the closest thing to an alternative to C/C++ was Perl, (2) people loved in-browser applets and this was the killer feature and (3) all decent alternatives were expensive. I remember in college when I decided to build a simple desktop app for Windows and I chose Java because I didn't have money for Borland's Delphi or for Visual Basic and I hated the thought of pirating like everybody else did it.
> From a developer standpoint Go is superior, but would the same political support happen for a Google-invented language?
Personally I don't think that Go is in any way superior, quite the contrary, I think it represents a regression and it wouldn't be on anybody's radar if Google wasn't involved.
Microsoft failed to see what was coming when IBM/Sun/Oracle pushed java, true. But go back to a bank department today and take a look.
C# everywhere.
.NET has several problems. Microsoft targeted Windows while Java's rise is correlated with the rise of Linux on the server-side. Linux on the server-side is cheap and reliable and people want more and more Linux and Microsoft's cooperation with Xamarin is kind of too late and is meant for mobile phones and not Linux, but who knows. Microsoft also failed to create an open-source community around .NET, while Java's open-source ecosystem is huge and even the commercial tools available are cheaper. Microsoft advertised .NET as being multi-language but dropped the ball later and failed to attract new languages, whereas other languages are flourishing on top of the JVM, keeping Java the platform hip. Microsoft also failed to convince startups to use .NET and today's startups are tomorrow's corporations.
The bulk of serious programming in the early 1990s was in C or C++. Cross-platform C libraries in those days were either abysses of mind-blowing complexity or just pure snake-oil.
Since everything MS did was Windows, anything that came along to provide a good development experience (which Java did in comparison in those days) AND be cross-platform (one of its founding principles) couldn't help but be successful.
So politics was certainly not the only factor.
Compiling at the time was a problem. Adding a new library could mean hours of digging up to find out why you can't even link the damn thing in your project - if that's even possible. That's before even talking about cross-platform.
Java was also a modern OO language, safer to use than C++ and with everything you needed right there in the JDK, all of that backed with solid documentation ( internet was not what it is now, if you were the lucky few with access at all )
In particular, java had a great easy approach to threading out of the box, working everywhere.
However, while Google doesn't seem to be pushing nearly as hard for Go's adoption externally, lots of the industry has run with Go on their own, on Go's merits. So, that's different than Java, but also a good place to be.
I mainly think without IBM failing to launch OS/2 and lending their support to Java, it would be in a very different market position nowadays.
Java was also designed to be fashion-compatible: it had OO, its syntax resembles C/C++-ish languages, it is statically typed, and it could be used to run programs inside web pages (as well as on mostly anything with a decent CPU). All things were compelling in the late-90's. The fact Sun spent a whole company promoting and developing it also helped a lot. It didn't help Sun that much, in the end. It's a shame. SPARC boxes were amazing. It's really sad all those beautiful architectures could not compete with the evolving x86.
Did they? Why?