Разработка программ. Мои заметки.

ТЕМА: java-9

February 15, 2017 at 23:58

Интерфейсы в Java 8 и Java 9. И немного об абстрактных классах.

Interface Недавно в интернете попался программистский анекдот. Совсем незамысловатый, но суть проблемы оттеняющий. Звучит вот так:
Собеседуют Java разработчика. Задают традиционный вопрос:
– В чём состоит отличие абстрактного класса от интерфейса?
– бла-бла… наличие реализации… бла-бла-бла….
– Хорошо, а в Java 8?

Вроде ничего особенного, но вопрос действительно слегка усложнился. Решил чуть детальнее осветить сей аспект.

Эволюция интерфейсов в Java. Нововведения в Java 9.

February 15, 2017 at 23:55

Эволюция интерфейсов в Java. Нововведения в Java 9.

Как менялись возможности интерфейсов в Java. Текущие итоги.

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

До Java 8, Java интерфейс — это конструкция, похожая на класс в котором отсутствуют реализации методов:


    public interface MyStrongInterface 
    {
        public int howManyTimes = 15;

        public void doIt();
    }

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

February 9, 2017 at 20:18

Дата выхода Java 9 — 27 июля 2017 года.

Java 9 Решил уточнить, не изменились ли снова сроки выхода JDK 9. Нет, не изменились. Java 9 is coming! Countdown to Java 9 Release Date. До официального релиза осталось 167 дней. Напомню, что изначально дата выхода Java 9 планировалась на сентябрь прошлого (2016) года. Затем была отложена на март 2017 года. А затем, в сентябре, главный архитектор проекта Mark Reinhold предложил ещё раз отложить дату выхода на июль 2017. Новый план был официально утверждён во второй половине октября 2016 года. Выглядит он так:

  • 2016/05/26 Feature Complete
  • 2016/12/22 Feature Extension Complete
  • 2017/01/05 Rampdown Start
  • 2017/02/09 All Tests Run
  • 2017/02/16 Zero Bug Bounce
  • 2017/03/16 Rampdown Phase 2
  • 2017/07/06 Final Release Candidate
  • 2017/07/27 General Availability

По такому случаю хотелось бы ещё раз подытожить, что же нового определённо добавится в девятке. Список этот тайной не является, но есть мнение что в процессе работ он всё-таки корректировался. Формально, он приведён вот тут — JDK 9. Данные актуальны на 19 января 2017 года. Я посчитал количество позиций в списке. Их там 89 (ну если не ошибся, по любому — близко). 89 нововведений. Причём, там перечислены логически очерченные места. Это не просто формальный список новых методов или классов. Для простоты ориентации, была сделана попытка систематизировать все нововведения, разбив их на категории. О ней можно прочитать в блоге Oracle.

Было предложено использовать 6 категорий. Некоторые из них слегка туманно сформулированы (пересекаются с другими). И даже присутствует некоторая путаница в пояснениях. Автор не очень внимательно отнеслась к своей заметке. Два раза перечислила категорию New standards и забыла про категорию Gone. Но, тем не менее, попробуем придерживаться этой классификации. Итак.

February 8, 2017 at 23:10

NullPointerException в Java. Сlass Optional в Java 9.

8. Что нового появится в классе Optional в Java 9.

У класса Optional появится три новых заметных метода:


    public void ifPresentOrElse( Consumer<? super T> action, Runnable emptyAction )
    public Optional<T> or( Supplier<? extends Optional<? extends T>> supplier );
    public Stream<T> stream();

Рассмотрим их детальнее.