Установка java в ubuntu 18.04

Управление Java

На одном сервере может одновременно находиться несколько установок Java. Вы можете выбрать версию Java, которая будет использоваться системой по умолчанию. Для этого существует команда update-alternatives, управляющая символическими ссылками, которые используются в различных командах.

Команда вернёт примерно такой вывод (в данном случае показан вывод команды после установки всех вышеперечисленных версий):

Если вы нажмёте Enter, по умолчанию будет использоваться версия Java 9. Чтобы выбрать Java 8, нажмите 3. На экране появится:

Теперь Java 8 является версией по умолчанию.

Команда update-alternatives позволяет настроить и другие команды Java, например, компилятор (javac), генератор документов (javadoc), инструмент для подписей JAR (jarsigner).

Переменная JAVA_HOME

Многие программы используют переменную среды JAVA_HOME, чтобы определить место установки Java. Чтобы установить эту переменную, нужно сначала узнать, где именно хранится установка Java. Для этого используется эта команда:

Скопируйте путь необходимой версии программы и откройте /etc/environment в текстовом редакторе:

Добавьте следующую строку в конец файла (замените условный путь к программе только что скопированным путём):

Сохраните и закройте файл. Чтобы обновить настройки, введите:

Убедитесь, что переменная среды установлена. Для этого введите:

Команда должна вернуть установленный вами путь.

Using NetBeans (JDK-8)

Many commiters are using NetBeans to develop Java and native code.  NetBeans projects have been configured for both.  Native projects in NetBeans are currently not configured to build using either Make or gradle, however ant build works in NetBeans and will build the classes and jar files needed for the IDE.

Here are the steps to use NetBeans:

  • Edit netbeans.conf
  • Invoke NetBeans
  • Add the JDK8 Platform
  • Import NetBeans projects
  • Rebuild
  • Run sample code
  • Run sample code with grade built shared libraries

Invoke NetBeans

Note that before you invoke NetBeans, you may need to clear your old defaults and start with a fresh NetBeans install or you might get errors.

Add the JDK8 Platform

Invoke Tools->Java Platforms

NOTE: You must add a new platform named «JDK 1.8» even if you already have your default platform pointing to a JDK 8 platform.

Open Project… (you may need to resolve missing junit jars, don’t open web or builders for now)

Rebuild

Select one of the projects to build (controls or web is a good choice depending on what you want to debug). This might take a long time depending on how fast your machine it. There should be no red marks on any of the projects.

Run Sample Code

Here is some sample code that was hooked up to use the base, graphics and controls projects. When saved, these projects were built by the IDE and the same code executed using the source in the IDE.

История

Обещание Sun и первый выпуск

Компания Sun на конференции JavaOne 2006 объявила, что Java станет свободным программным обеспечением, и 25 октября 2006 на конференции Oracle OpenWorld Джонатан Шварц сказал, что компания намерена открыть коды ядра платформы Java в течение 30—60 дней.

Sun опубликовала исходные коды виртуальной машины HotSpot и компилятора Java под лицензией GPL 13 ноября 2006 года с обещанием, что остальные компоненты JDK (которые включают Java Runtime Environment) будут размещены под лицензией GNU GPL до марта 2007 года «за исключением некоторых компонентов, которые Sun не имеет права публиковать в виде исходников под GPL». По мнению Ричарда Столлмана, это должно было положить конец «ловушке Java» для интеграторов, использующих Java, и программистов, пишущих на Java, а Марк Шаттлворт назвал исходное объявление в прессе «настоящей вехой для сообщества свободного программного обеспечения».

Публикация библиотеки классов

Следом за обещанием выпустить Java Development Kit (JDK), почти полностью основанным на свободном и открытом коде в первой половине 2007 года, Sun опубликовала полные исходные коды библиотеки классов Java под GPL 8 мая 2007, за исключением некоторых частей, ограниченных третьей стороной, и исключающих условия GPL. В списке среди обременённых частей были несколько важных компонентов Java для графического интерфейса. Sun заявила, что планирует заменить оставшиеся собственнические компоненты альтернативными реализациями и сделать библиотеку классов полностью свободной.

Улучшения сообщества

5 ноября 2007 года компания Red Hat заключила соглашение с Sun, подписав обширное соглашение участника проекта (которое охватывает участие разработчиков Red Hat во всех руководимых Sun свободных и открытых проектах) и лицензию сообщества OpenJDK (которая дает доступ компании к тестовым программным пакетам, определяющим, соответствует ли проект OpenJDK спецификациям Java SE 6).

