Подтвердить что ты не робот

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

Для "наилучшего" я ​​предполагаю, что код не должен нуждаться или требует очень немногих настроек для конкретной платформы.

4b9b3361

Ответ 1

Я настоятельно рекомендую Java для кросс-платформенного графического интерфейса. В частности, я рекомендую построитель GUI, который поставляется с Netbeans IDE. Это очень просто и очень мощно. Вы можете указать и щелкнуть мышью и перетащить, чтобы создать графический интерфейс, и легко настроить действия, выполняемые различными кнопками и другими компонентами.

Я предпочитаю Python как язык, но ни один из бесплатных инструментов для разработки графического интерфейса нигде не приближается к этому, и то же самое верно для других языков, которые я использовал. (Я должен отметить, что QT имеет замечательных разработчиков графического интерфейса для различных языков, таких как C и Python, но он доступен только при использовании в проектах с открытым исходным кодом. )

EDIT: QT недавно был изменен как LGPL, поэтому вы можете использовать его в коммерческих приложениях. Связи Python для этого (PyQT) не были повторно лицензированы, но был создан другой проект под названием PySide для обеспечения привязок QT Python.

Ответ 2

Я лично презираю всю концепцию эмуляции собственного GUI, в котором внедряются графические интерфейсы Java. Вместо того, чтобы быть дома, где бы вы ни находились, это делает вас туристом повсюду, часто нуждаясь в переводчике. Eclipse GWT - лучший инструментарий, который намного лучше использует локальные ресурсы, но он по-прежнему считает, что люди любят писать Java-код и ненавидят использование Java-приложений, подумайте об этом: какие приложения Java вы любите на своем рабочем столе?

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

Моно понадобится хорошая попытка, так как это способ ответить на вопрос "почему Linux отстой", если вы помните этот старый пост Би Мигель де Иказа. Моно поставляется со зрелым набором виджетов и Apis и не пытается ограничить то, что вы можете сделать, чтобы обеспечить переносимость.

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

Adobe AIR - это доступ к собаке, а локальная система не просто.

Если я могу выбрать, я вообще избегаю GUI и пытаюсь использовать веб-сервер, даже локальный веб-сервер, Json, JQuery и все такое. Я узнал, что у меня может быть гораздо больше вариантов и более продуктивен, чем у собственных виджетов. Это сочетает в себе сильные стороны использования реальной языковой серверной стороны и замечательной неупорядоченной доброжелательности JavaScript в графическом интерфейсе.

Ответ 3

Да: используйте Eclipse RCP. Вы можете писать не только кросс-платформенные, но, например, с ним многоязычные приложения. SWT обеспечивает естественный внешний вид для нескольких платформ и оконных систем.

Ответ 4

Итак, насколько я понимаю, в настоящий момент нет действительно кросс-платформенного языка высокого уровня и инструментария GUI прямо сейчас.

  • Java является кросс-платформенным, графические интерфейсы как в SWT, так и в Swing могут выглядеть хорошо, когда вы действительно пытаетесь настроить их пиксельно-точные и внести изменения в внешний вид поддерживаемых платформ. В настоящее время есть некоторые хорошие графические дизайнеры, но ничего такого, как OpenStep, не было 15 лет назад.

  • QT теперь LGPL'ed, пока вы только ссылаетесь на него динамически. Ну, но QT имеет свой собственный набор проблем и является надмножеством С++. Вы должны скомпилировать против QT-взломанного компилятора, а не общего С++.

  • не пробовал wxWidgets, но из-за его внешнего вида он может работать, но не является набором инструментов высокого уровня вообще!

  • Кажется, есть возможность писать на С# и opensource.NET и запускать ее через Mono на других платформах, чем Windows... Не пыталась, но мне кажется, это просто переносит Microsoft на другие платформы.

  • Существует GNUstep, но пока он ищет меня, как будто он развит только некоторые фанаты-разработчики с открытым исходным кодом. Было бы действительно интересно увидеть стек OpenStep за пределами Mac OS X, но пока это выглядит мне нежизнеспособным.

