Semântica Confusa
É uma questão semântica. Quando alguém diz um desenvolvedor front-end .NET ou Java front-end, geralmente está falando sobre a pessoa que sabe muito sobre linguagens de templates e talvez estruturas que nunca devem ser usadas novamente como formulários da web usados para tentar ocultar o arremessar coisas através de um muro http (isto é, "desenvolvimento da web") de desenvolvedores de aplicativos que não queriam ou pelo menos se supunha que não queriam aprender sobre toda essa porcaria. No caso de .NET e Java misto, não tenho certeza, mas só posso supor que, no sentido MVC, eles têm o Java agindo para todas as coisas do modelo de negócios e o .NET lidando com tudo o que seria melhor descrito como "camada intermediária", mas ainda está do lado do servidor.
A verdadeira separação é o que acontece no servidor e o que acontece no cliente ou no navegador. Você pode facilmente confundir a criação do HTML a ser enviado ou representar o front-end com "desenvolvimento de front-end". Por isso, prefiro evitar confusão usando os termos cliente e servidor em vez de front-end e back-end ao discutir o que normalmente faço, (geralmente trabalho do lado do cliente).
Idiomas do lado do cliente
A razão pela qual usamos o mesmo conjunto de idiomas no navegador é porque o navegador está no lado de recebimento e, na maioria das vezes (agora há uma resistência quase mortal da Microsoft e da Adobe nisso), ninguém quer enviar três versões diferentes do mesmo lado do cliente para satisfazer todos os clientes em potencial ou exigir que um plug-in proprietário seja instalado para que a Web funcione. Além disso, os três idiomas realmente encapsulam as preocupações do lado do cliente, permitindo que construamos e modifiquemos rapidamente os front-ends de aplicativos da web, mantendo um acoplamento flexível entre a estrutura do documento, como tudo parece e como tudo se comporta. Você pode alterar um sem alterar os outros dois com bastante facilidade.
Idiomas do lado do servidor
A razão pela qual você tem inúmeras opções na Web do lado do servidor é porque você pode. É o seu servidor. Tudo o que precisa fazer é se comunicar via http / ssl e o resto é com você. O JavaScript agora é uma opção, a propósito, mas isso traz uma pergunta interessante. Você ainda deve tratar um aplicativo Web como se fosse realmente dois aplicativos em ambos os lados desse muro HTTP. Sou da opinião informada de que sim, sim, você deveria e eu amo o Node.js.