Java brought programming to a higher standard with clear syntax, easy of use and a much faster learning curve than languages up to that point. That paradigm gave rise to new languages like Javascript and new designs for large scale software.
So, I think it's irrelevant if Java would make it if introduced today since I am not sure today would be here (or at least in its current form) without Java.
And "mainstream" only referred to marketing budget. Perl and Python and Tcl had already launched (Perl and Tcl quite popular for the era.) Java's main novelty was the relatively strong cross-platform story due to the VM and GUI bindings.
I also don't believe Java had any influence on JavaScript except for using the name for marketing
UCSD pascal would like to have a word with you. Circa 1980
> fully object oriented and the first byte code based VM language.
Smalltalk would like to have a word with you. Circa 1984
> Java was the first maintstream GC language
Basic (in all its variations) would like to have a word with you. Circa 1968; And perhaps it is going to bring along its buddies Lisp (1958?) and APL (1950-1960, depends on who you ask).
All of these languages were mainstream at one point or another - in a much smaller world, but still, mainstream.
Java wasn't the first to offer all of these together - Smalltalk did that in 1984, and I'm not sure Smalltalk was the first.
> Java brought programming to a higher standard with clear syntax, easy of use and a much faster learning curve than languages up to that point. That paradigm gave rise to new languages like Javascript and new designs for large scale software.
Java's syntax is clear only to someone who is versed in Java (or a Java like language like C, C++, C#). Python came out at the same time (1991) and brought a syntax much, much clearer, with a much faster learning curve. It was also VM based and GC, by the way - and having programmed both in 1991, I can tell you Python was often much faster (mostly owing to dicts being implemented in C, whereas Java was all interpreted).
> So, I think it's irrelevant if Java would make it if introduced today since I am not sure today would be here (or at least in its current form) without Java.
I agree. But I don't think that's necessarily a good thing. Specifically, I don't think Java deserves any accolades. It's the COBOL of the 21st century. If Java wasn't around, and Python took over, I think we'd be in a much better place. If Java wasn't around and C/C++ continued their reign, I supposed we'd be slightly less well off. We don't have to agree on opinion. But we should be able to agree on facts.
Yes, I think we'd have been better off with Python + C++ (which is likely had Java not come along).
w.r.t Speed - one of the reasons Python's speed is (still) lacking, is because it never got the amount of work Java did. JavaScript is no longer lacking in speed, and neither does Lua - and both are as dynamic as Python. Lua is much more impressive in this respect - LuaJIT's speed, the work of one person, is comparable to the best JavaScript engines, works of multiple big multiperson teams.
The original Java was a little safer than Python, but definitely not on par with what you'd consider a modern staticly typed language. There were no generics, and everything was cast all around e.g. if you used a dict/map container. It was easy to have static typing locally, but not globally. The standard library at the time was really, really bad. I think I considered it acceptable only with Java 1.5.
A lot of modern Java is like it is because it was in widespread use, and it was so bad to begin with. Had it been Python instead, perhaps Python's bad parts would have been addressed earlier (including lack of type checking and lack of speed - both of which are coming of age)
I worked briefly with Java applications in the early 2000s, and that was certainly not an enjoyable experience. I won't miss the bureaucracy, extreme waste, and fervently dogmatic adherence to "best practices" that created more busy-work than anything else.
"If all you have are classes, everything turns into an object."
I mean, Java was such a major influence that you have to stipulate how we deal with the fact that Java couldn't compete now because it would be essentially competing against future, evolved version of itself.
The only reason I don't think C# has taken over Java yet is because of how entrenched Java is, and it's wide cross-platform support. With mono, Silverlight, and Microsoft's newfound love for open-sourcing however, I think those arguments would be pretty much null if Java were to be introduced today.
A far bigger factor is that C# is (or at least was) Windows only.
In my opinion, the LMGTFY peanut gallery tend to be the glib one's. Always going for the short, clever smirks, never the depths, the wisdom; teaching others.
What's most toxic about this kind of - I assume well-intention people's behavior - I literally find myself Googling, and every now and then, hopefully an answer on forum thread where they say "Just Google it", "Just search it on the forum".
I know it won't even run in Chrome any more, and it's been several years since Microsoft issued any updates.
The platform as we have today is simultaneously weak in terms of its stagnant and outpaced feature set, and strong in terms of its optimization capability and ecosystem size. But its strengths were a function of its popularity: lots of people wrote Java so there was plenty of incentive to invest in the platform/ecosystem.
The only way I could see it taking off today as a new language is if there were a company willing to dump 10x the resources into it that Oracle or Sun ever have.
Oh, how I wish. OO was never taken to its logical conclusion in the mainstream at all. Java's Nygaard-style OO was just a sugar coating on top of a generic procedural paradigm and a far cry from Smalltalk's example that was set over 20 years prior. Ironically, much of the JVM's early optimizations were born out of research into the Self VM - a prototype-based OO Smalltalk environment.
Yet thanks to C++ and Java's object models following the Simula legacy becoming so firmly entrenched into the mainstream as the OO, today the entire paradigm has become disgraced and is outright reviled in some circles (how many times have I seen FP enthusiasts jump every time it's mentioned...)
The Smalltalk and Self communities are minuscule. A more recent addition was the Io language, but that too is very small. OO died before it could really shine, though the Smalltalkers' legacy did somewhat live on as they went on to establish many of the software development methodologies and maxims that are taken for granted today.
Objects will rise again (if you think they've fallen, that is).
I'm personally working a new language/programming environment right now based on traits/mixins; there is still a lot of fun to be had there.
- write once, run anywhere.
- write programs that run on web browsers (applets).
Today, it could be: "I want to write an Android app, and Google just released this new Java language/platform that I have to use."
In other words, any new language can make it if a large corporation creates a compelling reason for large numbers of programmers to use it.
So if the Java language and VM were released today in their current state, complete with lambdas, streams, annotations, and HotSpot, then yeah, I think it would take off.
Java was a hit in the enterprise because it had static typing, modules etc and was a complete product (tooling, doc - and stewardship from a big and respected tech company, who was neutral). OO helped, fashion-wise. C# and objective-C are the most similar languages today - but notwithstanding MS very recent moves, both are wedded to a proprietary company.
But if Java was introduced today, it would have a difficult fight against Go: Go is similar, and with Google's neutral backing, would have taken Java's role. Or maybe languages which Java displaced: delphi, ada, etc.
The realistic answer is: if java hadn't existed, something that met those needs would have been drawn forth by the demand.
I didn't live through the time that Java saw it's rise in use on the enterprise, but what I've been told by others that was a big deal at the time were two things combined that made it attractive, and it being one of the few languages that was very accessible that had these two characteristics. These were:
* Garbage Collected language.
* Being able to write code in Windows (which is what most enterprise developers used then and even now), and deploy on Linux/other OS reliably.
Again, this is just what I've heard from others that were there, so feel free to correct me if I'm wrong.
Today, there are other options, so maybe it wouldn't be as big a sellilng point. But to me at least, it is still one of the languages that allows this the easiest by far.
Oracle's API architects are concerned with selling as much WebLogic licenses as possible however, so don't expect changes soon. However, the community has come up with some absolutely brilliant libraries where Oracle has clung to legacy technology.
All in all, it's a superb language with a bright future. Maybe we'll get better leadership as Oracle is forced out of the closed source era (it's happening at Microsoft, so don't laugh).
But the idea of a proprietary platform is just exotic nowadays. I doubt it that when they started the Java project that they imagined it that most of it would be free and Free. Everyone wants software to be a commodity. I don't know how they would fund a similar project knowing that it would compete against very much free and Free solid alternatives.
Also, browser plugins are dead. So something like Java applets would hardly take foot.
Like others have said, one of the big selling points for Java was Windows development. The interfaces sucked. But the need was there. Once Microsoft came up with .NET that profitable market was challenged.
A lot of Java alternatives nowadays can go a long way from just hosting web services on Linux. So Java's selling point of supporting many different platforms would not have been as interesting. Also, Apple restricts JIT on iOS, further compromising alternative platforms on that platform so even if a new Java wanted to support iOS it would have to settle for less.
Settling for less was in fact one of Java's goals. It helped it with platform independence. But it didn't make many platform dependent developers too happy either. :-)
What might we have instead? C/C++ of course, Python/Perl/Ruby and friends too. QBASIC is older than Java and Visual Basic was just a cleaned up QBASIC, so we'd have that. Borland's Pascal-derivative Delphi was a decent language; maybe that would've done better without Java.
Would Haskell and the MLs have done better? Perhaps, because at the time it came around Java was quite a productive language. Or maybe I should say, it was a nice language before everybody and their uncle discovered the design patterns book and started implementing AbstractFactoryInterpreterEventLists willy-nilly. Without Java, I think it's plausible that the design pattern craze - a lot of which is just attempting to shoehorn functional programming into an OO language - would never have happened. And people might've discovered actual functional programming earlier and the state of the art might've been closer to F# than C#. So back to the original question, in this scenario, Java wouldn't make it, because honestly, although Java is a decent language but F# and friends are way better.
If you look at benchmarks of web applications/frameworks, Java-based ones are blazing fast.
All modern languages and all current iterations of the older languages are vastly superior by every imaginable metric.
All those 1.0s from the past would look like someone's toy project, because, well, that's what they were.