Trabalho com um programa que é em Java (Tomcat 5.0 / JDK 1.4.2) mas foi extremamente bitolado para Windows, com um instalador Installshield (argh - mas era o que o cliente tinha homologado).
Nem sei quantas centenas de milhares de linhas de código Java, JSP, C++ e InstallShield foram escritas para esse sistema.
Escrevi um monte de código em C/C++ para fazê-lo funcionar corretamente em Windows, tanto é que o Tomcat roda como um serviço do Windows, e um gerenciador desse serviço (feito em C++) tem um tray icon.
Tentamos fazê-lo funcionar no Linux e no MacOSX, e por incrível que pareça funciona - mas desistimos de fazer um instalador que funcionasse em umas 10 distribuições diferentes do Linux - sempre há alguma coisinha chata para fazer que a gente não previu.
O Java, neste programa, não é instalado separadamente (como é o caso do tal Programa da Receita), e sim faz parte do pacotão. Mesmo assim, devido às exigências de hardware (você já tentou rodar um Tomcat + HSQLDB + Internet Explorer em um Windows 98 em um Celeron-300 com 128 MB de memória? A máquina que tínhamos para testar era tão velha que morria quando carregava o programa), ele deu muitos problemas em clientes, principalmente porque o pessoal desligava a máquina sem efetuar shutdown no serviço.
Quanto a deficientes visuais: como devem saber, até alguns anos atrás o site da Caixa Econômica Federal para deficientes visuais era em ASP mesmo e muito desatualizado em relação à versão JSP. Parece um pouco de “problema político”, já que basta uma revisão simples para adequar um site JSP para o uso de deficientes visuais.
Mas Swing já são outros 500 - a parte de tecnologias “assistivas” no Swing não funciona muito bem, como pode confirmar o Bruno Campos.