Комментарии 13
Просто запускать нужную джаву по полному пути или по нужному симлинку слишком просто?
Запустить по полному пути несложно. И даже подменять каждый раз JAVA_HOME и дюжину симлинков не то, чтобы сложно, но изрядно геморройно. А подменять надо, поскольку вы ведь не хотите лезть в кишки того же gradle, чтобы полменить пути там внутри. Ну, вот эта утиль, собственно, и подменяет то, что нужно. Впрочем, довольно хреново - мне так и не удалось нё запинать. jenv пишет, что переключилась на одну версию, а java -v показазывает другую... :(
Наверно в самом кровавом энтерпрайзе это еще и нужно. Но где энтерпрайз и где Homebrew. А обычный современный софт давно уже ничего не требует. java -jar service.jar -big_config.yaml и поехали.
В энтерпрайзе это не нужно. А вот при разработке в том числе для энтерпрайза версии менять приходится. И кроме вашего java -jar в каталоге JAVA_HOME/bin есть ещё дюжина бинарников, а ещё рантайм, экстёрнал либы, сертификаты. И всё это для разных окружений разное и их тоже надо подменять даже в вашем простейшем хелловорде. И ещё раз внимательнее - я говорил для примера про грэдл. Где у него java -jar service.jar -big_config.yaml ?
И ещё раз внимательнее - я говорил для примера про грэдл
Очень давно не использовал, но первая ссылка Гугла говорит что одной строкой в конфиге все делается.
есть ещё дюжина бинарников, а ещё рантайм, экстёрнал либы, сертификаты
Вот это и используется в кровавых энтерпрайзах. Современная разработка перешла на более простые варианты.
Очень давно не использовал, но первая ссылка Гугла говорит что одной строкой в конфиге все делается.
Да, разумеется. Одной строкой в конфиге гредла, одной строкой в конфиге мавена, одной строкой в конфиге анта и тд и тп. Возможно, кому-то доставляет удовольствие при каждом переключении вручную менять десятки конфигов, но я слишком ленив для этого. Мне бы одной командой.
Вот это и используется в кровавых энтерпрайзах. Современная разработка перешла на более простые варианты.
Ээээ? Вы можете продемонстрировать что именно более простое используется в "современной разработке", чем явский рантайм, явский компилятор, установленный набор сертификатов и набор библиотек? Я, по видимому, отстал от "современной разработки", слишком стар для того, чтобы постоянно менять строчки в десятках конфигов и пропустил момент когда ява отказалась от использования рантаймов, сторонних библиотек и компиляторов.
Да, разумеется. Одной строкой в конфиге гредла, одной строкой в конфиге мавена, одной строкой в конфиге анта и тд и тп. Возможно, кому-то доставляет удовольствие при каждом переключении вручную менять десятки конфигов, но я слишком ленив для этого. Мне бы одной командой.
Профили давно везде есть. Шаблоны и переменные давно поддерживаются во всех конфигах. Все уже решено. Меняется по кнопке. Если вы что-то делаете даже в двух местах, то пора посмотреть подумать и исправить это. Точно есть какое-то стандартное решение.
Вы можете продемонстрировать что именно более простое используется в "современной разработке", чем явский рантайм, явский компилятор, установленный набор сертификатов и набор библиотек?
Ну да. Компилятор вызывается из системы сборки, рантайм работает сам просто кого вызовешь. Сертификаты из стандартного хранилища подхватываются сами. Ну вот отсюда вызвал, оно из того же jdk и подхватилось Сторонние библиотеки приезжают в сборку какие укажешь в системе сборки.
Джава хороша своей огромной экосистемой. Все проблемы о которых вы даже не задумывались решены. И не просто решены, а есть типовое решение. Проверенное всем миром. Никто давно ничего в 10 местах не меняет. Даже в одном менять не стоит. Все делается просто по кнопке.
Профили давно везде есть. Шаблоны и переменные давно поддерживаются во всех конфигах. Все уже решено
То есть всёртаки не надо менять вручную строчки в конфиге? Ну, надо же! А вы говорили, что запросто меняете каждый раз...
Если вы что-то делаете даже в двух местах, то пора посмотреть подумать и исправить это. Точно есть какое-то стандартное решение.
Серьёзно? А как же строчка в конфиге? Но я вам даже больше скажу - одно из этих решений называется jenv. Внезапно.
Ну да. Компилятор вызывается из системы сборки,
В которой надо строчку в конфиге поменять, как вы сами сказали.
рантайм работает сам просто кого вызовешь
Неа. Вы бы хоть попробовали :)...
Сертификаты из стандартного хранилища подхватываются сами
Вы же их не используете, они же неудобные. И, нет, это работает иначе.
Ну вот отсюда вызвал, оно из того же jdk и подхватилось
Niet :)
Сторонние библиотеки приезжают в сборку какие укажешь в системе сборки.
Это же та которой надо строку в конфиге поменять? Или не надо?
Никто давно ничего в 10 местах не меняет. Даже в одном менять не стоит
Зачем же вы сказали, что надо поменять в конфиге?
Все делается просто по кнопке.
(Сходил за попкорном) ну, так назовите уже эту кнопку! "Имя, сестра, имя" (ц)
Все делается просто по кнопке.
Так а кнопку-то кто будет настраивать? И, главное, как? Смысл подобных инструментов как раз в том, что они суть есть эта волшебная кнопка.
Тут ниже уже написали про sdkman
. С ним вообще можно один раз у проект настроить.
~ ❯ mkdir sdkman-test && cd sdkman-test
sdkman-test ❯ mkdir j8 && cd j8 && sdk env init && echo java=8.0.372-librca > .sdkmanrc && cd ..
.sdkmanrc created.
sdkman-test ❯ mkdir j17 && cd j17 && sdk env init && echo java=17.0.7-librca > .sdkmanrc && cd ..
.sdkmanrc created.
sdkman-test ❯ mkdir j21 && cd j21 && sdk env init && echo java=21-librca > .sdkmanrc && cd ..
.sdkmanrc created.
sdkman-test ❯ cd j8 && sdk env && java -version && cd ..
Using java version 8.0.372-librca in this shell.
openjdk version "1.8.0_372"
OpenJDK Runtime Environment (build 1.8.0_372-b07)
OpenJDK 64-Bit Server VM (build 25.372-b07, mixed mode)
sdkman-test ❯ cd j17 && sdk env && java -version && cd ..
Using java version 17.0.7-librca in this shell.
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM (build 17.0.7+7-LTS, mixed mode, sharing)
sdkman-test ❯ cd j21 && sdk env && java -version && cd ..
Using java version 21-librca in this shell.
openjdk version "21" 2023-09-19 LTS
OpenJDK Runtime Environment (build 21+37-LTS)
OpenJDK 64-Bit Server VM (build 21+37-LTS, mixed mode, sharing)
Выглядит излишне сложно, по сравнению с curl -s "https://get.sdkman.io" | bash
Да ещё и JVM надо сначала установить отдельно, насколько я понял.
Добрый день, у jenv есть хорошая альтернатива - SDKman - https://sdkman.io. Он по запросу выкачивает и устанавливает как JDK, так и такие инструменты как maven, gradle. Так же можно в разных каталогах использовать разные JVM.
Не холивара ради а только для разнообразия.
jenv — удобный инструмент для управления версиями Java