Alright, I'm going to go ahead and reply to a post of decent age, so apologies in advance.
Java as a programming language has been losing a decent amount of traction against newer languages with features pulled from newer-ish areas of CS language theory and other languages that are just quicker to write code in. I suspect that Java architects forsee this as having potential for snowballing if Java isn't kept at least somewhat refreshed so often. (Aside from generics in 1.5, the language really hasn't seen much change for the everyday programmer pre-1.8.)
With all that said, I think introducing basic functional programming constructs is great progress! Yes, lambdas are just syntactical sugar that compile to anonymous classes; yes, streams can be done via for loops; and yes, none of these things are "new" in a programming language. But the each of these things combine and give way to a paradigm that makes writing such transformation operations significantly less cumbersome. There are many cases where I have averted designing APIs with single-function anonymous classes specifically because they require(d) a stupid amount of boilerplate. I pretty strongly believe that language syntax should not have to be a deciding factor in the development of software, especially if you consider a language as a tool for the programmer to express his/her ideas.
Whenever you think about Java criticism (besides the ridiculously unfounded/antiquated notion of slowness that came out of the ass of the native camp in the 90s), you'll almost always see the boilerplate and language age mentioned. In my experience, those have been some of the largest reasons for new programmers to shy away and toward newer, shinier languages. A new paradigm that simplifies common operations syntactically and semantically is something Java really was in dire need for.
Java as a programming language has been losing a decent amount of traction against newer languages with features pulled from newer-ish areas of CS language theory and other languages that are just quicker to write code in. I suspect that Java architects forsee this as having potential for snowballing if Java isn't kept at least somewhat refreshed so often. (Aside from generics in 1.5, the language really hasn't seen much change for the everyday programmer pre-1.8.)
With all that said, I think introducing basic functional programming constructs is great progress! Yes, lambdas are just syntactical sugar that compile to anonymous classes; yes, streams can be done via for loops; and yes, none of these things are "new" in a programming language. But the each of these things combine and give way to a paradigm that makes writing such transformation operations significantly less cumbersome. There are many cases where I have averted designing APIs with single-function anonymous classes specifically because they require(d) a stupid amount of boilerplate. I pretty strongly believe that language syntax should not have to be a deciding factor in the development of software, especially if you consider a language as a tool for the programmer to express his/her ideas.
Whenever you think about Java criticism (besides the ridiculously unfounded/antiquated notion of slowness that came out of the ass of the native camp in the 90s), you'll almost always see the boilerplate and language age mentioned. In my experience, those have been some of the largest reasons for new programmers to shy away and toward newer, shinier languages. A new paradigm that simplifies common operations syntactically and semantically is something Java really was in dire need for.