LINUX.ORG.RU

Первый релиз Java 11

 , , ,


1

3

Сегодня состоялся первый релиз Java 11. Это первая LTS (Long Time Support) версия Java, после изменения политики выпуска новых версий начиная с Java 9. Публичные обновления Java 11 будут выпускаться до сентября 2023 года.

В JDK 11 внесены следующие изменения:

  1. Стек развёртывания апплетов и WebStart-приложений, объявленный устаревшим в Java 9, теперь удалён окончательно. Вместе с удалением стека развёртывания исчез список поддерживаемых браузеров.
  2. Удалено автоматическое обновление JRE и сам JRE для Windows и MacOS.
  3. Вместо JRE и Server JRE предлагается использовать утилиту jlink для создания меньших кастомных рантаймов.
  4. JavaFX более не является частью JDK, а поставляется отдельно из openjfx.io.
  5. Java Mission Control, поставлявшийся вместе с JDK 7, 8, 9, 10 также перестал быть частью JDK и поставляется отдельно. ]*] Формат обновлений для Windows переведён с tar.gz на zip, как на более часто используемый в этой операционной системе.
  6. Формат обновлений для MacOS переведён с .app на .dmg, как на более соответствующий стандартам этой операционной системы.

Изменения в JDK:

  1. JEP 327 Unicode 10 включая 16018 новых символов среди которых:
    а. 19 новых символов для 4K TV стандарта
    б. символ Биткоина
    в. 128 эмоджи-символов
    г. 10 новых алфавитов, среди которых: албанский, брахманский (11-го века) и прочая экзотика.
    д. 18 новых блоков символов для новых и существующих алфавитов, среди которых Cyrillic Extended-C.
  2. JEP 321 HTTP Client (Standard) стандартизирован и переведён из jdk.incubator.http в java.net.http.
  3. В интерфейс Collection добавлен toArray(IntFunction<T[]>) Default Method, перегружающий toArray(T[]). Это привело к несовместимости со старым кодом, в котором есть вызов toArray(null). Теперь такой вызов приводит к ошибке компиляции и должен быть изменён на аналогичный с переводом null в требуемый тип.
  4. Обновлены локали для Unicode CLDR v33
  5. Добавлена возможность ленивого создания потоков компиляции. Включается опцией -XX:+UseDynamicNumberOfCompilerThreads.
  6. Добавлен новый экспериментальный Scalable Low-Latency Garbage Collector, известный под именами Z и ZGC. Включается одновременным использованием опций -XX:+UnlockExperimentalVMOptions и -XX:+UseZGC.
  7. JEP 318 Epsilon, A No-Op Garbage Collector новый ничего не освобождающий сборщик мусора, предназначенный для тестирования.
  8. JEP 331 Low-Overhead Heap Profiling - поддержка низкозатратного профилирования выделения памяти в куче. Доступно через JVMTI.
  9. JEP 329 ChaCha20 and Poly1305 Cryptographic Algorithms.
  10. Системные свойства java.home, user.home, user.dir и user.name теперь неизменяемы

И ещё много других изменений. Также можно упомянуть удаление поддержки CORBA и мониторинга JVM через SNMP. Из JDK удалены модули, связанные с Java EE. По умолчанию используется не GTK2, а GTK3. Расширено использование нового ключевого слова var, которое теперь может использоваться при объявлении параметров лямбд. При этом все параметры таких лямбд обязаны быть var. Удалены фонты Lucida. Плагин javax.imageio больше не поддерживает JPEG с альфа каналом, судя по всему из-за проприетарности старой реализации.

JDK 11 можно скачать тут. Также следует обратить внимание на то, что изменена лицензия Oracle JDK. Теперь она GPL+CE, как и у OpenJDK.

Для переходящих на Java 11 LTS с Java 8 такой переход добавит ещё и массу новшеств Java 9 и Java 10, перечислять которые тут излишне.

>>> Подробности

★★★★★

Проверено: leave ()
Последнее исправление: cetjs2 (всего исправлений: 16)
Ответ на: комментарий от bbk123

