powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / 90 New Features (and APIs) in JDK 11
25 сообщений из 84, страница 3 из 4
90 New Features (and APIs) in JDK 11
    #39710575
microbash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня смущает суффикс IBM. Зачем вы его дописали? Что такое Openj9 ?


Дописал, чтобы сразу было понятно, что именно я имею ввиду.
Есть два больших опенсурсных jdk: openjdk и openj9 - некий вариант явы от ibm, не так давно переведенную в опенсурс.

У Оракл достаточно много серверного интерпрайзного ПО (оракл формс и проч.), они все требуют oraclejdk (по матрицам совместимостей). И если раньше эту oraclejdk для продакшена можно было скачать и использовать бесплатно, то скоро как я понимаю - будет нельзя. В интернете пишут цену в 25$ в месяц за 1 процессор, это в год получается 300$. У крупных компаний может быть достаточно много систем, как от Оракла, так и российской или даже собственной разработки. И цена таких систем получается подрастает. И на openjdk\openj9 их не перевести (если только собственную разработку, да и то если сторонние библиотеки заработают).
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39710596
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается - начало конца....
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39710687
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Ну да, если "опустим разговоры", тогда пожалуйста - играйтесь.

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

Здесь зависит:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
for (int i=0;i<10;i++)
		doSomethingWithLambda ( ()=> Console.WriteLine) ; 

void call(Func<int> f)
{
	
	f();
}

выведет 0..10, однако в
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
	var actions = new List<Action>();
	
	for (int i=0;i<10;i++)
		actions.Add(() => Console.WriteLine(i));

foreach (var action in actions)
	{
		action();
	}

выведет 10..10, а для foreach цикла это поведение исправили. Немного странно, но не смертельно.
alex55555Выглядит короче и некоторым кажется, что это как раз то, что им нужно. Но эти некоторые, конечно же, совсем забыли про все остальные случаи использования лямбд.

Например - некоторые предполагают, что им на всю жизнь достаточно одного лишь интерфейса Runnable. А я им напоминаю - есть ещё миллионы других интерфейсов. Простой пример - Comparable. И у него один метод - compare(Object x). Но некоторые по прежнему настаивают, что лямбда с Comparable должна выглядеть как lambda.run(). И куда же вставить аргумент? С чем будет сравнивать себя Comparable?

Так вот умные дяди давно поняли, что вызов Х.compare(x) нужно отличать от вызова У.run(). И для того они создали ООП, в котором предусмотрели массу всячески нюансов. А если бы умные дяди не подсуетлись много лет назад, то сегодняшнее подрастающее поколение не смогло бы рассказать, как отличить локальный метод run() от такого же метода объекта У. Ну и до кучи - куда же всё-таки деть аргумент для сравнения?

Что касается Comparable, не вижу большего смысла в его использовании в качестве лямбды (т.к. его предназначение - имплеменить ся классом, который будет поддерживать сравнение). Я не помню, куда можно передать Comparable (мне кажется, никуда), а вот Comparator (lambda.compare(o1, o2)) принимается Collections.sort(), например.
alex55555В общем вижу типичное выхватывание понравившихся кусков, сопровождаемое непониманием взаимосвязей между выхватываемым и остальным. Всё остальное просто перестанет работать, если вот так вот по детски заявлять "я хочу run() вместо У.run()". Потому что кроме одного единственного случая в мире существует много других, про которые тоже нужно думать.

Я вижу косность и ретроградство. Если бы другие люди считали как вы, не появилось бы groovy, scala, kotlin, ceylon и т.д. А Джавой заправляют умные дяди из оракла, которые, не пишут обычный энтерпрайзный код из дня в день, с кучами проверок на null, заведением десятков классов на каждый чих, автогенерацией equals/hascode, геттерами/сеттерами и т.д.
alex55555Когда-то давно в Java умные дяди устранили массу причин для возникновения ошибок, например - указатели. В том числе - указатели на функции. Но подрастающее поколение не ценит достижений предков. И хочет опять получить указатели. Но с ними - все классы ошибок, от которых умные дяди избавили подрастающее поколение.
Не слышал, чтобы кто-то хотел получить указатели. Си - это embedded язык, а в c++ уже 10 лет как никто не использует нативные указатели и ручное управление памятью считается анти-паттероном (если конечно, вы не пишут особый софт). В C# например добавили тип Span<T> для безопасной работы с куском памяти
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39710689
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Когда-то давно в Java умные дяди устранили массу причин для возникновения ошибок, например - указатели. В том числе - указатели на функции. Но подрастающее поколение не ценит достижений предков. И хочет опять получить указатели. Но с ними - все классы ошибок, от которых умные дяди избавили подрастающее поколение.

