Как стать автором
Обновить
108
22
Zheka Kozlov @orionll

Пользователь

Отправить сообщение

Вышла Java 22

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров25K

Вышла общедоступная версия Java 22. В этот релиз попало около 2300 закрытых задач и 12 JEP'ов. Release Notes можно посмотреть здесь. Полный список изменений API – здесь.


Java 22 не является LTS-релизом, и у неё будут выходить обновления только полгода (до сентября 2024 года).


Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии30

Вышла Java 21

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров54K
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать дальше →
Всего голосов 74: ↑74 и ↓0+74
Комментарии49

Вышла Java 20

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров17K

Вышла общедоступная версия Java 20. В этот релиз попало около 1500 закрытых задач и 7 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.


Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии23

Вышла Java 19

Время на прочтение6 мин
Количество просмотров26K

Вышла общедоступная версия Java 19. В этот релиз попало более двух тысяч закрытых задач и 7 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.


Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии15

Вышла Java 18

Время на прочтение6 мин
Количество просмотров23K

Вышла общедоступная версия Java 18. В этот релиз попало более 2000 закрытых задач и 9 JEP'ов. Release Notes можно посмотреть здесь. Изменения API можно посмотреть по этой ссылке.


Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии17

Вышла Java 17

Время на прочтение7 мин
Количество просмотров54K

Вышла общедоступная версия Java 17. В этот релиз попало более 2700 закрытых задач и 14 JEP'ов. Изменения API можно посмотреть по этой ссылке.

Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии18

Чистая архитектура. Часть III — Принципы дизайна

Время на прочтение3 мин
Количество просмотров8.4K

Принципы SOLID говорят нам, как нам соединять наши функции и данные в классы, и как эти классы должны быть взаимосвязаны. Т.е. эти принципы относятся к уровню модулей (mid-level). Однако они также применимы и к уровню компонентов (high-level архитектура).

Принципы SOLID зародились в конце 80-х и стабилизировались в начале 2000-х.

Читать далее
Всего голосов 5: ↑2 и ↓3-1
Комментарии4

Чистая архитектура. Часть II — Парадигмы программирования

Время на прочтение4 мин
Количество просмотров25K

Это серия статей — вольный и очень краткий пересказ книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году.

Читать далее
Всего голосов 20: ↑15 и ↓5+10
Комментарии10

API, ради которых наконец-то стоит обновиться с Java 8. Часть 3

Время на прочтение26 мин
Количество просмотров18K

Какие есть причины переходить на новые версии Java? Кто-то это сделает из-за новых языковых возможностей вроде выражений switch, блоков текста или записей. Кому-то понадобятся новые интересные возможности вроде модулей или низкопаузных сборщиков мусора. Кто-то это сделает просто из-за того, что обновив версию Java, их программа станет быстрее и будет есть меньше памяти. Но есть ещё одна, не менее важная причина. Это новые API, которые позволят писать меньше кода и избежать траты времени на поиск нужной функциональности во внешних библиотеках. А в некоторых случаях сделают ваш код быстрее.


В предыдущих двух частях мы уже рассмотрели по 10 новых API, которые появились в Java 9 и более поздних версиях (часть 1, часть 2). Сегодня мы рассмотрим ещё 10.


Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии27

Вышла Java 16

Время на прочтение6 мин
Количество просмотров36K

Вышла 16-я версия платформы Java SE. В этот релиз попало около двух с половиной тысяч закрытых задач и 17 JEP'ов. Изменения API можно посмотреть здесь. Release notes здесь.


Уже сейчас доступны для скачивания дистрибутивы Oracle JDK и OpenJDK.


Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии30

Вышла Java 15

Время на прочтение3 мин
Количество просмотров14K

Сегодня в свет вышла новая, 15-я версия платформы Java.


Скачать JDK 15 можно по следующим ссылкам:


  • Oracle JDK (проприетарная версия, обратите внимание на ограничения в использовании).
  • OpenJDK (бесплатная версия)

В новый релиз попало 14 JEP'ов и сотни более мелких улучшений. Если хочется ознакомиться с полным списком изменений с точностью до всех JIRA-тикетов, то их можно посмотреть на сайте Алексея Шипилёва. Также если интересны все изменения API, то их можно посмотреть здесь.


Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии14

Исследуем sealed классы в Java 15

Время на прочтение7 мин
Количество просмотров13K

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


Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии9

API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

Время на прочтение12 мин
Количество просмотров22K

Продолжаем рассказ про API, которые появились в новых версиях Java.



1. Files.mismatch()


Появился в: Java 12


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


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


public static void syncDirs(Path srcDir, Path dstDir)
        throws IOException {
    // Для простоты демонстрации считаем, что поддиректорий нет
    try (Stream<Path> stream = Files.list(srcDir)) {
        for (Path src : stream.collect(toList())) {
            Path dst = dstDir.resolve(src.getFileName());
            if (!Files.exists(dst)) {
                System.out.println("Copying file " + dst);
                Files.copy(src, dst);
            } else if (Files.mismatch(src, dst) >= 0) {
                System.out.println("Overwriting file " + dst);
                Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
            }
        }
    }
}
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии44

