Resources
In 1997, Jim Grundy, who was running one of the first courses which used Java in our School, had said:
There is an awful lot of books about Java, and most of them are awfully bad.
The situation with quality of books to learn Java programming with has changed in twenty years: Now it is hard to choose from many good ones.
Good books about Java
Recommended Textbook
- A rapid introduction to the good parts of Java for competent programmers
- A thorough introduction into lambdas and the stream library
- A modern coverage of concurrent programming that focuses on high-level synchronisation constructs
- Blog-length chunks of information that you can digest quickly
- An organisation that you’ll find useful as a quick reference
You can order the book through ANU’s Coop Bookshop, but a cheaper option would be to use the Book Depository on-line store (it requires a credit card or a PayPal account), which costs less than AUD$50 (with free delivery), and can be delivered in a few days. Other (electronic) formats are also available, check the author Cay Hortsmann website.
Alternative if you already have a good book on “old” Java
- A rapid introduction to the new Java 8 features for competent Java programmers
- A concise but thorough introduction into lambdas and the stream library
- Complete coverage of other new features in the biggest release since Java 1.0
- Blog-length chunks of information that you can digest quickly
- An organisation that you’ll find useful as a quick reference
However, the book provides neither a proper introduction to the language basics (use your other texts), nor argues about superiority of the functional paradigm over the others, nor dives deep into traps, pitfalls and gotchas (sorry for using this word) of programming practices involving the λ-expression and streams. We follow this book in some parts of Functional Programming in Java lectures. A good (if not the best with the current exchange rate) deal is probably the BookDepository on-line store.
From the hands of Java’s creators
Some of our discussions and examples have been borrowed from this book. Mind you, however, that this edition covers Java SE 5, and it has not been updated since (it does not include the most important language extension which has come in the Java SE 8 — lambdas and all that). The style of this book is not one of a textbook exposition, but it is highly valuable to medium to high level programmers. As is the following masterpiece:
One of the most useful books
It would be delightful if Dr. Bloch had prepared a new edition to include λ-s and streams (the core features of Java SE 8).
Modern Java Books about lambdas and streams
- How to use Java 8’s powerful new features
- Writing effective multicore-ready applications
- Refactoring, testing, and debugging
- Adopting functional-style programming
- Why lambdas were needed, and how they will change Java programming
- Syntax of lambda expressions
- The basic operation of streams and pipelines
- Using collectors and reduction to end pipelines
- Creating streams
- Spliterators, the fork/join framework, and exceptions
- Examining stream performance with microbenchmarking
- API evolution using default methods
The author maintains the web site Maurice Naftalin’s Lambda FAQ, which probably has the most lucid explanation of the Java 8 language extensions (apart from his book). He has also given master classes at different Java conferences world wide in recent years – look up on Youtube and elsewhere.
- Writing code that’s easier to read and reason about
- Safer concurrent and parallel programming
- Handling errors without exceptions
- Java 8 features like lambdas, method references, and functional interfaces
The content of this book is highly original, and many explained techniques will be revelation for the reader, some may have a universal value and have a much wider applicability than merely in Java.
Web sites
The Java API Documentation can be downloaded and used locally. You should make a bookmark link to it on your web browser to have it always at hand.
Note, that the part of the Tutorial which regards the GUI Programming with Swing API should be ignored, and JavaFX programming looked into instead (Swing is an older GUI API which is no longer developed).
The next three online training resources are pinched from Steve Blackburn’s COMP1110 course (hence, all annotations on the right are direct citations of Steve):
![]() |
There’s a nice cheatsheet contained in an appendix to Robert Sedgewick and Kevin Wayne’s Introduction to Programming in Java. [And once you’re onto it, perhaps, you can check the textbook itself as a supplementary or an alternative text to those suggested above.] |
Of a similar kind to the last above, but this time is a canonical tool, a soon will be a part of the Java Standard Toolkit, the Java shell:
![]() |
Read-Evaluate-Print-Loop is a shell which you can use to experiment with small chunks of Java code before including them into your program. You need JavaSE 9 (currently available as a pre-release version), and run jshell on the command line. We demonstrate its use in the lectures. |
Integrated Development Environments (IDEs)
There are three widely used IDE’s for programming in Java and related technologies, and they are all installed on our lab computers:
Our preferences without a question go to
Since 2010 the company provides the Community Edition, a free version with a smaller set of functionalities (which are quite sufficient for a beginner and/or an amateur programmer). The licence for the full version is very affordable and represents an excellent value for money.
Git
Git is the most widely-used version control system and an integral part of this course. The Git website has documentation and videos on getting started with Git.
The Code School Try Git tutorial allows you to try out Git repositories and commands in a friendly ‘sandbox’ environment.