Как стать автором
Обновить
111.51

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

JDK 20 и JDK 21: что мы знаем на сегодняшний день

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.1K
Программирование *Java *
Дайджест
Перевод

JDK 20, третий не-LTS-релиз после JDK 17, достиг начальной фазы релиз-кандидата, как заявил Марк Рейнхольд, главный архитектор Java Platform Group в Oracle. Основной репозиторий исходного кода, форкнутый в стабилизационный репозиторий JDK в середине декабря 2022 г. (Rampdown Phase One), определяет набор функций для JDK 20. Критические ошибки, такие как регрессии или серьезные функциональные проблемы, могут быть устранены, но должны быть одобрены в процессе Fix-Request. Согласно графику выпуска, JDK 20 будет официально выпущен 21 марта 2023 года. Стоит отметить, что JEP 438 был добавлен в набор функций в начале марта 2023 года.

В сентябре 2023 года планируется выпустить общедоступный и следующий выпуск LTS В настоящее время в качестве целевых для JDK 21 предлагается два (2) JEP.

Также можно предположить, какие дополнительные JEP могут быть включены в JDK 21, основываясь на ряде проектов и кандидатов JEP.

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

Новости

Говорящая Java

Время на прочтение 4 мин
Количество просмотров 2.3K
Java *Accessibility *Разработка под MacOS *

Несколько лет назад я публиковал статью о том, как писать код не глядя.

Статья неплохо зашла, на столько неплохо, что меня пригласили поднимать с колен доступность в IDE на базе IntelliJ.

С виндой то там всё было ок, а вот для MacOS требовалось вмешательство, и я вмешался. Погнали под кат, там всё расскажу. А кто буковы не любит, внизу видео с моего доклада на SnowOne по этой теме.

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

SourceBuddy динамически компилирует исходный код Java

Время на прочтение 3 мин
Количество просмотров 2K
Java *
Перевод

Через два месяца после первого коммита в октябре 2022 года Питер Верхас, старший архитектор EPAM Systems, выпустил версию 2.0.0 SourceBuddy, новой утилиты, которая компилирует динамически исходный код Java, заданный в строке или файле, в файл класса. 

Утилит SourceBuddy требует Java 17 и представляет собой упрощенный фасад для компилятора javac, который обеспечивает ту же функциональность.

Версия 2.0.0 поддерживает комбинацию скрытых и нескрытых классов во время компиляции и выполнения. Кроме того, был упрощен API, включая критические изменения, такие как изменение метода loadHidden() на метод hidden(), поэтому и выпущен новый основной релиз. Полный обзор изменений для каждой версии доступен в документации по выпускам на GitHub.

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Комментарии 6

Не можете измерить — не сможете улучшить: как мы используем метрики в разработке автотестов

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.2K
Блог компании Wrike Тестирование IT-систем *Java *Управление разработкой *Статистика в IT

Привет! Меня зовут Александр, я работаю QAA менеджером в компании Wrike, начинал с позиции QAA инженера в далеком 2010-ом и был первым в этой роли. За 12 лет нам удалось построить крутую команду и создать систему контроля качества, которая позволяет быстро и без багов деплоить продуктовый код в продакшен. 

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

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 4

Истории

Снова про ARIS. Коллекция «велосипедов» для разработчика

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 740
JavaScript *Java *ERP-системы *
Туториал

Нестандартные подходы к написанию скриптов, разработка собственных библиотек и другая полезная информация для разработчиков скриптов ARIS.

Если Вы уже знаете что такое ARIS, то добро пожаловать. Если нет, то можете прочитать вот эту статью.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 3

Первая информация о JDK 21: что принесет следующий LTS релиз?

Время на прочтение 3 мин
Количество просмотров 2.5K
Программирование *Java *API *
Дайджест
Перевод

Поскольку мы все с нетерпением ждем скорого выпуска JDK 20, список функций, которые появятся в JDK 21 этой осенью, также постепенно проясняется.

Сегодня мы рассмотрим тему того, что принесет следующий LTS релиз JDK 21.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 6

Java для сисадминов

Время на прочтение 17 мин
Количество просмотров 5.1K
Блог компании ГК ЛАНИТ Программирование *Java *
Туториал

Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior Java-разработчикам эта информация может помочь систематизировать знания.

Статья не претендует на полноту или полную непогрешимость. Во-первых, нельзя объять необъятное. Во-вторых, все меняется и проверенные истины могут перестать быть истинами в новых версиях. В сети существует множество статей об  устройствах Java, однако в этой статье в блоге ЛАНИТ я стремился сделать выжимку основных моментов, необходимых для администраторов Java-приложений. Для более глубокого погружения в тот или иной вопрос потребуется обратиться к другим источникам.

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 2

Spring Data JPA: проекции в запросах

Время на прочтение 8 мин
Количество просмотров 1.5K
Блог компании OTUS Java *
Перевод

Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом, что проекции определяют атрибуты сущности и столбцы базы данных, возвращаемые вашим запросом. А возможность выбирать нужные столбцы очень важна для вашей бизнес-логики. Также это имеет решающее значение для производительности вашего приложения и поддерживаемости вашего кода. Вы можете (и должны) выбрать такую проекцию, которая минимизирует накладные расходы и предоставляет данные в наиболее удобной для использования форме.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 1

Небезопасный android: эксперименты с sun.misc.Unsafe. Часть 2

Уровень сложности Сложный
Время на прочтение 13 мин
Количество просмотров 1.6K
Ненормальное программирование *Java *C++ *Кодобред Разработка под Android *

