CM0637 Java Network Programming

Java Network Programming Image 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
Adrian Robson

Teaching Arrangements

Session 1 Mon 16.00 - 17.00 PB Lab F5
Session 2 Tue 14.00 - 15.00 PB Lab F2


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:

  1. Critically evaluate and select methods, techniques and tools for the design and implementation of distributed applications in Java.
  2. 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] []
10 23-Apr UDP Datagrams and Sockets [Slides] Java Network Practical 10
[Lab] []
11 30-Apr Multicast Sockets [Slides] Java Network Practical 11
[Lab] []
12 07-May Java RMI [Slides] Demonstrations and Asssessment


In addition to the taught sessions, you are expected to undertake independent and directed learning. On average, you should be spending about 7 hours per week on this module.


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



  • 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