Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Ось вона — Java SE 7

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

Нарешті збулося — вийшов реліз Java SE 7.
В реліз попало:
• Project Coin- many small language changes that add up to a big boost in productivity for developers
• The Fork/Join Framework — facilitates parallelism for multi-core processors
• The New File System API (NIO.2) — provides the ability to perform many basic file system operations natively
• InvokeDynamic — makes it easier to run other languages on the JVM
Всіх вітаю з цією подією!

Реліз тут blogs.oracle.com/...​a/entry/java_se_7_is_here
Качаємо тут www.oracle.com/...​vase/downloads/index.html

👍ПодобаєтьсяСподобалось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
Не используйте Java7 ни для чего

habrahabr.ru/...gs/java/125362

Свежий релиз всегда был уделом энтузаистов. На продакшен-систему его ставить обычно нет дураков.

Да, но к стабильности джавы есть вопросы. У меня, например, есть проект, который периодически на Windows роняет JRE6.
К тому же с некоторыми опциями оптимизации падает и Java 6 по причинам, указанным в ссылке.

Это да. Но чаще всего она падает потому, что вы что-то очень хитрое накрутили.

Замечание: эти ошибки также могут проявляться в Java 6, если включён один из флагов оптимизации: -XX:+OptimizeStringConcat или -XX:+AggressiveOpts у JVM.

Когда люди научатся понимать значения Слова «агрессивный»?

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

ИМХО, это статья из серии «Оракл убьет МуСКуЛ, ааааа всем писец».

Когда люди научатся понимать значения Слова «агрессивный»?
Почему никто не орет что гугловская сжималка скриптов в адвансед режиме глючит?
1. У меня падения есть и без включения аггресивной оптимизации. Притом пару раз случался крэш JVMки на тех же IDEшках
2. Аггресивная значит что оптимизируется сильно и в ущерб простоте(например), возможности дебага, но оптимизация не должна вносить баги. Никогда. Почему компиляторы С++ при реордеринге операций не переставляют зависимые действия? Так же точно будет быстрее выполняться, да и цикл этот не нужен, выбросим ка его нафиг.
3. Сорри за отсылку к дотнету, но мои знакомые дотнетчики последнее падение их машинки вспомнили для 2й версии. С тех пор не было.
4. Никто не кричал что мы все умрем. Просто есть баги и о них надо возмущаться — починят быстрее.

Почему компиляторы С++ при реордеринге операций не переставляют зависимые действия? Так же точно будет быстрее выполняться, да и цикл этот не нужен, выбросим ка его нафиг.

-O3? И всякие флаги, которые я уже не помню.

Просто есть баги и о них надо возмущаться — починят быстрее.

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

1. У меня падения есть и без включения аггресивной оптимизации. Притом пару раз случался крэш JVMки на тех же IDEшках

Здаетсо мне шо это таки качество кода, а не джавы.

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

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

Здаетсо мне шо это таки качество кода, а не джавы.

Люди нашли комбинации кода и настроек, при которых с неизветной разработчикам VMки причиной падает VMка. Она не должна падать, это поведение равнозначно хардварному багу реальной машинки. Вы же не считаете, что виноваты разработчики программы из-за того что их программа использует процессор на 100%, он перегревается и уходит в ребут по неизвестным интелу причинам? Аналогия простая и понятная.

О3 не выбрасывает цикл так, что меняется результат.

Когда-то и циклы и условные операторы выбрасывал (может не сам О3, а какие-то доп флаги, но суть остается)

Вы же не считаете, что виноваты разработчики программы из-за того что их программа использует процессор на 100%, он перегревается и уходит в ребут по неизвестным интелу причинам?

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

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

Нет, он не разрушал железо (кажется, точно не помню). Он делал то, что железо позволяло — менял прошивки(BIOS) и данные. Результат его работы для пользователя — другой вопрос. JRE не должна позволять ломать себя.

Хотя аналогия интересна, принято. Везде есть проблемы.

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

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

UB, о чем явно указано. Ну а о том что UB значит «если оно все еще работает, то это потому что так стали звёзды» вдалбливают сразу )

UB где? фишки нестрикт алиасинга вполне используются для перформенс тюнинга нагруженых програмулин.

Уже несколько дней не могу найти доку по UseLoopPredicate, можете кинуть ссылку?

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

Коментар порушує правила спільноти і видалений модераторами.

Зря всё таки лямбду убрали, но появление InvokeDynamic должно прибавить скорости разработке Clojure и Scala. Круто, в общем, но пока что JVM только догоняет .NET, посмотрим что дальше будет.

P.S. Весьма показательно, что данная тема, напрямую относящаяся к разработке вызывает на DOU в разы меньше интереса, чем флеймогонные темы о 23-летних сеньорах.

Зря всё таки лямбду убрали

Еще у вас спрошу: А зачем вам лямбды?

