| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Приложение на JAVA ??? |
| Автор: maxius 30.4.2004, 19:33 |
| Написал приложение на Java (пара тройка классов), можно ли сделать так, чтобы оно было полностью независимым т.е. чтобы оно запускалось на любой машине, не требуя установки всего компилятора, за исключением VJM. (Например как в С есть исполняющий *.exe файл). В JAVA только *.bat ??? (надеюсь проблему изложил понятно) |
| Автор: simanyay 30.4.2004, 19:58 |
| Судя по изучению структуры NetBeans IDE, jEdit etc. я обнаружил, что они все делают свой скрипт (а иногда и EXEшники) для конкретной системы. Т.е. в NetBeans IDE в папке bin находятся следующие файлы: runide.bat - Windows runidew.exe - Windows executable runide.sh - Linux etc. Надеюсь, что помог Добавлено @ 20:01 Только что заметил, что они написали установщик (*.jar) и он настраивает всё под конкретную систему. И только что меня осенило, что если юзер поставил JVM, то ему достаточно java и java -jar |
| Автор: maxius 30.4.2004, 20:03 |
| Спасибо, гляну... |
| Автор: maxius 30.4.2004, 20:20 |
| Честно говоря понятия не имею как выполнять данную операцию. Если правильно понял создать EXE-шник средствами Java можно ??? |
| Автор: DarkDS 30.4.2004, 21:59 | ||
Нет. Средствами ява создать ехе ты не можешь. Есть утилиты, которые трансируют ява байт код в машинный код (где то был тред про них) Средствами ява можно создать jar файл (как его создавать тоже тред был). А вот этот файл как раз запускается средствами JVM То есть для запуска jar файла тебе нужно: 1, Уставновленная JVM (к примеру JRE от сана) 2. сам jar файл. Запуск последнего можно произвести так: 1. java -jar yourfile.jar (это команда действует только когда в майнфест файле прописан майн класс) 2. java -cp yourfile.jar package.MainClass (если майн класс лежит в корне, то пакедж не пишется. Майн класс - класс с майн методом. пишется без расширения) Добавлено @ 22:00 ЗЫ. бат файл в чаще всего содержит одну из 2-х последних команд. |
| Автор: LSD 30.4.2004, 22:44 |
| Есть утилиты которые позволяют создавать исполняемые файлы из jar-ов. Например JBuilder может такое делать, создается исполняемый файл, который по сути представляет собой jar архив с запускающим его модулем и все, есть и сторонние утилиты для этих целей. На крайний случай можно воспользоваться саморапаковывающимися архивами. Но все эти методы требуют установленной Java машины. А по поводу полного перевода байт-кода, в native код, это на мой взгляд возможно, только в ОЧЕНЬ ограниченном числе случаев (хотя я видел упоминание о компиляторе из Java в Си). |
| Автор: sergejzr 1.5.2004, 02:49 |
| есть такая вещь gcj на всяких linux'ax пашет прекрасно. К сожалению на windows требует cygwin, потому что его версии, которые мне попадались были скомпилированы именно на cygwin'e. Чисто теоретически gcj можно скомпилировать например с VC++. Тогда должен работать без Cygwin'a. |
| Автор: simanyay 1.5.2004, 19:12 | ||
А зачем это под Линуксом? Там можно настроить систему так, что Java проги будут запускаться как обычные. Т.е. не надо писать java myjavaprogram, а можно просто myjavaprogram. И чем это отличается от EXE? Под Windows, когда ставиться JRE, то все .jar файлы автоматически запускаются через javaw. Так что я просто два раза кликаю (ну или, чаще всего, нажимаю Enter) и JAR запускается. |
| Автор: Гость_maxius 4.5.2004, 16:27 |
| Огромное спасибо всем, я получил ответ на свой вопрос. |
| Автор: LSD 6.5.2004, 20:39 | ||
Такого поведения можно и в виндах добиться: достаточно прописать ассоциации class, jar и PATHEXT добавить class и jar. 2 sergej.z А можно ссылочку? |
| Автор: sergejzr 6.5.2004, 22:35 |
| Что бы тебе не заниматься поиском зря, сообщу пару важных вещей, которые возможно сразу покажут подходит или не подходит тебе решение GCJ. Пару пунктов за и против. пункты против существуют только для виндов:
Ну, а теперь, если тебя не смущают вышеизложенные пункты, линьки по сабжу: http://gcc.gnu.org/java/ http://gcc.gnu.org/install/specific.html#windows http://www.cygwin.com/ |
| Автор: temporary 8.5.2004, 12:25 |
| Тема уже была http://forum.vingrad.ru/index.php?act=ST&f=9&t=10136 |
| Автор: Likurg 9.5.2004, 20:08 |
| Я создал ексешник с помощью JET, на моем компе все ок,а на чужом появляется командная строка и исчезает,ничего не запускается, что делать не подскажите? |
| Автор: LSD 9.5.2004, 22:33 |
| Попробуй начать с минимума: скомпилируй HeloWorld и проверь как он работает. Если заработает то проблема в твоей программе (вернее поиск надо вести в ней), а если нет значит надо смотреть на еастройки JET-а: целевая платформа, используемые библиотеки и т.д. |
| Автор: Stvan 11.5.2004, 06:48 |
| Тоже попробовал jet, все зашибись, но при запуске программы появляется досовское окошко. Может кто знает как его убрать ? |
| Автор: Likurg 11.5.2004, 14:14 |
| Stvan а ты пробовал запускать эту программку в ексешники на другом компе?где нету jet? |
| Автор: ElectricalStorm 11.5.2004, 19:17 |
| тоже пользовался JET мне непонравилось на своей скомпилил - работает на другой нет |
| Автор: Stvan 12.5.2004, 08:01 |
| На другой не пробовал, у меня personal edition не даст собака. А кряка нет случайно у кого-нибудь ? |
| Автор: fplab 12.5.2004, 09:29 |
| Поглядите http://www.dobysoft.com/products/nativej/index.html. Сам не пробовал, но вдруг это то, что надо |
| Автор: Stvan 14.5.2004, 03:21 |
| Тоже неплохо, но она создает только запускалку. А вот Excelsior Jet это вещчь. Попробовал я на другой машине. В общем дела обстоят так: Компилированый экзешник на другой машине просто так не работает, НО в комплект входит JetPackII. Он создает инсталяшку для вашей программы в которую пакует необходимые dll, и при запаковке также можно засунуть JRE. Получается обычная инсталяшка которая установит приложение куда указано, есть унинстал. |
| Автор: AntonSaburov 14.5.2004, 09:52 | ||
Так тогда я смысла не вижу - берем тот же Инстал Шилдт Профешионал и делаем весьма приличную инсталяху с тем же JRE. Пакет очень мощный - на нем можно программы писать. |
| Автор: Likurg 15.5.2004, 20:10 |
| AntonSaburov Так и делаю. |
| Автор: ShurikA 11.12.2005, 15:02 | ||
Ты не мог бы подсказать как ето делается в JBuilder? |
| Автор: LSD 11.12.2005, 19:33 |
| Вначале создаем исполняемый JAR: File\New\Archive\Application указываем там параметры архива, Name - имя под которым он будет фигурировать в проекте, File name имя JAR-файла, можно указать чтобы используемые библиотеки добавлялись в этот же JAR (но можно в итоге получить архив весом в десяток, другой мегабайт), указываем каком классе находится main. Затем создаем исполняемый файл: File\New\Archive\Executable JAR, аналогично даем имя и указываем ранее созданный архив (если файл не появился, то надо у проекта сделать Rebild), указываем под какие платформы мы хотим получить exe-шник и имена если надо. |
| Автор: ShurikA 11.12.2005, 20:53 |
| LSDБлагодарю! |
| Автор: LSD 11.12.2005, 20:55 |
| Да пожалуйста |
| Автор: Berliner 14.12.2005, 10:18 | ||
Добавлено @ 10:18 где она? |
| Автор: s8e8r8g8e 20.11.2006, 22:19 |
| эээ, изначально вопрос был не полностью независимым, а есть jvm, и из-за этого тащить cygwin и всё остальное это уж слишком, достаточно потребовть например чтоб жава в путях была, тогда на сях будет одна строчка для запуска (если бат чем-то не нравится), или чуть больше строчек если ещё рядом какой конфиг положить |
| Автор: sergejzr 20.11.2006, 22:44 |
| Если jvm установлена, ехе не нужен. Jar также по клику запускается. |
| Автор: 1802 21.1.2007, 15:39 |
| народ! все не так просто, как вы думаете. например, я захотел отправить свою прогу по Е-маил. надо, что бы она весила как можно меньше, и работала на любой машине после установки. так как это сделать???!!! я же не буду отправлять 30-метровые письма. |
| Автор: Bozo 22.1.2007, 00:14 |
| Пиши на асме |
| Автор: Metal_Heart 22.1.2007, 10:34 |
| 1802, Во-первых размер зависит от самой проги! Во вторых, ты можешь требовать, чтоб у клиента была установлена JVM версии тако-то, в результате твой class или jar файл "Hello world" будет весить сущие пустяки. Добавлено @ 10:35 Bozo, ты сюда хулиганить пришел?! |
| Автор: w1nd 22.1.2007, 11:51 |
| У меня предложение к автору темы: написать навороченную (конкурентноспособную) игрушку, которая не зависит от операционной системы и видеокарты. И чтобы по почте посылать можно было. Если идея покажется не самой свежей, вот второй вариант: создать программу, независимую от компьютера. |
| Автор: LSD 22.1.2007, 12:01 | ||
И что? Тут вроде никто не говорил, что это идеальное решение, но иногда оно бывает весьма удобно. Я считаю, что прикладное приложение которое работает с сетью просто обязанно иметь exe файл. По той простой причине, что правила файервола настраиваются именно для приложения, а не для строки запуска и для файервола java -jar some.jar и java -jar other.jar, идентичны. (это в первую очередь справедливо для Windows, хотя и для *nix тоже актуально). |
| Автор: val_vp 22.1.2007, 12:14 | ||
LSD,
сорри не понял как под линём файервол (iptables) по имени программы фильтрует - он же вроде по портам по адресам и т.д. это не под...б мне это реально интересно |
| Автор: chief39 22.1.2007, 12:28 | ||
Пять баллов! Автору: не слишком ли жёсткие требования? И кто их сформулировал? |
| Автор: LSD 22.1.2007, 12:55 | ||
Я сам не линуксоид, просто я спросил знакомого, он сказал, что вроде это возможно сделать. |
| Автор: batigoal 22.1.2007, 22:55 | ||
А был же ассемблерный Doom3. 150 Кб и качество - как у его ДВДшного "прототипа" Молчу, молчу |
| Автор: chief39 22.1.2007, 22:59 | ||||
А что есть зависимее ассебла? Только машинный код
Он может и содержимое пропарсить, если не ошибаюсь. Всё равно через него каждый битик проходит |
| Автор: batigoal 22.1.2007, 23:06 | ||
Под виндой же умеет, почему под никсами нельзя? |
| Автор: val_vp 23.1.2007, 16:02 |
| batigoal, можно но косвенно, при чем довольно сложно я поэтому и спросил как ведь фильтр-пакетов в линуксе (iptables) работает по критериям для этого случая необходим критерий Owner, работающий по pid-ам gid-ам sid-ам вот ссылка http://www.opennet.ru/docs/RUS/iptables/#MATCHES может через проксики это как-то? сорри за оффтопик |
| Автор: batigoal 23.1.2007, 18:19 |
| val_vp, попробуй задать этот вопрос в разделе по Юниху (http://forum.vingrad.ru/Linux-Unix.html). Думаю, там помогут. |
| Автор: val_vp 24.1.2007, 10:45 |
| batigoal, проблема решена новой версией iptables там в критериях owner появилось поле --cmd-owner <имя> - еще раз сорри за оффтопик |