Hi, the most challenging material for me is concurrent programming. I keep rewriting that chapter every edition. The Java capabilities change. The use cases change. (20 years ago, people cared about a web server that idly waited for a few connections. Now you want to keep many cores busy.) And I get better at explaining what to do, and what to stay away from.
But the biggest pain in the neck was actually to get an
applet running for the obligatory screen shot. Have you tried the Java Plug-in recently? It's a mess.
Java 9 will be another big change. The most important innovation will be modularity. I can't wait to say goodbye to JAR files, even if it will be a long goodbye.
Cheers,
Cay