JDK 9 reached General Availability — почему молчим!?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Как-то без должного освещения прошло чуть ли не самое важное для большинства представителей Java-коммунити событие — JDK 9 теперь GA & Production Ready.
Лично я ожидал этого чуть более года, и вот теперь можно грабить корованыщупать стэбл.

Окончательный список основных изменений, новых фитчей и прочее — на официальном сайте (дабы не заниматься банальной копипастой), овервью 9 API здесь, а вот все тьюториалы пока остаются, к сожалению, только для API JDK 8 (о чем нас и предупреждает раздражающая надпись сверху), однако, как официальная, так и сторонняя документация уже начали адаптироваться к новой Java-реальности.

Повторюсь, я не вижу смысла приводить здесь полный список всех фитчей (это темы для очередных дайжестов и циклов статей), здесь же нам важно то, что «JDK 9 reached General Availability on 21.09.2017», с чем всех и поздравляю.

А пока с офф. доками испытывается некий напряг, поделюсь инфой с интересующимися теми книжными изданиями, которые уже имеются/планируются зарелизиться в ближайшем будущем:

— Java 8 & 9 in Action
— Java 9 Modularity in Action — а так же очень ранняя видео-презентация и слайды по ней от этих же авторов
— The Java Module System

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

Ну а пока буду начинать пробовать адаптироваться к новой Java, в общем всем функционально-реактивной модульщины из коробки!

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Мля, нумерація версій одним числом заразна:
www.infoq.com/...​1/new-version-scheme-java
Скоро будемо мати Java 10 потім 11, 12 і т.д. через кожні півроку.

А могли бы просто назвать следующую мажорную версию Java A (Нет не могли, потому ClassCastException everywhere)

UP: поскольку целью топика является оповещение всех приаттаченных субъектов (субъектов, Карл!) так или иначе заинтересованных и следящих за сабжем, смею донести до ведома онных и остального коммунити, что за время существования сабжа был зарелизен дайджест посвященный данному событию, а так же уже один чел любезно поделился с нами своим экспириенсом при переходе на JDK 9, что наглядно показывает, что худо-бедно, но реальный процесс начался, и нам всем будет любопытно понаблюдать за онным.

далее, ввиду определенной небезинтересности сабжа для масс, все дальнейшие дискуссии, обладающие полезной нагрузкой (т.е. сеящие светлое и доброе в наш Java-мир) предлагаю перенести в топик соответствующего дайджеста, дабы не размазывать суть сабжа по всему форуму, обеспечив тем самым централизованное хранилище полезного экспириенса в более релевантом проблеме месте — итоговому тематическому обзору.

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

фронтэнду фарт, бэкэнду масти [© — отсюда откуда-то]

кароч поюзал 9-ку, личное имхо:
— нужно ждать адекватную доку
— 9-ка лучше, чем 8-ка, ибо incremental experience sharing и вообще, мыслеформы, заложенные в релиз трансцендентально доставляют (незабываем, мы говорим о стандарте, а не «а вот в этом движке уже давно запилили» мыслевысере)
— личное ИМХО — за FRP&реактивщиной будущее, а посему учи лямбды, сцуко, с тебя спросят ;)

ну и в целом, ощущения более позитивные, чем было до 9-ки, но и на прочий экспоненциально развивающийся зоопарк следует обращать внимание

зы: всем удачных найт-билдов. главное, что довели ньюсу до ведома конечного потребителя своевременно )

9-ка лучше, чем 8-ка

— 9-ка лучше чем 8-ка!
— Чем?
— Чем 8-ка.

КоТлен не потрібний. За рік, два весь хайп пройде і всі далі будуть писать на джавці. Плюс ще десь тоді має зарелізиться Скала 3. Тому андроїд — це максимум для Котлена.
P.S. Завжди радий поділитися своєю авторитетною аналітикою.

Учить что-то только потому что «с тебя спросят» — вот и всё доказательство мало/бесполезности. Учить к сожалению приходится, потому что спрашивают то, что сами только что выучили. Но употреблятьблять это не нужно!

фронтэнду фарт

учи инглиш, сцуко. Сам-то понял что сморозил?

