Seguramente realices el chat con una interfaz gráfica, para ello aconsejo usar swing.
Para la implementación del chat debes usar sockets y threads (hilos), lo normal para este tipo de aplicaciones es que haya una persona que ejecute la aplicación como servidor, y el resto de los participantes (grupo) o el participante en caso de que sean solo 2 usuarios la ejecute como cliente, debes tener en cuenta que los puertos que utilices para la aplicación no te dan problemas, ya sea por aplicaciones externas, ya se estén usando, etc...
Te dejo un vídeo explicativo de como podrías hacerlo: