Во что лучше компилировать Java код, в .exe, или в .jar?
недавно начал изучать Java, и хочу узнать во что лучше компилировать Java код, в .exe, или в .jar, в чём их разница, и как это сделать(IDE - IntelliJ IDEA).
Ответы (1 шт):
Для начала давайте разберёмся, как всё устроено в java.
Начнём с запуска программ в среде разработки. Что происходит, когда вы запускаете простейшую программу (Hello, world!), нажимая кнопку "run"?
- Сначала вы пишите код. Этот код записывается в файл с расширением
.java; - Вы нажимаете кнопку "run"(запустить). А в это время происходят две вещи.
Первая: с помощью утилиты javac происходит процесс компиляции: код, понятный человеку, компилируется(переделывается) в код, понятный джаве(этот новый код называется байт-код и для человека он непонятен). Байт-код записывается в файл .class.
Вторая:
утилита java выполняет понятный ей байт-код из файла .class
А теперь главное: ответ на ваш вопрос.
Что же такое файл .jar?
"jar" переводится с английского как "банка". А представляет этот файл из себя почти что zip - архив. Только в этом файле содержатся две важные вещи: байт-коды ваших классов(файлы .class) и папка META-INF,в которой содержится специальный файл - MANIFEST.MF, в котором содержится информация для запуска программы.
Простейший manifest:
файл MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: Имя_вашего_класса_с_методом_main()
На самом деле jar-файл - это готовая программа для пользователя, которую можно запустить без среды разработки. Нужно лишь, чтобы на компьютере стояла jre. Запустить jar можно из командной строки. Если у вас приложение с графическим интерфейсом, то такой jar запускается двойным кликом.
Конечно, если программа, написанная вами, нужна лишь вам, паковать её в jar вовсе не обязательно: среда и без этого её запустит. Но если программа расчитанна на пользователя, то jar необходим.
Как упаковать вашу программу в jar, описано здесь: https://tehadm.ru/threads/kak-sozdat-ispolnjaemyj-jar-v-intellij-idea.667/
На счёт exe: exe - расширение не jav'ы. Но обернуть jar в exe можно(например, с помощью программы launch4j), но это практически ничего не поменяет, поэтому я не рекомендую этого делать. Вместо exe используйте лучше jar.