думаю одну боковую ебалу на 9ке попробовать пописать на пробу ( но может психану и попробую go )

Для тех кому лень читать все комментарии кратко резюмирую:

— О Тесла новая вышла, прикольно
— А мне и на стареньком дизеле нравиться ездить
— А мы на паровом двигателе ещё, он нас всем устраивает, надёжно работает, только коптит сильно, но мы привыкли
— А мне нравиться новая Тесла, только непонятно куда бензин заливать, вот скоро этот баг подправят и вообще бомба будет

С точки зрения «чего хотел пользователь», это вышла новая версия Камаза, теперь — с шашечками!

Уточни «мы». Бензопила штука быстрая, но на всех всё равно не хватит, с кого начинать?

спили мушку, детка ;)
jigsaw по-своему норм няшка, можно дать шанс напосуществовать и коммунитивно на попробовать )

Как вам новая реализация immutable коллекций через старые интерфейсы?
Особенно радует метод add и его реализация.

Да похеру. Immutable-коллекцию зовут Array. А там хоть в шаурму заворачивайте, всё равно это будет Array.

С нефактами идите в... жабаскрипт. Там точно не хватает типа NaF по аналогии с NaN :)

т.е. вас throw exception в рантайме вполне устраивает?

Если это массив, и у него попытаются вызвать отсутствующий метод? Более чем. Меня даже устроит это на этапе компиляции. Ибо нехер.

Как бы да, анальные фантазии это не по мне :)
Сказано immutable, и нехер туда ничего совать.

«Даже» на этапе компиляции?) Только так и должны бросаться ошибки, все что в рантайме потенциально поломает вам продакшен.

так є вже шаурма — List<?>, Set<?>  і т.п.

Так а я о чём? Кто ляшко — пусть это и пишет, и тем более пытается дёргать неработающие методы. Нормальным людям это просто чтобы унифицировать интерфейсы при передаче данных и всё. ЗАЧЕМ из коробки подсказывать что можно пытаться размножаться через универсальный интерфейс? Кому это необходимо пусть бы сам дописал. А так хер потом увидишь в коде, где грабельки-то!

нормальные люди вместо разбрасывания говна на ботанских форумах в азиатских официанточек прессами зелени швыряются, с какого перепугу ты тут от лица нормальных вещать соизволил, клоун ?)

«Связный список», не, не слышали ?

Уточни конкретику, термин имеет несколько несовместимых значений. За некоторые даже не казнят.

Как вам новая реализация immutable коллекций через старые интерфейсы?
Особенно радует метод add и его реализация.

1) То есть радовать начала вас только эта реализация. Старая реализация мутаторов на немодифицируемых коллекциях вас не радовала?
2) Вы бы почитали openjdk.java.net/jeps/269 В джаве нет никаких «immutable коллекций», пока что. В 9-ке добавили фабричные матоды для коллекций.

добавили фабричные матоды

Спасибо, теперь знаю как они произносются. Непереводимые идиоматические выражения при чтении чужого кода с этими самыми жертвами искусственного зачатия через анус.

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

всё то у вас через жопноротовую полость, даже зачатие... в прочем, у кого что болит как говорится... я бы вот таким, как твой детский врач язык вырывал бы за раскрытие таинства воплощения в этот мир подобных тебе аномалий, хотя как вариант — можешь на Гиннеса попретендовать попробовать, лол аж глаза слезятся: первый в мире говновысер печатающий по клаве! браво! бисс! респект мамке! аж до слёз, сцуко! ))

с этого финта я удивился, на этом фоне у скалолазов с коллекциями все просто збс

А можно в двух словах что там за финт? Я почитал но ННП

У unmutable коллекции есть add за который если дернуть выпадет run time exception. Не аккуратненько

Сделали «из коробки» то что работало во фреймворках 10 лет до эры ловли покемонов. Эка невидаль. Нельзя просто взять, и сделать как в одном из фреймворков, или с уже принятым синтаксисом. Это же жаба, только через анус!

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

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

Достижения разумеется те же, что и все прошлые «покращення»: повышение требований к людям, обязательность знания недокументированных граблей, более качественное сокрытие багов через 100500 кое-как документированных но редко пользуемых хуков. По итогу, удорожание разработки + удорожание поддержки.

