---
title: "Distributed Java Programming - A new training topic"
url: https://computerfloss.com/2015/02/distributed-java-programming-a-new-training-topic/
description: "Distributed Java Programming – A new training topic 23 February 2015 Training , Uncategorized concurrency , CORBA , distributed systems , Hadoop , Java , Java."
published: 2015-02-01
updated: 2015-02-01
---

# Distributed Java Programming - A new training topic

Published 2015-02-01

Distributed Java Programming – A new training topic

[23 February 2015](https://computerfloss.com/2015/02/distributed-java-programming-a-new-training-topic/)

[Training](https://computerfloss.com/category/training-2/)

,

[Uncategorized](https://computerfloss.com/category/uncategorized/)

[concurrency](https://computerfloss.com/tag/concurrency/)

,

[CORBA](https://computerfloss.com/tag/corba/)

,

[distributed systems](https://computerfloss.com/tag/distributed-systems/)

,

[Hadoop](https://computerfloss.com/tag/hadoop/)

,

[Java](https://computerfloss.com/tag/java/)

, Java Persistence API,

[memcached](https://computerfloss.com/tag/memcached/)

,

[networking](https://computerfloss.com/tag/networking/)

,

[RMI](https://computerfloss.com/tag/rmi/)

,

[serialization](https://computerfloss.com/tag/serialization/)

,

[sockets](https://computerfloss.com/tag/sockets/)

,

[TCP](https://computerfloss.com/tag/tcp/)

,

[threads](https://computerfloss.com/tag/threads/)

,

[UDP](https://computerfloss.com/tag/udp/)

[karl](https://computerfloss.com/author/karl/)

I was recently in Hamburg once again to deliver another IT training. This time around the topic was Java, a language I’ve long been familiar with.

But it wasn’t just plain old Java; the participants were already well-versed in that. Instead, they wanted to learn how to build **distributed systems** using Java. Not only that, but they had a few very specific interests, which you see in the list below.

Distributed systems is a challenging topic to teach, especially because it encompasses so much stuff and I had only two days to cover the requested material. Here’s what I managed to include:

## Principles of networked and distributed systems

- Definitions
- Transparency
- Benefits and challenges
- Case study: The web

## Distributed architecture and design patterns

- Layer paradigm
- Distributed operating systems
- Interprocess communication
- Remote invocation
- Models (client/server, peer-to-peerm multi-server, proxy, mobile variants, thin clients)
- Distributed design patterns

## Threads

- Thread vs. processes
- Benefits and costs
- Server threading architectures
- Threads in Java

## Lower-level concurrency mechanisms

- Thread interference
- Synchronising

## Higher-level concurrency mechanisms

- Locks
- Executor, ExecutorService, ThreadPools
- Futures
- Concurrent collections

## Sockets

- Addressing with sockets
- UDP
- TCP

## Streams

- Input and output streams
- Stream readers and writers
- Streaming with sockets
- Streaming among multiple threads
- Multicast

## Serialisation

- Serializable interface
- Serialisation with references
- Serialisation with inheritence
- Best practices

## Remote Method Invocation

- Using the RMI registry
- Remote interface
- Creating a server
- Creating a client

## Case study: CORBA

## Distributed object persistence

- Java Persistence API
- Hadoop
- Distributed databases
- Special topic: Distributed cache using memcached
- Best practices for distributed caching

[Previous](https://computerfloss.com/2015/03/endocode-proud-to-sponsor-free-software-foundation-europe/)

[All posts](https://computerfloss.com/latest-posts/)

[Next](https://computerfloss.com/2015/01/brown-dogs-and-barbers-could-not-have-come-at-a-better-time-nor-be-better-pitched/)
