Olá Robert! Tudo bem?
Muito boa a sua dúvida!
Quando falamos em Front-end e Back-end, estamos nos referindo ao desenvolvimento de aplicações Web.
Nesse contexto o Java é utilizado para o desenvolvimento back-end, ou seja, desenvolvimento no lado dos servidores, bancos de dados... tudo o que não está em contato direto com o usuário, mas que é necessário para que a aplicação web funcione.
A questão do uso do Java para interfaces web se dá por meio do padrão MVC, onde fazemos as camadas de modelo, visualização e controle. Utilizando esse padrão nós realmente fazemos a interface com recursos do Java, por meio de JSP. Esse no entanto, é um recurso do pacote Java EE, que hoje em dia é encontrado geralmente em projetos legados (projetos antigos). Os projetos que utilizam as tecnologias mais modernas com Java, geralmente envolvem a produção de APIs REST com frameworks como Spring Boot (o mais utilizado). Essas APIs produzidas em Java são utilizadas pelas interfaces feitas pelo Front-end, com Javascript e seus frameworks. De forma geral é assim que está o ecossistema atual, se levarmos em conta o que temos de mais moderno na utilização do Java para web.
A respeito do swing que você citou... trata-se na verdade do uso do Java para aplicações desktop e não aplicações web. Tanto o swing quando o Java FX são frameworks voltados especificamente para produção de aplicações desktop com Java, e portanto envolvem sim a produção da interface da aplicação com o próprio Java. Mas é importante lembrar que a maneira como essas aplicações são desenvolvidas é diferente da maneira como as aplicações web interagem com suas interfaces.
A respeito do uso ou não de linguagens mais voltadas ao back-end para criar interfaces, ou de linguagens voltadas a criação de interfaces sendo utilizadas no back-end... é bem complicado afirmar que algo deve ou não ser utilizado.
Pensando no Java especificamente, o recurso do Java EE que nos permite criar interfaces com JSP foi muito útil por anos... hoje em dia não é mais a primeira opção e com certeza não é a mais utilizada para novos projetos Java Web. Mas isso não significa que o Java não dê suporte a esse tipo de uso. Da mesma forma que o Javascript foi idealizado como a linguagem dos navegadores web, com o objetivo totalmente ligado a visualização das páginas web, e que mais tarde passou a ser usado também no back-end.
Nada impede que essas mudanças ocorram com o tempo. As linguagens evoluem, seus ecossistemas crescem, novas ferramentas passam a possibilitar seu uso em áreas que inicialmente não eram o objetivo da linguagem. O que mais influencia na escolha de determinada linguagem para seu uso no Front-end ou Back-end é o custo que isso traz para a organização. E quando falamos em custo, pensamos não só no imediato, mas também nos custos de manutenção, na confiabilidade que as ferramentas dessa linguagem oferecem, segurança e escalabilidade das aplicações.
Ou seja, sempre temos mais de uma aplicação para qualquer linguagem que seja... o que nos ajuda a decidir onde desejamos utilizar ela é onde ela demonstra vantagens em relação às demais.
Espero ter ajudado a refletir um pouco sobre o assunto... perceba que não existe uma resposta única para isso... as escolhas dependem das nossas necessidades.
Vou deixar aqui abaixo alguns conteúdos adicionais que podem ser interessantes e agregar ainda mais no assunto:
Se houver algo mais em que eu possa te ajudar nesse assunto, é só falar! 😄
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!