Правильный подход: не трогать год-другой для серьёзных проектов, можно подсесть на баг-трекер чтобы убедиться что были правы. Потом, по мере выхода и отладки этих фич на серверах приложений — внеднять в логику средних проектов. Большие и малые — по мере крайней необходимости.

Зрада!!! (на самом деле — нет)

Без модульности 99% проектов перейдут без проблем (я уже перешел). Если добавлять модульность, то основная проблема тут в первую очередь в том, что большинство опен-сорсных проектов пока что не мигрировали на девятку.

Если они и микро-жабу допилили до этих фич — это да, интересно. Модульные апдейты проводить знамо проще.
Как это коснётся ведроид-разработки — будем посмотреть. Как раз там давненько приличных фич не хватало. Но опять же, вопросы безопасности, пущай их потестят кто-нибудь другой на своей шкуре. Слишком уж быстро дыры превращаются в эпидемии.

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

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

хмм.. пора начинать учить лямбды )

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

Не исключаю что в будущем их таки доведут до ума, чтобы код был легко читаемым. Но сомнительно. Все любят начинать свежие инновации, а доделывать — никто не хочет.

Не потому что они не работают, а потому что катастрофически портят читаемость кода

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

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

Рекомендую бегло просмотреть и ASAP продебажить чужой код на этих лямбдах. Китайский.

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

Реальные же люди не готовы повышать производительность мозга каждые три года, обучая его сборке шаблонов «на лету». У нас всё так же выучить таблицу умножения год занимает, не говоря уже о логике у самок. И чем больше дерьма в языке — тем экспоненциально меньше нас способны им пользоваться.

Если бы кулинария развивалась так же, как программирование — на кухне стояли бы микроскопы, ультрафиолетовый туннельный сканер, была сверхчистая зона и автоматическая сортировка мусора. Кулинары занимались бы тем, что из ДНК собирали новое мясо просто для того чтобы сделать бутерброд. При том что на расстоянии 100м от места готовки сотни ларьков торгуют вовсю такими же бутербродами, которые уже готовы,и первые 10 бутеров бесплатно.

Если ваш мозг не может осилить синтаксис лямбд, то это сугубо ваша проблема.

Это ж тролололллоууу
Читайте иногда нетехнические темы )))

Проблемы от них бывают только тогда, когда ими начинают пользоваццо люди которые не понимают зачем вообще лямбды придумали))

Лямбды в общем случае обычно гораздо более читаемы чем адские циклы с невнятным именованием переменных.
upd. Если боремся за производительносць, то понятно шо лямбды не ко двору...

Тю, выж питонист. Пройдите один раз курс по хаскелю, больше таких желаний возникать не будет, Наоборот будет желание найти всех тех кто нагородили все эти фор.

Чем плох синтаксис JAVA 5
for(MyClass m:myArray) m.doSomething;
и заметь, прекрасно расширяется — без малейшей йообли с разбором где терминальный оператор, где ветвящий, где преобразующий тип данных, где ворующий данные, где плодящий новые. ВСЁ что надо — будет в коде, нихера не надо додумывать. Плодищь данные — пиши строчку, объявляй тип. Фильтруешь данные — пиши грёбаный if и не выделывайся, итд итп.

Что в Скале хорошо, то в жабе заноза.

Это вполне применимо, но ТОЛЬКО для узкого класса высокопараллельных задач. И вполне себе пахало на фреймворках, никого не трогая в петабайтах прикладного кода.

Но нет, падшаяженщина, понадобилось всем впизьдюрить своё говно как обязательное.

ну на счет производительности я бы поспорил, но это не столь важно как кое-что другое.
Как насчет многопоточности и инвариантности лямбд в сравнении с обычными функциями(конечно можно и те сделать инвариантными, но сколько понадобится усилий и грамотного кода)? Отсюда вытекает другая интересная штука, что в многопоточной среде, куда более весомей надежность кода.

Так с перформансом почти всегда беда из-за базы, которую orm насилует или девелопер, который думает, что там все мгновенно происходит )))

