To begin with, how about we cover the specialized issues. It’s verbose, joins the most exceedingly bad of the two universes amongst static and dynamic composing by having a tottered yet to a great degree burdensome write framework, and orders running on a virtual machine (VM) that has a plainly visible startup time (not an issue for long-running servers, but rather difficult for summon line applications). While it performs truly well these days, regardless it isn’t aggressive with C or C++ and, with a little love, Haskell and OCaml can or will obscure it in that space. For certifiable generation servers, it has a tendency to require a considerable measure of JVM tuning.
The VM itself has a considerable measure to suggest it. It offers simultaneousness and waste accumulation at a level of value that, as of not long ago, wasn’t discovered anyplace else. Python may have a superior client encounter, yet it additionally has a Global Interpreter Lock (GIL), which discounts parallelism. Much essential programming in the mid 2000s was composed in Java in light of the fact that, at the time, it was the best decision, notwithstanding considering the average quality of the dialect itself. It had Unicode (though, UTF-16) from the begin and a solid simultaneousness story, and it was an indent above C++ as far as client encounter (on the grounds that, truly, who needs to troubleshoot format blunders somewhere down in another person’s inheritance code?)
On the off chance that you put Java on a specialized trial, it doesn’t do as such terrible. The dialect sucks, the stage is really useful for generally purposes. I do loathe the predominant elucidation of “protest arranged programming” with an energy, since it unbiasedly sucks. See: Michael O. Church’s response to Was protest situated programming a disappointment?
So how about we discuss the political and social issues. To start with, the predominant Java culture is one of average quality and awful taste, with MetaModelVibratorVisitorFactory classes overwhelming. I’ve heard various specialists on “the Java issue” contend that Java’s most concerning issue is the group, and that comes straightforwardly from the way that great software engineers would prefer not to manage the bastardization of OOP that has settled in itself in standard corporate improvement. You have many individuals who prepared up as “Java software engineers”, haven’t seen a summon line ever, and do not understand how the PC really functions. The majority of them have never really composed a program; they simply compose classes and some Senior Chief Architect (who makes $246,001 every year and hasn’t composed a line of code since the 1990s) makes sense of how to join them together, and after that advises some different confused junior how to execute the paste in the gutshot trust that one will really have the ability to make a real working system out of the chaos.
This isn’t natural to the JVM, on the grounds that Clojure (right now facilitated on the JVM, in spite of the fact that its endgame is by all accounts dialect rationalism) has a drastically extraordinary (and better) group. Scala’s people group is more blended, however the best Scala engineers (the ones influencing devices to like Spark and Kestrel) are extremely fucking great.
The root issue, lying under the majority of this, is God unmistakably proposed for the software engineer to-program proportion to be one-to-many. It’s considerably more gainful and drawing in to work that way. Projects ought to be little, and when you require a great deal of code to take care of an extensive issue, you ought to make a framework and give it the regard that frameworks merit. The vision that appears tucked away in the cutting edge Java people group is one of Big Programs where the developer to-program proportion is many-to-one. I’ve composed finally regarding why this leads relentlessly to political conduct and low profitability: Java Shop Politics.
At the core of the flopped, terrible, corporate bastardization of “protest situated writing computer programs” is an insidious vision of the commoditization of programming ability. On the off chance that you don’t see that as a foe worth full scale war, you’re either not human or not better than average. Obviously, none of that is Java’s blame, by any means, truly. Java was intended for inserted frameworks in the mid-1990s, and the mediocritization of programming came later.
Along these lines, the short answer is: it’s for the most part not about the fundamental stage (which is for the most part of high caliber) and its exclusive somewhat about the dialect (which is average however can’t be pointed the finger at specifically for group issues). It goes a great deal further than that, and not every last bit of it is Java’s blame. Nonetheless, Java takes its offer of the fault for its unmistakable bias toward vast projects (in fact, built up by its long startup time) and by its help of an appalling (and counterproductive) assortment of question arranged programming.