LINUX.ORG.RU

облегчить java

 


1

2

проблема: допустим, написан скрипт на 3 строчки на java. Потом нужно передать его пользователям, и чтобы он точно запустился, вместе со скриптом надо бандлить JDK. Ну вы понели да, 5 двухкилобайтных хэлловорлдов в таком исполнении займут 1 Гигабайт.

вопросы:

1. можно ли как-то автоматически обрезать openjdk/jre так, чтобы там осталось только то, что я действительно хочу использовать? Типа, у меня в программе нет никакого пути, который использовал бы вот эти 30 мегабайт классов, поэтому сделаем им rm-rf.

2. можно ли как-то в intellij idea (или eclipse) задать в качестве целевой платформы именно JRE, и чтобы оно дичайше кричало, стонало, и красило красным все случайно использованные фичи из JDK? (Если прикладывать JRE вместо JDK, 5 скриптов займут 250 мегабайт). (Пока даже не задумывался, что это за фичи такие... ну например, если захочу поднять какой-то веб-сервис с JSP на Jetty, то для запуска потребуется JDK, верно?)

★★★★☆

ну например, если захочу поднять какой-то веб-сервис с JSP на Jetty, то для запуска потребуется JDK, верно?)

Блин и ты еще тут прикидывался ярым жабакодером.

вот изучай: http://docs.oracle.com/javase/8/docs/ - обрати внимание что в jdk входят только tools, среди них две rcp платформы: эклипс (jmc) и netbeans (jvisualvm) одновременно, да 8)

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

5 двухкилобайтных хэлловорлдов в таком исполнении займут 1 Гигабайт.

Ты с каждым хелловорлдом собрался поставлять отдельный экземпляр JDK?
Нормальные люди свои «5 двухкилобайтных хэлловорлдов» кладут в отдельный пакет, а JDK либо объявляют в зависимостях, либо он ставится предварительно, как нечто само сабой разумеющееся.

blexey ★★★★★ ()

Просто лирическое отступление: именно поэтому в свое время не стал всерьез рассматривать Java и сосредоточился на Qt, а оно тоже прилично кушает, но не так.

Подписался на тему, хочу знать что там нынче с модульностью Java как платформы...

I-Love-Microsoft ★★★★★ ()

как минимум JRE установлен у любого современного пользователя, так что я бы не парился на этот счет.

slyjoeh ★★★ ()
Ответ на: комментарий от blexey

1) в системе может не быть системы пакетов, или она непопулярна. Например, в Windows или OSX.
2) у пользователя может не быть прав на установку пакетов.
3) пользователь может быть дибил и не разобраться с пакетами. (true story, чувак)
4) особенно если у него нет интернета
5) связываться с пакетами - значит обречь себя на постоянную поддержку 50+ версий линукса
6) мне может быть нужна своя джава. Да, можно собрать её в /usr/bin/myjava, но что если среди использованных либ встречается то, во что захардкожено именно /usr/bin/java?
7) пользователь может ненавидеть джаву (н-р он лоровец) и не станет качать софтину если известно что она на жабе

первое что пришло в голову

нужно всегда готовиться к самому худшему, а самое худшее - это то, что пользователь - клинический дибил, а система у него расхерачена вхлам (поломанный индекс пакетов, поломанный init.d, поломанное всё), и его пароль от рута съёл пёс.

нет, в идее «всё своё тащу с собой» (кроме сишного тулчейна и ядра ос) я уверен твердо. Надо просто как-то умно определять нужное и ненужное.

допустим, в Scala на Javascript платформе это сложно, поэтому страничка с хэлловорлдом и весит 5 мегабайт. А тут-то у нас джава, тру статика, все дела.

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Разве это не лишь планы а уже суровая реальность? Кажись говорили что для 8-ки не успели...

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от stevejobs

колумбийские наркобароны молча завидуют тебе, о падаван

shty ★★★★★ ()
Ответ на: комментарий от stevejobs

обана. Вот это прикольно. Ее наверно и на node можно натянуть...