Но в реальности ВСЕ случаи частные. В этом и суть программирования, чтобы вся эта частность попала в код, и была через этот код управляема.

А производительность лямбд не особо тормозная. Если надо производительность, там вообще всю жабу переписать требуется, начиная с отвязывания от класса Object несвойственного ему функционала — управления конкуренцией. Вешать монитор наблюдения на каждый объект, присваивать ему реал-тайм хэндлеры, иденетификаторы.... это ли не маразм! Я написал int i — а жаба уже стек из туевой хучи идентификаторов подняла.

что же вы с такими познаниями тут на dou делаете? Вам самое место проталкивать новые стандарты в JCP
:D

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

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

А пендюрить их в другие места — не больше чем понты из серии «посмотрите как я умею». Хотя по сути это не своё умение, а всего лишь задействование инструмента, забивание гвоздей плоскогубцами.

За то время которое ты потратил на коментарии в этой теме, уже можно было выучить лямбды и успокоиться. )) Вот семь протсых шагов к гармонии
1. шок или неверие,
2. отрицание,
3. сделка,
4. вина,
5. гнев,
6. депрессия
7. принятие
Ты пока на второй, но и это уже прогресс.

Из разряда — вы гомосексуалист, но пока на первой стадии )

Тоесть, лямбды признак гомосексуализма? Что тогда говорить про прототипное наследование и всякие call и apply для смены контекста функции? )))

Нет. Но так как его используют жаболизы и скалодрочеры — это извращение.

Я знаю. Просто сам пишу почти без лябмдей.
А кто тебе таки сказал, что временные понты — это НЕИЗБЕЖНО?

Есть узкая область применения лямбд — более краткая запись того, что раньше писалось анонимными классами. Во что кстати говоря компилятор их и превращает.

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

Отнють, лично мне лямбды только упростили разработку и рутинную работу с циклами и анонимными методами для делегатов, ничего сложного там нет.

За время написания этого коммента ты мог написать 4-5 циклов. А сколько тебе их надо в день?

Лямбды пишутся быстрее циклов, вот откуда у меня столько времени на доу, а вот как ты успеваешь — хз )))

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

Вложишь так одну лямбду в другую — весело же.

Смазываешь колышек мылом, сажаешь очечком.... весело же!

не, ну во многих случаях, лямбы таки более быстрее читаемы, разумеется при условии, что читающий ознакомлен с минимально-необходимой мат. частью и понимает как и почему работает этот синтаксический boilerplate-killer механизмЪ

в любом случае, разумеется, это всего-лишь одно из небольших воплощений тех хотелок, о которых коммунити галдит уже достаточно ощутимое время, но всё-таки, это лучше чем то, что было с анонимными классами, ящитаю ;)

Гыы.. а как вам получение одно из 4 значений с помощью Optional
Boolean> ? (:

Новый тип в java8, как я понял, позволяет более легко работать с null, с помощью лямбд и своих методов.. habrahabr.ru/post/225641

ноуп) после вина не бывет агресия, скорее релакс, иногда секас )))

иногда секас

Фигасебе! с чем? с генту штоле ?

Вино обычно с тян пьется, а под генту разве что певас ))

Если плохо читаются, попробуй выносить в переменные с хорошими именами

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

чего ради?
Если с умом применять stream api, то это дает lazy обработку потока,избавляет от проверок на null и кучу других вкусностей, при этом непонятными они бывают только для студентов либо тех кто привык к старому олдскулу, ну или на крайний случай просто тем кто их не знает.

Ну тема про java я и пишу про java)
У нас все весомые люди из мира java как раз таки советуют использовать лямбды ибо это более лаконично и читабельно, и это дает не мало плюшек. Да и в целом сейчас уже устоялся тренд перехода на ФП языки.
А в остальном понятия не имею как там у вас на питоне, и даже знать не хочу)

Если с умом применять stream api, то это дает

Так я ж курва про те й кажу: нахєра ото все «з умом», коли воно має буди зрозуміло написано без усієї тої хитровисношеної філософії.

при этом непонятными они бывают только для студентов либо тех кто привык к старому олдскулу

Тобто, щоб лише прочитати код, треба
— вчитися 5 років
— не бути програмістом до JAVA 8

