| Time & Place: | Ref No. 37270: Tuesday & Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427 | ||||||
|---|---|---|---|---|---|---|---|
| Instructor: | Name: Wayne Pollock E-mail: Internet: 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.
| ||||||
| Text: |
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. However, it is probably only available from the HCC bookstore.
Kathy Suerra and Bert Bates,
Head First Java,
©2009 O'Reilly Media.
ISBN-10: 0596009208
ISBN-13: 9780596009205
Cay Horstmann and Gary Cornel,
Core Java Volume 1 and
Core Java Volume 2, (latest editions of each),
©Prentice Hall.
| ||||||
| Description: |
(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
Java 7 and the Java 6 EE development tools.
(These include the HCC classroom and Computer Lab
computers.)
You can obtain the JDK from
www.oracle.com,
The Glassfish Java EE
server (Open Source edition) from
glassfish.java.net,
Eclipse from eclipse.org,
NetBeans from NetBeans.org,
JUnit from junit.org,
Maven2 from maven.apache.org,
and ant from ant.apache.org.
(These are all free tools, and often the tools of choice in the industry.)
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 (Campus Cruiser) 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/. HCC DM
Open Lab
| ||||||
| Grading: |
Grading scale:
A=90-100, B=80-89, C=70-79, D=65-69, F=0-64 | ||||||
| Policies: |
| ||||||
| Projects: |
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.
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.) | ||||||
| Submitting Assignments: |
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.
The HCC email server automatically accepts and
silently discards email with certain types of attachments.
For our class, the problem is with “
To send email with a “ To avoid having your submitted work rejected as “spam”, you can use CampusCruiser to send email to professors. (This doesn't always work either!) As a last resort you can use waynepollocklive@yahoo.com, which doesn't filter any mail. 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 subhmitted projects, until you are certain they have been received and graded correctly. |
| HCC Academic Calendar: | |
|---|---|
| Classes Begin: | Monday 1/7/2013 (First class meeting: Tuesday 1/8/2013) |
| Add-Drop Ends: | Friday 1/11/2013 |
| Last Day to Withdraw: | Wednesday 3/20/2013 |
| Classes End: | Monday 5/6/2013 (Last regularly scheduled day of class: Thursday 5/2/2013) |
| Grades Available: | Wednesday 5/8/2013 (from Florida Virutal Campus (Formerly FACTS.org) or HawkNet) |
| HCC is closed on: |
Monday 1/21/2013 (Martin Luther King Jr. Day), Monday 2/18/2013 (Presidents' Day), Monday–Friday 3/11/2013–3/15/2013 (Mid-Term Break), Friday 3/29/2013 (Spring Day), Thursday 4/11/2013 (Faculty In-Service 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 |
| Dates Tue Thu |
Topics | Readings |
|---|---|---|
| 1/8 1/10 |
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 BigDecimal and
BigInteger classes, graphics,
AWT,
swing, user interfaces, events, and layout managers.
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),
Software Engineering
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”)
Additional Links Java 7 SE API reference, tutorials, and sample code from Oracle, ant.apache.org, Eclipse, NetBeans, Another Eclipse tutorial |
| 1/15 1/17 |
Versioning (or revision) control systems (CVS and git),
and using them with IDEs.
Exceptions: checked vs. unchecked, using
and defining, try-catch-finally blocks,
using try-with-resources (Java 7).
System.exit, finalizers, and shutdown hooks. WebStart (JNLP). |
Chapters 14.1-14.9 (Exceptions),
Liang on-line Java supplements: III-R (WebStart),
CVS Tutorial for Eclipse (see also this
Eclipse
CVS FAQ and the
Eclipse CVS getting started guide),
CVS Tutorial for NetBeans
Additional Links on-line Exception demos, on-line WebStart demo, additional VCS resources |
|
1/22 1/24
1/29
|
Jar files (and sealed packages).
Boxing and unboxing.
Initialization blocks.
static import.
enums.
Annotations.
Covarient return types, clone method, copy constructors.
Varargs.
Reflection.
Files and I/O (java.io, java.nio),
JFileChooser.
Object serialization.
Project #1 (IDE) due 1/22 |
Chapters 14.10-14.13, 19,
Liang on-line Java supplements: III-L (initialization blocks),
III-F (enums), III-Q (jars),
Oracle's Reflection tutorial,
covariant return types tutorial,
Java tutortials for “Initializing Fields” (including static
initialization blocks), “Using Package Members” (including static
import),“Enum Types”, “Annotations”,
“The Numbers Classes” (boxing/unboxing),
“Passing Information to a Method or a Constructor” (varargs)
Additional Links on-line Exception demos, on-line enum, boxing, init. blocks, annotations, covariant, and reflection resources, Oracle Java Tutorial for I/O, on-line file and I/O resources |
| 1/31 |
Java Collections: arrays (review), types/interfaces (List, Set, Map),
common implementations (Linked List, Hash, Tree).
java.util.Collections utility methods.
Project #2 (CVS) due 1/31 |
Chapters 22, 23, (Appendix G, bitwise operators,
is optional),
IBM Developerworks Java Collections tutorial
Additional Links Oracle Java Collections Tutorial, on-line Collections resources |
| 2/5 2/7 | Generics. The garbage collector and Java memory model, Weak/soft references, WeakHashMaps. |
Chapter 21,
generics.pdf
(tutorial from Joshua Bloch's Effective Java),
reference types tutorial (skip Reference Queues and Phamtom References)
Additional Links on-line memory, garbage collection, and Reference resources |
| 2/12 | Exam #1 | |
| 2/14 |
Internationalization (I18N), Localization (L10N),
Encoding (Unicode, UTF-8,
ISO 8859-1).
Locales, java.text.*, resource bundles, property files.
System properties.
Using the Preferences API. Project #3 (Search Engine part 1: UI) due 2/14 |
Liang chpater 35
(requires book's access code; click “Companion Website” link),
Internationalization tutorial from Oracle
Additional Links on-line I18N resources |
|
2/19 2/21
2/26
| Object-oriented analysis and design. Introduction to design patterns. Model-View-Controller (MVC) pattern. UML. |
Chapters 10 (Thinking in Objects),
Liang on-line supplements III-N (Design Patterns)
and III-X (UML),
CRC Cards,
UML Tutorial
Additional Links on-line design and UML resources |
|
2/28
3/5 3/7
|
Testing, using JUnit.
Using assertions.
Logging for Java.
Management and monitoring of applications and the JVM.
Project #4 (RFP) due 2/28 |
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 example: Bowling scores,
Java logging tutorial,
Monitoring Java programs using Jconsole
Additional Links on-line testing resources, logging and monitoring demos Liang on-line supplement III-X (JUnit) |
| 3/11 – 3/17 | Mid-Term Break — HCC closed | |
| 3/19 3/21 |
Multithreading (Concepts, issues, object locks,
synchronized, wait,
notify, notifyAll).
Timer classes.
Project #5 (Search Engine part 2: Files) due 3/21 |
Chapter 32,
Sun/Oracle Tutorial on Concurrency
Additional Links on-line Multi-Threading resources |
| 3/26 | XML (SAX, DOM, StAX, XSLT), JSON. |
Class XML,
JSON Lecture Notes,
Liang on-line supplements V-C and V-D (XML)
Additional Links on-line XML and JSON resources |
| 3/28 | Exam #2 | |
| 4/2 4/4 |
Database access
(JDBC),
SQL,
Using ODBC.
Project #6 (Search Engine part 3: Collections) due 4/4 |
Chapter 34,
Database Concepts
(PDF)
Additional Links Liang on-line supplement IV-A, -B, -E, -F, -G, -H (databases), on-line database resources |
| 4/9 | Overview of Ant build tool. Overview of Maven build tool. |
TutorialsPoint.com Ant tutorial,
TutorialsPoint.com Maven tutorial
Additional Links on-line Ant and Maven resources |
| 4/11 | In-Service Day — HCC closed | |
|
4/16 4/18
4/23 4/25
4/30
|
Overview of Java EE design: Web-, business-,
and EIS- tiers,
fat/thin clients, grids and clusters, applications and web services
(SOAP, WSDL, and UDDI).
EJBs.
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 #7 (Mini-Golf part 1: requirements and design) due 4/16 Project #8 (Mini-Golf part 2: unit testing) due 4/25 | 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 jar utility, jar manifest files.
|
Chapters 33–36,
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, printing, WebStart, and JavaME resources |
| 5/2 |
Final Exam
Project #9 (Web Application ) due 5/2 |
| Resources | |||||
|---|---|---|---|---|---|
| Software Engineering Code of Ethics | Joint ACM and IEEE code of ethics and professional conduct | Debug Strategy | Excellent advice from Patricia Shanahan on debugging | ||
| 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 | ||
| ExceptionDemo.java | Demo of catching and throwing exceptions | 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 | ||
| Another CVS Tutorial for Eclipse | Also see the Eclipse CVS FAQ, and the CVS Tutorial for NetBeans. Find more at the CVS home page | subversion home | Subversion version control system | ||
| Mercurial Tutorial | An excellent tutorial on Mecurial, and for DVCSs in general | ||||
| git home | The git version control system (See also the on-line Pro Git book, and Everyday GIT with 20 Commands Or So) | GitHub.com | Easy to use public (or private) git repository (See also GitHub for Windows) | ||
| Student.java | Demo of the telescoping constructors pattern | 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 | ||
| Enum in Java 5 | Tutorial on Java 5 enums | CoinPurse.java | Demo of enums | ||
| BoxUnbox.java | Demo of Java 5 auto-boxing | 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 ojects | NIO Tutorial (PDF) | from IBM DeveloperWorks | ||
| NioDemo.java | Uses java.nio classes to copy a file |
Tutorial for Java NIO (PDF) | A shorter (but slightly more readable) version of the
IBM tutorial on using java.nio |
||
| MemMapDemo.java | Uses java.nio memory-mapped I/O
(use with the sample file MemMapData.txt) |
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 | generics.pdf | Excellent tutorial on using Generics from Joshua Bloch's Effective Java | ||
| Oracle Java Collections Tutorial | A more through tutorial on Collections | Oracle Guide to Java Collections | Additional Java Collection resources | ||
| Collections tutorial | Another Collections Tutorial from IBM DeveloperWorks | Generics tutorial | Generics Tutorial from IBM DeveloperWorks | ||
| 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) | ||
| Destutter.java | Demo List and some java.util.Arrays methods, tr remove adjacent duplicates | ||||
| HashCodes | Steps to create your own hashCode methods |
GenericDemo.java | Demo of a generic method | ||
| Point.java | Simple class to demonstrate proper equals, hashCode, toString, and compareTo methods, that | ||||
| 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 SoftReference and WeakReference) |
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 | ||||
| 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) | 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 | ||
| ISO 12207 (Wikipedia) | A popular ISO standard for software lifecycle processes | 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)) | ||
| 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 | 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 | ||
| TextKitTestSuite.java | Junit Testing Example for TextKit.java class | BankAccount.java | Demo using assertions for pre-, post-conditions, invariants | ||
| JUnit.org | Junit Testing | JUnit API Java docs | On-line JavaDocs for junit.* package |
||
| JUnit 4 Testing Tutorial (PDF) | Jump Into Junit 4 Testing, from IBM DeveloperWorks | ||||
| JMock.org | Jmock is a library that allows you to easily create mock objects for testing | Java Code Checker | PMD can report (likely) logic errors in your code | ||
| 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 date program on Linux |
||
| 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 Timer |
||
| Bank.java | Mutli-threaded Demo of synchronized |
||||
| 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 | ||
| 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) from 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 | ||
| 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 pom.xml file, for an executable jar |
||
| Maven Central Repository | The standard maven repository at Maven.org | MvnRepository.com | Another maven plugin and artifact repository | ||
| 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) | ||
| Coffee Database | Directions to create an ODBC Text database on Windows | 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 | ||
| DerbyDemo.java | JDBC demo of the embedded Derby database | Java DB Manuals | Tutorials and reference for Java DB (a.k.a. Apache Derby) | ||
| 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 | An Oracle/Sun 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 JLayerPane |
||||
| 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) | ||||
| ChatServer | Chat room Server | JavaScriptDemo.java | A JavaScript expression evaluator | ||
| 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 | ||