В C++ это давно спроектировали и реализовали. Значит дело не в сложности проектирования или реализации языка

на месте разработчиков java, я бы попробовал это реализовать хотя бы экспериментально.. и по планете такой вздох облегчения пронесся.

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

Зачем, позвольте?

Цель определяет калибр.

Мне проще «стрелять» по «жестким» (backend) задачам «жестким» удобочитаемым, без побочных эффектов кодом, который легко сопровождать.

(Вы посмотрите англоязычную статью по моей ссылке.)

Зачем нужен Groovy (Scheme, Scala) хорошо описано (с язвительными замечаниями переводчиков) в данной книге -

https://www.chitai-gorod.ru/catalog/book/690036/

Однако, мы опять попадаем в ловушку full stack.

Поэтому я и покритиковал в одном из своих постов летом этого года данный подход.

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

Учите Groovy

Оно еще живо? Я думал хайп прошел и теперь молодежь на Kotlin переключилась...

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

любой JVM язык осваивается менее чем за неделю

Нет.

Скалу можно изучить вдоль и поперек менее чем за неделю

)

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

ок, операция конкатенации сама по себе не симметрична, возражение снимается

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

Для этого надо groovy.transform.* изучить

import groovy.transform.CompileStatic;

@CompileStatic  // Вот она - Java!
def answer () {
    a = 42      // не працюе
//  int a = 42  // працюе
}

print answer()

И даже @TypeChecked там есть.

Но если

Раньше программировал на C, C++, VBA Нравится Rust и Julia

(С)

, то о какой «глубине знаний» можно говорить - это типа «учились все мы понемногу чему-нибудь и как-нибудь»(С).

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

Просто она устарела

А чем она устарела? Var добавили (специально для молодежи), паттерн матчинг подвозят через пол года. Коурутины и структуры уже на подходе, можно даже качать и тестить. Там и Valhala подойдёт. А что еще молодежь не устраивает, что у вас сейчас модно и молодежно?

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

На уровне хелловордиста-«философа» можно.

А вот, например, я заинтересовался http://spockframework.org, полазив по ЛОРу.

И не считаю себя специалистом в области Groovy - всегда хочу подучиться.

Аналогично и с Java.

Зазнайство к добру не ведёт, лучше послушать совета тех, кто уже решал какую-нибудь задачу.

https://ru.wikipedia.org/wiki/Эффект_Даннинга_—_Крюгера

Специально для птаха и философаМ кунов добавлю сегодня к «эффекту Стрейзанд» и «бритве Хитченса».

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

Когда напишешь хоть что-то, что меня заинтересует, непременно подключусь, дедок. Жди, надейся.

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

Многие и на Java 8 еще не перешли.

По моим наблюдениям уже практически все перешли.

На Groovy надо просто поставить задачу - DSL!

На Groovy нужно использовать другой образ мышления, но за неделю это не делается. К тому же есть люди, которые просто не любят динамическую типизацию и я их понимаю. Обычно если таких заставляют в Groovy, они начинают использовать @CompileStatic или @TypeChecked.

И постоянно совершенствовать (такой типа «рефакторинг» в DSL) код.

А что делать, когда Groovy пихают в то, что вовсе не DSL, то есть как альтернативу Java?

bbk123 ★★★★★
() автор топика

Извините, за мою невнимательность по поводу jjs и jshell.

Ответ имеет прямое отношение к Java 11.

Виноват, невнимателен, jjs, естественно.

Именно там в 11 надпись

«Warning: The jjs tool is planned to be removed from a future JDK release»(С)

$ jjs
Warning: The jjs tool is planned to be removed from a future JDK release
jjs> for(i = 0; i < 3; i++) print('never die')
never die
never die
never die
jjs>
$ jshell test.jsh
Warning: Nashorn engine is planned to be removed from a future JDK release
never die
never die
never die
|  Welcome to JShell -- Version 11
|  For an introduction type: /help intro
jshell>

Код шелл-скрипта

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("for(i = 0; i < 3; i++) print('never die')");

Сделал из

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class JsTest {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        engine.eval("for(i = 0; i < 3; i++) print('never die')");
    }
}
Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 2)
Ответ на: комментарий от bbk123

