|View Weekly Course Schedule||Other interesting links:|
Resources (examples, ...)
Instructions for Programming Assignment #1.
Instructions for Programming Assignment #2.
Instructions for Programming Assignment #3.
Instructions for Programming Assignment #4.
Instructions for Programming Assignment #5.
Instructions for Programming Assignment #6.
Instructions for Programming Assignment #7.
Instructions for Programming Assignment #8.
Instructions for Programming Assignment #9.
Reported by: "Anne Applin" <anne.applin@GMAIL.COM>
www.oracle.com/technetwork/java/ - The source for
JDK and more.
On-line version of the Java 8 JDK Docs from Oracle. (Java 8 API docs.)
docs.oracle.com/javase/ - links to all official Java documentation, including references, guides, and tutorials.
On-line Textbook supplements and Student Resources - Liang's textbook companion website.
TampaJUG.org - Tampa Bay area Java Users Group.
on-line Java Language Reference - the final word on Java; explains obscure language features.
on-line Java Tutorials — Excellent tutorials on all topics, including sample code.
Thinking in Java free (PDF), highly regarded book by Bruce Eckel.
A Java FAQ (Java Glossary), lots of answers.
on-line training articles from Oracle.
IBM Java developerWorks — Large collection of beginner to expert articles on all things Java.
ootips.org A large collection of OO tips, techniques, and design patterns.
www.UML.org The site for UML standards, tutorials, and more. Download ArgoUML, a free UML modeling tool.
Java Certification Programs and Oracle Certified Associate (OCA) exam topics. (See also Oracle Certified Professional (OCP) exam topics.)
Professional Software Engineering certification information (may be required to practice SE in some states).
|Time & Place:||Ref No. 51052: Tuesday & Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427|
|Instructor:||Name: Wayne Pollock|
Office & Phone: DTEC–404, 253–7213
DM Office Hours: Monday–Thursday, 3:55–5:25 & 8:30–9:00;
On-line Office Hours: Tuesday–Friday, 12:00 PM (noon)–1:00 PM; or by appointment.
Liang, Y. Daniel, Introduction to Java Programming, Custom Edition
Volume II, ©2013 Pearson/Prentice-Hall:|
ISBN-10: 1-269-24112-5, ISBN-13: 978-1-269-24112-0
This is a custom textbook, made from the Ninth Edition Comprehensive version. This book only contains the material used in our class, and should be much cheaper than the full 9th comprehensive edition. However, it is probably only available from the HCC bookstore.
Kathy Suerra and Bert Bates,
Head First Java,
©2009 O'Reilly Media.
(This course is 3 credit hours long.)
This course is a continuation of COP 2800
(Java Programming I).
The focus is on the development of client-server applications
|Objectives:|| The student will demonstrate a knowledge of the following topics
through objective tests, hands-on activities, and projects:
|Prerequisite:||COP 2800, or permission of the instructor. Students enrolled in a degree or college credit certificate program must complete all prerequisites. Note! HCC registration computers may not check for prerequisites before allowing you to enroll. Be certain you have all required prerequisites or you won't have much of a chance of success. Also you may be dropped from the class.|
|Facilities:|| All assignments can be performed on any computer that supports current
Java SE and the Java EE development tools.
(These include the HCC classroom and Computer Lab
You can obtain the JDK from
The Glassfish Java EE
server (Open Source edition) from
Eclipse from eclipse.org,
NetBeans from NetBeans.org,
JUnit from junit.org,
and other (free) tools, which will be introduced as needed.
(These are all free tools, and often the tools of choice in the industry.)
You will also need to create a (free) account at GitHub.com.
You will need your own flash disk, writing materials (for taking notes), and three Scantron 882–E or 882–ES forms (for taking tests). You can use HawkNet (WebAdvisor) or Florida Virutal Campus (Formerly FACTS.org) to obtain your final grade for the course. You can use your assigned Hawkmail (Hawkmail365) email address if you wish to discuss your grades via email. (Note, it is possible to setup your Hawkmail account to forward all received emails to some outside email account; but you still must send mail from Hawkmail to discuss grades.)
Most college systems now (or will in the future) use a single sign-on user ID, known as HCC “NetID”. Visit netid.hccfl.edu to register and to update your credentials. (Your initial password is your uppercase first name initial, lowercase last name initial, and your seven digit student ID number.) Note, the quickest way to resolve login issues is the HCC Live Web Portal (hcclive.hccfl.edu).
Hawk Alert text messaging service allows you to receive important information regarding campus closures or emergencies. You may also sign up for financial aid notifications and registration and payment deadlines. This is a free service, although some fees may be applied by your cellular service provider or plan for text messages. To sign up, or for more information, visit www.hccfl.edu/alerts/.
Computers with Java software installed are located in the computer science department open lab in DTEC–462. Lab hours are:
(Note: Lab technicians (“Lab Techs”) are not teaching assistants or tutors, and shouldn't be expected to help you with your coursework.)
Rules for Using HCC Facilities
A=90-100, B=80-89, C=70-79, D=65-69, F=0-64
Projects will be assigned from the class web page at various times.
You will have sufficient time to complete the projects,
at least a week but usually two weeks.
All Projects will be group programming projects.
You must work on projects outside of regular class hours.
While you may work individually on the first two projects, you must work in a group of two to four students on all other projects, unless approved by your instructor. From project #3 on, projects will be submitted to a group's designated GitHub repository for that project. (Each group will have either one repo, or one branch, for each of the group's projects; this will be explained before project #3 is assigned.) Each group member must do their share of the work, and make individual commits. Your grade will depend mostly on your code as shown by your commits to the project repository for your group.
Projects are graded on the following scale:
A = 95% (Excellent: Good design with good comments, style, and extras)
Minor extras worth +5 points, minor omissions or poor design worth -5.
Projects are graded according to their design (25%), how well they compile and run (20%), how well your project meets the requirements specifications (20%), the coding style (15%), the amount (and quality) of your comments (10%), and your creativity in extending the project usefully or an innovative design that uses the features taught in class well (10%).
Projects are not graded when turned in. They are graded all at once, sometime after the project deadline has passed (usually the following weekend). Every effort will be make to grade projects within a week of the due date, or as soon thereafter as possible. (See also submitting assignments below.)
All assignments (except when noted) must be submitted by email to
Please use a subject such as
“Java II Project #1 Submission”,
so I can tell which emails are submitted work.
(Questions get answered right away, but submissions may wait
a while before I grade them.)
Send only one assignment per email message. Email your Java source and HTML files by copy-and-paste. (Please do not send as attachments, except when noted in the project's directions.) If possible use the “text” and not the “HTML” mode of your email program.
Note: If you use Microsoft Outlook Express or a similar
email program, please be aware that this program has a “feature”
that automatically converts slash-slash (“
In the event a student submits more than once for the same assignment, I will ignore all but the last one received up to the deadline. Assignments submitted after the deadline will not count toward your grade except as allowed by the course late policy. Also, you cannot resubmit an assignment once it has been graded.
To avoid having your submitted work rejected as “spam”, you can use Hawkmail365 to send email to professors. This doesn't always work either! If you are having difficulties with this email address, ask me for an alternate email address you can use.
If you have an email problem, you may turn in a printout instead. Be sure your name is clearly written on the top of any pages turned in. Please staple multiple pages together (at the upper left).
Always keep a backup copy of your submitted projects, until you are certain they have been received and graded correctly.
|HCC Academic Calendar:|
|Classes Begin:||Wednesday 1/8/2014 (First class meeting: Thursday 1/9/2014)|
|Add-Drop Ends:||Tuesday 1/14/2014|
|Last Day to Withdraw:||Tuesday 3/18/2014|
|Classes End:||Wednesday 5/7/2014 (Last regularly scheduled day of class: Tuesday 5/6/2014)|
|Grades Available:||Monday 5/12/2014 (from Florida Virtual Campus (formerly called FACTS.org), or from HawkNet)|
|HCC is closed on:||
Monday 1/20/2014 (Martin Luther King Jr. Day), |
Monday 2/17/2014 (Presidents' Day),
Monday–Sunday 3/10/2014–3/16/2014 (Mid-Term Break),
Thursday 4/10/2014 (Faculty In-Service Day),
Friday–Sunday 4/18/2014–4/20/2014 (Spring Day)
If, to participate in this course, you require an accommodation due to a physical disability or learning impairment, you must contact the Office of Services to Students with Disabilities, Dale Mabry campus: Student Services Building (DSTU) Room 204, voice phone: (813) 259–6035, TTD: (813) 253–7035, FAX: (813) 253–7336. Brandon campus: voice phone: (813) 253–7914.
HCC has a religious observance policy that accommodates the religious observance, practices, and beliefs of students. Should students need to miss class or postpone examinations and assignments due to religious observances, they must notify their instructor at least one week prior to a religious observance.
|Quotes:||“Tell me and I'll listen.|
Show me and I'll understand.
Involve me and I'll learn.”
|— Lakota Indian saying|
|“Learning is not a spectator sport!”||— Chickering & Gamson|
(Chapter numbers refer to the comprehensive edition, not the custom text)
Review: Course policies.
Review Java 1 topics on request (such as: applications and applets,
bytecode, command line tools, methods, scope, modifiers,
object oriented programming, inheritance, overloading and overriding,
interfaces, wrapper classes, using |
Understanding .class files, JREs, byte code, tool-chains. Using Eclipse and NetBeans Java IDE. Ethics.
Chapters 1–13, 15–18,
Liang on-line supplements: III-G (Packages),
II-B through II-E (Netbeans and Eclipse Overviews),
Code of Ethics,
Eclipse Documentation (the “Workbench User Guide” and
“Java development user guide” sections),
NetBeans Documentation (the “Java Quick Start Tutorial”
and “Developing General Java Applications”)
Java 7 SE API reference, tutorials, and sample code from Oracle, ant.apache.org, Eclipse, NetBeans, Another Eclipse tutorial
Versioning (or revision) control systems (Git and CVS),
and using them with IDEs.
Exceptions: checked vs. unchecked, using
and defining, |
Jar files (and sealed packages). WebStart (JNLP). Signing applets and WebStart applications.
Project #1 (IDE) due 1/21
Chapters 14.1-14.9 (Exceptions),
Liang on-line Java supplements: III-R (WebStart),
Eclipse Git User Guide - GitHub Tutorial,
Eclipse Git User Guide - Starting from Existing Git Repositories,
Git Tutorial for NetBeans
on-line Exception demos, on-line WebStart and code signing tutorials and demos, additional VCS resources, Jar tool and manifest file lecture notes
|Mon 1/21||Martin Luther King Jr. Day — HCC closed|
Boxing and unboxing.
Project #2 (Git) due 2/4
Chapters 14.10-14.13, 9.2.7,
Liang on-line Java supplements: III-L (initialization blocks),
Oracle Java tutorials for: “Initializing Fields” (including static
initialization blocks), “Using Package Members” (including static
import),“Enum Types”, “Annotations”,
“The Numbers Classes” (for boxing/unboxing), and
“Passing Information to a Method or a Constructor” (varargs);
covariant return types tutorial,
Oracle's Reflection tutorial
on-line Exception demos, on-line boxing, enum, initialization blocks, annotations, covariant, and reflection resources
Persistent storage, CRUD
operations and applications.
Choosing file formats (or data management system).
Designing file (and message) formats, including magic string, version
number, encoding, and other factors.|
Files and I/O (
Chapters 14.10–14.13, 19
Oracle Java Tutorial for I/O, on-line file and I/O resources
Java Collections: arrays (review), types/interfaces (List, Set, Map),
common implementations (Linked List, Hash, Tree).
Project #3 (Search Engine part 1: UI) due 2/25
Chapters 22, 23, (Appendix G, bitwise operators,
IBM Developerworks Java Collections tutorial
Oracle Java Collections Tutorial, on-line Collections resources
Aggregate operations (streams).
The garbage collector and Java memory model, Weak/soft references, WeakHashMaps.
(tutorial from Joshua Bloch's Effective Java),
Aggregate Operations - The Java Tutorial,
Reference types tutorial (skip Reference Queues and
on-line Generics and Streams resources, on-line memory, garbage collection, and Reference resources
Internationalization (I18N), Localization (L10N),
Encoding (Unicode, UTF-8,
Liang chpater 35
(requires book's access code; click “Companion Website” link),
Internationalization tutorial from Oracle
on-line I18N resources
|3/10 – 3/16||Mid-Term Break — HCC closed|
Object-oriented analysis and design.
Introduction to design patterns.
Model-View-Controller (MVC) pattern.
Project #4 (Search Engine part 2: Files) due 3/18
Chapters 10 (Thinking in Objects),
Liang on-line supplements III-N (Design Patterns)
and III-X (UML),
on-line design and UML resources
Testing, using JUnit.
Logging for Java.
Management and monitoring of applications and the JVM.
Project #5 (RFP) due 4/1
Liang on-line supplement III-P (assertions),
Liang chpater 50
(requires book's access code; click “Companion Website” link),
Official (short) JUnit tutorial,
Extreme Programming (TDD)
example: Bowling scores,
Java logging tutorial,
Monitoring Java programs using Jconsole
on-line testing resources, logging and monitoring demos Liang on-line supplement III-X (JUnit), logging and monitoring demos
|4/10||In-Service Day — HCC closed|
Multithreading (Concepts, issues, object locks,
Project #6 (Search Engine part 3: Collections) due 4/15
Sun/Oracle Tutorial on Concurrency
on-line Multi-Threading resources
XML (SAX, DOM,
StAX, XSLT), JSON.
Database access (JDBC), SQL, Using ODBC.
Project #7 (Mini-Golf part 1: requirements and design) due 4/24
JSON Lecture Notes,
Liang on-line supplements V-C and V-D (XML),
on-line XML and JSON resources, Liang on-line supplement IV-A, -B, -E, -F, -G, -H (databases), on-line database resources
|4/29||Automating building, testing, and deploying: Overview of Ant and Maven tools.||
TutorialsPoint.com Ant tutorial,
TutorialsPoint.com Maven tutorial
on-line Ant and Maven resources
Overview of Java EE design: Web-, business-,
and EIS- tiers,
fat/thin clients, grids and clusters, applications and web services
(SOAP, WSDL, and UDDI).
Other Java EE technologies: JNDI, ...
Installing Glassfish and related software. Servlets (Handling GET and POST requests, using cookies and session tracking). JSP. Deployment: WARs and EARs.
Project #8 (Mini-Golf part 2: unit testing) due 5/1
|Liang on-line supplements V-A, V-B (HTML and CSS), On-line Chapters 42–45, (Ch. 44, 45 optional), on-line Java EE resources|
Additional topics (interest and time permitting):|
Using advanced layout managers (GridBag, Box, and Overlay and JlayerPane). Borders. PLAF. Toolbars and Actions. Swing and the MVC (Model-View-Controller) architecture. JTables (and JTrees). Networking (URLs, Sockets, UDP Datagrams, Client-Server). RMI. Java WebStart (JNLP). Java ME concepts. Graphics and the Java 2D API: Clipping, transformations, stroking. Printing in Java. Java Security: Signed Applets, Policy files, sealed packages. The
on-line PLAF resources,
Chapters 30, 43, on-line Networking Resources
Chapters 32, Liang on-line supplements III-R (Java 2D), III-S (Adv. Layout managers), III-V, (PLAF), on-line JavaBeans, security, graphics, WebStart, and JavaME resources
Project #9 (Web Application) due 5/6
|Bytecode Demo||Bytecode Demo using javap||Pack.java||Demo of bitwise operators|
|Java Setup||Instructions for re-creating the Java setup of our classroom, including the install of NetBeans, Eclipse, JDK, Ant, Maven, JUnit, Derby database, and other tools||OpenMeetings||Apache project, used to facilitate group communications (when working on group projects, for example)|
|Windows free hex editor Neo||A good hex editor, useful for examining class and other non-text files (Another good one is Cygnus Hex Editor)||Groovy||A Java-like scripting language for the JVM|
|Software Engineering Code of Ethics||Joint ACM and IEEE code of ethics and professional conduct||Debug Strategy||Excellent advice from Patricia Shanahan on debugging|
|Dealing with Poisonous People||An interesting read about working on open-source projects, but much of the advice applies to any software team||Dinosaur Brains: Dealing with All THOSE Impossible People at Work||A good book (See also Dealing with difficult team members and 20 Ways to Deal with Difficult Co-Workers)|
|Soft Skills||A discussion of certifications, job interviewing tips, and required “soft skills”||Working with Difficult People||A good tutorial, from www.webucator.com|
|Git home||The Git version control system (See also the excellent on-line “Pro Git” book)||GitHub.com||Easy to use public (or private) Git repository (See also GitHub for Windows)|
|Git From the Ground Up (PDF)||A short, readable introduction to Git concepts||Everyday Git with 20 Commands or so||Brief explanations and examples of the most used Git commands|
|Git Overview||YouTube videos (four of them) teaching VCS||GitHub Overview||More YouTube videos for GitHub and Git basics|
|Eclipse Git (“EGit”) User Guide||See also this Git tutorial for Eclipse YouTube video||GitRef.org||A tutorial-style reference (See also Git manual page with many links)|
|Git Tutorial for NetBeans||All you need to know (if you already know Git)||subversion home||Subversion version control system|
|Mercurial Tutorial||An excellent tutorial on Mecurial, and for DVCSs in general||CVS home||See also CVS Tutorial for NetBeans|
|ExceptionDemo.java||Demo of catching and throwing exceptions (See also ExceptionDemo2.java)||TryWithResources.java||Demo of using Java7 automatic resource management (try-with-resources)|
|ShutdownHookDemo.java||Demo of using shutdown hooks||Finalizer.java||Demo of Finalizers|
|WebStart Demo||Demo of using WebStart (JNLP) for a file viewer app||JNLP Developer Resources||WebStart and JNLP docs, including API examples, FAQ, and other information|
|Code Signing Demo||Demo and tutorial of Applet code signing||Security tutorial||Tutorial on security and public-key encryption, from Netscape.com's DevEdge site (from the Internet Archive)|
|BoxUnbox.java||Demo of Java 5 auto-boxing||InitBlockDemo.java||Initialization block demo|
|StudentBuilderDemo.java||Demo of the builder pattern to replace complex constructors||StudentPQ.java||Slightly more complete (“production quality”) example of Student.java|
|Student.java||Demo of the telescoping constructors pattern||CoinPurse.java||Demo of enums|
|Enum in Java 5||Tutorial on Java 5 enums||MetadataDemo.java||Java 5 Annotations demo|
|VarArgs.java||Simple varargs Demo||Annotations||Java 5 Annotations lecture notes|
|CloneDemo.java||Shows how to implement clone, using covariant return types||ReflectionDemo.java||Simple Relection Demo|
|Java Tutorial for I/O||Official Oracle Java tutorial, including old (streams) and NIO (including Java 7 NIO.2)||FileKit.java||Show how to calculate the MD5 checksum of a file|
|Greet2.java||Shows non-GUI input with Scanner||FileDemo.java||Shows reading, writing files with encodings (Download UTF-8-demo.txt for FileDemo.java)|
|DirList.java||Prints a directory listing.||FileKit.java||Show how to calculate the MD5 checksum of a file|
|Person.java||A short demo to open, read, parse a file of data, and create a List of objects||People.txt||A (very) short text file to use with Person.java|
|RandomAccessDemo.java||A short demo to open, read, and write to an ASCII text data file||RandomAccess.dat||A (very) short text file to use with RandomAccessDemo.java|
|DeepCopy.java||A short demo of serialization, used to make deep copies of arrays and other objects||NIO Tutorial (PDF)||from IBM DeveloperWorks|
||Tutorial for Java NIO (PDF)|| A shorter (but slightly more readable) version of the
IBM tutorial on using
||Tutorial for NIO.2||Short NIO.2 tutorial (with example code) from IBM DeveloperWorks|
|JfileChooserDemo||Shows a GUI file chooser dialog|
|Collections Tutorial from IBM Developerworks||Short tutorial on using Collections (copy on archive.org)||generics.pdf||Excellent tutorial on using Generics from Joshua Bloch's Effective Java|
|Oracle Java Collections Tutorial||A more through tutorial on Collections||Generics tutorial||Generics Tutorial from IBM DeveloperWorks (See also Generics Without Pain)|
|CollectionsDemo.java||Demo of using various Java collections||Generics Tutorial from Sun (PDF)||Tutorial and complete reference to using Generics (See also this simpler Sun Generics Tutorial from Oracle)|
|Collections tutorial||Another Collections Tutorial from IBM DeveloperWorks||GenericDemo.java||Demo of a generic method|
|Oracle Guide to Java Collections||Additional Java Collection resources||StreamDemo.java||Demo of using Java 8 Streams (aggregate operations)|
|Point.java||Simple class to demonstrate proper equals, hashCode, toString, and compareTo methods||HashCodes|| Steps to create your own
|Destutter.java||Demo List and some java.util.Arrays methods, to remove adjacent duplicates|
|RAM layout||Shows how primitives and objects are referenced||Understanding Weak [and Soft] References||A short but good blog posting explaining Java's Reference types|
|Java Reference Objects|| A short but through tutorial on Java's memory model, garbage collection,
and References (especially
||java.lang.ref Package Description||Java API docs for Reference objects|
|GenericRefDemo.java||Demo of a generic Cache class that uses SoftReferences, and a demo of WeakHashMaps||ReferenceDemo.java||Example of weak and soft reference use|
|Java Garbage Collection references||Discusses the various GC algorithms used with the HotSpot JVM and how to select one, and tune it for performance (See especially the Memory Management Whitepaper (PDF))||Java (HotSpot JVM) non-standard option reference||Describes the non-standard options, useful to improve performance (of the garbage collector for example)|
|I18N (Internationalization Tutorial from Sun)||Tutorial on using I18N, Locales, and Resource Bundles||ISO-216 international paper sizes||A clear explaination of A4 and other international standard paper sizes|
|Java internationalization basics||A readable tutorial on I18N and L10N, from IBM DeveloperWorks||Locales and I18N||Some notes about using Locales and internationalizing programs|
|ISO-639||English (and French) language names, and the standard 2 and 3 letter codes||ISO-3166 Country Codes||The official list of two and three letter country codes, used in locales|
|Encodings and Character Sets||More information then you want to know about Unicode, encodings, etc.||Font concepts||Explains Font terms and concepts as used in Java|
|CodePointDemo.java||Shows how to work with I18N Strings||ShowFonts.java||Show all local fonts, list font families|
|IGreet.java||Uses Locales, ListRecourceBundles for I18N||Stocks.java||An Internationalized Applet|
|Version.java||Displays the JVM version in your browser||Unicode symbols||Applet showing Unicode font listings, plus a few symbols|
|BreakIterDemo.java||Demo showing Unicode String processing, one character at a time||Palindrome2.java||Another demo showing Unicode String processing; this demo shows Unicode normalization, String sanitation, and using BreakIterator and Collator to compare Unicode characters|
|Markdown||A style of text that can be easily converted to attractive HTML|
|ShowProps.java||Lists Java system properties and their values||PrefsDemo.java||Shows the Java Preferences API|
|Top 25 Errors||A list of common security-related coding errors, from SANS.org and CWE.Mitre.org (See also CERT Secure Coding Standards for Java and other languages)||ISO 27000 (Wikipedia)||The ISO/IEC 27000-series (also known as “ISO27k” for short) comprises information security standards (Some of these standards are freely available here)|
|SEI Software Development||Information from the Software Engineering Institute (See also their software Architecture and their certification information)||IEEE Computer Society Software Professional Certification||Information about the CSDA and CSDP certifications|
|Software Engineering (Wikipedia)||This article discusses certifications and legal requirements||SWEBOK||The Software Engineering Body Of Knowledge defines what every software engineer should know (design, testing, and similar topics)|
|Professional Software Engineering Exam information (PDF)||The NCEES (the National Council of Examiners for Engineering and Surveying) will start exams in 4/2013 for software engineers; some states will require practitioners to hold this license (10 so far) (Software PE exam study materials are available from the IEEE)||ISO 9000 (Wikipedia)||This standard refers to the process of creating software (certified compliance is required for software sold in the European Union) (For project management the most widely recognized certification is Project Management Professional (PMP))|
|ISO 12207 (Wikipedia)||A popular ISO standard for software lifecycle processes||IEEE computer Society CSDA certification||Based on the SEBOK, the Certified Software Development Associate (or follow-up CSDP) certification is currently the best way to prove your competency|
|Bad design and its consequences||Story about Toyota's killer firmware (See also ComputingCases.org for other case studies)||Therac-25||The story of the deadly design flaws in hospital radiation equipment|
|Project Proposal for a voice mail system||A project proposal||Object Categories||A guide to finding objects|
|Use Case Tutorial||An overview of creating use cases||SRS template and sample||A templet for requirements docs, designed by the IEEE, with no graphics (downloaded from www.cs.gmu.edu)|
|Sample Requirements Documentation||A sample software requirements specification (SRS document (download from AlvinAlexander.com)||Sample Requirements Documentation (2)||A sample software requirements specification (SRS document (download from www.student.cs.uwaterloo.ca)|
|CRC Cards||The original paper describing the CRC design method. (Another example.)||OOD Guide||OOA and OOD study guide (lecture notes)|
|Synopses of Design Patterns||A brief description of many Java patterns||Design Patterns||Tutorials, FAQs, and more|
|ootips.org||A large collection of OO tips, techniques, and design patterns||Java Design Patterns 101||A tutorial on common design patterns from IBM Developerworks|
|www.UML.org||The site for UML standards, tutorials, and more|
|UML Resource Center - IBM||UML tutorials||How to Design a Program||An over your shoulder look at thinking about design|
|Dia||Free diagramming tool (for UML and a lot more)||How not to Design a Program||A humorous look at over-engineering how to compute factorials (See also How To Write Unmaintainable Code; Ensure a job for life)|
|Violet UML Editor||Originally written by Cay Horstman, this free Java application (a runnable jar file) is an excellent UML diagram editor||ArgoUML||Free UML diagramming tool that can produce code from the diagrams. (Not well maintained, but there is an Eclipse plug-in for it.)|
|UML Quick Reference (PDF)||A excellent reference card showing one each of everything||UML Reference (PDF)||A more complete UML reference|
|Testing Overview||Lecture Notes on Testing||Test Case Self-Assessment||Attempt to generate sufficient test cases for a simple program|
|PICT Windows Installer (MSI)||The installer for Microsoft's PICT coverage (pairwise) test generator tool, version 3.3 (Includes HTML User Guide) See also PairWise.org for other tools||JUnit 4 Testing Demo||Demonstrates using JUnit for the sample program from the Test Case Self-Assessment|
|JUnit.org||Junit Testing||JUnit API Java docs||On-line JavaDocs for JUnit API|
|www.vogella.com JUnit Tutorial||A pretty good JUnit Tutorial||JUnit FAQ||Almost a complete tutorial|
|TextKitTestSuite.java||JUnit Testing Example for TextKit.java class||Java Code Checker||PMD can report (likely) logic errors in your code|
|JMock.org||Jmock is a library that allows you to easily create mock objects for testing||BankAccount.java||Demo using assertions for pre-, post-conditions, invariants|
|Programming With Assertions||Java tutorial for using assertions||Assertion Usage Notes||Examples of appropriate and inappropriate use of assertions|
|AssertionDemo.java||Trivial example of assertion use||Sample trace output|| The trace output of running the
|LoggingDemo.java||Short demo showing Java SE logging API (See also Oracle's Java logging tutorial, and Another logging tutorial)||Apache logging home||Download or read about log4j, logging in general, and the GUI log viewer chainsaw|
|Java Monitoring tutorial||See also Java Management and Monitoring resources||Management and Monitoring Demo||Shows how to run a managed application and how to monitor it. (See also docs for jconsole and jvisualvm tools)|
|Multi-Threading Lecture Notes (PDF)||A discussion of the concepts and issues of using Threads||Java Concurrency / Multithreading Tutorial||A terse but good and up-to-date tutorial|
|Sun/Oracle Tutorial on Concurrency||Discusses all multi-threading features of Java 6||ThreadLocal.java||Demo of ThreadLocal variables|
|DiningPhilosophers||Sun's DeadLock Thread Demo||Sort algorithm race||Sun's Multi-thread Sorting Demo|
|PServer1.java||Pseudocode of a Print Server||PServer2.java||Improved pseudocode of a Print Server|
|Oops.java||Demo of pausing inside of an event handler (and why it's not a good idea)||Threads.java||Mutli-threaded Demo showing suspend, resume, and stop|
|HoopsApp.java||Simple Animation using a Thread||Ssjava1.java|| Swing animation, uses
|Bank.java|| Mutli-threaded Demo of
|XML and JSON Lecture Notes (PDF)||A copy of my lecture notes||XML Tutorial||An excellent “hands-on” tutorial, from w3schools.com|
|UseDOM.java||XML Demo of DOM API||HelloXML.java||XML Demo of SAX2 API|
|DOMDemo.java||Demo of XML DOM parsing||XmlNotepad.msi||A very old Microsoft (free) XML editor. (There are better ones!)|
|XML-XSL-Demo||XSL (XML Style Sheets) Demo||Xerces-J Setup||Some help to install Apache's Xerces-J XML parser on Windows|
|json.org||JSON documentation and references (See also RFC 4627)||JSONdemo.java||Demo of using JSON (Requires the org-json.jar file, to be put into your extensions directory)|
|org.json API||Java docs for the org.json library (a zip file containing the source for this library can be found on org.json on github.com)||Sample JSON text||Found on Adobe Labs GitHub site|
|Database Lecture Notes (PDF)||A brief overview of database concepts, and how to use databases in Java||Databases for System Administrators||Similar to the lecture notes, but with information appropriate for system administrators. (It does include a worked example of normalization)|
|Introduction to Apache Derby||Tutorial from IBM DeveloperWorks, showing how to use the database from a Java EE server|
|Coffee Database||Directions to create an ODBC Text database on Windows (Note that ODBC is not supported as of Java 8.)||SquirrelSQL.org||A (free) GUI Java database client, to work with (nearly) any type of database|
|DBDump.java||Displays a table from a database||Grades.java||MultiThreaded Swing GUI and JDBC Demo|
|JPADemo||Simple Java SE application, showing JPA (with EclipseLink) to create and use a JavaDB (Apache Derby) embedded database.|
|DerbyDemo.java||JDBC demo of the embedded Derby database||Java DB Manuals||Tutorials and reference for Java DB (a.k.a. Apache Derby)|
|Ant.Apache.org||Home of the Apache Ant build tool||Apache Ant manual||Includes both a reference and tutorials|
|build.xml||A sample Ant build.xml file for a “hello, world” application||Apache Ant||from WikiBooks.org. See also this Ant Overview (PDF), an excerpt from “Beginning POJOs” by Brian Sam-Bodden, Apress.com|
|Excerpts from Java Programming with Ant||Includes tutorial chapter and an Ant task reference||Ant Best Practices||15 good tips, from O'Reilly (See also Make Ant easy with Eclipse, from IBM DeveloperWorks)|
|Apache Maven Home||Information and downloads about the Maven build tool||Maven books online||From Sonatype.com|
|Maven Demo||A typescript of using Maven||pom.xml|| A more complete Maven
|Maven Tutorial||IBM DeveloperWorks tutorial||Maven Central Repository||The standard maven repository at Maven.org (See also MvnRepository.com)|
|myServlet.war||Example WAR (Web application ARchive) with a Servlet||Java EE Home||Sun Java EE site|
|Java EE Overview||Draft lecture notes||Hello, World RMI demo||Simple, basic RMI demo from Sun|
|JNDI Tutorial||Sun's JNDI on-line tutorial||Mastering Enterprise JavaBeans, 3rd Ed.||A great EJB book, for free as a PDF download|
|Designing Java EE Applications||A Sun Blueprint Article||Java EE Tutorial||A Sun Java EE Tutorial|
|Java EE Technology Center||Oracle Java EE developer resources|
|TheServerSide.com||A Java EE site with many tutorials||Java EE Architect's Handbook||A pretty good Java EE book, available for free from here|
|JBoss Home||JBoss Java EE Application Server||WebSphere||IBM's Java EE application server|
|Tomcat Setup||Apache's Tomcat web application Server install help for Windows (See also the popular Jetty web application server)||Credit Card Processing||A brief overview of e-commerce payment processing|
|CopyTest.java||Shows Graphic contexts are copies||HeavyLight.java||Shows difference of Heavy and Light weight components|
|Logo2D||Java2D Graphics Demo||Jade.java||Fancy Text Rendering|
|Smile2.java||Multimedia (with sound) applet||SmileJar.java||Graphics, in a jar|
|Printing Demos||Several examples of Java printing|
|AWT - Swing Demo.java||Simple Swing demo, compares with AWT version||IntCalc.java||Interest Caclulator with Swing “PLAF” demo|
|SwingDemo1.java||Simple Swing demo||LblDemo.java||Swing JLabel demo|
|MultiLineDemo.java||Shows how to draw text with styles|
|Ssjava2.java|| Swing animation, uses
|JTableDemo.java||Simple JTable Demo||ClipEx.java||Demo of copy/paste clipboard access|
|SimpleBean.java||A Simple JavaBean Tutorial||Marquee||Marquee Java Bean|
|SBean.java||Simple Java Bean with BeanInfo, runnable jar||Download the BeanBuilder||A GUI Bean Developement Kit) (This project is no longer supported; you can download the project from java.net)|
|JavaBeans home page||Read the Specifications and find other related resources||Download the BDK||The Bean Developement Kit (platform independent version from Sun) is interesting but obsolete|
|JavaME step by step (PDF)||Tutorial on JavaME (Java Micro Edition)|
|Java Security||Tutorial on Java Security from Oracle||WriteFile.java||A signed Applet to create a file on the local system|
|Model Solutions to Assigned Projects|
|Logo2D||Java2D Graphics Demo||Office Hours Project||Model Solution to Office Hours project #1|