Java is the new COBOL

When Java came out it was a fresh new language which was easy to learn and apply. At that time world needed a new mainstream language. It quickly became a widely used language especially in Enterprise applications. But after 15 years, time has come for a new language.
Below I will present some points to prove my case.

1) Oracle taking over Java
Even though java is open source, Oracle can't be trusted with it. Oracle will be throwing its weight around in JCP (Java Community Process) and take the Java in a direction it would like.
Oracle has already shown its color by suing Google for infringing some Java-related intellectual property.

2) Stale Language
There were many important features missing initially in Java like Generics and Closures, Generics have been added now, but not in an elegant way.
Just to see an example of how bad these Generics are, see the below definition of Enum.

Class Enum>

The main reason for not being able to add new features in an elegant way is to support backward compatibility with previous versions of Java.
Maintaining backward compatibility is a nice thing, but it’s a big hindrance in evolution of any software. You need to carry the burden of all the mistakes you/others did in the past.

3) System.out.println() - Too verbose
Java and many frameworks built on top of it are very verbose in nature. One can argue that verbosity is good for readability and anyways IDE writes the code for you so you don't spend a lot of time typing. But verbosity after a limit can decrease readability instead of increasing it, for the simple reason that you need to read much more. More time is usually spent in understanding the code ( for defect fixing, customizations etc) than in writing it, and Java's verbosity makes sure that you spend even more time for this.

But is it possible to replace Java with a new language especially when its use is even more widespread than the use of Cobol/C++ when Java came out. There are two main things which are hurdles in mass adoption of a new language.

1) Legacy Code
The solution to this problem lies in Java itself. When Java came out it had to work alongside a lot of legacy C/C++ code, and the solution was JNI. What if the new language not only is able to link into legacy Java code, but also runs in the JVM, thus keeping the binary compatibility with java.
This way you can write code in a nicer language but still use the existing APIs.

2) Tool Support
Java has an excellent support for tools like re-factoring IDEs, static code analyzers, bug finders etc etc. It took many years to build these tools and it won't be easy to replace them. For the tools which work on binary code (class files) this problem will be solved if there is binary compatibility with Java. For refactoring/code inspection tools, may be the goal should be that the new language doesn't need these tools at all :)