В C++ это давно спроектировали и реализовали.

И, кстати, не случилось от этого никакой катастрофы, которыми любят пугать некоторые. Потому что программисты просто знают, что такую функциональность ЯП надо использовать к месту и не перебарщивать. В реальных С++ проектах перегруженных операторов - с гулькин нос, или вообще нету. Просто иногда перегрузка операторов бывает очень в тему и упрощает написание и понимание кода. Тот же банальный пример с BigInteger. Тогда и используют. А в тех случаях, когда нет уверенности в пользе использования оператора вместо именованной функции - и не используют. Да как-то само собой естественно получается. Надуманная проблема вообще.

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

Специально проверил сейчас. Ключик make -k помог найти много, но сказать, нашёл ли он все места, я конечно не могу.

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

Похожие по смыслу проблемы возникают с наследованием и виртуальными методами, но с этим в новых версиях C++ начали наконец бороться.

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

А Spring тут причём? Кстати, недавно вышел Spring 5.1.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от ptarh

меня заинтересует

О, у меня уже новый «насяльника», зовут птах-кун, объявился!

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

И вообще, в никаких приличных компаниях не назначают.

Ибо завал проекта будет гарантированно обеспечен.

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

(C) Ален Голуб

https://en.wikipedia.org/wiki/Allen_Holub

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

Еще https://code.woboq.org,

О, круто. Вот ещё бы для емакса... Но тоже круто, спасибо.

Это же поиск узла AST с вызовом конкретного оператора, что тут может быть не сделано?
Честно, не понял в чем тут косяк языка.

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

Косяк вижу именно в том что такая сложная утилита необходима для такой достаточно простой задачи.

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

Тебе то, голодранцу из Бутово, конечно лучше известно кого и куда назначают. Не отвлекайся, а то доширака лишат, а тебе еще до пенсии дотянуть надо.

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

Слишком толсто , аж жир течет , попробуйте потоньше .

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

От какого это единственного вендора? Свои движки есть как минимум у Google, Apple, Microsoft и Mozilla. Во-вторых апплеты (как и флеш с сильверлайтом) нормально работают только на десктопах, а десктопы — далеко не самые частые потребители веб-контента. Никакая из этих технологий не сделала ни шага в направлении мобильных устройств, ну вот и оказались на задворках.

А вот использование JavaFX/апплетов, Flash и Silverlight — это и есть самый натуральный vendor lock, причём в чистом виде, без всяких притягиваний и преувеличений.

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

Думаю, что дело в том, что два VM в одном браузере хуже одного VM. Если бы JVM изначально была пригодной и использовалась бы в качестве VM JavaScript в браузерах, апплеты были бы живы до сих пор.

bbk123 ★★★★★
() автор топика

Здесь уже сказали, что с выходом Eta всякие недоязычки вроде скал и котлинов стали официально не нужны? Если нет - то на всякий случай напоминаю.

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

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

А у JVM в рантайм вбуханы какие-то просто нереальные средства и усилия. И GC там пилят товарищи вроде А. Шипилева, что крайне положительно сказывается на производительности местных GC.

Eta же позволяет использовать человеческий язык (с широким набором баареек с Hackage) на JVM рантайме. Instant win.

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

