Java guru
5.22K subscribers
1 photo
1 video
1 file
261 links
Новости из мира Java, обзоры интересных библиотек и фреймворков, обучающие статьи. Онлайн обсуждения актуальных тем и обмен опытом. Для связи @RodmanDV
Download Telegram
Новые последовательные типы коллекций в JDK 21 (Sequenced Collection Types)

JEP 431: Sequenced Collections был повышен со статуса Candidate до Proposed to Target для JDK 21. В этом JEP предлагается ввести «новое семейство интерфейсов, которые представляют концепцию коллекции с элементами расположенными в четко определенной последовательности».

https://www.infoq.com/news/2023/03/collections-framework-makeover/
Spring Modulith: достигли ли мы зрелости модульности

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

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

Я считаю, что под каждую задачу нужно выбирать подходящий инструмент\технологию\архитектуру. Есть определенные субъективные критерии. Думаю, что их описание заслуживает отдельной статьи и возможно выступление на JPoint\Jocker ))

А есть ли альтернативы?

Довольно интересная альтернатива - модульный монолит (modular monolithic (modulithic) Java applications). Она тоже не является панацеей от всех бед, но в определенных кейсах может оказаться довольно привлекательной альтернативой.
https://github.com/moduliths/moduliths
https://habr.com/ru/articles/701984/
Спорно конечно, но заставляет задуматься…

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

https://youtu.be/uLp-Ht_cRk8
🔥1
Примеры паттернов проектирования в JDK

Паттерны проектирования описывают типичные способы решения часто встречающихся проблем при проектировании программ.

Есть ли примеры использования паттернов в самой JDK?

В статье есть примеры: https://www.javacodegeeks.com/2011/03/design-patterns-in-jdk.html
🔥1
Java JDBC и PostgreSQL

Интересная статья о взаимодействии JDBC-драйвера с PostgreSQL.
Из нее вы узнаете про:
1. Разницу между простым и расширенным протоколами PostgreSQL.
2. Почему расширенный протокол более эффективен и используется драйвером JDBC по умолчанию.
3. Почему важно закрывать PreparedStatement.
и еще много интересного ))

https://foojay.io/today/a-dissection-of-java-jdbc-to-postgresql-connections/
👍3
Spring Data JPA: проекции в запросах

Проекции в Spring Data JPA очень привлекательный инструмент для реализации запросов. Правильно подобрав проекцию можно добиться хорошей производительности.

https://habr.com/ru/companies/otus/articles/722060/
JBrainfuck — Пишем компилятор Brainfuck под Java VM

Если вы задумывались о написании своего компилятора или того как работают компиляторы, то почитать статью однозначно стоит. Примеры построены на базе ASM для генерации байт-кода. В статье разрабатывается компилятор для языка Brainfuck, но поняв принципы можно попробовать сделать свой DSL, который будет к тому же хорошо интегрироваться с существующими наработками на JVM-ных языках.

Вообще свой DSL "с меньшей болью" можно строить и на Groovy, но...мы же "не ищем легких путей"? )) Пример в статье можно рассматривать больше как хардкордный подход к вопросу с DSL.

https://habr.com/ru/articles/229267/
Что таит в себе метод clear() в Java Collection API?

В статье приведено интересное исследование последствий использования метода clear() на большой коллекции ArrayList.

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

https://dzone.com/articles/clear-details-on-java-collection-clear-api
👍3🔥1
Потоковый обмен в распределённых системах и использование реактивных потоков в нереактивных приложениях: опыт «Магнита»

Интересный опыт использования реактивных потоков. Рассматриваются три решения, которые позволяют реализовать потоковый обмен данными из БД между распределёнными приложениями:
1 Реализация с использованием hibernate
2 Реализация с использованием mybatis
3 Ограничение скорости обмена с использованием механизма обратного давления («backpressure») и библиотеки Bucket4j

https://habr.com/ru/companies/magnit/articles/726090/
1🔥1
Обработка исключений в Java в функциональном стиле

В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API).Однако применение функционального стиля на практике осложняется тем, что все стандартные функциональные интерфейсы из пакета java.util.function не объявляют проверяемых исключений (являются checked exception unaware).
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.

https://habr.com/ru/articles/676852/
🔥2👍1
Java Records

Java Record-ы появились в Java 12 как preview feature (JEP 359), а финальный релиз был в Java 16 (JEP 395). В разных источниках обычно приводят примеры их использования для описания DTO (Data Transfer Objects), но сфера их применения гораздо шире. В статье автор приводит разные примеры. Мне понравился пример реализации стейт машины «State implementation”.

https://www.infoq.com/articles/exploring-java-records/
2👍1🔥1
Смерть от тысячи микросервисов

Статья заставляет задуматься ))

Пару фактов: Dropbox, Twitter/X, Facebook, Instagram, Shopify, Stack Overflow — эти и другие компании начинали как монолитные базы кода. Многие по сей день имеют в своей основе монолит. Shopify по-прежнему остается монолитом Rails. WhatsApp стал сверхновой благодаря монолиту Erlang и 50 инженерам. Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и вертикально масштабировать каждый сервер в максимально возможной степени. Instagram был приобретен за миллиарды — с командой из 12 человек.

https://habr.com/ru/articles/760426/
🔥32
Введение в Java Process Memory Model

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

https://habr.com/ru/articles/744834/
👍3😍1
Под капотом Apache Kafka: zero copy и быстрые IO-операции с диском

В чем секрет высокой производительности Kafka?
Чтобы обеспечить высокую скорость операций записи на диск и чтения, Kafka использует не классическую передачу данных, а технологию под названием «Zero-copy», когда ЦП не копирует данные из одной области памяти в другую, а работает с прямым доступом к памяти (DMA, direct memory access) и отображением в памяти (memory mapping), а также со страничным кэшем.

https://bigdataschool-ru.turbopages.org/bigdataschool.ru/s/blog/kafka-page-cashe-and-zero-copy-transfer-technology.html
🔥2
Вышла Java 21

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

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.

https://habr.com/ru/articles/762084/
🔥2🐳1
Перестаём бояться генерировать байт-код

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

https://habr.com/ru/articles/759990/
🔥3
Использование оконных функций с Hibernate 5 и 6

Начиная с версии 6, вы можете использовать оконные функции в запросах JPQL (Java Persistence Query Language — платформенно-независимый объектно-ориентированный язык запросов). Более старые версии Hibernate поддерживают их только в нативных запросах.

https://habr.com/ru/companies/otus/articles/743910/
👍3🔥1
Прожарка java.lang.String

Иногда комментарии к статье оказываются интереснее статьи )) вот пример. Хотя подача материала интересная и провокационная: как сломать строки в Java.

https://habr.com/ru/companies/bar/articles/747528/
🤣2🥱1
Выступление на Joker 2023: Польза и вред Java-сообществ для инженеров

Эксперты из разных сфер поделятся опытом. Поговорим о том, как возникают сообщества, какие есть риски и чем сообщества полезны инженерам и компании. Обсудим роли и как начать проявляться.

https://jokerconf.com/talks/8136e7bf53844a45b3a3bde40cfd05bc/?referer=/persons/ee4fea77ee85444cba7f1f866c8b862b/
🔥31
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции

При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени. 

https://habr.com/ru/articles/747658/
1