I'm going to write a server in Java. I have not started writing it, I'm still designing it. The server will run in one computer, and will have a GUI (Graphical User Interface). I want to let the user execute the GUI in any computer in the network, and control the server from it. How is this achieved? I have thought about designing my own network protocol over TCP, and doing all with sockets, but implementing this would be rather costly. I've also read a bit about RMI, but I'm not sure if it's a good alternative.