I read the preview for Mr. Waldo's book and am intrigued. I haven't read the book yet, but from the author's intro I can see his argument about where Java can be used successfully and reliably. I'm interested in the opinion Mr. Waldo has about the future of Java? Does he continue to see the same applications for its use as cloud computing and ubiquitous computing continue to grow?
I'm also involved in educational technology and have long held the opinion, as do many others, that Java is an excellent teaching language. Does Mr. Waldo hold the same opinion, or is there another programming language out there that he thinks is a better language for novice programmers to cut their "teeth" on?
I like to combine Java with other JVM languages. Particularly for quite sometime I have been using Groovy with Java and its so much fun to code. But you see Java 7,8 and other upcoming versions are showing some promise for the future of Java.
But again- Java Good parts actually tries to tell us why Java is not bad
It's tough to make predictions, especially about the future...Yogi Berra
With standard disclaimers, here's an opinion.
I think Java is a natural for the cloud and distributed computing, and have since it first came out. The Java virtual machine gives a level of platform for such systems that is both sufficient, rich, and abstract enough to offer lots of advantages. For those interested in software archeology, take a look at the Jini system (now the Apache River project) and you will see a Java-based Service-Oriented Architecture that is a natural for the cloud.
The important artifact for the future is really the Java Virtual Machine, more even than the Java language. Being able to move bytecodes around the network changes the way you program and think about the overall system. It doesn't matter of the bytecodes were produced by a compiler for Java, or Scala, or whatever. As far as I'm concerned, all of those are syntactic variants of Java.
As to the Java language itself, it will be interesting to see what the change in owners brings to the evolution of the language. Sun had a very clear view of how Java was to evolve, centering around the JCP. While the view was clear, it didn't always lead to good results. I don't have a clear view yet of where Oracle is going to take Java, or if it even matters that much anymore; Java is owned by the community more than any one company. I think things may slow down for a bit (which would not be a bad thing). I think that there may be some minor changes in the core language and libraries, but it will be much more interesting in the small-Java space as phones and tablets become a more interesting target. I predict that is where the action will be.
Java for sure has a large basis in server usage: mostly thanks to the fact it has good support for security and makes muti-threaded programming simpler than former technologies (C/C++).
This will last for years or even decades: I don't see yet the technology that will supersede Java in this place.
For the development of GUI based programs C#, C++ and VB are mostly used under windows and C++, python under Linux, and Objective-C is having a second youth in the iOS world.
While for the ubiquitous computing part for sure Java has a little advantage of being interoperable with many devices/OSs.
For sure C++ is also available in many devices, but it is not as easy as Java for the developer, while Objective-C and C# apply to a more restricted market.
C# might have a future in that direction thanks to C# porting to Linux via Mono.