Generally speaking, how I would design it:
0. You will need a Server running + You connect with clients to the server. (You can
program both in Java, no big deal)
- You create a model of your world. Example.
+class World (has People)
+class People
- You will need an instance of World (incl. People) on BOTH the server
and the client side.
- If the client changes something in the world, you do the following:
I) send the changes to the server (e.g. new Person added)
II) the server updates his World
III) the server sends the update to all the connected clients
IV) the clients update their World based on the changes propagated by
the server
NOTE: The client does not actually update the world himself but sends the
update request to the server first: otherwise, you will run into synchronization
issues. This way ALL the connected clients are synchronized.
For the networking part: I would give Apache MINA a try. It’s built on top of NIO, so
it (1) should be fast and (2) simplifies the programming part:
http://directory.apache.org/subprojects/network/