Tracking my thoughts and understanding of Java as my understanding grows.
Words that are jumping out include 'structured' and 'arbitrary'. I've already written about my first impressions of type-safety, but this moves into new territory, like the different classes of strings.
It's harder to predict how long tasks will take; Some things are very similar in implementation to Ruby, but with strings it's Apples and Oranges. Some strings are mutable, some are immutable, and trivial tasks like pushing strings to arrays has made me aware of the StringBuffer class, which does not return a string equal to that of the String class.
Working with Java has meant dealing with things I didn't know existed, so assuming that the OO similarities make up for being static, typed, and compiled was wishful thinking. I'm starting from the beginning again, only the beginning is harder here. It's a lesson in humility.
I'm learning a lot though, and I think that once the basics are down, things will seem clear, and I'll be a better programmer for having learned to do it this way.