Copying already available features from a language and implementing every single idiocy from the programming language research doesn't make a good language. By contrast, having a more limited set of features, doesn't make a language "worse". We live in a world where programming languages must be powerful enough to accomplish every day tasks, but still be manageable by a single individual. And hey, Java is a big language when you start from scratch, still maintains some simplicity when dealing with complex tasks. Take Scala, for example. It has a rich syntax with tons of features, 2 full paradigms (OO and functional). Learnign Scala as a first language is not that easy compared to other languages. Even experienced developers may find it to be steep, at times. Despite the fact C# may be a good language, I consider it to be highly inconvenient compared to Java. The enteprise market has been (and still is) predated by Java. And for obvious reasons. The language evolves without trying to "implement the whole world". Only proven (by the industry) language features are implemented. If some features will be considered useful to have, they will be implemented eventually.