I'm not too worried about Java the language being close to stagnant, so
long as library development is up to par. Because if the solution I've
selected includes the JVM, then often Scala or Clojure are better
choices for high-productivity coding. Myself I don't care if Java the
language ever gets updated again - it's not important. The innovation
shifted away from Java the language years ago; there are better JVM
options now.
So I would disagree with both you and Kevin that "streamlining" the core
language is all that important. You can't do enough of it to core Java
to make it worthwhile, without major changes. So why bother now? What's
important actually *are* those "high cost, high complexity EE
libraries", plus the later SE/EE-agnostic libraries like concurrency.
yes, but the lack of polish for the core language doesn't really make
using Java a particularly attractive option when contrasted against,
say, C++ or C#.
like, it is the great battle of "all options being equal, what language
will I use to write this?...".
granted, yes, typically a person will work on a pre-existing project,
and typically use whatever language(s) the project is already written in.
90% of developer productivity is achieved by adept and informed use of
what other people have written: libraries.
potentially, but if a person can choose freely, all the major language
options have libraries. not necessarily all the same libraries, but
libraries none-the-less...
I guess it is more of an issue what sorts of libraries one has the most
use for, and IME, most of the libraries I am interested in seem to exist
mostly in C and C++ land.
sometimes C# is useful for quick-and-dirty GUI apps, and Paint.NET
plugins, but otherwise it is a hard sell using a language which
basically leaves one's apps tied to Windows (and on Mono, C++/CLI
doesn't work, largely killing off most of what reason I might have for
using it for much beyond quick-and-dirty GUI apps...).
most of what I end up writing in C and C++ tends to be mostly algorithm
heavy and math-heavy code, typically making lots of use of vector math
and similar (where one can have both a nice vector interface, and
optimize them via SSE intrinsics, ...). (like, where one spends a lot of
time optimizing things in the quest for higher frame-rates...).
granted, the big drawbacks in C and C++ land are the long compile times
and lack of native dynamic-code-loading or eval, which is kind of why
scripting languages are popular (and I have my own scripting language
here, and recently went and wrote a new JIT for it as well, ...).
or such...