Introductory Programming In Java
Useful links and learning resources
If you have a useful resource for learning Java you would like to have listed here please e-mail it to the course coordinator.
There is an awful lot of books about Java, and most of them are awfully bad.
[Jim Grundy, circa 1997]
Good Books on Java
The official course textbook is Java Concepts,
6th ed.,
by Cay Horstmann (John Wiley, ISBN 978-0-470-50947-0).
It is a leaner (first 15 chapters)
and cheaper(?!) version of essentially the same book Big Java
(see next). Chapters 16–18 about the Advanced Data Structures, Generics
and Graphical User Interface (covered in the course but are not included in
Java Concepts) are available as free downloads from
the book
web site. Some lab exercises are taken from this book.
Big Java, 3rd ed. by Cay Horstmann,
John Wiley & Sons, 2008, ISBN: 978-0-470-10554-2, is a bigger version of
Java Concepts. It has everything which its smaller sibling has, plus
some (modest) discussion of generics and GUI (in already mentioned chapter 17 and 18),
and introduction into such topics as concurrency (multi-threaded programming),
Java's interaction with relational databases, Java and XML, web applications.
The
code examples
(the very same used in the Java Concepts) are available from
the book
web site, which also has an FAQ page,
a bug
list and other interesting information.
My personal preference — from the people who created Java:
The Java™ Programming Language, 4th Edition
by Ken Arnold, James Gosling (the language inventor) and David Holmes,
Addison Wesley, 2005, ISBN: 0-321-34980-6, 928 pages.
(from the cover quote) "...is the definitive tutorial introduction to the
Java language and essential libraries and an indispensable reference
for all programmers, including those with extensive experience."
Effective Java: Programming Language Guide, 2nd Ed. by Joshua Bloch,
Addison Wesley, 2008, ISBN-13: 0-321-35668-0, 346 pages.
"...concise book packed with insight and wisdom, not found elsewhere."
The winner (1st edition) of the Jolt Award,
this book consists of 78 episodes devoted to most effective solutions of
everyday problems. Written by a supremely qualified developer who was
responsible for Java 1.5 language extensions (some of which are anticipated
in this prescient book).
Java Puzzlers: Traps, Pitfalls and Corner Cases by Joshua Bloch
and Neal Gafter,
Addison Wesley, 2005, ISBN: 0-321-33678-X, 282 pages.
(from the back cover) "How well do you know Java? Are you a code sleuth?
Have you ever spent days chasing a bug caused by a trap or pitfalls in Java
or its libraries? Do you like brainteasers? Then this is the book for you!"
The book contains 95 `diabolically' challenging puzzles which will test
you understanding of the language.
Java: The Good Parts by Jim Waldo,
O'Reilly Media, 2010, ISBN: 978-0-596-80373-5, 196 pages (available in eBook formats)
(from the editor blurb) What if you could condense Java down to its very best
features and build better applications with that simpler version? In this book, veteran
Sun Labs engineer Jim Waldo reveals which parts of Java are most useful, and why those
features make Java among the best programming languages available.
Every language eventually builds up crud, Java included. The core language has become
increasingly large and complex, and the libraries associated with it have grown even more.
Learn how to take advantage of Java's best features by working with an example
application throughout the book. You may not like some of the features Jim Waldo
considers good, but they'll actually help you write better code.
Programming Pearls, 2nd ed. by Jon Bentley,
Addison Wesley, 2000, ISBN: 0-201-65788-0, 239 pages.
Not a book on Java but rather about the culture of coding in general
(though some book's examples are written in Java), a cult book, in a sense.
"
...the book is filled with lucid and witty descriptions of practical
programming techniques and fundamental design principles."
(the above link is no longer valid, unfortunately; but if you
"google" the author's name you can easily find an electronic copy
of the book).
Practical Java: Programming Language Guide by Peter Haggar,
Addison Wesley, 2000, ISBN: 0-201-61646-7, 280 pages.
Somewhat outdated, since it only covers Java 1.2, the book nevertheless
provides a wealth of excellent advice of how to use the language
as it was intended by the language creators. It teaches the reader
to write correct, efficient and robust code. Some of our discussions
(eg, control flow with exceptions) closely follow this book.
(The book, it appears, is out of print, but quick web search
can quickly point you to a full scanned version in Google Books.)
Allen B. Downey, a computer science professor in Massachusetts, has written a free book
How to Think Like a Computer Scientist,
Java™ Version. (he has also written the Python
version, which is available in a printed form, as well as in a similar electronic
format). He says on the book website that this
"is a free textbook available under the GNU Free Documentation License. Readers are free
to copy and distribute the text; they are also free to modify it, which allows them to
adapt the book to different needs, and to help develop new material…"
The book is of good pedagogical value, and can be used as an alternative
textbook.
Filthy Rich Clients by Chet Haase and Romain Guy,
Addison Wesley, 2007, ISBN: 978-0-13-241393-0, 572 pages.
This is a book about building "ultra-graphically rich
applications which ooze cool". It describes modern
techniques for creating desktop applications which include
animation and other graphical effects. We may learn this
in the week 6 of lectures (if time permits).
Few very recent books
Discuss the new advanced features of Java 7, as well as serious challenges which Java programming language faces today (related to concurrency and limitations of its object model), and the ways to address them by staying on Java platform and using other, more modern JVM languages like Scala.
The Well-Grounded Java Developer by B. J. Evans and M. Verburg,
Manning, 2012, ISBN: 9781617290060, 400 pages.
"The Java community has always been dynamic and fast-moving, with constant innovation on the core
platform as well as a vibrant community ecosystem. New JVM-based languages like Groovy, Scala, and
Clojure are redefining what it means to be a Java developer. The core Standard and Enterprise APIs
now co-exist with a large and growing body of open source technologies. Multicore processors,
concurrency, and massive data stores require new patterns and approaches to development.
Java 7 was released in 2011, and is still to be properly absorbed, yet Java 8 is coming, and
it will contain "lambda"&hellips;
The Well-Grounded Java Developer is a unique guide written for developers with a solid grasp of Java
fundamentals. It provides a fresh, practical look at new Java 7 features along with the array of
ancillary technologies that a working developer will use in building the next generation of business
software.
The book starts with thorough coverage of new Java 7 features. You'll then explore a cross-section
of emerging JVM-based languages, including Groovy, Scala, and Clojure. Along the way, you'll find
dozens of valuable development techniques showcasing modern approaches to concurrency and
performance."
Programming Concurrency on the JVM by Venkat Subramaniam,
Pragmatic Programmer, 2011, ISBN-13: 978-1-934356-76-0, 282 pages.
(from the Preface) "... for experienced Java programmers who are interested in learning
how to manage and make use of concurrency on the JVM, using languages such as Java,
Clojure, Groovy, JRuby, and Scala.,... [and] to help you learn the set of tools and approaches
that are available to you today so you can sensibly decide which one suits you the best to solve
your immediate concurrency problems."
Functional Programming for Java Developers by Dean Wampler,
O'Reiley, 2011, ISBN: 978-1-449-31103-2, 88 pages.
(from back of the jacket) "Software development today is embracing functional programming
(FP), whether it's for writing concurrent programs or for managing Big Data.
Where does this leave Java developers? This concise book offers a pragmatic, approachable
introduction to FP for Java developers or anyone who uses an object-oriented language...
Dean Wampler… shows how to apply FP principles such as immutability,
avoidance of side effects, and high-order functions to your Java code.
Each chapter provides exercises to help you practice what you've learned. Once you
grasp the benefits of FP, you'll discover that it improves all the code you write."
Indispensable web resources
You can learn the language very well — its features and effective usage,
so you do not have to constantly refer to a book how to deal with your current
coding problem.
But you do need to use the language libraries, which have been
designed and implemented for you by professionals. These resources are known as
API: Application Programming Interface.
In Java, they represent a huge collection of classes and interfaces,
organised into packages.
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.
Official Java™ Tutorials hosted by Sun:
http://java.sun.com/docs/books/tutorial.
This is an excellent source of all major aspects of how to use the Java
platform, including all its language features, platform components and
tools. You can download an archived version (about 50 Mb), and install it on
your desktop or laptop computer. Some of our presentations will borrow from
these tutorials. Truly, the Java tutorial, in its fulness, can replace any
book (apart from listed above, of course), and save you a lot of
money. I recommended it wholeheartedly!
A series of interviews
Top Java Developers Offer Advice to Students.
Since 1999, java.sun.com writers have interviewed Java developers from
diverse backgrounds and solicited their advice for students. In this
article, 11 top Java developers (including authors of some of the above
books) share the fruits of long experience.
![]()
Since Java was opensourced, the web portal java.net
is one of the hubs of all current activities related to Java. Check it out!
Integrated Development Environments (IDEs)
The powerful Eclipse
IDE
is an open source project, well maintained and supported with
abundance of tutorials, reference and technical documentations.
Additional internet resources like
Eclipse
And Java: Free Video Tutorials from the
sourceforge.net
can be of help for getting quick introduction into Eclipse's
nook and crannies. Eclipse boasts the largest number of
plug-ins (software components which extend the original functionality
of an application), and this makes its position in the IDE competition stronger.
Another (5 years old but good nonetheless) Eclipse learning resource is the
David J.
Powell's Eclipse Video Tutorial,
which covers all major Eclipse conducted activities including debugging
and javadoc documentation generating.
The main rival to Eclipse is the Sun's
Netbeans,
a similarly powerful. (Sun is mo more, of course, being bought by
Oracle, but Netbeans development continues, albeit at slower rate.)
Both Eclipse and Netbeans have their
strongest sides, eg, the visual GUI editor in
Netbeans is more flexible and user-friendly, but this may
be my personal preference. As with the "language wars", it is better
to choose your tool following practical considerations
and not to succumb to an ideological bias.
Both, Eclipse and Netbeans IDEs should be installed on our lab computers.
And this what more and more people (myself including) are choosing:
IntelliJ IDEA
from the company Jet Brains (formed by three Russians, headquartered in
Prague). It is 10+ years old (probably older then Eclipse and Netbeans). It
provides support to the developer of such power and insight, that its rivals can be envious.
"Develop with pleasure!" is the motto. One often gets a feeling that IDEA knows
about the code you are writing more than you do. Code assistance, refactoring and
keyboard-centric approach (no need to use the mouse!) are unmatched. Since 2010 the
company provides the Community Edition, a free version with (only just) smaller
set of functionalities. The licence for the full version is very affordable and represents
excellent value for money.
