Лучший выбор для программирования кросс-платформенного приложения?
====================================================================

 Здравствуйте.   
  
  
  

Вопрос не холивара ради — возникла необходимость по работе.   
  

Сам я больше связан с веб-программированием, поэтому о программировании под ОС имею достаточно смутное представление.   
  
  
  

Меня интересует наименее затратный по созданию и поддержке кросс-платформенного приложения под основные десктоп операционные системы (семейства Windows, Linux и MacOS). При этом хотелось бы иметь возможность сделать приложение максимально нативным в плане дизайна в каждой из операционных систем, чтобы не раздражать пользователя.   
  
  
  

Выбираем между Java, C# и С++.   
  
  
  

Суть приложения — клиентское приложение, которое обращается по HTTP к веб-серверу, формулируя определенные заголовки и тело, получает ответ и рисует данные как нужно. Нужно чтобы из коробки был доступен HTTP, работа с популярными кодеками (аудио/видео), возможность кэширования медиа-контента и текста, поддержка JSON (просто не в курсе, есть ли это из коробки где-то).   
  
  
  

Большим плюсом языка было бы его легкое изучение. Человек будет пересаживаться на него c Delphi. 

 Не буду оправдывать, просто скажу — C++ + Qt. 

 Че вы все свое старье хвалите?  

 На C++ писал сто лет назад, на С# не пишу, поэтому скажу про Java.  

  

Она соответствует вашим ожиданиям. В Java Swing (GUI библиотека) можно включать native look&feel. Так что приложение в каждой OS будет выглядеть как родное.  

  

Для Java существует огромное количество свободных библиотек. Гуглите **Apache Commons**  

Там есть поддержка очень многих полезных штук.  

  

Для работы с мультимедиа гуглите **Java Media Framework**  

  

Язык красивый и элегантный, хотя матёрые C++ программисты кинут в меня камень. И не один. 

 Советую Python + wxWidgets. Если не понравится ещё есть Qt + С++ || Python.  

Медиа возможности в Python можно подключить разными библиотеками (ffmpeg, mplayer), достаточно просто. 

 Самое эффективное — Qt и C++.   

1. Среда разработки и неплохая идет в комплекте, есть дизайнер формы  

2. Довольно много готовых примеров и приложений в которых всегда можно посмотреть пример реализации  

3. Бинды на Python и других языках  

4. На C++ много готовых библиотек, которые можно использовать в своем приложении  

  

Яву я тоже использую (Swing)  

Но сейчас что-то серъезное пищут на Java2ee, а там, на мой взгляд довольно высокий порог вхождения 

 Вам ведь надо чтоб работало, причем человек этим займется неопытный. Поэтому вариант один — Java, так как больше ошибок будет выявлено на стадии компиляции. На питоне, js и плюсах новичок замучается отлаживать свой г-нокод. С# посложнее явы и не кроссплатформенный.  

  

Насчет того, что на Java2ee высокий порог вхождения — замечание не к месту, так как приложение десктопное, и не требует ЕЕ.  

  

Насчет ресурсов — ява по скорости сравнима с С++ и оставляет далеко позади питон, js и прочую динамическую братию. Повышенное потребление памяти заметно только если у вас много (миллионы) мелких объектов, и то по сравнению с с/с++, у динамических языков расход тот же. У вас объектов не так много и они крупные (вы ведь сказали — медиа). 

 Поддерживаю про JS + webSocket|ajax. Только как системные требования будут самые свежие билды браузеров, чтобы не пришлось изучать дзен костыления. Самый экономный и оптимальный вариант, при указанных требованиях, т.к. всё описанное уже есть. Про manifest только не забудьте.  

  

Из всего — с кодеками только будут нюансы. Но если поустанавливать к браузерам пакеты расширений — траблы тоже исчезнут. Ну это если под заказ работа.  

  

Если что-то посерьезней, то прямо скажу — С++ и QT(QScript). Там вам и вебкит и все это есть. Но человеку, переходящему с делфи — плюсы будут сложноваты. Хотя мощных редакторов для QT выше крыши. Тем более для разработчика на delphi, будет удобно упростить работу с qtdesigner.  

  

Касательно Java не спешите. При тех требованиях, которые вы описали, не самым лучшим вариантом было бы такого монстра использовать, в плане ресурсов.  

  

Если будут еще какие-то требования к задачам — напишите. Тогда можно будет точнее дать совет. 

 Самый легкий, и современный (на мой взгляд) — C#. Есть крутой WCF [WCF](http://ru.wikipedia.org/wiki/Windows_Communication_Foundation). Но он не кроссплатформенный. Есть [Mono](http://ru.wikipedia.org/wiki/Mono) конечно, но как оно на деле — не знаю.  

C++ — тут либо Qt, либо wxWidgets. Qt, насколько я знаю не имеет нативный интерфейс, в отличие от wxWidgets. Но язык не самый простой, сами понимаете =)… правда, из лагеря плюсовиков то и дело доносятся возгласы, что Qt существенно облегчает работу.  

Java — не знаю, честно, но давно не встречал приложения на нем написанные. 

 AIR? 

 На мсдн сейчас часто идут примеры одного и того же функцинала на с++, c# и vba.  

Лично мне с# дался легче чем все С, С+, С++ вместе взятые. Но как с этим работать под маком и в линуксе… кхм… 

 Можно PureBasic использовать.  

Он поддерживает платформы Windows, Linux, MacOS и AmigaOS. Как 32, так и 64 разрядные. 

air хреново дружит с линуксом и прочими андроидами. Пока самый адекватный вариант - это Q.

 

 Если вам нравится c# с его сахаром и вам близок WPF + HTML, то могу посоветовать AvaloniaUI, проект поддерживает все платформы в том числе и android через (.net core/ mono) . Здесь лежит прекрасный доклад на эту тему <https://youtube.com/watch?v=8qzqweimcFs>  
  

P.S проект находится в beta, но писать на нем GUI уже можно.