Over at Vanilla #Java, there was an article showing Java’s popularity as a language compared to others and then it ranked them based on the level of abstraction at which they were designed. The most popular language is C with 17.9% and next was Java with 17.4%, followed by Objective-C, C++, and C#. So, of the top five languages, four are C or direct decedents of C and they all lower-level languages whereas Java is a higher level language. He argues that although Java is adding lots of neat higher level features like Lambda expressions, Type Annotations, and Virtual Extensions they’re neglecting the ideas of structures and other lower levels of constructs that are important in areas like mobile and embedded systems which are likely to become more dominant in the future.
From my perspective, I think adding in more higher level constructs is a great thing as the cost of computation and storage is becoming negligible at this point for all devices. It’s much more important to focus on making the programmers more productive since they’re the true overhead cost of product development at this point. Now, I don’t mind Java supporting lower-level ideas like structs (I still enjoy writing C/C++ code) but I wonder about the time it takes to implement a lower level feature when hardware has Moore’s Law working for it. Right now, I think Java (and C# for that matter) makes good trade-offs between high-level and low-level features to keep itself relavant in today’s market even if it is missing out on some of the embedded device market.
If anybody is reading this and cares to comment on the state of Java, feel free to do so in the comments below. 🙂