Они существенно сокращают количество кода в некоторых случаях. Я сразу предупреждаю, что основной язык разработки у меня Python, там лямбды обрезанные и вообще не приветствуются, но в свободное время активно пишу на Clojure и иногда на Scala и мне достаточно тяжело представить большую часть кода без лямбда-функций. Главное преимущество я вижу в том, что использование именованые функции вместо анонимных в тех же map, filter, sort и т.п. привело бы к загрязнению пространства имён ненужными функциями. Но опять же, в Java, насколько я знаю, есть анонимные классы, которые всё-таки слегка многословны, как для меня.
YMMV.

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

Главное преимущество я вижу в том, что использование именованые функции вместо анонимных в тех же map, filter, sort и т.п. привело бы к загрязнению пространства имён ненужными функциями.

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

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

Та может и не слегка. Но у них есть преимущество при рефакторинге (когда надо вместо однго однострочного метода сделать что-то серьезнее).

Та может и не слегка. Но у них есть преимущество при рефакторинге (когда надо вместо однго однострочного метода сделать что-то серьезнее).

Какое преимущество?

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

Какие техники?

Какое преимущество?

Пример:
Есть метод который принимает callback , в котором один метод do() — простенькая такая лямбда.

Задача добавить в методы callback before() и after().

Какие техники?

Пакеты, классы-хелперы, методы-хелперы и их комбинации.


Есть метод который принимает callback , в котором один метод do() — простенькая такая лямбда.

Задача добавить в методы callback before() и after().

Меняем лямбду-callback на класс — чем не рефакторинг? Он от наличия лямбды сложнее стал? Мы так часто такие штуки будем делать?

Пакеты, классы-хелперы, методы-хелперы и их комбинации.

Ну это не о том — это о том, как структурировать приложение на более высоком уровне. Если надо передать функцию в map, filter, etc — определять именованной — это лишний, и к сожалению пока вынужденный оверхед в Java.

Меняем лямбду-callback на класс — чем не рефакторинг? Он от наличия лямбды сложнее стал?

Да. Сложнее искать использования, необходимо менять интерфейс, у некоторых возникает желание передать на прямую в метод еще 2 коллбека

Ну это не о том — это о том, как структурировать приложение на более высоком уровне.

Вроде, о том. Я имею ввиду определить места для хранения таких вот «оверхедов».

Если надо передать функцию в map, filter, etc — определять именованной — это лишний, и к сожалению пока вынужденный оверхед в Java.

Или мы не понимаем друг-друга или вы не слышали про анонимные классы.

Дополнение:

Второй момент: методы из одной строки имеют обыкновение превращаться в методи из 5 и более строк. И тогда этот оверхед совсем к месту.

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

Кстати, о птичках. С сожалением, замечаю что при обсуждении джавы 7, почему-то все бросаются на лямбди и проджект коин, при этом мало кто говорит кро форк-джоины или новый НИО. Так шо ДОУ тут не оденок, к сожалению :(

при этом мало кто говорит кро форк-джоины
portal.acm.org/...n.cfm?id=337465
Обсудили в 2000 году.

Проджект коин действительно слабоинтересен, а не иметь лямбд в 2011 году — похоже на инвалидность

Обсудили в 2000 году.

Обсудили значит попробовали, а не просто потрандели.

а не иметь лямбд в 2011 году — похоже на инвалидность

Лямбд или замыканий? 2-3 дополнительных строки вам мешают писать эффективный код? Снова же если у вас все усеяно «лямбдами», то это явно архитектурная проблема.

Fork/Join реализован 10 лет назад и его можно отлично использовать с версиями джавы < 7

Что мешало попробовать?

2-3 дополнительных строки вам мешают писать эффективный код?

Да. Постоянная необходимость писать больше кода чем необходимо выражается в меньшей производительности программиста и замусоренности исходников. Отсутствие более простого способа не проблема если юзкейс единичный. Лямбды можно применять везде и их применение уменьшает код не на 2-3 строки, а на 3строки*колличествоИспользованийВКоде. Более того — типичное использование лямбд понятнее анлогов.

Вы вероятно когда-то кричали что foreach не нужен и года эдак до 2010 писали:
final Iterator it = this.getTerms().iterator();
while (it.hasNext()) {
...

}

Что мешало попробовать?

В продакшене.

UPD: Кстати, еще лень: тащить что-то не стабильное и не понятно как работающее, чтобы посмотреть возможно отбросить и потом смотреть еще раз (после релиза).

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

Еще и аксессоры убить.
Суть в том что ИДЕ это все генерируют в один клик. И, по большому счету, вы можете просто не обращать на это внимания.

Второй момент: методы из одной строки имеют обыкновение превращаться в методи из 5 и более строк. И тогда этот оверхед совсем к месту.

Вы вероятно когда-то кричали что foreach не нужен и года эдак до 2010 писали

А вроде никто и не кричит что «не нужно», речь идет о том что акценты не в ту сторону. Все смотрят на шашечки, когда надо ехать.

лень: тащить что-то не стабильное и не понятно как работающее, чтобы посмотреть возможно отбросить и потом смотреть еще раз (после релиза).

Эта библиотека от человека, который лидил JSR процесс не помню сколько лет и выдавал в опенсорс такие ненадежные вещи, как dlmalloc. Такие поделки для меня не менее надежны чем официальные Сановские/Оракловские. И то что фича выпущена основным производителем не значит что она надежна — плсмлторите на список уже заведенных багов. Так что в продакшене жабу 7 вы еще минимум пару месяцев не опробуете.

Еще и аксессоры убить

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

методы из одной строки имеют обыкновение превращаться в методи из 5 и более строк. И тогда этот оверхед совсем к месту.

Бывает. Лямбды до 3 строк меня не раздражают никак, а вот анонимные классы, содержащие один метод из 1й строки — код засоряют.

речь идет о том что акценты не в ту сторону. Все смотрят на шашечки, когда надо ехать.

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

Так что в продакшене жабу 7 вы еще минимум пару месяцев не опробуете.

Ну не пару, а где-то до конца года :)

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

Сходу, ни одного не вспомнил.

Лямбды до 3 строк меня не раздражают никак, а вот анонимные классы, содержащие один метод из 1й строки — код засоряют.

методы из одной строки имеют обыкновение превращаться в методы из 5 и более строк.

К тому жетакие вещи как LINQ в дотнете появились из-за скрещивания лямбд и экстеншен методов

Ну теперь то мы план выполнили: вспомнили лямбды и ЛИНКу :) Осталось сказать что джаве не хватает «крутой визуал студии» :)

просто пример того что в более свободном языке быстрее и удобнее писать очень даже мажорные фичи

Один знакомый прикольно сказал:

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

Весь разговор пересказывать не буду :)

Сходу, ни одного не вспомнил.

C#, Groovy. Есть еще,но я в них не разбираюсь. Нотация Скалы, например, позволяет написать паблик филд, а потом когда понадобится реализовать проперти с таким именем (плохое решение на мой взгляд)

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

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

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

Осталось сказать что джаве не хватает «крутой визуал студии» :)

Ну с этим меня все устраивает, слава богу.

ПС. Я не доказываю что бежать надо с корабля и в срчном порядке учить RoR, например. Я просто утверждаю что медленное развитие основного языка вредит платформе (создатели библиотек и аппликэйшн серверов тоже люди, им тоже нужны классные инструменты и чистый код). Да и моральное состояние среднего опытного джависта удручает — очень мало джавистов любят джаву. Чего не скажешь, например, про дотнетчиков.

C#, Groovy. Есть еще,но я в них не разбираюсь.

В C# — там надо явно указывать, просто форма записи не методы.

Groovy — groovy.codehaus.org/Groovy Beans 8 пунктов «если то то это» == 8 доп мест для ошибки.

СпрингСорс и Апач как-то в последнее время к джаве поохладели

Про Апач не в курсе, но судя по твиттеру СпрингСорса они не очень то и охладели :) недавно вот какие-то приблуды выпустили для андроида и чета вроде профайлера (но это уже другая история).

Я просто утверждаю что медленное развитие основного языка вредит платформе

Не платформе, а ее популярности — с этим согласен.

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

Скорее просто хочется «fun», и поэтому многие орут про лямбды и про то что джаве просто не жить без ЛИНКу и тд.

8 пунктов «если то то это»

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

судя по твиттеру СпрингСорса они не очень то и охладели :) недавно вот какие-то приблуды выпустили для андроида и чета вроде профайлера (но это уже другая история).

Я и не спорю, это их бизнес и они не собираются сворачивать. «Охладели» — это неправильное слово, они просто теперь развивают не только джаву (Взять тот же грэйлз )

Скорее просто хочется «fun», и поэтому многие орут про лямбды и про то что джаве просто не жить без ЛИНКу и тд.

Ну да, хочется более простых способов выполнять те же задачи. А «Фан» от своей современности как раз и возникает когда видишь что вместо 10 строк можно написать 4.

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

projectlombok.org/features пробовали? Вроде должен помочь от основной массы кода, который приходится писать больше необходимого

Version: 0.10.0-RC3

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

Весьма показательно, что данная тема, напрямую относящаяся к разработке

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

Лямбды будут в java8 и спецификация уже близка к финализации: openjdk.java.net/...rojects/lambda

Я в курсе. Кстати, когда релиз Java 8? ;)

А, тогда сорри. А так — годом больше, годом раньше ;)

P.S. Весьма показательно, что данная тема, напрямую относящаяся к разработке вызывает на DOU в разы меньше интереса, чем флеймогонные темы о 23-летних сеньорах.

А какое обсуждение ожидается увидеть?

Такое как на проггите или каких-нибудь хакерньюз — www.reddit.com/...y_of_java_se_7 news.ycombinator.com/...item?id=2817114 Я, конечно, понимаю что у того же проггита 380 тысяч подписчиков, но здесь же по идее должна тусить вся краса украинского рынка разработки, а реакция тем не менее на подобные программистские темы весьма кисленькая. Для примера сравните количество комментариев на статью Романа Шевченко о статическом анализе кода и статью Палиенко о питоне и джаве.

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

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

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

Интересное чувство юмора.

Обсуждать тут нечего, фич очень мало, детальный обзор всех новых фич занимает час-два. + все потенциальные фичи уже как пару лет известны. Вообщем печалька.

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