Та нахєра воно здалося! Я буду писати такий код, що й школота зрозуміє. А де не зрозуміє, то коменти будуть. Можете скільки завгодно дрочити на лямбду, спагетті-код та регулярні вирази, але нормальний код будуть писати люди традиційної логічної орієнтації.

Йдіть до дупи, вчить матан, матєматікі хєрові. Код звичайним людям повинен як робоча коняка. Пахати й борозди не псувати. Бабло заробляти і бабло економити. Все інше — фантазії психічно хворих наполеонів.

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

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

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

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

PS Суд оправдал

Догадываюсь почему оправдал. Дали почитать код :)

Не потому что они не работают, а потому что катастрофически портят читаемость кода, не говоря уже про отладку.

Бгг, скалисты смотрят на вас с неуважением, лол.

Не исключаю что в будущем их таки доведут до ума, чтобы код был легко читаемым. Но сомнительно. Все любят начинать свежие инновации, а доделывать — никто не хочет.

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

Камоон, в дотнете, который многие джависты не переваривают, уже давно лямбды, и они просто божественны, обожаю работать с коллекциями через лямбды, очень просто фильтровать коллекции или проверку на количество нужных эллементов по нужным полям, не надо писать новые компараторы и стопиццот методов для каждого for each, легко перемапить нужные данные из одной коллекции в новую или скипнуть количество эелементов для пейджинга и прочее прочее, лямбды просто божетсвенны, просто не надо туда пихать детсяки строк кода, лямбда, это когда тебе нужен метод на пару тройку строк и выглядят они куда более читабельнее чем эти for или for each.

Выражение с одной-двумя лямбдами смотрится вполне нормально. Равно как и обычный код. То есть разницы не то чтобы большой нет, её нет вообще.

А вот когда вступают в дело горизонтальные спагетти... тут можно 10 минут вмыкать в «логику» силясь понять что же она ДОЛЖНА делать по замыслу автора. Равно как и куча использования этих самых вроде бы простых лямбд перестаёт читаться — мозг просто узнаёт «паттерны» даже не силясь понять логику, которая там есть, но по сути не видна.

Смотри в чём грабли: лямбда-выражения по сути это перегрузка переменной this. А мозг не умеет переключать контекст с той же скоростью, с которой читает текст. А вот с позиционированием у мозга всё лады, и связать состояние с местом — прекрасная мнемотехника для быстрой памяти. В остальном же и бинарный код можно научиться читать — но зачем мучать тормозной человеческий фактор, когда можно использовать преимущества IT?

А насчёт размазывания пунктуации на десятки строк — я и в обычном коде против. Ничто не мешает писать IF в одну строчку с тем что за ним следует. Даже если действий несколько.

Да к ним привыкнуть делов то на несколько часов, главное, что это удобно. А спагетти хоть лямбда хоть for\for each ужасен, это другая проблема.

Да это просто меняет направление спагетти и всё. Привыкнуть несколько часов в сутки — не дохера ли?

Насчёт ужасности for — мне бы ваши ужосы! Вы не видели реально ужасного кода в боевом исполнении, при том что сеньорность автора зашкаливает, сантиметров 25 не меньше. [борода, а вы об чём подумали]

Циклы перебора — это настолько же узнаваемый шаблон, как припев в частушках. То есть код из них состоит чуть менее чем полностью.

В плане языка c# давно обставил java

Согласен, но я даже не за то, обставили или нет, просто лямбды очень удобная вещь и очень простая.

