You should take a lazy
approach to learning Java. Learn it when you need it.
In my opinion, much of the old Java knowledge is out of date, much of the new tutorials are redundant. You certainly don't want to bother yourself with Java's antiquated Collections
, for example. Many Java-based frameworks can be safely ignored. And the heavyweight JavaEE stack can be safely bypassed until you were forced to use a part of it.
Many common patterns in Java are much simpler in Scala, with the former being burdened with much boilerplate code. Core logic should always be implemented in Scala. I believe you can do most of your work directly in Scala and only need to dip down into Java when building things like Swing or integrating with Spring, etc.
In regard to choosing and using Java libraries, my personal guidelines are:
- If Spring can do it, use Spring
- If Spring is too heavyweight, use what Spring uses.
- If Spring can't do it, check github projects
- If there's nothing on github, check Apache projects
- If there's nothing from Apache, check sourceforge(t).
- Finally, Google randomly or just build it yourself.
That's a bit tounge-in-cheek, but is the impression I get about the maturity and stability of third party libraries after having done Java for the last 12 years.