Skip navigation

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

java concepts 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 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.


java prog lang 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."


eff java 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 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 puzzlers 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.


progr pearls 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 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.)


How to Think Like a Computer Scientist 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.


Filty Rich 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.

Well-Grounded JD 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."


Progr Conc JVM 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 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

java logo 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.


duke 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!


PencilledDuke 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.


Java Net
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)

Eclipse 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.


Netbeans 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.


IntelliJ IDEA 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.

 

Updated:  Tue 14 May 2013 01:03:20 EST Responsible Officer:   JavaScript must be enabled to display this email address. Page Contact:   Course Webmaster