Det kan sagtens laves i java - hvis du har en server maskine, hvor du kan køre din Java server...
Java serveren sættes til at lytte på f.eks. port 40, og det den så skal gøre ved client connect er at føje den nye clients socket og ip til en liste med sockets og ip adresser, og sende den nye opdaterede version af listen til alle clients på listen.
Når en client så vil skrive til en anden, åbner denne bare en socket via listen fra serveren, og kontakter den anden clients server socket - violá: ICQ klon :)
Oplysninger om sockets mv. kan findes i bogen "Java 2 bible" - et genialt værk fra idg books.
E-)mil
http://mfp.eej.dk