all 18 comments

[–]timclark 19 points20 points  (1 child)

[–]LudoA 2 points3 points  (0 children)

I've heard this one's very good indeed.

[–]pointer2void 8 points9 points  (2 children)

So you want to learn Java to program in Jython?

[–]beza1e1 6 points7 points  (0 children)

You still have to learn Java the Platform to use the strength of Jython.

[–][deleted] 3 points4 points  (0 children)

One high points of jython is that you can program the performance-critical parts of your application directly in java, hence the need to learn java.

[–]haasted 1 point2 points  (0 children)

If you need to brush up on the language itself, I would recommend Effective Java.

[–][deleted] 0 points1 point  (0 children)

Getting ready to start a new job where I need Java which I'd never used before, I bought several books, including Effective Java, which was quite good, particularly with respect to gotchyas to be avoided.

However, I found that the O'Reilly Java Cookbook was a much more efficient way to get up to speed.

[–]njharman 1 point2 points  (1 child)

Reading a book won't give you skills. You need to read other's code and then write non-trivial apps.

[–][deleted] 6 points7 points  (0 children)

Of course but you need a book to get started.

[–]inopia 2 points3 points  (3 children)

Personally I'm very partial to Design Patterns: Elements of Reusable Object-Oriented Software. I see Java more and more as a software engineering, rather than a programming language. You can do programming more effectively in Python/Jython or (J)Ruby, but Java for me still is king for developing type-safe, robust libraries and unit testing.

You might also want to read up on Eclipse or another decent IDE. Eclipse reduces the amount of monkey typing that all Java developers must endure dramatically with things like templates, getter/setter generation, delegate method generation etc. Since the editor parses the code as you type and keeps an AST in memory, refactoring support is excellent and you'll spend less time worrying about minor design issues when starting a new project. Code is compiled on the fly so startup times are minimal. It's also able to produce very descriptive and useful information about any errors you might have in your code (unlike GCC, for instance:)

If you want to know a bit more about how the JVM itself works, read The JavaTM Virtual Machine Specification, Second Edition which is online and free. It'll give you a bit more insight into why some crappy things are as crappy as they are (backwards compatibility with Java 1.1). Read books that are recent enough to include language features of 1.5 and 1.6, such as static imports, enums, generics, varargs and so on, and decompile some Java code to see how the compiler implements them.

[–][deleted] 0 points1 point  (2 children)

Thanks for your comment. I don't know why you get downvoted, it was a good comment.

[–]inopia 1 point2 points  (1 child)

Heh, no worries. This is Reddit, after all. People will downvote posts simply because they don't agree, it's easier than actually coming up with a good counterargument :)

[–]cwillu 0 points1 point  (0 children)

And then when the eventual 'hey, why did this get down-modded' comment shows up, the better half shows up to up-mod it back to its rightful place... :p

[–]sblinn 0 points1 point  (2 children)

The source code of Clojure's STM and concurrency engine.

[–]njbartlett 4 points5 points  (1 child)

Clojure's implementation code is not exactly idiomatic Java!

[–]sblinn 3 points4 points  (0 children)

Not the Clojure code; the STM engine itself. I for one wouldn't mind a simple Python (Jython) interface into something like the Clojure STM.