Java is far and away the most popular and widely used programming language in the world. It is the de facto enterprise standard language (the way COBOL was back in the 1970s, 1980s, 1990s). There are far more job postings for Java than for any other programming language, according to Indeed.com.
How did Java get to this hallowed position? Primarily because of its rich ecosystem of libraries, frameworks, and tools. This ecosystem is also the reason why so many other languages want to run on the JVM, such as Groovy, Scala, Clojure, Kotlin, Jython, JRuby, Redline Smalltalk. They all want access to the huge range of Java class libraries.
In other words, it’s all about code reusability. Java is perhaps the most successful example of code reusability in the history of computing.
Smalltalk is another example. It’s the premier object-oriented language. It has been commercially used for over three decades by enterprises all around the world, including the likes of JPMorgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Orient Overseas Container Lines, Siemens AG, and so on. Check out ALLSTOCKER and ATMs in Moscow streets, too.
How was Smalltalk able to remain viable in big business for so long? Again, code reusability. Smalltalk is incredibly versatile, and without code reusability, this wouldn’t be possible. Enterprises have vast software infrastructures, whether it’s for COBOL or Java or C++ or Smalltalk. They depend on reusability.
We haven’t seen this kind of reusability in the functional programming world yet. Not with Haskell, nor Erlang, nor Scheme, nor OCaml.