Então…na minha opinião para se definir uma arquitetura é necessário que se conheça o máximo possível sobre o projeto a ser desenvolvido além de levar em conta também o nível técnico e espectativas da equipe etc…logo o que segue abaixo são apenas aspectos tecnicos que poderiam ser considerados no projeto.
Para editar os códigos: Eclipse / NetBeans
MODULO CLIENT
a) HTML, JavaScript - Resultante do processamento de JSP, JSF etc…
b) Swing - Interface semelhante ao Delphi, VB etc… poderá ser incluido o framework Genesis para binding, Glazed Lists para grids. Para desenhar os formulários poderia utilizar o Matisse (para o Eclipse é pago) no NetBeans vem gratuitamente.
c) Spring - Utilização de IoC, pooling de objetos e acesso aos serviços (HttpRequest, Hessian) disponíveis no servidor caso esteja utilizando clientes swing
MODULO SERVER
a) EJB3, Spring ou EJB3 com Spring - Disponibiliar os serviços (sem EJBs utilizar HttpRequest ou Hessian do spring) e construir o modelo com as regras de negócio.
b) JSF, JSP com Servlet, Struts, Wicket, VRaptor - Para construir o aspecto visual dos clients HTML
c) JPA, Hibernate ou JPA com HIBERNATE - Mapeadores objeto relacional para acesso a dados.
MODULO PARA DEPLOY DO CLIENT (Swing)
WebStart - Site com o client envelopado.
SERVIDORES
a) JBOSS, GlassFish - Se utilizar EJB3 caso contrario utilizar o JETTY ou TomCat
Das coisas que citei, algumas pode depender da condição técnica da equipe ou preferencia ex: JSF, Wicket, VRaptor. JSPs normalmente dá mais trabalho mas pode ficar bom também se for feito com cuidado.
Se utilizar design patterns sabiamente e considerar DDD poderá ajudar bastante na construção do seu projeto.
A idéia central é deixar o seu modelo (serviços,regras etc…) o mais independente possível para que vc possa utilizar clientes diversificados inclusive o próprio Delphi com webservices.
Lembrei de uma coisa vc comentou sobre rmi e socket, pois bem os EJB, Servlets são construidos a partir deles vc não percebe porque estão nas camadas mais baixas no servidor.
Espero ter ajudado…tomara que alguem mais acrescente/critique coisas na sugestão para torna-la mais interessante.
Por um acaso vc já considerou utilizar DOT NET já que utiliza Delphi? Para mim parece a tendencia natural para esse tipo de arquitetura.
[]'s