Ola Pessoal
Tenho pouco conhecimento de Java mas gostaria de ver discutida uma questão de arquitetura.
Imaginem que temos uma aplicação simples e que deve estar disponível na Web, em desktop e em mobile.
Esta aplicação é composta de uma interface que solicita ao usuário a escolha de um determinado arquivo a ser processado e que está presente em algum diretório na rede local. Após a escolha, o arquivo (binário por acaso) será lido e processado. Esta leitura gera um conjunto de registros que serão inseridos em um banco de dados.
Após a inclusão no banco os registros da tabela resultante podem ser visualizados em um browser (JSF), desktop com swing e até mesmo em um celular / palm.
A minha dúvida é: como separar as camadas para que eu possa mudar a interface sem alteração das demais camadas?
Se possível gostaria de saber algumas referências (livros ou links) específicos a este assunto de separação de camadas em especial como cada framework (Struts 2, Spring, Hibernate / JPA e outros) se posiciona com relação às mesmas.
Desde já agradeço muito a ajuda de Vocês
Abraços
Oswaldo Castro