Là, c'est sur que c'est pas facile de te répondre.
"java" te permet de faire une applis sous forme de page web, une applis sous forme de logiciel affiché dans le navigateur et une applis sous forme d'exécutable en ayant en commun toute la partie qui gère les données : seules la partie interface change entre la version "pages web" et les autres et la partie sécurité change entre les différentes versions.
Les langages ".net" permettent également de faire des pages webs et des applications locales. En utilisant en plus les activex, on peut également faire des applications affichage dans un navigateur (avec quelques limites il me semble) mais ça ne marchera, en gros, qu'avec internet explorer.
A ma connaissance "SylverLight" ne permet pas de faire de page web.
"Air", je ne le connais pas du tout donc je ne peux pas en parler.
En plus de tout ce que tu as cité, il y a le php qui permet de faire des applications graphiques locale (en plus des sites webs) et beaucoup de langages plus anciens (PERL, c, c++, python ...) qui permettent de faire des pages web (installation sous forme de cgi ou de module du serveur web) et des logiciels graphiques.
Vraiment pas simple tout ça.