Также в ноябре 2007 года в OpenJDK была создана Porters Group для оказания помощи в портировании (адаптации) OpenJDK на различные процессорные архитектуры и операционные системы.
Проект портирования под BSD, возглавляемый Куртом Миллером и Грегом Льюисом, и проект портирования под Mac OS X (основанный также на ядре BSD), руководимый Лэндоном Фуллером, имели повышенный интерес во включении OpenJDK посредством Porters Group.

В декабре 2007 года Sun перевела контроль версий OpenJDK с TeamWare на Mercurial как часть процесса перевода на открытые средства разработки.

OpenJDK имеет сравнительно строгие процедуры принятия изменений кода: каждое предполагаемое изменение должно быть рассмотрено двумя инженерами Sun (впоследствии — Oracle), а участник должен предварительно подписать особое «соглашение участника»), предпочтительно также должен быть проведен тест JTreg, демонстрирующий, что ошибка была исправлена. Первоначально процесс принятия исправлений извне был довольно медленный, и изменения в кодах до сентября 2008 года вносились только непосредственно инженерами Sun. Процесс улучшился начиная с 2010 года, небольшие патчи и изменения от версии OpenJDK7 до OpenJDK6 могут быть приняты за несколько часов вместо нескольких дней..

11 октября 2010 IBM и Oracle объявили о совместном сотрудничестве в дальнейшей разработке OpenJDK.

Common Prerequisites

Java SE 8 for developing for Java 8

The OpenJFX build requires a Java JDK 8 that does not have the JFX jar present. The build scripts check for this condition, and will refuse to continue if it is found.This jar is found in the JDK at  (your JDK)/jre/lib/ext/jfrt.jar. A common practice is to have a copy the JDK for general use, and another for building, and then remembering to set your PATH when building to the proper JDK. There are many ways to copy the JDK, and which one to use will depend on which OS you are using.

Some versions of Linux may have an installed Java that is not new enough, and may already be in your path, which will cause confusion as you try to build.

Make sure you have the right Java in your path with:

java -version

Gradle

Note: gradle is available as a Ubuntu package, but check the version. This command should work after you set JAVA_HOME:

    gradle -version

Environment Variables

At a minimum, you will need to have gradle in your path.

For JFX 8

  • set JAVA_HOME and JDK_HOME to point to the top of the JDK 8 installation (that has jfxrt.jar removed).
  • set gradle 4.8(or higher) in your path
  • ensure Ant 1.8.2 is in your path

Note: on windows, these paths MUST be in dos format, though you can use the ‘right’ slashes (‘/’). Test your settings with:

    "$JAVA_HOME/bin/java" -version
    gradle -version    ant -version

Enabling Transparent Huge Pages On Linux

An alternative to using explicit large pages (as described above) is to use transparent huge pages. Use of transparent huge pages is usually not recommended for latency sensitive applications, because it tends to cause unwanted latency spikes. However, it might be worth experimenting with to see if/how your workload is affected by it. But be aware, your mileage may vary.

NOTE! On Linux, using ZGC with transparent huge pages enabled requires kernel >= 4.7.

Use the following options to enable transparent huge pages in the VM:

-XX:+UseLargePages -XX:+UseTransparentHugePages

These options tell the JVM to issue calls for memory it mapps, which is useful when using transparent huge pages in madvise mode.

To enable transparent huge pages you also need to configure the kernel, by enabling the madvise mode.

$ echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

and

$ echo advise > /sys/kernel/mm/transparent_hugepage/shmem_enabled

Статус развития

Поддерживаемые версии JDK

OpenJDK изначально основывался только на JDK 7.

15 февраля 2008 года OpenJDK разделился на два проекта: OpenJDK, который базируется на JDK 7, и JDK 6, которая обеспечивает свободной версией Java 6.

Все версии OpenJDK (6, 7, 8, 9) имеют единую кодовую базу. То есть, mercurial-репозитории для новых версий OpenJDK создаются из предыдущих. Основная разработка ведется в версии OpenJDK, которая готовится к релизу. В частности, в 2011—2013 годах основная разработка велась в OpenJDK 8, а в 2014—2016 годах — в OpenJDK 9. Таким образом, разработка новых библиотек и подсистем ведется в версии, которая только готовится к релизу и после интеграции в основной репозитории, портируется в более ранние версии.

Включение в дистрибутивы Linux

В июне 2008 года был анонсирован проект IcedTea (пакетная версия OpenJDK в Fedora 9), который прошёл Technology Compatibility Kit и теперь может претендовать на звание реализации, полностью совместимой с Java 6.

12 июля 2008 года OpenJDK был принят в нестабильную ветку Debian.

В июле 2009 года бинарная сборка OpenJDK для Ubuntu 9.04 прошла все испытания на совместимость с платформой Java SE 6.