Если мне не изменяет память начиная с восьмерки анонимные функции компилируются в статик-методы внутри класса
и работа с ними идет через Method-Reference. Это фактически - указатели на функции.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39710690
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Я вижу косность и ретроградство. Если бы другие люди считали как вы, не появилось бы groovy, scala, kotlin, ceylon и т.д. А Джавой заправляют умные дяди из оракла, которые, не пишут обычный энтерпрайзный код из дня в день, с кучами проверок на null, заведением десятков классов на каждый чих, автогенерацией equals/hascode, геттерами/сеттерами и т.д.

На самом деле последние лет 10 ничего принципиально нового не создано. Все что т.н. новое сегодня - это циклическое
переосмысление наработок 20-го века. Акторы были. ФП было. Корутины были. Не дай бох мы еще будем копать в системный анализ
- вообще все уже было. Последнее время просто бизнес-разработка нащупывает для себя подходы к разработке
при которых "кодер средней руки" сможет кодить бизнес-логику и верстать странички. Больше и не надо.
Попытки сделать больше - это "плачущий" Девид Поллак и констатация того что "разработчик уже не тот".

И каково-же моё сегодня удивление когда я вижу что Блин это уже было в Симпсонах Scala! Это было в Хаскелль.
Ребята. Какие стримы? Это мать их Lazy collections. Какие map/fold/reduce (есть другие варианты названий) ?
Это уже старый боян и вы когда их внедряете - хотя бы честно дайте референс на стариков Мак Карти, Хаскела Карри,
и Черча.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711185
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Здесь зависит:
...
выведет 0..10, однако в
...
выведет 10..10
Ну вот, даже сами смогли осознать многовариантность собственного кода. Но конечно такие пустяки, как отложенное или параллельное выполнение вы не вспомнили. Ну да не беда, я вам подскажу - там всё будет совсем непредсказуемо.

И вот зная о полной непредсказуемости подхода с пропихиванием всего доступного во все возможные щели, вы продолжаете настаивать, что все эти новые классы ошибок обязательно включать в стандарт Java?
cossack5Что касается Comparable, не вижу большего смысла в его использовании
Ну ё-моё, это-ж пример (это-ж памятник, кто-ж его посадит!)

Но строгости ради - вы можете обосновать необходимость посадки памятника, да.
cossack5Я вижу косность и ретроградство.
Беспечность в изменении языка приводит к большим косякам. Поэтому беспечные предложения обычно слышны исключительно от молодых да ранних программистов, а вот по рукам им бьют все те, кто уже давно познал горечь знакомства с плодами такой незрелой беспечности.
cossack5Не слышал, чтобы кто-то хотел получить указатели.
Речь шла о возникающих проблемах, которые вы не потрудились исправить. А пример с указателями дан для наглядности. Указатели приводят к проблемам. Свободно валяющиеся в Java функции точно так же приведут к проблемам. Это по сути будет другой язык. Идеология другая. Примерно как в скриптах - можно всё, но косяков при этом миллион. Ну и я вам указал, что вы по молодости хотите испортить хороший язык.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711189
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли мне не изменяет память начиная с восьмерки анонимные функции компилируются в статик-методы внутри класса
и работа с ними идет через Method-Reference. Это фактически - указатели на функции.
Скорее изменяет. Я не ковырял байт-код восьмёрки, но старое решение в виде дополнительного класса вполне будет работать и в новой среде. Отсюда вопрос - а нахрена козе баян? Зачем разработчикам компилятора ваять какие-то убогие костыли, если старое и так работает?

И да, статичные функции не имеют связи с указателями. Они жёстко привязаны к классу-владельцу. Их нельзя никуда передать. Передать можно лишь описание класса, а дальше синтаксис позволит сделать вызов. И где здесь указатели?
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711195
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоследнее время просто бизнес-разработка нащупывает для себя подходы к разработке при которых "кодер средней руки" сможет кодить бизнес-логику и верстать странички. Больше и не надо.
Только не бизнес, а некий довольно анархичный процесс с участием миллионов "творцов" вроде cossack5 и ему подобных. Кто-то из миллионов обязательно попадает в условия, когда имеет возможность пропихнуть своё "я так вижу" в уши некоего ЛПР, ну и далее начинается "творчество" за чужой счёт. А бизнес, вложив деньги, хочет выхлоп. Ну и распространяет заразу.