Кажись я слишком тонко пытался потроллить :(

Насчёт GC я не уверен. Хаскель иммутабелен, Java мутабельна. Совсем разные профили нагрузки. Конечно работать будет, но совсем не факт, что лучше.

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

Почему тогда через 20+ лет разработки гц в жабе всё ещё так стопорит приложения, что его даже переписывают с нуля едва ли не каждые полгода?

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

Совсем разные профили нагрузки.

Не будут у них профили нагрузки на хип сильно отличаться на схожих задачах. И там и там оче много короткоживущих объектов, врапать все и вся на хипе и жаба и хаскель любят. Далее в нормальном жабакоде иммутабельность активно используется из всяких guav.

Это если с Go каким-нибудь сравнивать - то там да, профиль другой будет.

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

Потому что, если в stdlib из сокета нельзя распарсить integer, не аллоцировав его в предварительно в String, то очевидно что программки с такими stdlib будут сильно мусорить. Так было изначально задумано - галеро-юзерам позволяют мусорить как угодно, а GC пишут сверхмозги. Так как задача выходит очень сложная (мусора много же), то 20+ лет и переписывают.

В итоге последнее поколение GC (ZGC и Shenandoah) по инженерным затратам находится далеко за пределами того, что может себе позволить какой-нибудь другой (не JVM) рантайм.

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

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

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

Параметры тюнинга во всех коллекторах вынесены во флаги пускалки JVM - тюнь не хочу. А Eta позволяет решить паталогические проблемы GC из GHC рантайма, вот например - там индусокодеры внезапно узнали, что GC должен память сканить, чтобы работать. И если этой памяти а олд-гене много - то он работает медленно. Подходящий для GHC-рантайма вариант - вынести всю очередь в off-heap они очевидно не осилили (там же пойнтеры, ффи и вообще сложнаа) и в итоге переехали на Go. Вот для таких любителей помусорить Eta и предназначена.

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

А бенчмарки есть, сравнивающие сборщики Eta/JVM и Haskell? Или Erlang.

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

вот я на scala не пишу (и не собираюсь), но читать код иногда приходится. и все прекрасно и понятно читается пока дело не доходит до кода с перегруженными операторами...

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

На единственного вендора, поставляющего java plugin в браузерах

Единственного? Кажется кто-то забыл про шапку.

и рантайм javafx.

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

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

И, кстати, не случилось от этого никакой катастрофы, которыми любят пугать некоторые. Потому что программисты просто знают, что такую функциональность ЯП надо использовать к месту и не перебарщивать.

C++ это не катастрофа, конечно, он принёс многие удобства, значительно расширил возможности. Но вместе с тем в нём много вещей непродуманных с точки зрения удобства сопровождения больших проектов. Помимо того как реализована перегрузка операторов куча проблем с совместимостью библиотек и компиляторов — прямое следствие того как реализована перегрузка функций

В си этой проблемы не было как раз потому что перезагрузки не было и все вопросы решаются просто сравнением строк, рефакторинг — grep/sed, линковка таблицей имён т.п.

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

Фатальный недостаток Явы — необходимость наличия виртуальной машины. Компиляторы почему-то не взлетели. Скорее всего дело в языке, ведь даже для Питона какие-то компиляторы сделать смогли

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

Доналд Кнут - даже лезть в Википедию не пришлось. Опять же, вы сами в первых постах ссылались на Церн.

Голуб наверное это в каком то контексте сказал. Желательно приводить этот контекст..

Если вы любите Википедию, наверное там можно много контр примеров нарыть....

У нас известный пример совместной работы ученых и инженеров - это вестимо Яндекс....

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

С++ обречен. Через 10 лет им будут уметь пользоваться только олдфаги, молодежь не очень тянет на эту сложность, когда есть такие языки, как Пухон и зарплаты машинлергнинге за овердофига денег. Поэтому я озабочен вопросом, чем же можно заменить C++, и очень жаль, что Java не подходит. Ну и для тех, кто начнет кричать про виртуальную машину - вы подумайте. В синтаксисе языка она не прописывается, это лишь способ использования. Сегодня на ВМ, а завтра напрямую в машинные коды. Но дело в том, что языка то нет. Вернее, они есть, но они непопулярны. А среди популярных - выбор не велик.

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

Ну если забыть что Петухон как и всё остальное раз эдак в 100 медленней, то конечно. Никуда не денутся ни си, ни плюсы, и дело не только в деньгах. 10 лет это не тот срок, 100 может быть (если произойдут принципиальные изменения или экспоненциальный рост производительности).

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

Я не про медленность. Любой язык можно разогнать. Но нет годного универсального синтаксиса среди популярных языков.

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

С/C++ хоронили много раз. Когда изобрели Си-шарп,MS заявляли - Си-шарп, фореве итд. ...прошли годы... Официальный юниверсал рантайм MS-на COM-подобной сишечке, WPF-депрекейтед... Джава входит в зону неопределенности из за терок Оракла с Гуглом...

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

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

Var добавили (специально для молодежи)

Только для локальных переменных внутри методов. С полями классов не канает.

Модно и молодежно, это когда:

Инвариантные массивы

Все есть объект

Все стейтменты, а не только switch - это выражения, возвращающие значения

Null-safety

Краткость и отсутствие избыточности кода

Отсутствие статиков в пользу объектов-компаньонов

Функции - объекты первого класса

В Жабе всего этого нет. А когда подвезут - пройдут еще годы, если не десятилетие. Пусть на Жабе кодят наемные рабы, типо Биомусора (ой, прастити, биорекатора). Раз начальник-дядя приказал говнокодить под недоспринг и хибернейт на жабке - пусть фигачат. Мне плевать.

FilosofeM ★★
()
Последнее исправление: FilosofeM (всего исправлений: 2)
Ответ на: комментарий от Bioreactor

На уровне хелловордиста-«философа» можно.

Средняя стоимомть моего «хелловорлда» - 3000-5000 евро. Которые я пишу и продаю на заказ в течении недели-двух. А ты, наемный клоун, работающий на дядю за 200 баксов в месячишко - сколько стоишь? Правильно - 200 баксов. Ну, главное, чтобы на жрачку тебе хватало, примитвный неандерталец, носящийся со своим эффектом Стрейзанд в каждой теме :)

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

