Идешь на сайт Оракла, или Азула, и качаешь сборку.
Т.е. качаем сразу проприетарщину, не разобравшись, работает ли оно или нет? Ну может, для программирования с рассчётом на Оракль EE - это норма. Но для написания простых программ, с целью обучения, и минесруфта - зачем?
Кладешь куда хочешь и прописываешь в PATH. Вот так - правильно.
Вот так - неправильно, как раз таки. Пакетов с проприетарной Оракловской жабой, пруд пруди. Почти во всех дистрибутивах. И оно как правило, прописывает себя в alternatives.
Поверь человеку, который уже больше 10 лет наблюдает на ЛОРе за теми, кто пишет на Java. Java повреждает мозг, подтверждением чего будет чувак с 5 звёздами выше. Не трогай каку.
Сборки оракла и азула почти полностью совпадают с openjdk. Можно считать, что они просто выполняют работу мантейнеров и собирают их.
Если боишься злого оракла и очень не лень, можно пойти и скачать исходники openjdk и собрать их самостоятельно. Я так и делаю (по той причине что хачу исходники openjdk). Еще вроде как где-то в недрах java.net была репа с готовыми сборками именно openjdk, но я к стыду не могу нагуглить этот урл
Самое главное в этом - никогда, никогда не связываться с мантейнерами дистрибутивов, которые выполняют эту работу. Что Debian/Ubuntu, что ArchLinux, что куча других дистрибов - они ничего не понимают в Java. Например, они пытаются паковать джарки в отдельные гну-линукс-пакеты и потом переиспользовать их. Очевидно, они тронулись умом, и я бы не стал надеяться на качество работы поехавших :)))
В alternatives лучше тоже не прописывать. Самый лучший, проверенный годами метод - в /etc/profile или ~/.profile ипрочие ~/.bashrc прописать две вещи: переменную $JAVA_HOME, и export PATH=$JAVA_HOME/bin:$PATH. Если хочется переключать версию джавы (например, для разработки), в профиль добавляешь функции типа:
Но для написания простых программ, с целью обучения, и минесруфта - зачем?
для того чтобы не греть мозг идиотскими проблемами, которыми переполнен ЛОР по тэгу Java.
Большинство этих проблем решаются одним простым алгоритмом:
а) скачать сборку, которую собрали профессионалы, а не кто попало. В данном случае это или официальный сайт openjdk, или oracle, или azul.
б) и прописываешь её вручную самым простым и действенным способом: переменная JAVA_HOME и PATH. Любых хитрых утилит избегаешь любой ценой.
ну разве что тебе нравится тратить время на херню и починку проблем, которые сами себе создают школьники, мантейнящие джаву в дистрибутивах
1) oracle jdk и openjdk - не одно и то же( первая - проприетарная сборка, вторая - собранная с открытых исходников)?
сейчас это почти одно и то же. Они собираются из одного и того же кода. В оракловскую сборку добавляется пара фиксов для их клиентов, чтобы легаси-говнокод этих клиентов продолжал работать - этих фиксов с высокой вероятностью ты не заметишь вообще никогда. Ценность «оракловской сборки» в том что она нормально собрана, и тебе не нужно пердолиться и собирать самому.
сейчас у меня (debian 8, idea) используется декомпилятор при открытии сорцов класса. Есть ли способ заставить её открывать исходники?
при открытии сорцов какого именно класса, откуда он берется?
если ты имеешь в виду какие-то библиотеки, которые ты используешь в своем проекте, то тут всё просто. Сейчас все современные джава-проекты собираются с помощью Maven (ну или Gradle) - на первое время можно думать о нем как о пакетном менеджере типа pacman/apt/yum/etc, но специально для джавы. Зависимости на внешние библиотеки указываются в настройке dependencies в Maven. Переведи свой проект на Maven - после этого Идея начнет выкачивать из репозитория не только джарки библиотек, но и их исходники. И переход совершенно автоматически будет происходить не в декомпилятор, а в настоящие исходники.
инфу про официальные сборки openjdk учту.
думаю что пакетам в операционных системах Red Hat Enterprise Linux и Oracle Linux можно таки относительно доверять. Ибо бизнес этих компаний напрямую зависит от того, чтобы с джавой в их дистрибутивах всё было идеально.
Мне кажется, что проблемы не столько в Java (у меня опенсорсная Java без проблем работает и проги под неё собираются как положено), сколько в недодистрибутивах и кривых руках (если дистрибутив - Gentoo).
я не нашел спеки, но «интуитивно»(с) понятно следующее: java из alternatives (/bin/java, /usr/bin/java) - это джава для запуска софта из дистрибутива. $JAVA_HOME - это то место, откуда в первую очередь пытается подхватить её всякие Томкаты (см. catalina.sh). Или например Идея - она берет в качестве джавы то, что записано в IDEA_JDK, если нет - JAVA_HOME или JDK_HOME, если нет - то что в path, если нет - ошибка. Также из $JAVA_HOME ынтерпрайзный софт берет путь до javac чтобы чегой-то там отконпелировать, или например используется в качестве пути по умолчанию в говноинсталляторах (первым на ум пришло КриптоПро).
То есть на уровне самого JDK эта переменная не нужна, но на уровне ынтерпрайзного софта продолжается политика недоверия к тому, что создатели дистрибутива засунули в PATH.
import java.util.Arrays; нажать f4 - запускается декомпилятор, вместо открытия сорцов.
што, опять?! :))) ar u fucking jocking?
наверное, в твоей сборке openjdk нет сорцов.
Скорей всего там есть какой-то отдельный пакет типа pacman -S openjdk8-src (циферку поменять, в зависимости от версии жабы).
необходимость знать такие подробности нейтрализуется простейшим алгоритмом:
а) скачать JDK с сайта Oracle
...
и дальше по тексту :)))
важно понимать, что Идея берет для проекта JDK не из PATH, а из того, что ты сам туда настроил. То есть нужно пойти в File -> Project Structure -> Project, нажать кнопку New напротив Project JDK и указать нужное. Это совершенно необходимый шаг, т.к. обычно при разработке у тебя на жестком лежит куча разных версий JDK, и для IDE не имеет особого смысла угадывать её из PATH.
Сборки оракла и азула почти полностью совпадают с openjdk
У оракла жаба мало что с закрытыми добавками, так еще и нет unlimited crypto по дефолту. Это просто срамота, в 2016 году ковыряться с policy файликами после установки.
И не путай мейнтейнеров пакетов в арче и в RHEL/CentOS. Первым эта жаба куда шла туда и ехала. А вторые продают JBOSS поддержку со своими сборками OpenJDK и помимо плюшек вроде приложенных сорцов JSSE и интеграции с системной tzdata, тестируют эти сборке на той самой версии RHEL, а не на говне мамонта в котором оракул вынужден свои бинарники собирать для «совместимости с разными линуксами». А еще судя по недавней Jocker conf, производительностью сборок в RHEL теперь занимается известный в узких кругах Л. Шипилев.