Node, Python, Rails, Go, etc. are languages optimized for doing one thing. Rails is optimized for rapid prototyping, but it runs like garbage on production servers. Node is also optimized for rapid prototyping, but it has the one great trick of being exceptionally fast for multi-user real-time data situations. It's terrible at heavy processing tasks, but you can enqueue it using RabbitMQ, Resque, or some other system and pass it off to another programming language to do that portion of heavy-lifting.
Just like we're seeing more apps with hybrid SQL/NoSQL sections, we'll be seeing more hybrid apps where different languages are utilized based upon what they're good at rather than having one language overall that does everything.
These are all web-app languages, not what you'd typically build a desktop application on.
Java is not optimized for anything, it's a general purpose language designed mostly to be cross-platform across Windows, Macs, and Linux AND provide a visual GUI components. This is better than languages like C++ which doesn't have a GUI component and has to rely upon various plug-ins and extra libraries to do that, (same is true of Python as well). The question is, "Will we need a cross-platform programming language capable of giving users consistent graphic elements?" and if the answer to that is yes, we'll still have Java.