Если это будет веб-приложение, нет необходимости разъединять процессы, как если бы у вас был внешний интерфейс настольного приложения и серверный конец. Так что будь проще.
Основой, которую я бы использовал (и я использую для проекта, над которым я сейчас работаю, как выясняется), является стек следующего вида:
- Пружина 3
- Веб-контейнер
- Приложение, развернутое как веб-приложение (WAR);
- Для персистентности, либо Ibatis (мой предпочтительный вариант), либо JPA / Hibernate (если вы предпочитаете более персистентный подход к объектам);
- Ваш предпочтительный выбор веб-фреймворка. Здесь нет простого ответа, и есть десятки на выбор, от простых шаблонов до более компонентных (JSF, Seam и т. Д.). Гобелен / калитка выглядят интересно, но я тоже не эксперт.
Контейнер Spring полностью способен запускать серию потоков, и это довольно распространено. Так что вам понадобится ряд компонентов, которые просто станут вашим двигателем. Если у вас нет веских причин поступать иначе, бины Spring в контексте веб-приложения являются простыми, гибкими и мощными.
На переднем конце это зависит от того, что вы хотите. Прямой HTML может быть сделан с любым веб-фреймворком. Даже если украшен каким-то Javascript. Я использую jQuery для такого рода вещей.
Это немного изменится, если вы захотите, чтобы интерфейс был похож на настольное приложение (так называемый «богатый» интерфейс). Для этого вам нужно либо использовать Google Web Toolkit («GWT»), возможно, компонентную веб-инфраструктуру, такую как JSF (хотя я склонен думать, что они очень быстро запутываются), или Javascript, такую как ExtJS, SmartClient, YUI или довольно новый уки.