Да. Вы можете использовать Java, Python / Ruby и т. Д. С кроссплатформенным UI-фреймворком, AIR и т. Д. И т. Д.
Да, это реально. Создайте его на модели клиент / сервер, и большая часть кода будет соответствовать модели настольного компьютера или веб-интерфейса.
Если вы спустились в корневой каталог .NET, вы можете использовать Silverlight для веб-приложения, код сервера .NET для бэкэнда и даже Mono для разработки под OS X.
Если вы выбрали маршрут Java, Java запускается в браузере, скоро появится JavaFX, небольшая версия в стиле flash для браузеров. Он работает практически на всех ОС и прекрасно справляется с бэкэндом.
Flex / AIR предлагает отличный способ разработки настольных и веб-приложений для OS X, Windows и Linux, но вам понадобится другой язык для бэкэнда. .NET, Java, PHP и т. Д. Все отлично работают как бэкэнд.
Редактировать
По запросу MrJeepster ниже приведены подробные сведения о взаимодействии внешнего интерфейса AIR и внутреннего интерфейса .NET:
Существует два способа подключения AIR к бэкэнду .NET: способ DIY и способ удаленного взаимодействия.
Самодельный способ предполагает определение собственных (возможно, XML) форматов данных и использование низкоуровневых объектов HTTP-запросов для связи с HTTP-сервером или даже низкоуровневых классов сокетов для связи с каким-либо другим сервером.
Способ удаленного взаимодействия стал проще, так как хорошие люди написали подборку бесплатных пакетов удаленного взаимодействия:
http://www.adobe.com/devnet/flashremoting/articles/intro_flremoting_net.html
http://www.themidnightcoders.com/flashorb/gettingStarted.htm
http://www.fluorinefx.com/
Удаленное взаимодействие предполагает совместное использование объектов между клиентом и сервером. Таким образом, вы создаете некоторый объект на клиенте AIR, получаете инфраструктуру удаленного взаимодействия, чтобы сериализовать его, передавать на сервер и десериализовать его в объект .NET. Затем сервер обрабатывает его и отправляет его или новый объект обратно по тому же маршруту.