API, ради которых наконец-то стоит обновиться с Java 8. Часть 1

Время на прочтение11 мин
Количество просмотров32K

На сегодняшний день Java 8 является самой популярной версией Java и ещё довольно долго будет ей оставаться. Однако с тех пор уже выпущено пять новых версий Java (9, 10, 11, 12, 13), и совсем скоро выйдет ещё одна, Java 14. В этих новых версиях появилось гигантское количество новых возможностей. Например, если считать в JEP'ах, то в сумме их было реализовано 141:



Однако в этом цикле статей не будет никакого сухого перечисления JEP'ов. Вместо этого я хочу просто рассказать об интересных API, которые появились в новых версиях. Каждая статья будет содержать по 10 API. В выборе и порядке этих API не будет какой-то определённой логики и закономерности. Это будет просто 10 случайных API, не ТОП 10 и без сортировки от наиболее важного API к наименее важному. Давайте начнём.

Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии41

Исследуем записи в Java 14

Время на прочтение12 мин
Количество просмотров17K
В прошлый раз мы тестировали улучшенный оператор instanceof, который появится в грядущей, 14-й версии Java (выйдет в марте 2020). Сегодня я хотел бы исследовать в деталях вторую синтаксическую возможность, которая также появится в Java 14: записи (records).

У записей есть свой JEP, однако он не сильно блещет подробностями, поэтому многое придётся пробовать и проверять самим. Да, можно конечно, открыть спецификацию Java SE, но, мне кажется, гораздо интереснее самим начать писать код и смотреть на поведение компилятора в тех или иных ситуациях. Так что заваривайте чаёк и располагайтесь поудобнее. Поехали.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии20

Плагинное приложение на Java без боли

Время на прочтение8 мин
Количество просмотров12K
В этой статье я хотел бы рассказать, как быстро и просто сделать каркас приложения на Java с поддержкой динамической загрузки плагинов. Читателю наверняка сразу в голову придёт, что такая задача уже давно решена, и можно просто использовать готовые фреймворки или написать свой загрузчик классов, но в предлагаемом мною решении ничего этого не потребуется:

  • Нам не понадобятся специальные библиотеки или фреймворки (OSGi, Guice и т.п.)
  • Мы не будем использовать парсинг байткода с помощью ASM и подобных библиотек.
  • Не будем писать свой загрузчик классов.
  • Не будем использовать рефлексию и аннотации.
  • Не понадобится возня с classpath для поиска плагинов. Мы вообще не будем трогать classpath.
  • Также мы не будем использовать XML, YAML или какие-либо другие декларативные языки для описания точек расширений (extension point’ов в плагинах).

Однако всё же есть одно требование — такое решение будет работать только на Java 9 или выше. Потому что оно будет основано на модулях и сервисах.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии49

Пробуем улучшенный оператор instanceof в Java 14

Время на прочтение6 мин
Количество просмотров24K
Не за горами новая, 14-я версия Java, а значит самое время посмотреть, какие новые синтаксические возможности будет содержать эта версия Java. Одной из таких синтаксических возможностей является паттерн-матчинг по типу, который будет осуществляться посредством улучшенного (расширенного) оператора instanceof.

Сегодня я хотел бы поиграться с этим новым оператором и рассмотреть особенности его работы более детально. Так как паттерн-матчинг по типу ещё не вошёл в главный репозиторий JDK, мне пришлось скачать репозиторий проекта Amber, в котором ведётся разработка новых синтаксических конструкций Java, и собрать JDK из этого репозитория.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии69

В Java может появиться новая сериализация

Время на прочтение4 мин
Количество просмотров11K
На сайте OpenJDK появился новый исследовательский документ, в котором описывается идея введения в язык новой улучшенной сериализации взамен старой.

Сериализация в Java существует с версии 1.1, то есть практически с момента её рождения. С одной стороны, сериализация является очень удобным механизмом, который позволяет быстро и просто сделать любой класс сериализуемым посредством наследования этого класса от интерфейса java.io.Serializable. Возможно даже, эта простота стала одной из ключевых причин, почему Java набрала такую огромную популярность в мире, ведь она позволила быстро и эффективно писать сетевые приложения.

С другой стороны, с тем, как сериализация реализована в Java, связано огромное количество проблем, которые увеличивают цену поддержки приложений, снижают их безопасность и замедляют эволюцию платформы.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии29

Чистая архитектура. Часть I — Введение

Время на прочтение4 мин
Количество просмотров30K
Это вольный и очень краткий пересказ новой книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии30

Реактивный манифест

Время на прочтение12 мин
Количество просмотров55K
В последние годы требования к приложениям значительно изменились. Десятки серверов, время отклика в несколько секунд, оффлайновое обслуживание, которое могло длиться часами, гигабайты данных — такими были большие приложения буквально несколько лет назад. Сегодня же приложения работают абсолютно на всём, начиная с простых мобильников и заканчивая кластерами из тысячи процессоров. Пользователи ожидают миллисекундного времени отклика и стопроцентного аптайма, в то время как данные выросли до петабайтов.

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

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

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

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии15
1

Информация

В рейтинге
263-й
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность