The Triumph of Java

Although it often doesn’t seem like it, software engineers have the opportunity to be far more productive than they were in the past.

Java has the largest body of reusable software that the human race has created so far. Python comes in number two (in my non-empirical analysis). For example, there are vast Java resources available from Oracle and from Apache. Leading research groups, like the Stanford Natural Language Processing Group, publish Java codes represent years of development effort.

The Grails web development framework leverages Spring and Hibernate to allow the construction of complex web applications more rapidly. The Java Development Kit released as open source by Amazon allows you to make use of Amazon’s cloud resources.

The Java Virtual Machine infrastructure has been leveraged for the execution of other languages, including Groovy and Scala. The Scala infrastructure has been leveraged to construct the Spark parallel execution and data analysis environment.

For mathematical and statistical work there is the vast library infrastructure of R. Python has scipy and numpy.

There is no virtue without an associated fault. By leveraging these infrastructures and libraries we necessarily ignore what is inside the “black box”. This can mean that critical problems may be hidden from us. This is the nature of engineering, however. We must make tradeoffs, applying experience and judgement.