Как убедиться, что мой * jar или * class будет работать на MacOS? - PullRequest
0 голосов
/ 11 сентября 2018

Извините, если это не по теме. Я новичок в Java и знаю, что Java должна быть кроссплатформенной. Но мне интересно, если тот факт, что мой jar-файл или * файл класса выполняется в Ubuntu, гарантирует, что он будет работать нормально на MacOS?

Я в основном делаю следующее, чтобы создать * class и * jar. Два java-класса, MAIN.java зависят от SIDE.java, и оба java-файла включают заголовок package classes; (javac создает папку с именем classes и помещает туда MAIN.class и SIDE.class):

javac -d . SIDE.java MAIN.java
jar cvfe MAIN.jar classes/MAIN classes/*.class

Я попытался запустить оба:

java classes.MAIN -read number.logs

и

java -jar MAIN.jar -read number.logs

и они оба отлично работают на Ubuntu. Это достаточно хорошо, и он будет работать на MacOS? (У меня нет MacOS, есть ли симулятор, который я мог бы использовать в этом случае, чтобы проверить вещи?)

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Java кроссплатформенна по причине. Ваш java-код преобразуется в байт-код java (ваши файлы .class), а JVM (виртуальная машина Java) - это машина, на которой выполняется ваш байт-код.

Эта JVM поставляется с установкой Java в вашей операционной системе. Таким образом, если вы можете установить JRE (включая JVM), вы можете запустить свой код.

Есть одно исключение, язык Java иногда использует os-стандарты для представления графики (классы awt), поэтому ваша программа, если вы используете эти классы, может выглядеть иначе, но работать одинаково.

То, как, например, операционная система сохраняет файлы, обрабатывается JVM и не должно касаться вас как разработчика высокого уровня, если вы не сталкиваетесь с ограничениями со стороны ОС. Эти ограничения, в зависимости от случая, обрабатываются исключениями. Если вы обрабатываете исключения в своем коде, практически ничего не будет работать в одной операционной системе, если она работает в другой.

0 голосов
/ 11 сентября 2018

Да, этого достаточно, пока вы не используете некоторые переменные среды, то есть специфические для платформы функции, такие как System.getProperty("os.name").

. Эта межплатформенная переносимость обеспечивается JVM.Вы можете прочитать больше об этом здесь .

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