Поэтому я озабочен вопросом, чем же можно заменить C++

Чем... Растом. Цепепе давно должен умереть.

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

C# - управляемый язык, со сборщиком мусора. Как замена цепепе не создавался, но кусок высокоуровневой ниши аля апликейшены и веб все-таки отгрыз. Для низкоуровневой ниши подойдет Ржавчина. А цепе - на помойку.

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

И в скале нет такого понятие как «перегруженные операторы» только лишь приоритет для методов начинающихся с определённого символа

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

К примеру, как мне найти в коде все места, где используется перегруженый для базового класса оператор <<?

RTags?

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

Ну вот - опять на помойку...

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

Конечно C# отгрыз, кто бы спорил... с таким то спонсором...

Но WPF тоже не просто так забросили. Оказалось, что на мобилках со сборщиком мусора — MS не осилил. Может осилит с COM-ом, а что нужно было 20 лет чтобы это понять, так 20 лет MS-у не крюк )))

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

Понимаете, критерием принадлежности к среднему классу в постиндустриальном обществе являются не «побрякушки для папуасов», коими сейчас выступают продукты фаггот-компании от Тима Кука.

Нет, я, конечно не против хороших гаджетов, но только тогда, когда они приносят прибыль, а не являются вожделенным предметом для миллениалов с «синдромом Питера Пена».

Критерий успешности, как в РФ, так и EU и странах Северной Америки - это собственный дом и новая машина типа E или F класса.

При этом квартира или дом, а также автомобиль должны быть не в собственности банка (ипотека, кредит), а в Вашей собственности.

При этом, учитывая формулу «Ehemann, Ehefrau, Sohn, Tochter» суммарно квартиры должны включать в себя не менее 4-х комнат, а у жены - авто класса не ниже D или С.

Данному критерию из наемных работников в сфере IT могут удовлетворять только

1. менеджеры выше среднего звена.

2. тим-лиды и системные архитекторы, работающие с Java-технологиями.

Учитывая Ваши «познания» в географии ДС, я могу сделать вывод, что Вы не смогли устроиться на работу в ДС, ибо «можно ввывести человека из деревни, но нельзя вывести деревню из человека» (С).

Для native жителя ДС, имеющего хорошие стартовые условия, наилучшие варианты с возможностью карьерного роста - это:

- работа чиновником в госсекторе,

- работа в крупном банке менеджером выше среднего звена,

- если работа в IT - то только в государственном или банковском секторе Java-программистом с ростом до тим-лида, а далее системного архитектора.

Но я полагаю, учитывая, что стартовые условия для всех разные, что работа остарбайтера вне среднего класса, для Вас является не худшим вариантом.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.