Еще учтите, что у пользователя может быть криво выставлен часовой пояс, и его GMT0 может отличаться от истинного:)
В общем-то, чтобы это решить, надо чтобы сервер присылал не только время окончания события, а еще и «сколько сейчас времени по мнению сервера на GMT0». Далее надо получить специфичное для клиента время по GMT0. Вычитаем одно из другого и сразу получаем поправку на и сетевые лаги и на неправильные часы в устройстве.
Для разминки мозгов Scala очень подходит, а останется ли она актуальной — покажет время, а вовсе не релизы Java.
Scala — язык с сильной ФП-составляющей, в Java никогда этого не будет, и лямбды тут не помогут.
Попап каждый раз инициализируется при открытии и уничтожается при закрытии. Обойти это никак, разве что при закрытии порта начинать складывать сообщения в очередь и при открытии все их слать.
В последнем проекте использовал swig, очень счастлив. Похоже на Twig/Django/Jinja. Много умеер из коробки (наследование, макросы, фильтры), легко расширяется.