опрос среди подписчиков тега C# показал что 100% программистов используют C#
большие проекты останутся на java, т.к. фреймворки, масштабируемость и предсказуемость при развитии
как java программист я уверен в невостребованности C#
некоторое время назад был популярен wicket, отличается от vaadin тем что есть отдельный html в который можно подмешать js при необходимости, ну и сама разметка через html пожалуй удобнее
и, что более важно - wicket бесплатный
внутренние объекты сервера и клиента вообще никак не связаны, даже если полностью совпадают по полям
на клиента уходят специальные DTO объекты (data transfer), и это не то же самое что сущности из моделей клиента или сервера
смотря какой вид проверки нужен - все случаи или до первой неудачной
для первого можно предложить Builder который собирает все нужные классы проверки и наружу смотрит только один метод fun check(): Result
для второго почти такой же билдер но с методом fun next(): Result и пока не null например, т.е. проверки закончились (или пока в Result не пришла ошибка)
при чем тут Hibernate? это просто ORM, там внутри сидят те же sql-запросы, прекомпиляция селектов дает ту же скорость, быстродействие скорее зависит от кеша самого постгресса
почему бы не использовать защищенную очередь из concurent?
из головы забираем (сразу) и выполняем, в хвост - добавляем и не надо всего этого с wait и notify
java для десктопа не существует,
javafx требует обвязочного кода не меньше чем свинг и раздражает
где-то в районе 5-10-го года были и заглохли порты java-qt и gtk
и всё
разве что на kotlin и tornadofx посмотреть, но там еще рано что-то серьезное начинать
1. забыть про статические переменные в андроиде навсегда
2. при поворотах/пересоздании активности отписывать слушателя от popup и уничтожать сам popup, потом заново создавать popup и заново передавать слушателя
ЗЫЖ слушатель тоже сделать не статический