Когда я начал использовать Java в девяностые годы, все было « напиши один раз, беги куда угодно! » С первого дня. Наверное, тогда это было правдой, и я был частью хора.
Я не уверен, что думать об этом больше, учитывая все другие языки, использующие многоплатформенные среды выполнения (python, flash, perl, html, php ...). Но я все еще вижу много аргументов, которые говорят, что вы должны использовать Java, потому что он предположительно лучше для кроссплатформенной разработки.
Так это все еще верно сегодня? Является ли Java по-прежнему языком выбора для многоплатформенной разработки?
- Пожалуйста, будьте конкретны с акцентом на межплатформенные аспекты
- Я не прошу сравнения общих характеристик языка.
Обновление: пока хорошие отзывы! Большинство ответов, кажется, одобряют Java или сеть. Любой вклад от толпы сценария?
programming-languages
java
cross-platform
Мартин Викман
источник
источник
Ответы:
языки стилей сценариев, такие как python, также облегчают кросс-платформенную разработку. Теперь, любите ли вы Python (или другие подобные языки), зависит от вас, и нам, вероятно, не нужно начинать эту дискуссию здесь.
Java пытается заставить вас писать код, который будет работать переносимо, в то время как python позволяет писать переносимый код. Сам язык Python будет работать переносимо, но внешние библиотеки могут или не могут. Кроме того, python будет свободно предоставлять доступ к специальным сервисам платформы.
Есть ли у Java преимущество? Я думаю, что в любом случае вы можете написать переносимый код с такой же легкостью. То есть вы можете написать код, и он обычно будет работать на разных платформах. Но вы не можете сойти с рук, просто написав код и предполагая, что он будет работать везде. Я работал над проектом на python, который выпускал версии для Windows, Linux и Mac, и у нас было очень мало кроссплатформенных проблем. (Единственное, что я помню, было из-за ошибки в библиотеке, в которой мы использовали pygame, которая вызывала проблемы с рисованием в Linux. Это было исправлено путем обновления используемой нами версии pygame)
Другая проблема - развертывание. Если вы хотите распространять автономные программы, которые запускают ваш код, вам придется создавать разные версии для разных платформ. Для Java вы можете распространять одну версию и предполагать, что пользователь установил Java или может установить ее. В этом случае Java, вероятно, выигрывает в простоте отдела развертывания.
В конце концов, я думаю, что все сводится к тому, с каким языком вам нравится работать и какое развертывание вам нужно выполнить.
источник
В то время как Java не может быть или единственным жизнеспособным кросс-платформенный инструмент, имеет некоторые преимущества:
и некоторые недостатки:
Говоря конкретно о Java платформе , есть еще один момент:
источник
Сегодня это так же верно, как и тогда, то есть не полностью. Java пишется один раз, везде тестируется и отлаживается. Конечно, это намного меньше работы, чем совершенно новый порт, но, как правило, это больше работы, чем предполагали вначале.
У нашего продукта есть Java-сервер, который будет работать на Windows или Linux, но мы столкнулись с определенными проблемами ОС и убедитесь, что у нас есть серверы Linux и Windows, доступные для поддержки / тестирования, если это необходимо. Пользовательские интерфейсы Java, как правило, имеют больше проблем, чем серверы (хотя многие из них носят косметический характер и поэтому потенциально могут игнорироваться в зависимости от приложения).
Хотя для меня это не совсем язык, Интернет является кроссплатформенной платформой. Интерфейс HTML / JavaScript означает, что ваше приложение будет работать практически на любой клиентской платформе, и в большинстве случаев это была реальная цель - не нужно беспокоиться о том, был ли это Mac или ПК, какая версия ОС и так далее.
Конечно, вы, как правило, по-прежнему будете диктовать серверную платформу, но когда люди просто становятся более гибкими, особенно в те дни, когда большинство компаний уже поддерживают сочетание серверов Windows и Linux.
источник
Лично я бы сказал, что Java по-прежнему является кроссплатформенным языком выбора и, вероятно, останется там некоторое время (наряду с веб-приложениями). В этом посте я написал еще несколько статей на эту тему о Java как о платформе , но в частности о кроссплатформенном:
Пока вы осторожны с вашими зависимостями (например, избегаете библиотек, использующих JNI для взаимодействия с нативным кодом), тогда Java можно писать без изменений на всех основных платформах JVM.
Поскольку Java обычно распространяется как машинно-независимый байт-код, его можно запускать без перекомпиляции на любой JVM (поскольку локальная JVM сама выполняет JIT-компиляцию в нативный код). Например, мне удалось получить достаточно сложное приложение с графическим интерфейсом для первого запуска на Mac после разработки в Windows - с тем же файлом jar . Сравните это с большинством других кроссплатформенных языков, которые обычно требуют разных библиотек или перекомпиляции для другой платформы.
Множество базовых библиотек, которые вам нужны (GUI, сеть, IO и т. Д.), Являются частью стандартной среды выполнения и написаны кросс-платформенным способом. Таким образом, вам не нужно искать и тестировать кроссплатформенные библиотеки, вы гарантированы, что почти все, что вам нужно, уже есть в среде выполнения.
источник
Я думаю, у вас есть такой выбор:
1) использовать либо
2) Как вы будете упаковывать и доставлять свой код?
Эти варианты влияют на производительность, видимость и распространение кода.
Вы не против отдать свой исходный код? Скомпилированные языки могут быть для вас. Похоже, что скомпилированные языки работают лучше в микро-бенчмарках, чем интерпретируемые (даже JITed) языки. Также, если вы зависите от среды выполнения, такой как Java, Python, Ruby и т. Д., Ваш код может быть сложнее распространять.
Я обнаружил, что большинство популярных кроссплатформенных настольных приложений используют «Один интерфейс, несколько двоичных файлов» с использованием C / C ++ и библиотеки кроссплатформенных виджетов, например, Audacity, Blender, Firefox, Google Планета Земля, OpenOffice, Skype, Songbird, Stellarium, VLC.
источник
Я скажу нет. Python и ruby часто используются, как и javascript как для клиентской, так и для серверной части. Я лично использую .NET, и у меня нет проблем, чтобы он работал на Mac и Linux (при разработке на Windows)
Я слышал, что LLVM становится популярным, но все еще очень мал. Это позволит вам использовать кроссплатформенный C ++ в одном двоичном файле. Очевидно, это будет выполнено в браузере, но я не видел пример, где он позволяет вам изменять dom или вызывать javascript.
источник
Если вы добавите в платформу мобильные платформы, вам по крайней мере потребуется включить перекомпиляцию. Например, Android, J2me.
источник