Сборка OpenJDK 6 устанавливается в основном наборе пакетов OpenSUSE 11, входит в состав пакетов, поставляемых на DVD и присутствует в основных репозиториях проекта.

Сотрудничество с IBM, Apple и SAP

11 октября 2010 года, компания IBM, как наикрупнейший участник Apache Harmony, присоединился к проекту «OpenJDK» компании Oracle, переложив все усилия с Harmony на OpenJDK project.

12 ноября 2010 года, компания Apple и корпорация Oracle анонсировала проект OpenJDK для платформы Mac OS X.

11 января 2011 года, был создан проект Mac OS X Port на основе уже созданной OpenJDK.

В июле 2011 года, SAP AG объявила что официально присоединяется к проекту OpenJDK.

Setting Heap Size

The most important tuning option for ZGC is setting the max heap size (). Since ZGC is a concurrent collector a max heap size must be selected such that, 1) the heap can accommodate the live-set of your application, and 2) there is enough headroom in the heap to allow allocations to be serviced while the GC is running. How much headroom is needed very much depends on the allocation rate and the live-set size of the application. In general, the more memory you give to ZGC the better. But at the same time, wasting memory is undesirable, so it’s all about finding a balance between memory usage and how often the GC needs to run.

Компоненты

IcedTea и другое участвующее ПО

Чтобы объединить OpenJDK в Fedora и другие свободные дистрибутивы GNU / Linux, OpenJDK должен был быть работоспособным, используя только бесплатные программные компоненты. Из-за не свободных компонентов в библиотеке классов и предположений о том, что в системе сборки присутствует JDK от компании Sun, объединения не получилось. Чтобы достичь открытости, Red Hat начала проект IcedTea в июне 2007 года. Он начал жизнь как гибрид классов OpenJDK / GNU, который можно было использовать для загрузки OpenJDK, заменив не свободный код кодом из GNU Classpath.

В мае 2008 года дистрибутивы Fedora 9 и Ubuntu 8.04 включали IcedTea 6, полностью основанную на свободном и открытом исходном коде. Fedora 9 была первой версией, поставляемой с IcedTea6, основанной на OpenJDK 6, а не OpenJDK 7. Ubuntu также впервые упаковала IcedTea 7, а затем перешла на IcedTea 6. Пакеты для IcedTea 6 также были созданы для Debian и включены в lenny. 12 июля 2008 года Debian принял OpenJDK-6 в нестабильном режиме, и теперь он стабилен. OpenJDK также доступен на OpenSUSE, Red Hat Enterprise Linux и RHEL производных, таких как CentOS.

С августа 2008 года OpenJDK 7 можно использовать в Mac OS X и других вариантах BSD.

В Android Nougat OpenJDK заменяет теперь отмененный Apache Harmony в качестве библиотек Java в исходном коде мобильной операционной системы. Google находится в постоянном правовом споре с Oracle по искам о нарушении авторских прав и патентов путем использования повторных внедрений защищенных авторским правом API Java через Harmony.

IDE Pre-Requirements

Despite the fact that most of the major IDE’s support gradle directly, we have decided to provide pre-generated IDE configuration files in order to make using an IDE smooth and painless. As the IDE’s support for gradle improves, we may be able to update these instructions to rely on that support instead of the checked-in project files that we have today.

IMPORTANT: Ensure that you do not have gradle plugins for NetBeans or Eclipse (for Eclipse specific gradle configuration, see below) installed. They will conflict with the pre-generated IDE files. In the future, we may move to gradle builds within the IDE’s as support becomes better.

Get a build of the latest JDK

If you are building and running native libraries, you need to make sure you use the same version of JDK for NetBeans that you use to build JavaFX with gradle. In particular, if you try to mix a 32-bit JDK and a 64-bit JDK, the binaries will fail to load.

Get an IDE that supports the latest JDK

Once you have downloaded and installed an IDE, you will need to configure it to the latest JDK version. This will be explained later on for each particular IDE. If you use an IDE without current support, OpenJFX will not compile and you will not be able to run from within the IDE.

JDK-8 Only: Delete jfxrt.jar (or move it to a different directory)

JavaFX is bundled with the JDK as an extension. The jfxrt.jar is located in the extension directory called ‘ext’ where Java is installed. You must remove it from this directory for the IDE’s to work properly. The issue is this: If jfxrt.jar is in the extension directory, it will get seen before the code in your IDE. This means you won’t be running or testing the code in your IDE. For more information on why this is a problem, see .

By moving jfxrt.jar to a standard cache directory, your IDE can reference it to find binary versions of classes that are not yet open source.  Further, when both jfxrt.jar and your IDE reference a class, the class from the IDE will be chosen.

IMPORTANT:  Do not skip this step.  If you do, you will not be running the code in your IDE and will waste hours wondering why you make changes and they don’t run.