Хотя да, цель бизнеса при этом - что бы было дёшево и сердито. Но без целей таких людей, как cossack5, существующего бардака с языками и подходами ни в коем случае бы не существовало. В целом имеем сложный эволюционный процесс, в котором одним хочется творить, а другим хочется зарабатывать. И кто кого здесь на самом деле нагибает - вопрос очень непростой. Суммарно cossack5 со товарищи очень сильны.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711237
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пизнес не будет вкладываться малопроверенные и малозарекомендованные инструменты. в основном. есть те кому бабло девать некуда - те да. те попробуют. и может быть им повезет. а может не очень.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555maytonЕсли мне не изменяет память начиная с восьмерки анонимные функции компилируются в статик-методы внутри класса
и работа с ними идет через Method-Reference. Это фактически - указатели на функции.
Скорее изменяет. Я не ковырял байт-код восьмёрки, но старое решение в виде дополнительного класса вполне будет работать и в новой среде. Отсюда вопрос - а нахрена козе баян? Зачем разработчикам компилятора ваять какие-то убогие костыли, если старое и так работает?

И да, статичные функции не имеют связи с указателями. Они жёстко привязаны к классу-владельцу. Их нельзя никуда передать. Передать можно лишь описание класса, а дальше синтаксис позволит сделать вызов. И где здесь указатели?
Дружище. Давай возьмем компилляторы линейки 7,8,9,10 и посмотрим какой они собирают код.
С анонимным классом в семерке. И с анонимным классом и лямбдой во всех версиях постарше.
Я спокойно возьму свои слова назад если я неправ.

По поводу боян и костыли. Я думаю что нам с тобой надо внимательно читать Jep-s. Там всегда есть обоснование
этих улучшений. Возможно экономия perm-gen/metaspace что для фреймворков с автоматическими кодо-генераторами может
быть очень даже оправдано.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711272
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonalex55555пропущено...

Скорее изменяет. Я не ковырял байт-код восьмёрки, но старое решение в виде дополнительного класса вполне будет работать и в новой среде. Отсюда вопрос - а нахрена козе баян? Зачем разработчикам компилятора ваять какие-то убогие костыли, если старое и так работает?

И да, статичные функции не имеют связи с указателями. Они жёстко привязаны к классу-владельцу. Их нельзя никуда передать. Передать можно лишь описание класса, а дальше синтаксис позволит сделать вызов. И где здесь указатели?
Дружище. Давай возьмем компилляторы линейки 7,8,9,10 и посмотрим какой они собирают код.
С анонимным классом в семерке. И с анонимным классом и лямбдой во всех версиях постарше.
Я спокойно возьму свои слова назад если я неправ.

По поводу боян и костыли. Я думаю что нам с тобой надо внимательно читать Jep-s. Там всегда есть обоснование
этих улучшений. Возможно экономия perm-gen/metaspace что для фреймворков с автоматическими кодо-генераторами может
быть очень даже оправдано.
Драфт находится здесь . Финальный черновик здесь . Тема с method-хендлами нераскрыта.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711287
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Скорее изменяет. Я не ковырял байт-код восьмёрки, но старое решение в виде дополнительного класса вполне будет работать и в новой среде. Отсюда вопрос - а нахрена козе баян? Зачем разработчикам компилятора ваять какие-то убогие костыли, если старое и так работает?

Вот ведь, разработчики компиляторов, рантаймов, и другие умные дьдяки Оракла, негодяи какие, взяли и наваяли какие-то убогие костыли, и даже не удосужились спросить экспертного мнения alex55555.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711733
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДружище. Давай возьмем компилляторы линейки 7,8,9,10 и посмотрим какой они собирают код.
Давай. Ты ещё не взял?
maytonПо поводу боян и костыли. Я думаю что нам с тобой надо внимательно читать Jep-s. Там всегда есть обоснование
этих улучшений. Возможно экономия perm-gen/metaspace что для фреймворков с автоматическими кодо-генераторами может
быть очень даже оправдано.
И когда же ты почитаешь?
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711737
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Вот ведь, разработчики компиляторов, рантаймов, и другие умные дьдяки Оракла, негодяи какие, взяли и наваяли какие-то убогие костыли, и даже не удосужились спросить экспертного мнения alex55555.
Вы по вами представленной ссылке текст читали? Мне очевидно - нет.

Так вот там написано - никаких указателей.

Слушают меня умные дядьки :)
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711826
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555cossack5Вот ведь, разработчики компиляторов, рантаймов, и другие умные дьдяки Оракла, негодяи какие, взяли и наваяли какие-то убогие костыли, и даже не удосужились спросить экспертного мнения alex55555.
Вы по вами представленной ссылке текст читали? Мне очевидно - нет.

Так вот там написано - никаких указателей.