Даже Java, несмотря на то, что она автономна, в настоящее время не предоставляет отличные дизайнерские возможности графического интерфейса. Я однажды использовал инструмент GUI designer, когда начал изучать, как кодировать SWT, и теперь я нахожу себя в кодировке вручную, что действительно неплохо, но это действительно не обязательно. Но это было несколько лет назад, мне придется попробовать еще раз.

Конечно, вы можете создать свой кросс-платформенный ядро ​​и служебный код на одном языке (Java или C/С++, если хотите скорость), создав что-то вроде сервера или инструмента unix и просто подключившись к нему из графического интерфейса, который вы создаете на каждой желаемой платформе свои собственные инструменты. В результате GUI является платформенным, пользуясь преимуществами платформы и должен быть достаточно прост для создания каждой желаемой платформы. (Cocoa на Mac и .Net на окнах предоставляют богатые возможности для платформы, на которой они являются родными).

Нам нужно будет изучить надежность и надежность такого идеального решения. Он должен иметь хорошую коммерческую поддержку и поддержку сообщества и быть достаточно развитым прямо сейчас, так как будущие реализации таких инструментов предоставят нам больше, чем просто НИЗКИЙ ОБЩИЙ ДЕМОНИТАТОР для всех поддерживаемых платформ, но чтобы задействовать кросс-платформенные инструменты для включения и принять хорошо разработанные концепции и богатые возможности, относящиеся к соответствующим платформам, и распределить их между платформами.

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

Предложения?

Ответ 5

Java, безусловно, приятный, но я отлично справляюсь с Python и Qt через PyQt4 в последнее время. Я обнаружил, что делаю это быстрее, чем в Swing или SWT.

До сих пор не нужны никакие настройки для конкретной платформы, а виджеты Qt4 выглядят хорошо на разных платформах. Конструктор Qt GUI очень хорош, и использование Python позволило легко интегрироваться с некоторыми другими межплатформенными платформами (особенно VTK, scipy-cluster, а некоторые SWIG - завернутые объекты для взаимодействия с файлами, выводимыми из инструмента производительности).

Обратите внимание, что Qt не является бесплатным, если вы не используете его в проектах с открытым исходным кодом.

Ответ 6

Пока кто-то определяет "независимость платформы" правильно, лучше Java.

Некоторые люди утверждают, что С# является лучшим, но эти люди, похоже, неправильно понимают термин "независимость платформы";)

Примечание. Я имею в виду тот факт, что С# переносится в Linux/Unix только до тех пор, пока Microsoft и Novel будут поддерживать свой договор. Само сообщество никогда не сможет поддерживать такую ​​огромную платформу, как .NET.

Ответ 7

В наши дни существует множество языков, которые позволяют эффективно создавать межплатформенные графические приложения. Java, Python, Tcl/tk, С#...

Я думаю, вам нужно определить требования своего приложения немного больше, например:

  • Будет ли пользовательский интерфейс веб-или настольным?
  • Будет ли приложение большим или маленьким?
  • Будет ли в нем какая-то функция расширения (например, плагины)?
  • Будет ли он функционировать по сети и может ли он быть распределенным/сбалансированным по весу?

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

Ответ 8

Я также считаю Моно серьезным претендентом на независимость платформы и хороший инструмент IDE. Производительность Java отстойна на рабочем столе. Просто проверьте http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspx

Ответ 9

Для собственных двоичных файлов wxWidgets является удобным решением.

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

Ответ 10

Я бы подумал, что это зависит от того, на каких платформах вы планируете таргетинг. Java будет иметь большинство платформ с виртуальной машиной. Однако, если вы просто хотите использовать Windows и Linux, вы можете использовать С# (используя mono on linux).

Ответ 11

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

Flash, вероятно, будет лучшим. Широко распространены и лучше выглядят одинаково на разных платформах.