anonymous ()
Ответ на: комментарий от umren

да, я тоже считаю, что для таких задач клиентские приложения нужно писать на go или RUST, все вот эти пляски, с portable-обрезанным-jre это костыли.

BillDver ★★★ ()
Последнее исправление: BillDver (всего исправлений: 1)

Покажи скрипт сначала. Если программа-скрипт занимает 2КБ на йаве, на пузоне/перле/баше/вотевер она с 99%-ной вероятностью будет занимать 100 строк и дело с концом. Не борись с выдуманными проблемами. Гвозди и микроскоп. Героически преодолевать придуманное. И т.д.

anonymous ()

Как-то я устанавливал Moblie Partner, там Java 5 была в комплекте. Занимала совсем мало места. Просто используй JRE, а не JDK.

ZenitharChampion ★★★★★ ()

можно ли как-то в intellij idea (или eclipse) задать в качестве целевой платформы именно JRE, и чтобы оно дичайше кричало, стонало, и красило красным все случайно использованные фичи из JDK

Смеялся долго и громко.

anonymous ()

В jdk8 появились compact1, compact2 и compact3 - урезанные наборы классов. Соответственно, jre с их поддержкой и места занимает меньше, причём, заметно меньше.
Ну, это, если место критичнр.

GblGbl ★★★★★ ()

компилируй в бинарник посредством gcj [trollface]

wakuwaku ★★★★ ()

ты выбрал неправильный(не походящий) язык для своей задачи, юзай сишку, как веля цари... или используй c++/qt, если адекват)

Noob_Linux ★★★ ()

Имей в виду, что произвольная программа может рефлекшном дёргать что хочет и понять это на этапе компиляции невозможно.

Class.forName(args[0]).getMethod(args[1]).invoke(null)

Legioner ★★★★★ ()
Ответ на: комментарий от slyjoeh

Некоторые специально её выключают или удаляют, боятся вирусов.

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от BillDver

так извращенцы пытаются все писать на одном языке, что как бы глупо

каждая задача решается лучше чем то отдельным, а они все своим спрингом пытаются сделать

umren ★★★★★ ()
Ответ на: комментарий от stevejobs

Всё, можешь закапывать ненужный javascript

чего? эта скала твоя ненужна, c javascript'ом все норм.

anonymous ()
Ответ на: комментарий от stevejobs

1) в системе может не быть системы пакетов, или она непопулярна. Например, в Windows или OSX.

Но ведь в OS X есть brew, а Windows очень популярна. Плохой пример.

2) у пользователя может не быть прав на установку пакетов.

ЕМНИП, джаву можно поставить для текущего юзера в «хомяк».

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от slyjoeh

JRE установлен у любого современного пользователя

это какие-то особые пользователи, видимо. лично я впервые установил эту вашу жаву только когда захотелось потыкать minecraft, до этого она была мне не нужна. и я знаю массу пользователей, у которых жавы нет и не предвидится, т.к. нет ничего, чему она была бы нужна.

CryAngel ()

Неадекватный выбор инструмента. Нет, ты, может быть, даже что-то накостыляешь, но это вприсядку в гамаке.

Я бы для таких целей go взял. Если, конечно, gui не нужен (мне его успешно заменяет веб-морда).

feofan ★★★★★ ()

Я вот тоже пилу жду, но мне кажется что скрипт на три строчки будет лучше писать на чём-то другом.

ya-betmen ★★★★★ ()
Ответ на: комментарий от stevejobs

может не быть

У пользователя может не быть компьютера, но ты же не рвёшься прикладывать ноуты.

связываться с пакетами - значит обречь себя на постоянную поддержку 50+ версий линукса

Пакуй для убунты/дебиана - остальные перепакуют.

самое худшее - это то, что пользователь - клинический дибил, а система у него расхерачена вхлам

На таких пользователей лучше забивать, если они тебе не платят.

ya-betmen ★★★★★ ()
Ответ на: комментарий от slyjoeh