Слушают меня умные дядьки :)
Где я что-то говорил про указатели ? Вообще, то как это реализовано на данный момент, неподвластно вашему пониманию. Указатели или нет. Так что спорить не о чем.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711835
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Так что спорить не о чем.
Ну как вам будет угодно. Хотя всем очевидно, что аргументов нет.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39711979
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5maytonпропущено...

Дружище. Давай возьмем компилляторы линейки 7,8,9,10 и посмотрим какой они собирают код.
С анонимным классом в семерке. И с анонимным классом и лямбдой во всех версиях постарше.
Я спокойно возьму свои слова назад если я неправ.

По поводу боян и костыли. Я думаю что нам с тобой надо внимательно читать Jep-s. Там всегда есть обоснование
этих улучшений. Возможно экономия perm-gen/metaspace что для фреймворков с автоматическими кодо-генераторами может
быть очень даже оправдано.
Драфт находится здесь . Финальный черновик здесь . Тема с method-хендлами нераскрыта.
Эээ... я просто не понял. В первом предложении вы пишете две ссылки. Типа рекомендуете
читать. А дальше - тема не раскрыта. Тоесть читать не стоит? Проясните.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712013
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytoncossack5пропущено...

Драфт находится здесь . Финальный черновик здесь . Тема с method-хендлами нераскрыта.
Эээ... я просто не понял. В первом предложении вы пишете две ссылки. Типа рекомендуете
читать. А дальше - тема не раскрыта. Тоесть читать не стоит? Проясните.
Я имел в виду, не описано как именно работают метод-хендлы (хотя, если учитывать, что они появились раньше лямбд, может и не стоило описать их в статье про лямбды) . А так читать, конечно стоит.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5maytonпропущено...

Эээ... я просто не понял. В первом предложении вы пишете две ссылки. Типа рекомендуете
читать. А дальше - тема не раскрыта. Тоесть читать не стоит? Проясните.
Я имел в виду, не описано как именно работают метод-хендлы (хотя, если учитывать, что они появились раньше лямбд, может и не стоило описать их в статье про лямбды) . А так читать, конечно стоит.
Забегая вперед я скажу что я пока не знаю как они работают. Но вот смотрю на кусок кода из Хорстмана.
Обратите внимание на Collectors.toMap.

Код: java
1.
2.
3.
List<Person> persons = ............
Stream<Person> people = persons.stream();        
Map<Integer, String> idToName =  people.collect(Collectors.toMap(Person::getId, Person::getName);


Он имеет несколько перегрузок но КМК работает вот эта.
Код: java
1.
public static <T, K, U> Collector<T, ?, Map<K, U>> toMap(Function<? super T, ? extends K> param0, Function<? super T, ? extends U> param1);



Тоесть ссыла на метод - это функция Function<? super T, ? extends ...>. В семерке мы могли создать анонимный
класс и определить в нем отдельно getId, и потом создать еще один класс и определить в нем getName
и передать их в коллектор. Согласитесь - ненужные активности. У нас и так есть ссылка на метод.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712160
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ нас и так есть ссылка на метод.
Ну конечно же нет. Но копать стоит, в конце может наступить понимание.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712161
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ семерке мы могли создать анонимный
класс и определить в нем отдельно getId, и потом создать еще один класс и определить в нем getName и передать их в коллектор.
Кстати - не могли. Ну да это и так будет понятно после наступления понимания.
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712173
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555maytonВ семерке мы могли создать анонимный
класс и определить в нем отдельно getId, и потом создать еще один класс и определить в нем getName и передать их в коллектор.
Кстати - не могли. Ну да это и так будет понятно после наступления понимания.
Почему не могли ?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Collectors.toMap(
new Function<Person, String>() {

            @Override
            public String apply(Person person) {
                return person.getId();
            }
        },

new Function<Person, String>() {

            @Override
            public String apply(Person person) {
                return person.getName();
            }
        });
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712193
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valentin Kolesnikov,

Здравствуйте как можно с вами связаться для личной беседы, почта, телеграмм?
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712222
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обидно, что JEP 326 не попал в 11 LTS (( Это реально то, чего мне капец как нехватает...
...
Рейтинг: 0 / 0
90 New Features (and APIs) in JDK 11
    #39712255
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirОбидно, что JEP 326 не попал в 11 LTS (( Это реально то, чего мне капец как нехватает...

Реально не хватает или зудит ?

Выглядет как неплохо бы иметь для читаемости но без острой необходимости и обязательности.
Если только у вас не специфический проект?

Можно кстати сразу привести примеры и поделиться в каких случаях вот прям не хватает было бы полезно.
Спасибо заранее.
...
Рейтинг: 0 / 0
25 сообщений из 84, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / 90 New Features (and APIs) in JDK 11
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]