Сегодня я узнал, что я – необразованный ретроград – изобрел велосипед. Точнее, пародию на велосипед. Как известно, я программирую на Java и в данное время мы работаем над новой игрой, konklav.ru. Собственно, мы решили избавиться от архитектурных недостатков сервера Берсерка, и несмотря на то, что в новом движке используется множество старого кода – он довольно сильно переработан.
Рефакторинг несет в себе две основные цели: первой из них является повышение производительности под высокой нагрузкой (избавляемся от ненужных синхронизаций, переходим на блокирующие коллекции, где это возможно). Вторая цель – улучшение модульности. Уже сейчас скелет сервера Конклава Бессмертных можно использовать для программирования любой онлайн игры.
Сегодня у меня буквально открылись глаза. Я узнал про Google Guice. Я немножко поковырял раньше Spring – мне динамическое связывание в Spring показалось громоздким и неудобным. Мне не нравятся бешеные XML-ины Spring (пусть ими и заведует моя любимая IDEA). Но Guice – это сказка. По меньшей мере – для меня. Так смешно смотреть документ про то, как и почему нужно работать с Google Guice, и видеть в примерах код, аналогичный используемому в нашем сервере. Жгут не по-детски, черти полосатые.
В частности, в Guice гораздо лучше реализованы биндинги, чем у меня получилось это сделать за 3 дня. :-) К слову, Guice предоставляет множество возможностей для связывания – и самая большая прелесть – это множество можно не использовать, оно не утяжеляет проект (430Kb), и с ним легко ознакомиться.
Глядя на это, начинаешь чувствовать себя ретроградом. Думаю потратить еще 1 день на освоение Google Guice и еще день на адаптацию сервера к его использованию… Великолепная вещь получилась, всем рекомендую!