CM0637 Java Network Programming
This module introduces the programming principles and tools needed to
design, implement and maintain efficient and secure networked applications.
The focus of the module is on the Java programming language and its network
and security libraries. Concurrent programming and I/O techniques are reviewed. The main socket APIs are presented, including TCP, UDP, multicast and secure
sockets. Useful design patterns for concurrent networked applications are
introduced and the foundations are laid for students to go on to develop
high quality web services with RMI, SOAP, UDDI etc.
The main ideas are communicated in a series of 12 lectures. The laboratory
sessions are used by students to put these ideas into practice in a
variety of network application exercises. By the end of the module,
students should be able to design, implement, document and maintain
robust networked applications.
Module Team
- Module Tutor
- David Kendall david.kendall@northumbria.ac.uk
- Lecturer
- Adrian Robson adrian.robson@northumbria.ac.uk
Teaching Arrangements
Session 1 Mon 16.00 - 17.00 PB Lab F5
Session 2 Tue 14.00 - 15.00 PB Lab F2
Synopsis
The aim of this module is to introduce modern principles, methods and technology for the development of efficient and secure networked applications in Java.
On completion of this module, students will be able to:
- Critically evaluate and select methods, techniques and tools for the design and implementation of distributed applications in Java.
- Specify, design and construct efficient and secure applications using Java's networking packages.
Teaching Plan
The following is a provisional guide to the organisation of the module for this year. These arrangements are subject to change during the course of the module.
| Week | W/c | Session 1 | Session 2 |
|---|---|---|---|
| 1 | 29-Jan | Introduction [Slides] | Java I/O and Exception Handling [Slides] |
| 2 | 05-Feb | Java Network Practical 1 [Lab] | Java Network Practical 2 [Lab] |
| 3 | 12-Feb | Java Threads [Slides] | Java Network Practical 3 [Lab] |
| 4 | 19-Feb | Communication and Synchronisation [Slides] | Java Network Practical 4 [Lab] |
| 5 | 26-Feb | TCP Sockets for Clients and Servers [Slides] | Java Network Practical 5 [Lab] |
| 6 | 05-Mar | Introduction to Network Security [Slides] | Java Network Practical 6 [Lab] |
| 7 | 12-Mar | Assignment Introduction | Assignment Planning |
| 8 | 19-Mar | Secure Sockets [Slides] | Java Network Practical 8 [Lab] |
| 9 | 26-Mar | Non-blocking I/O [Slides] | Java Network Practical 9 [Lab] [ChargenServer.java] |
| 10 | 23-Apr | UDP Datagrams and Sockets [Slides] | Java Network Practical 10 [Lab] [SenderThread.java] [ReceiverThread.java] |
| 11 | 30-Apr | Multicast Sockets [Slides] | Java Network Practical 11 [Lab] [MulticastSniffer.java] [MulticastSender.java] |
| 12 | 07-May | Java RMI [Slides] | Demonstrations and Asssessment |
Assessment
Summative assessment takes the form of a case project that is specified, designed and implemented in small groups. Working solutions are demonstrated and students are examined orally on their contribution. Additionally, students are required to produce an individual written report or presentation on the case project or a related topic. This assignment addresses all learning outcomes.
Formative assessment is focused on a sound grasp of the principles, methods, algorithms and tools for developing efficient and secure networked applications. It takes the form of small exercises to be solved either in laboratory sessions or independently. Students have the opportunity to examine model solutions and to discuss their work with tutors.
Recommended Reading
Essential
- Harold, E.R., Java Network Programming (3rd edition), O'Reilly, 2004
- Sun Java Networking Docs and Tutorials
http://java.sun.com/j2se/1.5.0/docs/
http://java.sun.com/j2se/1.4.2/docs/
http://java.sun.com/docs/books/tutorial/networking/ (last accessed: 4th Oct 2005)
Recommended
- Crichlow, J., The Essence of Distributed Systems, Prentice Hall, 2000
- Farley, J., Java Distributed Computing, O'Reilly, 1998
- Hughes, M. et al., Java Network Programming, Manning, 1999
- Kurose, J. and Ross, K., Computer Networking: A top-down approach featuring the Internet (3rd edition), Addison Wesley, 2004
- Sestoft, P., Java Precisely (2nd edition), MIT Press, 2005
Resources
-
Concurrency in JDK 5.0
Tutorial introduction to new Java concurrency features: thread pools, synchronizers and low-level mechanisms. -
Java Programming for C/C++ Programmers
An IBM tutorial to help you convert from C/C++ to Java. -
Thinking
in Java
A good online text book. Access the code from the book here. -
Thinking
in Patterns in Java
A good online text book about Design Patterns form the same author. Access the code from the book here.




