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

ТЕМА: Java

January 31, 2017 at 22:15

NullPointerException в Java. Optional - что он такое есть?

6. Тип Optional. Знакомимся.

В Java 8 появился новый класс — Optional. Это несложный класс, присутствующий в стандартной Java библиотеке, который призван слегка обезопасить код, защитив его от NullPoiunterException. То есть, как-то способствовать уменьшению таких ситуаций при его грамотном использовании.

January 21, 2017 at 00:58

Движемся вперёд. Последовательно и методично.

Ещё два быстрых и изящных прыжка для запугивания NullPointerException.

4. NullPointerException в Java. Аннотации как щит. FindBugs.

5. NullPointerException в Java. Checker Framework и Lombok.

January 19, 2017 at 22:45

NullPointerException в Java. Checker Framework и Lombok.

5. Немного о Checker Framework и Lombok.

Checker Framework оказался чуть менее известен, но выглядит как мощный и аккуратно разрабатываемый инструмент со всей необходимой документацией. Я бы даже сказал, что выглядит он несколько более основательным и задокументированным, чем ранее рассматриваемый FindBugs.

Найти подробную историю его создания у меня не получилось. Но, по некоторым признакам, истоки восходят к известнейшему Вашингтонскому университету (washington.edu, Сиэтл, штат Вашингтон). Видимо, там его родина. Последняя версия (на момент написания статьи) — 2.1.7 (от 19 января 2017).

January 19, 2017 at 21:57

NullPointerException в Java. Аннотации как щит. FindBugs.

4. Аннотации в борьбе за безопасность кода. Немного о FindBugs.

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

January 17, 2017 at 19:06

NullPointerException в Java. Элегантное противостояние.

3. Попытки элегантного противостояния.

С большего, язык Java не имел и не имеет никаких готовых встроенных синтаксических “информаторов”, позволяющих внятно указать, что некоторое поле или параметр гарантированно не может принять значение null и его не нужно проверять перед использованием. Или наоборот, что поле, во время выполнения, порой содержит null и его обязательно нужно проверить перед обращением. Разумеется, можно всё это указать в комментариях к полю/параметру, но это будет скорее послание программисту, поскольку компилятор автоматически не сможет этого понять и подсказать нам, если мы сами этого не заметили.

January 17, 2017 at 00:55

Элегантное противостояние.

Продолжаю вкрадчиво подступаться к несложному классу - Optional.

3. NullPointerException в Java. Элегантное противостояние.

January 12, 2017 at 23:02

Понравилась аналогия.

В процессе чтения некоторых тем, на глаза попался вопрос на stackoverflow - В чём разница между JPA и Hibernate? Понравился один из ответов: JPA is the dance, Hibernate is the dancer (JPA - это танец, Hibernate - танцор).

January 11, 2017 at 21:27

Начало.

В Java 8 появился новый класс - Optional. Совершенно несложный, присутствующий в стандартной библиотеке, и призванный улучшить наш код, в том числе немного обезопасив его от NullPoiunterException.

Решил разобраться, как с ним грамотнее обращаться то. Как, когда и кого он обезопасит. И действительно, обезопасит ли? Пока разбирался кто кого и как, пришлось зачерпнуть немного стороннего материала. Что-то даже пролилось через край, но в итоге родился небольшой цикл из нескольких заметок. Начал, как водится, с Большого Взрыва. С Букваря, другими словами.

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

Уже есть целых две заметки. Букварь. Но скоро, разумеется, начну “молотить” по крупному. То есть писать про то, про что хотел написать изначально. Про Optional!

1. NullPointerException в Java. Истоки.

2. NullPointerException в Java. The Billion Dollar Mistake.

January 7, 2017 at 19:05

NullPointerException в Java. The Billion Dollar Mistake.

2. Tony Hoare: “Null References: The Billion Dollar Mistake”.

Специального типа данных, называемого словами указатель или ссылка (как в C++), в языке Java - нет. Но в java любая переменная, которая не относится к встроенному примитивному типу данных (а это: byte, short, int, long, float, double, char и boolean) содержит именно адрес памяти, по которому расположена нужная нам информация и, таким образом, по своей сути является ссылкой. Или указателем, как вам больше нравится.

January 7, 2017 at 19:04

NullPointerException в Java. Истоки.

1. Откуда ноги растут. Значение, указатель, ссылка.

Вначале немножко букваря для тех, у кого Java есть первый язык программирования и кто на многие вещи пока не обращал пристального человеческого внимания. Люди, пришедшие из “древних” языков, требующих ручного управления памятью (скажем, С/С++), эти детали, конечно же, отлично понимают. Ну… должны во всяком случае.