I had the opposite experience. One of my first jobs was to port a legacy TCL GUI to Java Swing.
Even though I understood exactly what the TCL was doing, the Java port was 20x more lines of code, and 100x slower. I spent a few months beating my head against the poorly designed padded cell that is the JVM, and then it was 40x longer, and 10x slower.
That's more an indictment of java than an endorsement for TCL since you were dealing with something already working. I'm sure perl/tk, qt, fltk or many others would have been a much better experience.
Even though I understood exactly what the TCL was doing, the Java port was 20x more lines of code, and 100x slower. I spent a few months beating my head against the poorly designed padded cell that is the JVM, and then it was 40x longer, and 10x slower.