Reporting Bugs

There are several ways to report bugs. Here is the checklist:

  1. Try the latest nightly builds, see the section above.
  2. Try narrowing down the bug using techniques from «Functional Diagnostics» and «Performance Diagnostics» sections below.
  3. Try to come up with the minimal test case for the issue. Larger projects are fine too, as long as developers can build and run it themselves.
  4. Submit the bug report, using either of these three options:
    1. JDK 8, JDK 11: If you have the Red Hat subscription, and running the binaries from Fedora or RHEL, report the bug through the Red Hat support
    2. JDK 12 and later: Submit the OpenJDK bug report clearly mentioning which build you are running. This would require Oracle folks to accept the bug first, before handing it over to Shenandoah devs.
  5. Be prepared to answer a few follow-up questions
  6. If you have time, be prepared to test the patches and/or nightly binaries

Timelines

OpenJDK 8u272

  • Monday, June 1st 2020: jdk8u-dev forest open (tag: jdk8u272-b00)
  • Friday, July 24th 2020: First build promotion jdk8u-dev→jdk8u (tag: jdk8u272-b01)
  • Friday, July 31st 2020: Second build promotion jdk8u-dev→jdk8u (tag: jdk8u272-b02)
  • Friday, August 7th 2020: Third build promotion jdk8u-dev→ jdk8u (tag: jdk8u272-b03)
  • Friday, August 14th 2020: Fourth build promotion jdk8u-dev→ jdk8u (tag: jdk8u272-b04)
  • Friday, August 21st 2020: Fifth build promotion jdk8u-dev→ jdk8u (tag: jdk8u272-b05)
  • Friday, August 28th 2020: Sixth build promotion jdk8u-dev→ jdk8u (tag: jdk8u272-b06) & start of Rampdown phase
  • Friday, September 4th 2020: First jdk8u build promotion (tag: jdk8u272-b07)
  • Friday, September 11th 2020: Second jdk8u build promotion (tag: jdk8u272-b08)
  • Friday, September 18th 2020: Third jdk8u build promotion (tag: jdk8u272-b09)
  • Friday, September 25th 2020:: Final jdk8u build promotion & tag before code freeze (tag: jdk8u272-b10)
  • Tuesday, October 20th 2020: GA; OpenJDK 8u272 released (tag: jdk8u272-ga, likely to be jdk8u272-b11)

OpenJDK 8u282

  • Monday, August 31st 2020: jdk8u-dev forest open (tag: jdk8u282-b00)
  • Friday, October 30th 2020: First build promotion jdk8u-dev→jdk8u (tag: jdk8u282-b01)
  • Friday, November 6th 2020: Second build promotion jdk8u-dev→jdk8u (tag: jdk8u282-b02)
  • Friday, November 13th 2020: Third build promotion jdk8u-dev→ jdk8u (tag: jdk8u282-b03)
  • Friday, November 20th 2020: Fourth build promotion jdk8u-dev→ jdk8u (tag: jdk8u282-b04)
  • Friday, November 27th 2020: Fifth build promotion jdk8u-dev→ jdk8u (tag: jdk8u282-b05) & start of Rampdown phase
  • Friday, December 4th 2020: First jdk8u build promotion (tag: jdk8u282-b06)
  • Friday, December 11th 2020: Second jdk8u build promotion (tag: jdk8u282-b07)
  • Friday, December 25th 2020: Third jdk8u build promotion (tag: jdk8u282-b08)
  • Friday, December 25th 2020: Final jdk8u build promotion & tag before code freeze (tag: jdk8u282-b09)
  • Tuesday, January 19th 2021: GA; OpenJDK 8u282 released (tag: jdk8u282-ga, likely to be jdk8u282-b10)

OracleJDK и OpenJDK

Oracle JDK базируется на OpenJDK?

Да. Oracle JDK основан на исходном коде OpenJDK. Кроме того, он содержит компоненты с закрытым исходным кодом. Окончательный результат лицензируется в соответствии с Binary Code License (лицензией Oracle).

Не делает ли OpenJDK ненужными другие реализации Java SE?

Нет. Пользователи Java могут извлечь выгоду из выбора совместимых реализаций Java SE, предоставляемых множеством вендоров в различных коммерческих моделях. Различные совместимые реализации Java SE конкурируют в таких аспектах, как настройка различных архитектур, производительность, инструменты и развертывание.

Планирует ли Oracle изменять способ участия разработчиков в OpenJDK?

Нет. Проект OpenJDK продолжает принимать взносы в рамках существующих соглашений с вкладчиками и принимать новых участников на тех же условиях. На данный момент нет планов по изменению модели участия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector