SE450: Links

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

Java2SE API

(Online)

Java Tutorial

(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)

Online companion to the book. Addison Wesley site.

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)

http://www.martinfowler.com/

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)

wiki:MythicalManMonth wiki:NoSilverBullet wiki:BrooksLaw

Software Design: From Programming to Architecture [Amazon, AddAll]

By Eric J. Braude (Wiley, 2004)

http://www.wiley.com/college/braude/

Pattern Links on the Web

Wiki Wiki Web

Here is a list of categories.

Huston

Javacoder.net

Pattern Stories

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.

Ant

Open source. For java.

A compilation management tool. For an overview, look here.

Ant in anger.

JUnit

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.

JFCunit

Open source. For Java.

A unit testing framework for Java GUIs.

HTTPunit

Open source. For Java.

A unit testing framework for Java servlets.

GIT

Open source. For many platforms.

The standard source code versioning system.

Cruise Control

Open source. For Java.

A continuous integration tool for Java using CVS.

Javancss

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

ANTLR

Open source. For Java.

A Parser generator. See also JavaCC and JLex and CUP and this free book on parsing.

Java assertions

There is a nice article on DBC in Java from Dr. Dobbs.

iContract

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.

DBC Proxy

InstantDB

Open source. For Java.

A free, portable database.

DBVisualizer

Free. For Java.

A database visualization tool.

Tomcat

Open source. For Java.

A servlet engine.

JBoss

Open source. For Java.

An open source Java Enterprise Platform

JSX

Java Serialization to XML

Documentation and Style Tools

Jalopy

Open source. For Java.

CheckStyle

Open source. For Java.

A tool for checking coding style.

JRefactory Pretty-Printer

Open source. For Java.

JavaDoc

Free. For Java.

See How to Write Doc Comments for the Javadoc Tool.

See doclet.com.

XDoclet

Open source. For Java.

XSLDoc

Open source. For Java.

A Javadoc-like tool for XSL stylesheets.

Java Debuggers

A List of Java Debuggers

JDDB

Open source. For java.

JSwat

Open source. For java.

On windows, you might want to create a file called jswat.bat with something like this.

Program Editors

TextPad

Shareware. For windows.

How to set up ant in Textpad.

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.

Jedit

Open source. For java.

Also try Jext.

Xemacs

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

.

Java IDEs

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

IBM Software Architect

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.

VioletUML

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.

Microsoft Office

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.

Dia

Open source. For windows, linux and unix.

A diagram editor. Similar to ms visio.

Jfig

Open source. For java.

A java port of xfig, a drawing tool. Some UML templates can be found here.

The Gimp

Open source. For windows, linux and unix.

A production quality graphics program. Similar to adobe photoshop.

Utilities

WinZip

Shareware. For windows.

Create and read zip archives.

Acrobat Reader

Free. For many platforms.

View and print pdf files.

Jsh

A java shell

Windows 2000

DePaul Gnu/Linux Users Group

Cygwin

Open source. For windows.

A powerful set of unix commands ported to windows, including perl and gcc.

See also http://gnuwin32.sourceforge.net.

Ghostview

Free. For many platforms.

View and print postscript (ps) files.

Xmanager

Commercial. For windows.

An X server.

Tools Used to Make These Notes

Corin Pitcher's XSLT stylesheets for lecture slides

XHTML

Also look at http://www.garshol.priv.no/download/xmltools/ http://www.xml.com/ http://xml.startkabel.nl/ http://www.oasis-open.org/cover/sgml-xml.html http://www.devguru.com/ http://www.w3.org/ http://www.htmlhelp.com/ http://www.zvon.org/

css-edge

Xalan

Open source. For Java.

Java XML processing.

See also Cocoon Chello

Source Hilighting

Open source. For Unix.

A source highlighting tool.

Xiaoping Jia has written a version for java: http://venus.cs.depaul.edu/Software/

The assignment submission system

Faculty Guide to Academic Integrity

Mailman

Seminar

Prosper

A tutorial.

How to Configure Internet Explorer to Open Office Documents in the Appropriate Office Program Instead of in Internet Explorer

Java Resources

Main Sites

Java2SE API

There are also links that describe the jar file format, tools, language, virtual machine, and more.

Sun: Java Tutorial

Sun: Java

James Gosling is one of the language designers.

Sun: Developer

Sun's Code Samples

IBM: Developer

IBM: Java

JavaWorld

Some of the old columns are very good. They also have collections of articles on patterns, OO programming, and more.

More Sites

Ibiblio

Google

The Open Directory

JavaWorld's Jumps

JavaReport

Earthweb Gamelan

IT Toolbox

JGuru

JARS

Tutorials

Sun: Java Tutorial

Ibiblio: Brewing Java

JavaRanch

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 principle in chapter 1). Overall, however, this is a thinking person's book with excellent coverage of the most important topics.

Java Precisely

by Peter Sestoft

Java Design: Building Better Apps and Applets [Amazon, AddAll]

by Peter Coad, Mark Mayfield, Jonathan Kern (Prentice Hall, 1998)

OO Resources

General

Cetus

The best site for OO links.

UML

Holub UML

UML Notation Guide

Sinan Si Alhir's web site

OMG UML

Precise UML

An attempt to formalize the UML

OMG Documents

Rational Sotware

UML Distilled: A Brief Guide to the Standard Object Modeling Language [Amazon, AddAll]

by Martin Fowler, Kendall Scott (Addison-Wesley)

http://www.martinfowler.com/

The Unified Modeling Language User Guide [Amazon, AddAll]

by Grady Booch, Ivar Jacobson, Jim Rumbaugh (Addison-Wesley)

The Elements of UML Style

by Scott Ambler (Cambridge, 2002)

Preprint is available online.

State Machines

Abstract State Machines: A Method for High-Level System Design and Analysis [Amazon, AddAll]

by Egon Börger and Robert Stärk (Springer, 2003)

Book website

Process

PSP

by Watts S. Humphrey

Forms are here at ``Other Information'': http://www.cs.luc.edu/~wlhonig/Comp272default.htm

A PSP tool for windows: http://www-cs.etsu.edu/psp/

EASE: a reusable software engineering process for higher education

Capability Maturity Model for Software (CMM)

Extreme Programming Explained: Embrace Change [Amazon, AddAll]

by Kent Beck (Addison-Wesley, 1999)

http://www.xprogramming.com/ http://www.extremeprogramming.org/

The Mythical Man-Month: Essays on Software Engineering [Amazon, AddAll]

By Frederick P. Brooks Jr (Addison-Wesley, 1995, 1970)

wiki:MythicalManMonth wiki:NoSilverBullet wiki:BrooksLaw

Peopleware : Productive Projects and Teams, 2nd Ed. [Amazon, AddAll]

by Tom Demarco, Timothy Lister (Dorset House, 1999)

wiki:PopleWare wiki:TomDeMarco

The Psychology of Computer Programming [Amazon, AddAll]

by Gerald M. Weinberg (Dorset House, 1971)

wiki:ThePsychologyOfComputerProgramming wiki:GeraldWeinberg

A Discipline for Software Engineering [Amazon, AddAll]

by Watts S. Humphrey (Addison-Wesley, 1995)

Managing the Software Process [Amazon, AddAll]

by Watts S. Humphrey (Addison-Wesley, 1989)

Design

Lecture Notes on Software Design

by Daniel Jackson (2000)

Agile Alliance

Articles by many authors

Agile Software Development: Principles, Patterns and Practices [Amazon, AddAll]

by Robert C. Martin (Prentice Hall, 2002)

Articles by Robert C. Martin

Principles and Patterns

The Single Responsibility Principle

The Open Closed Principle

Granularity

Stability

The Dependency Inversion Principle

The Interface Segregation Principle

The Liskov Substitution Principle

UML Class Diagrams

UML Collaboration Diagrams

UML Sequence Diagrams

UML Finite State Machine Diagrams

UML Tutorial -- Complex Transitions (Activity Diagrams)

UML Tutorial -- Use Cases

Use Cases (A chapter from UML for Java Programmers)

Walking through a UML Design

Iterative and Incremental Development I

Iterative and Incremental Development II

Iterative and Incremental Development III - Faking It

The Craftsman #1

The Craftsman #2

The Craftsman #3

Inheritance vs. Delegation

The Visitor Family of Design Patterns

Proxy and Stairway to Heaven

Singleton And Monostate

The Design of Everyday Things [Amazon, AddAll]

by Donald A. Norman (Basic Books, 2002)

Artima

by Bill Venners. Useful articles on design and java.

Articles at PragmaticProgrammer

Law of Demeter

Law of Demeter

by Brad Appleton

Ootips - Object Orientation Tips

Refactoring

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.

Refactoring: An Example

by William C. Wake

Refactoring to Patterns

by Joshua Kerievsky

Coding Style

Java Coding Conventions

by Sun

The Elements of UML Style

by Scott Ambler (Cambridge, 2002)

Preprint is available online.

The Elements of Java Style [Amazon, AddAll]

by Vermeulen, Ambler, Bumgardner, Metz, Misfeldt, Shur, Thompson (Cambridge, 2000)

An old version is available online: AmbySoft Coding Standards for Java

The Practice of Programming [Amazon, AddAll]

by Brian W. Kernighan and Rob Pike (Addison Wesley, 1999)

website.

Code Complete : A Practical Handbook of Software Construction [Amazon, AddAll]

by Steve C McConnell (Microsoft, 1993)

website.

Ottinger's Rules for Variable and Class Naming

by Tim Ottinger

Draft Java Coding Standard

by Doug Lea

A Programming Style for Java

by Paul Haahr

Testing

Evolution of Test and Code Via Test-First Design

by Jeff Langr

Test Driven Development

by Kent Beck

Patterns

Gang of Four Patterns

Patterns Home Page

This is the official homepage of the Gang of Four. Ralph Johnson and John Vlissides also have individual homepages.

Design Patterns

by Tom Lauren

A nice summary of the Gang-of-four text

Patterns in a Nutshell

by Brad Appleton

Patterns and Software: Essential Concepts and Terminology

by Brad Appleton

Object-Oriented Patterns

by Peter Coad (Communications of the ACM, September 1992)

Pattern Depot

Chicago Patterns Group

Some Java Examples

C# examples

Patterns: Catalog of NonSoftware Examples

The Pedagogical Patterns Project

IBM Patterns for E-Business

Books

Thinking in Patterns

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

Smalltalk Patterns

Advanced Topics

Language Issues

Generative Programming: Methods, Tools, and Applications [Amazon, AddAll]

by Krzysztof Czarnecki, Ulrich Eisenecker

AspectJ

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.

Generic Java

An extension of Java with Generics. Also check out pizza.

C Sharp

C# Language Reference

by Microsoft

A Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language

by Dare Obasanjo

A Comparative Overview of C#

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

CDM calendar

CDM Labs

Loop Campus Bookstore

Loop Campus Map

DePaul calendar

DePaul Career Center

DePaul E-Recruiting

Teaching Technology

Plaigarism detection. Request a mailing list.

DePaul Technology Assistance Center

News

Slashdot

News for Nerds.

BBC News

Other

The Floating Nun Applet

OO Toaster

Google Zeitgeist

Verification

John Hatcliff's class

Spin

DSpin

Bandera

Java Path Finder

Hints to Specifiers

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

USE

ESC/Java

Documentation


Revised: 2008/09/03 15:28