Contents |
Reading |
Software |
Java Resources |
OO Resources |
Patterns |
Advanced Topics |
Miscellaneous |
Reading |
Required Books
Object-Oriented Design and Patterns (2e) [Amazon, AddAll]
by Cay Horstmann (Wiley, 2005)
Online companion to the book: http://horstmann.com/design_and_patterns.html
(Online)
(Online)
Reequired Books (Pick one of the following three)
Design Patterns [Amazon, AddAll]
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Addison-Wesley, 1995)
Online companion to the book: http://hillside.net/patterns/DPBook/DPBook.html
Head First Design Patterns [Amazon, AddAll]
by Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates (O'Reilly, 1995)
ADD intro to DP.
Online companion to the book: http://www.oreilly.com/catalog/hfdesignpat/
Design Patterns Explained: A New Perspective on Object-Oriented Design (2e) [Amazon, AddAll]
by Alan Shalloway, James R. Trott (Addison-Wesley, 2004)
Other Books
Object Oriented Software Development Using Java [Amazon, AddAll]
by Xiaoping Jia (Addison-Wesley, 2002)
Online companion to the book: http://se.cs.depaul.edu/Java/
Refactoring to Patterns [Amazon, AddAll]
by Joshua Kerievsky (Adisson Wesley, 2004)
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process [Amazon, AddAll]
by Craig Larman (Prentice Hall, 2001)
Holub on Patterns: Learning Design Patterns by Looking at Code [Amazon, AddAll]
by Allen Holub (Apress, 2004)
Software Architecture Design Patterns in Java [Amazon, AddAll]
by Partha Kuchana (Auerbach Publications, 2004)
Object-Oriented Modeling and Design with UML [Amazon, AddAll]
by Michael Blaha, Jim Rumbaugh (Prentice Hall, 2005)
The inside cover is available for download.
UML Distilled: A Brief Guide to the Standard Object Modeling Language [Amazon, AddAll]
by Martin Fowler, Kendall Scott (Addison-Wesley)
Refactoring Improving the Design of Existing Code [Amazon, AddAll]
by Martin Fowler (Addison-Wesley, 1999)
A list of refactorings and summaries can be found at www.refactoring.com.
Effective Java [Amazon, AddAll]
by Joshua Bloch (Addison Wesley, 2001)
Two chapters are available online: http://developer.java.sun.com/developer/Books/effectivejava/
All Java programmers should have this book.
Extreme Programming Explained: Embrace Change [Amazon, AddAll]
by Kent Beck (Addison-Wesley, 1999)
http://www.xprogramming.com/ http://www.extremeprogramming.org/
Test Driven Development [Amazon, AddAll]
by Kent Beck (Addison-Wesley, 2002)
Thinking in Java [Amazon, AddAll]
by Bruce Eckel (Prentice Hall, 2002)
Free online version available here.
The Mythical Man-Month: Essays on Software Engineering [Amazon, AddAll]
By Frederick P. Brooks Jr (Addison-Wesley, 1995, 1970)
Software Design: From Programming to Architecture [Amazon, AddAll]
By Eric J. Braude (Wiley, 2004)
Pattern Links on the Web
Here is a list of categories.
Software |
Java Compilers
Sun's Java2SE Software Development Kit
Free. For windows, solaris, and linux.
You can download the documentation or read it online.
Open source compilers are available from IBM (Jikes) and GNU (gcj).
IBM's Java2SE Software Development Kit
Free. For many platforms.
Java Development Tools
Java Tools for Extreme Programming: Mastering Open Source Tools Including Ant, JUnit, and Cactus [Amazon, AddAll]
by Rick Hightower, Nicholas Lesiecki (Wiley, 2002)
There is a companion site.
Open source. For java.
A compilation management tool. For an overview, look here.
Open source. For java.
A unit testing framework for Java applications. For an overview, look here.
For languages other than Java, look here.
For unit testing J2EE containers -- such as servlets and EJBs -- try Cactus.
Open source. For Java.
A unit testing framework for Java GUIs.
Open source. For Java.
A unit testing framework for Java servlets.
Open source. For many platforms.
The standard source code versioning system.
Open source. For Java.
A continuous integration tool for Java using CVS.
Open source. For Java.
A Source Measurement Suite for Java
Measures line counts and other stuff.
Ant integration: http://sourceforge.net/projects/javancss2ant/
More Java Tools
Open source. For Java.
A Parser generator. See also JavaCC and JLex and CUP and this free book on parsing.
There is a nice article on DBC in Java from Dr. Dobbs.
Free. For Java.
An extension of Java Documentation with Assertions.
iContract, is not well supported any more. See Jass, JMSAssert and JML. There is a nice article on JML from IBM.
ICPlus provides extended support for IContract, Java world article on Icontract.
Open source. For Java.
A free, portable database.
Free. For Java.
A database visualization tool.
Open source. For Java.
A servlet engine.
Open source. For Java.
An open source Java Enterprise Platform
Java Serialization to XML
Documentation and Style Tools
Open source. For Java.
Open source. For Java.
A tool for checking coding style.
Open source. For Java.
Free. For Java.
See How to Write Doc Comments for the Javadoc Tool.
See doclet.com.
Open source. For Java.
Open source. For Java.
A Javadoc-like tool for XSL stylesheets.
Java Debuggers
Open source. For java.
Open source. For java.
On windows, you might want to create a file called jswat.bat with something like this.
Program Editors
Shareware. For windows.
A very good program editor. A huge improvement over notepad.
A tutorial on editing java using TextPad, by Dr. Johnsonbaugh, can be found here: http://facweb.cs.depaul.edu/TextPad/running.html
You might also try UltraEdit.
Open source. For java.
Also try Jext.
Open source. For windows, linux, unix and macos.
A powerful, but rather complicated, text editor. (This is what I use.)
The original GNU emacs is also available for windows, linux and unix. It is not quite as friendly as Xemacs.
You can also look at vim.
10 Reasons to Dump Your Java IDE
By Bradley S. O'Hearne
A summary is here
.
Eclipse, Jbuilder, IntelliJ IDEA.
Note that eclipse can support programming with patterns: Design Pattern Toolkit
There is a nice tutorial on Eclipse And Java For Total Beginners
UML/Figure Editors
Free for use by depaul students. For Java.
Lots of features. Painful install. Complex. A bit of overkill if you just want to draw diagrams.
Open source. For java.
A good UML editor.
A list of tools is here: wiki:UmlSoftware. You might also look at ArgoUML, Umlet, Umlaut or the commercial products MagicDraw and Together Control Center.
Commercial. For windows.
One can make passable drawings in Word or PowerPoint. The professional version of Visio has UML support, but is sold separately.
See also the free viewers for windows: word viewer, excel viewer, powerpoint viewer.
Open source. For windows, linux and unix.
A diagram editor. Similar to ms visio.
Open source. For java.
A java port of xfig, a drawing tool. Some UML templates can be found here.
Open source. For windows, linux and unix.
A production quality graphics program. Similar to adobe photoshop.
Utilities
Shareware. For windows.
Create and read zip archives.
Free. For many platforms.
View and print pdf files.
A java shell
Open source. For windows.
A powerful set of unix commands ported to windows, including perl and gcc.
See also http://gnuwin32.sourceforge.net.
Free. For many platforms.
View and print postscript (ps) files.
Commercial. For windows.
An X server.
Tools Used to Make These Notes
Open source. For Java.
Java XML processing.
Open source. For Unix.
A source highlighting tool.
Xiaoping Jia has written a version for java: http://venus.cs.depaul.edu/Software/
A tutorial.
Java Resources |
Main Sites
There are also links that describe the jar file format, tools, language, virtual machine, and more.
James Gosling is one of the language designers.
Sun's Code Samples
Some of the old columns are very good. They also have collections of articles on patterns, OO programming, and more.
More Sites
Tutorials
A friendly place for Java greenhorns.
Books
The Java Language Specification [Amazon, AddAll]
by Bill Joy, Guy Steele, James Gosling, Gilad Bracha (Addison Wesley, 2000)
This book, and some others in the same series are available for free online. Check here.
All Java programmers should have this book.
The Java Programming Language [Amazon, AddAll]
by Ken Arnold, James Gosling, David Holmes (Addison Wesley, 2000)
An succinct introduction to the language and its main APIs.
Effective Java [Amazon, AddAll]
by Joshua Bloch (Addison Wesley, 2001)
Two chapters are available online: http://developer.java.sun.com/developer/Books/effectivejava/
All Java programmers should have this book.
Thinking in Java [Amazon, AddAll]
by Bruce Eckel (Prentice Hall, 2000)
Free online version available here.
You might also look at Understanding Object-Oriented Programming with Java [Amazon, AddAll] Computing with Java: Programs, Objects, Graphics [Amazon, AddAll]
This is an excellent book for programmers learning Java or for those that know some Java but do not really understand object-oriented programming. It is a bit discursive, but does an excellent job of explaining OO fundamentals such as late-binding (aka dynamic dispatch, covered in Chapter 1). The many small examples sprinkled throughout the book effectively demonstrate basic language constructs and playfully explore the boundaries of the language (see his examples of nested classes). Eckel is a bit flip in places (call-by-value versus call-by-reference in footnote 1 in chapter 2) and inaccurate in others (his definition of the
substitution principlein chapter 1). Overall, however, this is a thinking person's book with excellent coverage of the most important topics.
by Peter Sestoft
Java Design: Building Better Apps and Applets [Amazon, AddAll]
by Peter Coad, Mark Mayfield, Jonathan Kern (Prentice Hall, 1998)
OO Resources |
Patterns |
Gang of Four Patterns
This is the
officialhomepage of the Gang of Four. Ralph Johnson and John Vlissides also have individual homepages.
by Tom Lauren
A nice summary of the Gang-of-four text
by Brad Appleton
Patterns and Software: Essential Concepts and Terminology
by Brad Appleton
by Peter Coad (Communications of the ACM, September 1992)
Books
by Bruce Eckel
This free online version is not yet published.
Applied Java Patterns [Amazon, AddAll]
by Stephen A. Stelting, Olav Maassen (Prentice-Hall, 2002)
There is a companion site.
Java Design Patterns [Amazon, AddAll]
By James W. Cooper (Addison-Wesley, 2001)
A older version is available for free here. The main difference between the online and printed versions is the use of UML in the latter.
Design Patterns Explained: A New Perspective on Object-Oriented Design [Amazon, AddAll]
by Alan Shalloway, James R. Trott (Addison-Wesley, 2002)
Online companion to the book: http://www.netobjectives.com/dpexplained/dpe_olc.htm
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns [Amazon, AddAll]
by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal (John Wiley, 1996)
Smalltalk
Advanced Topics |
Language Issues
Generative Programming: Methods, Tools, and Applications [Amazon, AddAll]
by Krzysztof Czarnecki, Ulrich Eisenecker
An extension of Java with Aspects.
See this special issue of the CACM. The introduction states: Implicit invocation is a concept that in the past Robert Filman has termed obliviousness, stated as: The distinguishing characteristic of aspect-oriented programming systems (qua programming systems) is that they provide quantification and obliviousness. Quantification is the idea that one can write unitary and separate statements that have effect in many, non-local places in a programming system; obliviousness, that the places these quantifications applied did not have to be specifically prepared to receive these enhancements.
An extension of Java with Generics. Also check out pizza.
C Sharp
by Microsoft
A Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language
by Dare Obasanjo
by Ben Albahari
Performance
Java Platform Performance: Strategies and Tactics [Amazon, AddAll]
by Steve Wilson, Jeff Kesselman (Addison Wesley, 2000)
Online version available for free here.
Distribution and Concurrency
Concurrent Programming in Java: Design principles and patterns
Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects [Amazon, AddAll]
by Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann (John Wiley, 2000)
Free online version at http://library.books24x7.com/toc.asp?bkid=3002.
Jini
A Note On Distributed Computing
by Samuel C. Kendall, Jim Waldo, Ann Wollrath, Geoff Wyant
A Programmer's Guide to Jini Technology [Amazon, AddAll]
by Jan Newmarch (Apress, 2000)
A free online version is available here.
Miscellaneous |
DePaul
Plaigarism detection. Request a mailing list.
News
News for Nerds.
Other
Verification
by Jeannette Wing, July, 1995.
Formal Specification: a Roadmap
by Axel van Lamsweerde, in Future of Software Engineering (Limerick, Ireland). June, 2000. ACM Press.
Alloy and its Constraint Analyzer
Alloy : A Lightweight Object Modelling Notation COM Revisited: Tool Assisted Modelling and Analysis of Software Structures A Comparison of Object Modelling Notations : Alloy, UML and Z
Revised: 2008/09/03 15:28