It all depends on what your use case is.
- Do you want to write a server within a week - node js.
- Do you want to write a server which can be used for enterprise level applications, java is my choice.
nodeJs poses certain problems when you want to scale it up , this is what developers call it as steep learning curve. Initially it is colourful but later it might look like maze.
Node js is best for asynchronus programming like handling web notification (instagram uses node js for notifications)
PHP , I am not that experienced in php but it is crazy.
It has better online footprint, better community something which node js lacks.
Java, almost all present enterprise applications are running on Java. It is somewhat opposite to nodejs,
it has one excellent framework with name Spring, it will take time to learn but once you get a hang of it you will never see a maze.
You might say node js is easier to learn, java is harder or PHP is faster etc etc etc. At the end of the day an application which runs without any problem is what everyone wants, no one cares if it is java, node js, php, c\c++ , so pick one. My choice would be node js if you are a student working on a college project, JAVA if you wanted to create a customer application.
Above analogy is from my own experience with different stacks. You are free to use any language even C language.