[quote=kicolobo]Oi Vinícius,
sabe: eu tenho o “sonho técnico” de um dia produzir algo útil em C++ e, como você, também trabalho há alguns anos desenvolvendo aplicações desktop (no início em VisualBasic/Delphi e depois em Java). Quais os seus toolkits favoritos para este tipo de empreitada?
Com relação ao Java ser a pior opção para desktop, há ressalvas. É importante lembrar os aspectos positivos também. O Swing é uma biblioteca riquíssima (o table model pra aplicações corporativas, por exemplo, é uma das sete maravilhas do mundo pra mim :D) , e o desenvolvimento multiplataforma com ele é real. Sim, pode haver pequenas diferenças entre uma plataforma e outra, mas não é algo que chegue a inviabilizar um projeto.
Com relação ao acesso às bibliotecas nativas mais básicas, é verdade, mas por outro lado, não é algo que seja feito de forma tão comum assim como possa parecer. Na esmagadora maioria das vezes, o modelo padrão que ainda reina é o cliente/servidor mesmo. Sobre a beleza das interfaces, neste caso é importante salientar que mais do que a presença de recursos, entra em cena o fator “bom gosto”. Há aplicações com interfaces nojentas em C#, Qt, Cocoa ou qualquer outro framework cool com o qual topemos. [/quote]
Oi Kiko. Se for desenvolver apps desktop com C++, tente produzir algo com o Qt. Mas antes, recomendo fortemente que leia o Effective C++, e aprenda um pouco do C++ moderno. 
Quanto a ser a pior das três linguagens. É bom lembrar que “pior” é uma comparação. Ser a pior das três não significa que a linguagem é ruim. Só significa que há menos vantagens que as outras duas. De fato, o Java é uma boa linguagem para aplicações desktop que não envolvem interação com o SO, ou tempo real e que precisam rodar simultaneamente no Windows e no Linux. Boa parte das aplicações comerciais são assim, e não vejo qualquer problema em faze-las em Swing.
E eu concordo com você: O Swing é poderoso, flexível, e rico. Desde que você siga algumas boas práticas (inclusive a de aprender ele direito, e programar models), ele se torna agradável e poderoso. Há algumas implementações nele que deixam muito a desejar, como é o caso das JInternalPanes, mas nada que não se possa conviver (e todas as outras linguagens tem lá seus problemas).
O fato é que o Java é tão bom, que se você optar por ele, não estará muito atrás do C#. Ao ponto de que, se sua equipe tiver know how em Java, não tem porque fazê-los reaprender o C# caso o sistema realmente não peça muita integração com o Windows (se pedir pouca, pode-se até quebrar o galho com JNA e JNI). Nesse caso, ponha o povo para trabalhar com que eles gostam e sabem melhor, e conviva com os eventuais inconvenientes. 
Agora, o colega estava falando que queria se especializar em aplicações Desktop. Nesse caso, acho importantíssimo que ele não considere Java como sua única escolha. Se você quer ser especialista em desktop, e conseguir empregos realmente bons na área, é importante conhecer bem o C++. Isso abre portas para um leque enorme de aplicações, seja na área de engenharia, monitoramento, segurança, sistemas operacionais, aplicações multimídia, etc. E, vale lembrar, que para apps exclusivamente desktop, o C++ possui hoje o maior e mais bem remunerado mercado.
Mas também é um erro achar que o C++ é a panacéia para todos os problemas. Embora realmente seja possível desenvolver tudo com ele, para as aplicações mais simples, ele não é exatamente a linguagem mais produtiva. Use-o quando precisar de integração ou performance (requisitos comuns em apps desktop), mas tenha em mãos uma linguagem de desenvolvimento rápido quando não precisar disso. Nesse caso, é legal também conhecer o C#, que hoje tem se mostrado uma alternativa de desenvolvimento muito rápido, e com integração fácil com o Windows, ou o próprio Java.
Existem poucas linguagens que considero ruins. Uma delas é o VB6. De resto, é só estar atento para fazer um julgamento técnico, não baseado em gosto pessoal. É difícil, eu sei, eu mesmo já escolhi muito por gosto pessoal, mas quando fizer isso, admita para si mesmo, e meça bem se vale a pena lidar com as consequências da escolha - e muitas vezes vale.