Для написания — да. А вот прочитать потом чужие мысли — буееееееее..%*(;*.%%%;

Однозначно перепишу в константний ряд. Що робить навіть догадуватися не буду, бачу що самі константи, тому загоню в тест і зроблю вставку.

Якщо це бойовий проект, то залишу минулу версію в коментах, із відповідним записом. Що хто зрозуміє перепишіть, автор вже не зможе бо випив йаду.

Інша мова, ті ж самі лямбди. Що робить цей код?

Впустую напрягает процессор и мозги разработчика.
Процессор потому что фильтер лучше делать до мапа.
Заменив вот это #(* % %) на что-то именнованое читабельность бы увеличилась.

Почему впустую, а как же генератор ошибок? Ведь тот кто пишет тоже не видит что получается, и единственный способ в этом удостовериться — покрыть полным тестом. И уже в тесте — написать по-нормальному.

Отличный повод оправдать попа-часы.

лямбды очень удобная вещь и очень простая

много людей, музыка хорошая

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

Я бы и рад чтоб по-другому, но от осинки не родятся апельсинки.

Лицензии на что, на виндовс? )) Там уже давно дофига фришных версий, как на студию так и на сиквел и на прочее прочее. А всякие энтерпрайз версии они в любом стеке платные и в цене разработки составляют весьма скромную часть.
Переносимость упорно пилят и уже есть .NET Core 2, понятное дело там еще много работы но уже часто приходят пропозишены от местных контор на новом Core. Так что переносимость это дело временное.
Впрочем я не хочу устравить древний срачь, вполне нормально отношусь к java и то что там уже напилено дофигища либ и прочих решений.

У дотнетчиков очень выскоий уровень толерантности (как минимум на порядок выше чем у джавистов) к всякой ******* которая происхоидт подачи MS, так что не аргумент.

Что правда то правда. Хотя индусов и в жабе хватает.
Хочешь реального понимания что происходит в Жабе — декомпилируй код. И вот то что ты увидишь, и будет то что надо было писать изначально, без синтаксического сахара вазелина.

Прямо на ассемблере байткода.

А что тебе не нравится в том, что последнее время(со сремен индуса) происходит в .NET?

Я давно понял, что лодка .NET имеет пункт назначения на дне океана, поэтому вовремя свалил. Задам встречный вопрос — что вам понравилось в .NET после выхода .NET 3.5?

TPL, async/await, PLINQ
Нові штуки в ASP.NET, .NET Core

А еще Kestrel(нет привязки к IIS), Owin\Katana (middleware), .NET таки переходит на линукс, вместе с ms sql, то как прокачивают Asure, поддрежка докеров в пару кликов через студию, передерали кучу фич из решарпера в студию.
Но все еще херово студия работает с Git

в принципе, все эти лямбды учатся за один вечер, и там основная ф-ность не просто в лямбда-экспрешенах как таковых, а использование их с другими артефактами. Собственно, всё что нужно, что б раскурить и начать использовать лямбды в Java:
— Lambda Expressions
— Method References
— Пакет java.util.function
— Пакет java.util.stream

ну и эта книга Java 8 in Action как резюме всего вышеприведенного

Учатся — да. Но те лямды что из коробки — нахер никому не сдались. Чтобы посчитать сумму чисел от 0 до 100, жаба не нужна. А те лямбды которые можно разработать и которые якобы должны привести к быстрому написанию кода — кастастрофически сказываются на читабельности.

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

Не всё то повидло, что от титулованных говнокодеров.

Учатся-то может и за один долгий вечер. А вот грамотно применять всё это в комбинации — нужно пописать код с ними несколько месяцев, посмотреть/почитать несколько практических туториалов со сравнением плохих и правильных подходов, по типу этого — github.com/...​xpinjection/java8-misuses . Потом переосмыслить и отрефакторить прежний код, написанный сразу после начала изучения.

Ещё на прошлой неделе думал создать подобный топик, но потом как-то решил, что пока нечего особо обсуждать. :-)

Всё что выше jdk 7 — дрочево и хипстерство.

все что высше 1.4 я бы сказал

Нифига, там как раз нужных фич накидали. Понятных. Ещё бы понятное GUI... но вигвам, лучше стопиццот вариантов того что уже и так работает.

Да кто вообще пишет на джаве GUI?
А те кто пишут — как им поможет что-то новое... Если у них 10-летнее легаси на свинге.
Или 20-летнее на AWT

А что плохого в самой идее GUI на жабе? Если даже грьёбаный вайбер со старта жрёт 300 метров оперативы, то на жабке явно легковеснее всё бы получилось.

Вопрос только в том чтоб сделать. И кстати говоря, Swing — не худшее решение по механике, вопрос только в наличии приличных библиотек самих компонентов. Впрочем, допускаю что давно пора запилить обычную DOM-модели и не выйоживаться. А вот легковесных браузеров под такую задачу пока не попадалось, все тянут за собой туеву хучу сетевого дерьма, сетевой безопасности, протоколов...

