Como podemos descomplicar ? Com uma visão de arquitetura mais simplista, seguindo todos os bons conceitos, principalmente a de manter o isolamento total do core, mas com uma única camada externa para a aplicação, simulando uma divisão modular fisicamente por packages com config, entrypoint e dataprovider. Para exemplificar um pouco mais o modelo baseado na Clean Architecture e Ports and Adapters, segue uma ilustração para visualização das dependências de cada camada e as ligações com seus componentes, deixando bem claro suas responsabilidades. Nota: Observa-se que no diagrama de classe mostrado foi inserido nas classes que implementam as interfaces a notação @javax.inject.Named, essa notação para quem não a conhece, ou utiliza outra linguagem, é uma notação da especificação de injeção de dependência do Java ( JSR-330 ). Ela é utilizada como dependência no core para que o mesmo não possua nenhuma dependência direta de Framework, assim contendo apenas o trivial, como especificações. Em a...