Ну-ка раскажи нам, где ты в brew нашел jdk или jre

1) в системе может не быть системы пакетов, или она непопулярна. Например, в Windows или OSX.

Говорилось про пакеты вообще, а не про джаву в частности.

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от stevejobs

1) в системе может не быть системы пакетов, или она непопулярна. Например, в Windows или OSX.
4) особенно если у него нет интернета

Тогда система доставки контента должна быть на основе внешнего носителя, подходящего целевому пользователю твоих «пяти строчек», на который ты должен уместить всё необходимое.

2) у пользователя может не быть прав на установку пакетов.
3) пользователь может быть дибил и не разобраться с пакетами. (true story, чувак)

Обращайся к администратору целевой системы, которому действительно нужны твои «пять строчек».

5) связываться с пакетами - значит обречь себя на постоянную поддержку 50+ версий линукса
6) мне может быть нужна своя джава. Да, можно собрать её в /usr/bin/myjava, но что если среди использованных либ встречается то, во что захардкожено именно /usr/bin/java?
7) пользователь может ненавидеть джаву (н-р он лоровец) и не станет качать софтину если известно что она на жабе

Это уже проблемы разработчика.

blexey ★★★★★ ()
Последнее исправление: blexey (всего исправлений: 1)
Ответ на: комментарий от Midael

На несколько «скриптиков» хватит и триала :)

f1xmAn ★★★★★ ()
Ответ на: комментарий от ya-betmen

самое худшее - это то, что пользователь - клинический дибил, а система у него расхерачена вхлам

На таких пользователей лучше забивать, если они тебе не платят.

Если они еще и платят то валить оттуда надо побыстрому.

Deleted ()
Ответ на: комментарий от Deleted

обрати внимание что в jdk входят только tools

для сборки JSP тулзы как раз и нужны, поэтому я сразу вспомнил Jetty. Или например, Jasper Reports при генерации отчета ругается «A full JDK (not just JRE) is required». Например у меня аппа из 3 строчек, которая джаспером генерит отчётец - и всё, приехали.

stevejobs ★★★★☆ ()
Ответ на: комментарий от blexey

Обращайся к администратору целевой системы, которому действительно нужны твои «пять строчек».

представим, что скрипт написан для постинга в лоровских Толксах. Его пытается запустить какой-нибудь криворукий школьник на своём плохо собранном генту. Вопрос в том, как можно избежать массового разрыва жоп.

Напомню, что сам факт необходимости предварительной установки JRE/JDK уже может вызвать у половины шизофреников приступ трясучки, «java тормозит», «через java лезут вирусы», «у меня нет времени устанавливать JDK», «у меня слишком маленький HDD/RAM/интернет чтобы устнавливать kdelibs JDK» итп.

Потом как приступ пройдёт, шизик пойдет кричать по интернетам про «java тормозит», «stevejobs пидр пишет незапускающиеся скрипты», «$имясофта - говно потому что не работает», итп.

stevejobs ★★★★☆ ()

C++/Qt со статической линковкой.

EXL ★★★★★ ()
Ответ на: комментарий от Deleted

Если они еще и платят то валить оттуда надо побыстрому.

Ну это уже на усмотрение, я только против того чтоб из-за идиотов страдали нормальные люди.

ya-betmen ★★★★★ ()
Ответ на: комментарий от stevejobs

Любая кросс-платформенная хрень подразумевает предварительную установку каких-то прослоек. Для неосиляторов под вендой всё можно упаковать в самоустанавливающийся setup.exe, проверяющий, тем не менее, а вдруг на целевой машине уже есть всё что надо.
Для любителей делать всё вручную можно расписать поподробней, как поставить только твои килобайты и не засирать себе систему.

blexey ★★★★★ ()

А можно сделать как-нибудь чтобы много жарников-демонов запускать в одном жвме? причём хотелось бы без перезапуска, написал там комманду и жарник подгрузился и его main запустился в отдельном треде типа.

Debasher ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.