В этой статье я расскажу о классах-двойниках в ART и использовании этого механизма для получения полного списка полей, методов и конструкторов других классов, а также конвертации конструктора в метод и его вызов на готовом объекте.

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

Полезные и неизвестные библиотеки Java

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 4.7K
Программирование *Java *
Обзор
Перевод

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

Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test, то одновременно мы включаем такие библиотеки, как mockito, junit-jupiter или hamcrest. Конечно, это известные библиотеки для сообщества.

На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.

Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 3

Безопасная разработка в Java

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 4.1K
Блог компании OTUS Информационная безопасность *Java *SQL *

Язык программирования Java является одним из самых распространенных языков программирования. На нем написано множество сложных приложений как под Linux, так и под Windows. Однако, как и у любого другого языка программирования, у Java есть свои уязвимости.

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

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 7

Независимая разработка совместимых компонент на ORM – миф или реальность в аннотациях Java?

Время на прочтение 16 мин
Количество просмотров 1.3K
Программирование *Java * *
Мнение

При работе с ORM (object relation mapping) все время преследует ощущение постоянного создания монолитного приложения — один раз привязался к какой‑либо сущности (например, справочник Контрагенты) и весь код заполнен ссылками на эту конкретную реализацию. Можно ли независимо разрабатывать в ORM совместимые между собой справочник «Контрагентов» и использующий его документ «Платежное поручение», но при этом избежать жестких зависимостей? Спасут ли нас микросервисы? Пример на аннотациях Java демонстрирует как это возможно делать.

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

Обработка исключений в Java с использованием сопоставления с образцом (pattern matching)

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 4.5K
Java *Функциональное программирование *
Туториал

Обработка исключений в Java с использованием сопоставления с образцом (pattern matching).


Данная статья является логическим продолжением статей



В данной статье рассмотрим способы обработки исключений Java при помощи pattern-matching, как это делается в других FP языках.


Пример на других языках


В функциональных языках программирования существуют удобные средства для работы с исключениями. В Kotlin и Rust это класс Result, в Scala и Haskell — Try. Обработка успешного результата или ошибки может производится при помощи pattern-matching как на примерах ниже.


Scala


val result = divideWithTry(10, 0) match {
  case Success(i) => i
  case Failure(DivideByZero()) => None
}

Rust


    let greeting_file_result = File::open("hello.txt");
    let greeting_file = match greeting_file_result {
        Ok(file) => file,
        Err(error) => panic!("Problem opening the file: {:?}", error),
    };

Использование pattern-matching является естественным (idiomatic) в функциональных языках. А как дело обстоит в Java?

Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 3

К 8 марта — 8 женских докладов c наших конференций

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 1.4K
Блог компании JUG Ru Group Тестирование IT-систем *Java *Регулярные выражения *Машинное обучение *
Обзор

Женщины играли заметную роль в программировании, начиная с Ады Лавлейс. Поэтому сегодня (как и всегда) в нашем блоге — никаких слов про «украшения офиса», а только программирование, только хардкор. 

В этой подборке — 8 докладов женщин, спикеров наших конференций. Мы разделили доклады по темам: можете переходить сразу к своему стеку или смотреть все подряд. Мы понимаем, что некоторые доклады могли частично устареть, но они нашли большой отклик у зрителей, и в них можно найти полезные идеи и трюки.

Ада Лавлейс одобряет!
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 1

Лучшие практики для Java-приложений в Kubernetes

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 5.3K
Программирование *Java *Kubernetes *
Туториал
Перевод

В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков. 

Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM. 

Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 0

Spring-потрошитель: жизненный цикл Spring Framework

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 9K
Программирование *Java *Отладка *Реверс-инжиниринг *
Из песочницы

Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.

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

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Комментарии 8

Небезопасный android: эксперименты с sun.misc.Unsafe. Часть 1

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.2K
Ненормальное программирование *Java *Кодобред Разработка под Android *
Из песочницы

Java очень глубоко интегрирована в android и имеет в данной ОС свою нестандартную виртуальную машину — DVM/ART, поэтому многие детали реализации отличаются от привычных. А что насчёт внутреннего API sun.misc.Unsafe? В этом цикле статей с его помощью мы попытаемся максимально сломать виртуальную машину андроида.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 6

Один день из жизни JVM-инженера

Время на прочтение 27 мин
Количество просмотров 12K
Блог компании JUG Ru Group Java *C++ *Системное программирование *Компиляторы *


Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.


Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные. Поэтому редкое место, где они пересекаются и могут что-то поведать друг другу — Java-конференции. Мы проводим их регулярно (уже в апреле будет JPoint). И на предыдущей нашей конференции Иван Углянский dbg_nsk поделился с Java-разработчиками тем, как всё выглядит с его стороны.


Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?


Поскольку все эти вопросы из доклада звучат интересно, мы решили для Хабра сделать его текстовую версию (а для тех, кому удобнее видео, прикладываем ссылку на ютуб). Далее повествование идёт от лица Ивана.

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

Версионная миграция данных в мире DTO

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 3.4K
Программирование *Java *Системы управления версиями *
Из песочницы

Доброе время суток, уважаемое Хабр коммьюнити. В этой публикации я хотел бы показать несколько известных мне подходов к версионной миграции данных в контексте DTO. Примеры будут продемонстрированы на языке Java.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 9

Sealed классы Java в действии: создание надежных и безопасных приложений

Время на прочтение 16 мин
Количество просмотров 2.7K
Блог компании OTUS Java *
Перевод

Sealed (закрытые или запечатанные) классы были представлены в Java 15 в качестве способа ограничить иерархию наследования класса или интерфейса.

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 19

Вклад авторов

Работа

Java разработчик
446 вакансий