Как самостоятельно написать мессенджер на Java?
Обдумайте сначала что должен уметь делать ваш мессенджер, как должен выглядеть - запишите это. Далее обдумайте логику вашей программы, как она должна работать - запишите это. И начинайте работу.
Как написал Igor Vorobiov - изучить сокеты. Как вариант - двигаться в сторону своей реализации протокола XMPP. Для начала можно взять готовый сервер и написать к нему клиент. Потом посмотреть как сделан сервер (Openfire на Java) и написать свой. А можно вообще круто завернуть и написать свой протокол.