Pull to refresh

Начинается разработка OpenJDK 10

Java *

Сегодня Mark Reinhold объявил об открытии репозиториев mercurial для Java 10, и разработчики, имевшие статус committer и выше в проекте Java 9, получили возможность размещать багфиксы и мелкие улучшения, которые не предполагается вносить в Java 9. Всем разработчикам (например, мне) обновили статус на страничке переписи OpenJDK.


Крупные изменения вносить пока не рекомендуется во избежание конфликтов. Изменения в Java 9 ещё не завершены и некоторое время придётся их переносить в Java 10. При отсутствии конфликтов процедура будет автоматизирована, так что тем, кто продолжает вносить исправления в Java 9, скорее всего не придётся лишний раз беспокоиться.

Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 10K
Comments 77

Что там с JEP-303 или изобретаем invokedynamic

Programming *Java *

Блогеры и авторы, пытающиеся быть на передовой, уже немало писали про проект Amber в Java 10. В этих статьях обязательно упоминается вывод типов локальных переменных, улучшения enum и лямбд, иногда пишут про pattern matching и data-классы. Но при этом незаслуженно обходится стороной JEP 303: Intrinsics for the LDC and INVOKEDYNAMIC Instructions. Возможно, потому что мало кто понимает, к чему это вообще. Хотя любопытно, что именно об этой фиче ребята из NIX_Solutions фантазировали на Хабре год назад.


Широко известно, что в виртуальной машине Java, начиная с версии 7, есть интересная инструкция invokedynamic (она же indy). Про неё многие слышали, однако мало кто знает, что она делает на самом деле. Кто-то знает, что она используется при компиляции лямбда-выражений и ссылок на методы в Java 8. Некоторые слышали, что через неё реализована конкатенация строк в Java 9. Но хотя это полезные применения indy, изначальная цель всё же немного другая: делать динамический вызов, при котором вы можете вызывать разный код в одном и том же месте. Эта возможность не используется ни в лямбдах, ни в конкатенации строк: там поведение всегда генерируется при первом вызове и остаётся постоянным до конца работы программы (всегда используется ConstantCallSite). Давайте посмотрим, что можно сделать ещё.

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 9.2K
Comments 15

Первый контакт с «var» в Java 10

Java *
Sandbox
Представляю вашему вниманию перевод статьи First Contact With ‘var’ In Java 10 автора Nicolai Parlog.

image

Java 10 будет выпущен 20 марта 2018 года, и все фичи, которые должны быть в этом релизе, уже объединены в основную ветку разработки. Одним из самых интересных нововведений Java 10 безусловно является вывод типа локальной переменной (JEP 286). Это дает вам возможность сократить объявления переменных используя новое ключевое слово var:

var users = new ArrayList<User>();

И это все, спасибо за внимание!

Нет, я уверен, что вам интересно узнать больше. Под катом я расскажу, где применяется var, а где нет, как это влияет на читаемость кода и что произошло с val.
Читать дальше →
Total votes 51: ↑49 and ↓2 +47
Views 65K
Comments 182

Изменения в стандартной библиотеке Java 10

Java *

Недавно состоялся релиз-кандидат Java 10, и на Хабре вышла статья, где перечислены JEP'ы, вошедшие в новый релиз. Однако не все изменения в Java получают свой JEP. В частности, небольшие дополнения стандартной библиотеки практически всегда происходят без JEP'ов. При этом частенько практической пользы от них даже больше, чем от более серьёзных изменений, которые удостоились JEP'а. Давайте посмотрим, что добавилось в стандартную библиотеку Java 10.

Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Views 20K
Comments 11

Java 10 General Availability

JUG Ru Group corporate blog Java *

Ссылка для скачивания

Последнюю половину года мы подробно обсуждали здесь новшества Java 10 и знаем их наизусть.

Но было бы странно, если самая главная Java-новость за полгода не появилась бы в этом хабе.


Как говорится, просто оставлю это здесь. Вперёд к приключениям!

Total votes 61: ↑58 and ↓3 +55
Views 31K
Comments 84

[Екатеринбург, анонс] java.ural.Meetup @2 — анонс второго Java-митапа + видео докладов с java.ural.Meetup @1

Контур corporate blog Programming *Java *.NET *Conferences
В первый день зимы, 1 декабря, приглашаем принять участие во второй встрече java.ural.Meetup, которая пройдёт в конференц-зале в новом офисе Контура по адресу ул. Малопрудная, 5. Начало в 14:00.

Бонусом публикуем записи докладов со встречи java.ural.Meetup @1, прошедшей 15 марта в Екатеринбурге.

Что за java.ural.Meetup?


В начале года среди разработчиков Екатеринбурга разошёлся опрос «А нужны ли новые Java-движухи?». Была собрана положительная обратная связь — так мы решили, что митапам быть. Спустя почти два месяца был анонсирован митап. Ещё через две недели первая встреча java.ural.Meetup собрала более 60 разработчиков из Екатеринбурга. На встрече разработчики из Контура рассказали о своих актуальных задачах.

Под катом анонс второй встречи и видео докладов с первого митапа.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 2K
Comments 9

«Жизнь после Java 10»: какие изменения принесет Java 11

CloudMTS corporate blog Website development *Programming *Java *
Буквально недавно, в конце марта, вышел Java 10. Но в связи с тем, что компания Oracle внесла изменения в релизный цикл (новый релиз каждые полгода), к выходу готовится 11-я версия.

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

Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Views 28K
Comments 37

26 рекомендаций по использованию типа var в Java

Programming *Java *
Translation

The Java Local Variable Type Inference (LVTI) или кратко — тип var (идентификатор var — это не ключевое слово, а зарезервированное имя типа) был добавлен в Java 10 с помощью JEP 286: Local-Variable Type Inference. Являясь 100% функцией компилятора, она не влияет на байт-код, время выполнения или производительность. В основном компилятор проверяет правую часть от оператора присваивания и, исходя из нее, определяет конкретный тип переменной, а затем заменяет им var.


Кроме того, это полезно для сокращения многословности шаблонного кода, а так же позволяет ускорить сам процесс программирования. Например, очень удобно писать var evenAndOdd =... вместо Map<Boolean, List<Integer>> evenAndOdd =... .


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


В этой статье мы рассмотрим 26 ситуаций, с примерами того, когда можно использовать var, а когда этого делать не стоит.

Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 26K
Comments 29