так и сторонняя документация уже начали адаптироваться к новой Java-реальности.

А что поменялось для прикладного разработчика?
Как по мне то самое больше влияние на рядового разработчика окажет JEP 225.
Для тех кто актично вовлечен в траблшутинг важно что поменялся стандартный тулинг, но по большей части люди пользуются сторонними тулами.

JDK 9 reached General Availability — почему молчим!?

Заходите завтра почитать Ленту на ДОУ. Как по мне самое интересное — это не сама 9-ка, а то что происходит вокруг нее и рядом.

А что поменялось для прикладного разработчика?

Нативные Reactive Streams?

Нативные Reactive Streams?

Что значит «нативные»?

На сколько я читал джеп, там только интерфейсы и явно написано что имплиментацию на 9-ку не планируют.

Могли бы вы описать как это повлияет на вашу работу, ваш код.

Liskov substitution principle. Т.е. теперь в теории я могу спокойно менять Akka на RxJava или на Spring

Liskov substitution principle. Т.е. теперь в теории я могу спокойно менять Akka на RxJava или на Spring

Ага, и сделать это с таким же успехом как и поменть БД используя хибернейт :)

И узнать много нового о костылях под каждую базу — уже в продакшене узнать :)
ИЧСХ, тесты этого даже не заметят.

ну например, да — Flow. лично для меня плюс здесь в том, что Reactive Streams теперь часть спеки. Разумеется, это не означает, что теперь любой код имплиментирующий асинхронную ф-ность будет следовать набору и-фейсов из спеки. Просто в теории, это может оказать влияние на подходы к проектированию приложений в сторону асинхронной service-oriented парадигмы в целом. Либо же просто более популизировать эту модель, сделав Must Know на ряду с GoF/JEE Core/etc паттернами.

разумеется, вы правильно заметили что это коснется больше туллинга, но и так же окажет ощутимое влияние и на всю экосистему, например Spring 5 стал GA сразу после того, как зарелизилась Java 9, однако Spring Boot имеет определенные трудности. Здесь важно то, что 5й спринг — это совершенно новая модель, основанная на асинхронных реактивных принципах, и теперь, после Java 9 GA, он релизится и бустится в массы неся с собой новые методологии проектирования в целом, и это один из примеров.

Ну вот от Спринг 5 пляска и начнётся, а не от Java 9.

ну здесь, 9-ка как прецедент ;) без запиливания в спеку, это так бы и оставалось «yet another point of view» в моделях и парадигмах программирования, имхо

без запиливания в спеку, это так бы и оставалось «yet another point of view» в моделях и парадигмах программирования, имхо

Хм, вы бы посмотрели историю спринга и хибернейта.

Либо же просто более популизировать эту модель, сделав Must Know на ряду с GoF/JEE Core/etc паттернами.

1) ДжЕЕ не Must Know. Большинство пользуется в лучшем случае немного JPA, Servlets + кусочками JAX-RS немного.
2) ГоФ используют только чтобы выпендрится на собеседовании.
Но в общем-то вы правы на ряду с перечислите стадии жизни сервлета, что делает аннотация РестКонтроллер и что такое синглтон, появятся еще и перечислите интерфейсы в классе Флоу :)

разумеется, вы правильно заметили что это коснется больше туллинга

Про тулинг я говорил про джШелл и то что набор стд утилит в папке бин поменялся :)

Здесь важно то, что 5й спринг — это совершенно новая модель, основанная на асинхронных реактивных принципах

И это немного пугает, ибо есть вероятность что на 5-й спринг не будут спешить обновлятся.
Но это все философия и догадки, надо смотреть.

Мой вопрос был про сейчас:

Могли бы вы описать как это повлияет на вашу работу, ваш код.

Вот получите вы разрешение на обновление джавы. Что дальше? Выбивать время на обновление спринга и __переписывание__ кода?
C версиями 7 и 8 было все понятно. А 9-ка как-то похожа на 6-й релиз.

Підписатись на коментарі