Является ли Java кроссплатформенным? - PullRequest
23 голосов
/ 12 мая 2011

Я хочу разработать кроссплатформенное приложение.

Является ли Java кроссплатформенным?Я имею в виду, могу ли я разработать Java-приложение для Windows и использовать его в Mac OS X и Linux?

Если да, то как?

Я нахожу приложение, написанное на Java, имеет дваустановочный файл один для Windows и другой для Mac.Это смущает меня.

Любая иллюстрация или предложение будут высоко оценены.

Ответы [ 9 ]

43 голосов
/ 12 мая 2011

Является ли Java кроссплатформенным?

Java является кроссплатформенным в том смысле, что скомпилированная JavaПрограмма работает на всех платформах, для которых существует JVM.(Это относится ко всем основным операционным системам, включая Windows, Mac OS и Linux.)

Я имею в виду, я могу разрабатывать приложения Java в Windows и использовать его в Mac и Linux?

Да, это возможно.

Это (и аспект безопасности) является одним из основных преимуществ запуска программв виртуальной машине.

Если да, то как?

  • Написать свое приложение на Java (In .java файлов)
  • Скомпилируйте ваше приложение, используя Eclipse или javac (в .class файлы)
  • (Опционально) Объедините ваши файлы .class в исполняемый файл (.jar файл)

Тот же самый файл .jar может распространяться и выполняться в системах Windows, Mac и т. Д.

Я нахожу приложение, написанное на Java, имеетДва установочных файла: один для Windows, другой для Mac.Это меня смущает.

Это потому, что некоторые приложения используют функции, специфичные для платформы.Затем они объединяются с различными библиотеками, специфичными для платформы.

Если вы не разрабатываете приложение, которое само опирается на функции, специфичные для платформы (например, системные вызовы низкого уровня), вы должны иметь возможностьвсе нормально с обычной Java.

Важный комментарий от @ Peter Lawrey :

Это может быть во время приложенияне зависит от платформы, программа установки - нет.Например, у IntelliJ есть три установщика для конкретной платформы, которые не написаны на Java, но имеют zip-архив, который вы можете просто распаковать на любую платформу, и он будет работать.

3 голосов
/ 12 мая 2011

Вы можете запускать приложения Java на любом устройстве, на котором установлена ​​JVM.Если это не так, вам не повезло.

Комментарий от Одед важен.C и C ++ имеют компиляторы на многих устройствах.

Байт-код Java не нужно перекомпилировать при переключении платформ.

C и C ++ потребуют, чтобы разработчик перекомпилировал приложение перед распространением его на целевую систему, но как только это будет сделано, клиенты смогут работать без проблем.

Проблема платформыС конкретными настройками и настройками нужно работать независимо от того, какой язык вы выберете.Чем больше ваше приложение зависит от особенностей платформы, тем менее переносимым оно будет.

ОБНОВЛЕНИЕ:

Давайте вернемся к исходным словам в вопросе:

Я хочу разработать кроссплатформенное приложение.

Вот цель - прямая цитата.Нет подробностей о веб-приложении, мобильном или настольном приложении.

Является ли Java кроссплатформенным?Я имею в виду, могу ли я разработать Java-приложение для Windows и использовать его в Mac OS X и Linux?

Определить «кроссплатформенность».Похоже, смещение здесь "переносимость байтового кода".C / C ++ не может этого сделать, но «переносимость исходного кода», безусловно, возможна, если вы придерживаетесь ANSI C / C ++ и воздерживаетесь от использования расширений поставщиков.

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

Если в этом блоке я заменил «C / C ++» на «Java», то кроссплатформенность означает нечто иное.не могу подобрать .exe или .so, скомпилированные для одной платформы, и ожидать запуска его на другой, но если я создаю .exe или .so для каждой платформы и делаю их доступными, то, безусловно, можно сделать один и тот же исходный код работающим на несколькихплатформы.

Если да, то как?

Если вы упаковали свое Java-приложение в виде JAR, вы можете установить его на любую платформу, какую пожелаете.

Если у вас есть несколько C / C ++ .exes для интересующих вас платформ, вы, безусловно, можете запустить их, когда вам нужно.

1 голос
/ 24 мая 2011

Существует важное предостережение относительно переносимости Java. «Бизнес-логика» (не относящаяся к пользовательскому интерфейсу) довольно переносима, но для Java есть как минимум полдюжины различных (и несовместимых) парадигм пользовательского интерфейса, например, Java-код, написанный для запуска на Android (даже игнорируя Android). несовместимая JVM) не будет работать на телефоне Nokia, и код любого из них не будет работать на настольном ПК.

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

0 голосов
/ 27 апреля 2017

Большая проблема, когда мы говорим о мобильных приложениях. Для настольных ОС java может работать отлично, а для мобильных устройств разработчики могут практически создавать только для Android. Существуют такие инструменты, как Totalcross , которые помогают разработчикам Java создавать приложения для iOS и Android. Основное внимание уделяется допущению WORA для каждой платформы, даже мобильной.

0 голосов
/ 04 ноября 2015

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

SUN / Oracle делает стандартную реализацию JAVA для Windows,MAC и Linux, и если вы создаете программы с их JDK, вы должны запускать программы с их JRE, если вы пытаетесь запустить его с другими JRE, могут быть проблемы с совместимостью.

Это можно увидеть больше на мобильных устройствах,некоторые производители телефонов не будут полностью реализовывать JAVA из-за аппаратных ограничений или из-за того, что они хотят управлять программным обеспечением устройства, они несут логотип JAVA, но вы должны использовать свой собственный JDK, и эти программы не смогут работать вне их реализации JVM.

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

0 голосов
/ 16 мая 2013

Я написал небольшую игру на Java со звуком. Я использовал стандартную библиотеку (классы AudioInputStream и Clip). Программа очень хорошо работает с Windows XP, НО у меня нет звука с Windows Seven или Linux Ubuntu.

Java 6 была установлена ​​для всех этих ОС, и я скомпилировал программу со стандартным компилятором JAVAC.

Так что Java не настолько "кроссплатформенный".

0 голосов
/ 12 мая 2011

Зависит от того, что вы подразумеваете под «кроссплатформенностью». Код Java может быть скомпилирован в двоичный класс байт-кода или файлы JAR в любой ОС, поддерживающей JDK, и запускаться на любой платформе, поддерживающей JRE. Однако большинство скомпилированных языков могут быть скомпилированы на любой платформе при условии, что разработчики позаботятся об этом. Java легче переносится, чем, скажем, C ++, но это не означает, что код C ++ не сможет компилироваться ни на одной платформе.

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

0 голосов
/ 12 мая 2011

Java-приложения упакованы в файлы .jar. Они могут работать в любой операционной системе, которая реализует правильную среду выполнения Java для приложения, при условии, что пользователь установил эту JRE (JRE предоставляются пользователям бесплатно).

Точная процедура запуска приложения отличается для каждой операционной системы.

Java Development Kit предоставляет библиотеки, которые позволяют вызывать системные функции (например, файловые операции, пользовательские интерфейсы), которые должны работать в любой ОС. Однако точное поведение может отличаться (аналогично тому, как сайт может выглядеть по-разному в разных браузерах). Кроме того, Java-приложения могут иметь «внешний вид», который точно не соответствует внешнему виду приложений, разработанных специально для этой ОС.

0 голосов
/ 12 мая 2011

Да, Java, написанная и скомпилированная в одной ОС, может работать в другой ОС.Для многих современных операционных систем доступны JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...