Во что лучше компилировать Java код, в .exe, или в .jar?

недавно начал изучать Java, и хочу узнать во что лучше компилировать Java код, в .exe, или в .jar, в чём их разница, и как это сделать(IDE - IntelliJ IDEA).


Ответы (1 шт):

Автор решения: Зонтик

Для начала давайте разберёмся, как всё устроено в java. Начнём с запуска программ в среде разработки. Что происходит, когда вы запускаете простейшую программу (Hello, world!), нажимая кнопку "run"?

  1. Сначала вы пишите код. Этот код записывается в файл с расширением .java;
  2. Вы нажимаете кнопку "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.

→ Ссылка