Вопрос конечно расплывчатый. Если бы вы знали java на среднем уровне, вы бы наверное и так представляли, что надо еще подтянуть, чтобы написать backend. Ну и с архитектурой немного неясно.
- Сервер наверное многопоточный предполагается ? Тогда почитайте про Concurrency / multithreading .
- Если у вас планируется много одновременных сетевых подключений, посмотрите в сторону netty.
- По какому протоколу будет идти обмен между клиентами и сервером ? Можете ради расширения кругозора зафигачить его на protobuf'ерах например.
- Где будут храниться данные ? В реляционной БД ? В файлах ? В каком-то NoSQL хранилище ? Или все в памяти?
Вот только ответив на эти и на еще с кучу вопросов, можно примерно понять что вам нужно подучить.