| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > exe файл Java программы |
| Автор: dimoZa 9.10.2005, 22:02 |
| Привет! Очень волнует вопрос создания еxe-файла Java программы. Конечно есть встроенная функция, начиная с версии JBuilder 7, создания экзэшника, но он запускаеться только на тех компах, у которых поставлен JDK, а мне нужно создать экзэшник такой, чтоб он мог запускаться на любом компе, не от чего не зависимо, кто знает как сделать помогите плиз. |
| Автор: batigoal 10.10.2005, 07:35 |
| Исполнение Java-программы без JRE невозможно. Воспользуйся поиском, тема частенько обсуждается. Существуют сторонние программы для создания exe-файлов, но все они требуют установки JRE (либо включают ее в дистрибутив). |
| Автор: LSD 10.10.2005, 09:36 | ||
Есть возможность полностью отказаться от JRE (вернее она будет в виде native кода вкомпилированна в приложение). Тема действительно неоднократно обсуждалась поищи по словам Jet Excelsior и GCJ. Лично я пробовал Jet Excelsior, он действительно компилит в native код, приложение запускается без JRE, не требует никакой инсталяции. Единственное но, надо таскать с собой пару увесистых dll-ей. |
| Автор: vzf 10.10.2005, 10:37 |
| Ну в линуксе можно скомпилировать java файл и получить исполняемый Точно не помню, но что то вроде > gcj Hello.java -o Hello.exe могу ошибаиться в ключах запуска. + Есть какая-то утилита от Sun чтобы получить из класса exeшник, но не помню как называется, дома посмотрю |
| Автор: Бонифаций 10.10.2005, 10:42 |
| gcj --main=Hello Hello.java -o Hello И все. Есть и под windows и под linux |
| Автор: dimoZa 10.10.2005, 14:22 | ||||
Это где набирать надо и как под Windows. Добавлено @ 14:23
Насколько увесистых? |
| Автор: LSD 10.10.2005, 15:36 | ||
5-30Мб. |
| Автор: Бонифаций 10.10.2005, 16:39 | ||||
да ну, перестаньте, вот у меня перед глазами скомпилированная небольшая явовская програмка с swt интерфейсом. Сам exe файл - 1.2M, swt-win32-3116.dll - 311K из внешних зависимостей только kernel32.dll, advapi32.dll, msvcrt.dll, user32.dll и ws_32.dll - то естьто что обычно и использует самый стандартный экзешник. |
| Автор: LSD 10.10.2005, 17:01 | ||
1. Я говорил про тот exe-шник, что пораждает Jet Excelsior 2. Что то тут явно не так, в состав JRE входит порядка 14000 классов. и все эти классы скомплировались в 1.2M? Да я понимаю что не все они используются, но все равно графическое приложение 1500 классов должно использовать. К тому же куда делись нативные библиотеки JRE (awt.dll, java.dll, zip.dll - да вообщем полно их там)? |
| Автор: Бонифаций 10.10.2005, 18:28 | ||
я наврал... java.dll и т.д. в gcj вообще нет. В них нету необходимости. Это же нативный компилятор, там достаточно нужный код в библиотеку закатать.. |
| Автор: dimoZa 10.10.2005, 20:17 |
| Большое спасибо всем ответившим. Из-за таких объемов логично будет использовать экзещник от Delphi, но увы я его не знаю, придеться че-нить придумывать. |
| Автор: Ch0bits 10.10.2005, 20:29 | ||
А чё он какой огромный? 56mb дистрибутивчик... авось за ночь закачаю, заценю. Кстати никто не сравнивал скорости работы .jar(.class) и откомпиленых(.exe) java-программ? А как насчёт стабильности работы, никаких глюков не наблюдалось? |
| Автор: LSD 10.10.2005, 23:02 | ||||||
Да там у них своя мини IDE для компиляции (кстати явно написанная на Java).
Во первых зайди в "Очередные данные о "медленности" JAVA" и посмотри пост Бонифаций. Во вторых я сравнивал, и у меня JRE показало лучший результат чем Jet Excelsior, хотя JRE была самая последняя а Jet Excelsior годовалой давности.
Не может этого быть! В этой библиотеке содержатся native методы для всего java.lang, java.io и некоторых других. Отказаться от этих методов нельзя в принципе, поэтому или они сами их реализовывали, гарантируюя при этом одинаковость поведения с Sun-овскими методами, или просто используют уже имеющуюся библиотеку от Sun (или линкуя ее в exe-шник или динамически подключая по ходу дела). Плюс код для тех классов что исполюзуются, а байт код значительно компактнее кода x86 процессоров. Попробуй скомпилить демку Java2D из состава JDK и посмтореть сколько она будет занимать. Только для чистоты эксперимента запускай на чистой машине, где нет JRE. |
| Автор: sergejzr 10.10.2005, 23:15 |
| gcj для графики вообще gtk использует. Там сам экзешник маленький, но если все либы устанавливать, что ему нужны будут, то лучше уж поставить 15 МБ JRE и не мучаться. К тому же весь пакет можно предоставить как одну программу. Посмотрите нашего охотника и инсталлятор к нему от Пегаса. Если не обращать внимание на стиль GUI, вообще можно не заметить, что прога на яве. А 15 МБ в наше время не вопрос. Хорошая прога должна минимум столько весить. Для важности |
| Автор: Бонифаций 11.10.2005, 09:43 | ||||
конечно сами. Это проект http://www.gnu.org/software/classpath/ ,совместимость там - ну новых модных штучек типа system.out.printf там нет, определенные странности наблюдаются , но в общем достаточно полная. |
| Автор: Бонифаций 11.10.2005, 09:58 | ||
почему gtk?? что привяжешь, то и будет использовать. swt на windows к примеру напрямую без gtk работает.. А насчет 15М jre - посмотрите: bash-2.05b$ pwd /usr/lib/j2sdk1.4.2_04/jre bash-2.05b$ du -sk . 62942 . то есть примерно 63M на windows: bash-2.05b$ pwd /win_e/jre bash-2.05b$ du -sk . 50720 . то есть 50M |
| Автор: LSD 11.10.2005, 09:58 | ||
| Попробуй все же скомпилить Java2D. Вот она использует возможности Java2D API если не на 100% то уж на 80% точно. Мне интерестно она пойдет и насколько она шустрее будет. P.S.
Для запуска под виндой требуется cygwin? |
| Автор: Бонифаций 11.10.2005, 10:32 | ||
нет не требуется. |
| Автор: sergejzr 11.10.2005, 11:18 | ||||
Потму что GCJ использует GTK.
Ты знаешь разницу между JRE и JSDK ? |
| Автор: Бонифаций 11.10.2005, 11:41 | ||||
обратите внимание на каталог, в котором подсчитывался обьем файлов.. Ну если вы не хотите проверить это сами, давайте посмотрим на живом примере. идем на java.sun.com, выбираем загрузку J2SE Runtime Environment 5.0 Update 5 для линукса, он по списку 15.67М, скачиваем, получаем bash-2.05b$ ls -alh drwxr-xr-x 4 walrus wheel 280 2005-10-11 12:40 . drwx--x--x 97 walrus wheel 11176 2005-10-11 09:00 .. -rw-r--r-- 1 walrus wheel 16M 2005-10-11 12:38 jre-1_5_0_05-linux-i586.bin Запускаем его, он спрашивает лицензию, производит устновку, заходим в результирующий каталог и смотрим bash-2.05b$ cd jre1.5.0_05/ bash-2.05b$ du -sk . 87377 . то есть результат после установки 87 тыщщ 1к блоков грубо говоря 87М Какие уж там 15М? там только один rt.jar на 34М |
| Автор: sergejzr 11.10.2005, 12:24 |
| Сносим яву с компа, совсем. Или берём комп. на котором явы не существовало ещё. Идём на http://www.hunter.vingrad.ru/?view=downloads и качаем по первой ссылке Охотник 1.0 c JRE. Запускаем инсталлятор. Работает Всё удовольствие - 15.37 Мб Ясное дело, что он распакуется и займёт сколько ему надо. |