A very philosophical question, this one.
I see modern those languages that were not there a couple/few years ago. Definitely java is seen as the older, more enterprisey technology. I don’t think many startups in silicon valley use it, they use more php (facebook), python, node, go. Node and mongodb definitely seems to be the trendy thing now.
For me, there is never one language that will do it all. PHP is good if the software you want is already made in PHP. Microsoft Access has served me well to make some database applications that would have taken years to develop in Java. I used Bash-scripting almost regularly for my current work and then there is Sql, which in a way, is opposite of Java, but it is still used as an important component of many products. I think we could go on a long way.
There is not an optimal programming language to do it all and in the same way as Java learned from other language(s), the newer languages are learning from Java (i.e. Scala) and may one day replace it as number one.
I think you just need to be pragmatic and choose the tool that gets the job done.
I remember at the university I learnt: “Java, write once, write everywhere”.
Does this concept still applies on mobile devices? If I write a Java app for Android, the same app cannot run on iPhone nor Windows phones (unless it is html5).
You will never be able to ‘write once and write everywhere’ for requirements change and so things you made some years ago, is no longer going to be required, or it is lacking in functionality for the job it should support is not the same job any more. The functionality you need to provide should be made with what is best and out there; if it needs to be replaced 10 years ahead, then so be it.
And now i wonder: what is “modern” anyway? Google provides a very modern front end system, the same does yahoo mail. But when you’re in a country with a normal internet line they both suck big time. I say normal in the sense that only a very small part of the world has 2+Gbps internet at home. In the majority of the world, like Africa + Big parts of Asia + South America the throughput is low, the ttl is excessive and often the packet loss is high. In this environment, any “modern” web interface has trouble, in particular Ajax is a hassle.
So is it modern to program a web page that half the world cannot use?