Windows linux кроссплатформенные языки программирования

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

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

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

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

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

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

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

Rafael

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

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

Для Java существует огромное количество свободных библиотек. Гуглите Apache Commons
Там есть поддержка очень многих полезных штук.

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

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

Rafael

Для работы с JSON мне больше нравится Google Json Library code.google.com/p/google-gson/ в нем как и по-очередное чтение/запись, так и сразу биндинг на целые объекты и коллекции

Rafael

Медленность — это давно устаревшая страшилка. Сейчас такой проблемы нет. Что касается прожорливости, имеет большое значение качество кода, который выполняется. Плохо написанный код будет потреблять память, как бегемот веники. Но это справедливо не только для java.

Советую Python + wxWidgets. Если не понравится ещё есть Qt + С++ || Python.
Медиа возможности в Python можно подключить разными библиотеками (ffmpeg, mplayer), достаточно просто.

Ну или С++ + wxWidgets. Прелесть этих виджетов в том, что они выглядят как нативные в разных операционках.

wxWidgets чётко выделяются на фоне нативных приложений, по крайней мере на линуксах.
Qt в этом плане куда приятней.

«Большим плюсом языка было бы его легкое изучение» — именно поэтому стоило бы обратить внимание на Python

Самое эффективное — Qt и C++.
1. Среда разработки и неплохая идет в комплекте, есть дизайнер формы
2. Довольно много готовых примеров и приложений в которых всегда можно посмотреть пример реализации
3. Бинды на Python и других языках
4. На C++ много готовых библиотек, которые можно использовать в своем приложении

Читайте также:  Дать рут права пользователю linux

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

olegbarabanov

Согласен, но вот только обычно разработчикам на delphi очень тяжело на яву перейти. Кстати, если дизайн будет пестрым и сложным — то однозначно qt.

rfq

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

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

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

Спасибо за развернутый ответ. А какие подводные камни у Java? Я сам какое-то время программировал на ME, но глубоко не увлекался. Так же интересует перспектива платформы после того как они выступают под флагом Oracle. Нервирует просто большое количество реализаций JDK — непонятно как разобраться в этом многообразии. К примеру, мой любимый phpStorm требует для себя почему-то именно Sun’овскую версию JDK — на IcedTea и OpenJDK он просто отказывается устанавливаться.

Я бы не сказал, тчо Ява сравнима по скорости с С++, особенно разница заметна в гуи приложениях и приложениях, активно использующих тип double.

olegbarabanov

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

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

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

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

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

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

Читайте также:  Linux калибровка батареи ноутбука

В топку этот 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 уже можно.

Войдите, чтобы написать ответ

Кроссплатформу или натив? Какую кроссплатформу?

Источник

ТОП-5 языков программирования для разработки приложений на Linux

Существует множество языков программирования, и время от времени появляются новые, но как будущий разработчик программного обеспечения для Linux, ориентированный на настольные приложения, нужно понимать, что нужно для создания надежных, эффективных, гибких, расширяемых, удобных и прежде всего безопасных приложений.

И одна из первых вещей, которые нужно знать, это понять соответствующий язык для разработки различных программ.

Ниже приведен список лучших языков программирования, которые можно использовать для разработки настольных приложений в Linux, этот список не основан на уровне важности, так как все языки здесь хороши, и они также кроссплатформенны, что означает вы можете заставить те же приложения работать на других операционных системах.

1. C / C ++

Эти два языка, хотя и считаются разными языками программирования, C ++ — это просто расширение языка Cи, и он добавляет объектно-ориентированные возможности в C, поэтому их можно сгруппировать вместе.

Как вы, возможно, уже знаете, Linux в основном работает на языке с частями сборки. Поэтому вы можете использовать Cи и использовать GTK + кросс-платформенный инструментарий для приложений с графическим интерфейсом.

C++ считается лучшим выбором для разработки программного обеспечения из-за его высокой производительности, но, возможно, он не подходит для новичков из-за его высоких требований к точности в таких областях, как управление памятью. Он также широко используется для разработки программного обеспечения Windows.

Читайте также:  Wget no check certificate linux

Вы также можете использовать Qt, который является отличной кросс-платформенной средой разработки приложений, основанной на C ++.

Qt является как коммерческим, так и открытым исходным кодом и очень поможет вам в разработке настольных приложений в сочетании с C и C ++.

2. Java

Java — это мощный, полностью объектно-ориентированный и кроссплатформенный язык программирования, который предлагает широкие возможности для построения сетевых приложений.

Изначально Java была предназначена для запуска апплетов в веб-браузерах, но она всегда имела удивительные возможности для запуска настольных приложений с самого начала.

Java — одна из лучших, особенно если у вас есть намерение разрабатывать приложения, которые будут работать практически на любой соответствующей операционной системе. Java прекрасно подходит для перехода с одной операционной системы на другую, особенно с Windows или Mac OS X на Linux , без необходимости переноса существующих приложений.

3. Python

Python — это высокоуровневый, универсальный, динамичный и интерпретируемый язык программирования, который верно становится популярным на рынке.

Многие программисты обращаются к Python из-за его легкого для чтения синтаксиса и способности позволить программистам выражать концепции в несколько строк кода по сравнению с другими языками программирования. Ему легко учиться, и это хороший вариант для начинающих.

Python является одним из популярных языков в Linux , и многие приложения разрабатываются с его использованием, и вы можете использовать фреймворки, такие как Qt и GTK .

4. JavaScript (Electron)

JavaScript прост в изучении, и при использовании в сочетании с HTML и CSS вы можете создавать удивительные настольные приложения для Linux.

Electron — это среда, используемая для разработки собственных кроссплатформенных приложений с использованием веб-технологий, и она активно поддерживается в GitHub и сообществе участников.

Это также хороший вариант для начинающих, намеревающихся разрабатывать настольные приложения для Linux и других операционных систем.

5. Shell

Shell не только позволяет системному пользователю взаимодействовать с ядром, но также является полноценным языком программирования, причем наиболее распространенными являются конструкции языка общего программирования с GNU Bash (Bourne Again Shell) .

Он совместим с sh (Bourne Shell), а также включает в себя множество полезных функций от ksh (Korn Shell) и csh (C Shell) . Вы можете использовать его с такими инструментами, как Qt et al, которые позволяют отображать диалоговые окна GTK + из терминала, используя скрипты.

Заключение

Как всегда, у вас также есть свои собственные взгляды, поэтому любая критика, которая просвещает и помогает пользователям Linux, приветствуется. Если вы используете языки программирования и фреймворки, не добавленные в этот список, вы можете сообщить нам об этом и о любом другом мнении по данной теме, оставив комментарий внизу.

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

Источник

Оцените статью
Adblock
detector