Netflix Adopts Virtual Threads: A Case Study on Performance and Pitfalls
Netflix, a long-time Java adopter, recently upgraded to Java 21. They are now harnessing new features such as generational ZGC and virtual threads to improve performance across their extensive microservices fleet. While virtual threads, designed for high-throughput concurrent applications, showed early promise, they also brought unique challenges in real-world scenarios.
By A N M Bazlur Rahman
Read: https://www.infoq.com/news/2024/08/netflix-performance-case-study/
@a_cup_of_java | Другие наши каналы
Netflix, a long-time Java adopter, recently upgraded to Java 21. They are now harnessing new features such as generational ZGC and virtual threads to improve performance across their extensive microservices fleet. While virtual threads, designed for high-throughput concurrent applications, showed early promise, they also brought unique challenges in real-world scenarios.
By A N M Bazlur Rahman
Read: https://www.infoq.com/news/2024/08/netflix-performance-case-study/
@a_cup_of_java | Другие наши каналы
Портируем ML модели на Java с помощью ONNX
Всем привет, меня зовут Евгений Мунин. Я Senior ML Engineer в Ad Tech, а точнее в программатик платформе по доставке Web рекламы.
Сегодня речь пойдет про то, как сделать ML модели, совместимыми с бэк э
Читать: https://habr.com/ru/articles/833992/?utm_campaign=833992
@a_cup_of_java | Другие наши каналы
Всем привет, меня зовут Евгений Мунин. Я Senior ML Engineer в Ad Tech, а точнее в программатик платформе по доставке Web рекламы.
Сегодня речь пойдет про то, как сделать ML модели, совместимыми с бэк э
Читать: https://habr.com/ru/articles/833992/?utm_campaign=833992
@a_cup_of_java | Другие наши каналы
🔥3❤1
Что нового в Amplicode 2024.2
Мы рады сообщить, что второй мажорный релиз Amplicode в 2024 году успешно состоялся. В этот релиз вошло множество улучшений и исправлений, а также много новых фич. Вот некоторые из них:
* Gutter Icons для Spring-объектов
* Улучшенная генерация Spring Web тестов
* Поддержка Extends и Include в Docker Compose
* Генерация отдельных HTTP-методов для REST-контроллеров
* Поддержка Kubernetes и Helm
Подробнее о каждом из нововведений рассказали в статье.
Читать: https://habr.com/ru/companies/haulmont/articles/834164/?utm_campaign=834164
@a_cup_of_java | Другие наши каналы
Мы рады сообщить, что второй мажорный релиз Amplicode в 2024 году успешно состоялся. В этот релиз вошло множество улучшений и исправлений, а также много новых фич. Вот некоторые из них:
* Gutter Icons для Spring-объектов
* Улучшенная генерация Spring Web тестов
* Поддержка Extends и Include в Docker Compose
* Генерация отдельных HTTP-методов для REST-контроллеров
* Поддержка Kubernetes и Helm
Подробнее о каждом из нововведений рассказали в статье.
Читать: https://habr.com/ru/companies/haulmont/articles/834164/?utm_campaign=834164
@a_cup_of_java | Другие наши каналы
👍3❤2✍2
Vaadin 24.4.0 Introduces Vaadin Copilot and a Unified Vaadin Platform
Vaadin, an open-source web application development platform for Java developers, released version 24.4 in June 2024. The release aims to improve and simplify the developer experience by unifying the Hilla framework with the Vaadin platform, introducing the Vaadin Copilot, and several enhancements to the design system.
By Sirisha Pratha
Read: https://www.infoq.com/news/2024/08/vaadin-24-4/
@a_cup_of_java | Другие наши каналы
Vaadin, an open-source web application development platform for Java developers, released version 24.4 in June 2024. The release aims to improve and simplify the developer experience by unifying the Hilla framework with the Vaadin platform, introducing the Vaadin Copilot, and several enhancements to the design system.
By Sirisha Pratha
Read: https://www.infoq.com/news/2024/08/vaadin-24-4/
@a_cup_of_java | Другие наши каналы
Java Digest #15
Всем привет! 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
В этом выпуске у нас много материалов, посвященных развитию Java. Коснемся и Leyden, и Valhalla, и Loom, и GC в JDK 23. За прошедший месяц вышло много интересных докладов с последнего JPoint, некоторые из них мы осветили в этом выпуске. А в разделе со статьями собрали много туториалов и обзоров. Dev-контейнеры от JetBrains, реализация Transactional Outbox с использованием Spring Boot, отслеживание вызова Deprecated-методов, история сбоя в Netflix, связанного с виртуальными тредами, — вот далеко не полный список. И на сладкое — пара свежих выпусков подкастов JavaHut и javaswag. Приятного чтения 😉
Читать выпуск 15
Читать: https://habr.com/ru/companies/tbank/articles/834448/?utm_campaign=834448
@a_cup_of_java | Другие наши каналы
Всем привет! 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
В этом выпуске у нас много материалов, посвященных развитию Java. Коснемся и Leyden, и Valhalla, и Loom, и GC в JDK 23. За прошедший месяц вышло много интересных докладов с последнего JPoint, некоторые из них мы осветили в этом выпуске. А в разделе со статьями собрали много туториалов и обзоров. Dev-контейнеры от JetBrains, реализация Transactional Outbox с использованием Spring Boot, отслеживание вызова Deprecated-методов, история сбоя в Netflix, связанного с виртуальными тредами, — вот далеко не полный список. И на сладкое — пара свежих выпусков подкастов JavaHut и javaswag. Приятного чтения 😉
Читать выпуск 15
Читать: https://habr.com/ru/companies/tbank/articles/834448/?utm_campaign=834448
@a_cup_of_java | Другие наши каналы
🔥2
6 лучших книг для изучения виртуальной машины Java, сборки мусора и производительности [UPDATED]
В последние пару лет я наблюдаю тенденцию, когда многие Java-разработчики хотят узнать все больше и больше о внутреннем устройстве JVM и о том, как работает виртуальная машина Java и ее различные компоненты. В прошлом десятилетии эта тенденция была не так сильна, но с ростом внимания к параллелизму, производительности и масштабируемости Java-разработчики все более подробно изучают внутреннее устройство JVM, сборку мусора и настройку производительности. К сожалению, существует не так много хороших книг, позволяющих узнать о внутреннем устройстве JVM и ее различных компонентах, но, к счастью, у нас есть отличная спецификация виртуальной машины Java для изучения основ. Она также является наиболее актуальным справочником, поскольку Java и JVM постоянно меняются, особенно после выхода Java 10.
Вопросы и учебные пособия для собеседования по Java
Read: http://www.java67.com/2019/08/best-books-to-learn-java-virtual-machine-in-depth.html
В последние пару лет я наблюдаю тенденцию, когда многие Java-разработчики хотят узнать все больше и больше о внутреннем устройстве JVM и о том, как работает виртуальная машина Java и ее различные компоненты. В прошлом десятилетии эта тенденция была не так сильна, но с ростом внимания к параллелизму, производительности и масштабируемости Java-разработчики все более подробно изучают внутреннее устройство JVM, сборку мусора и настройку производительности. К сожалению, существует не так много хороших книг, позволяющих узнать о внутреннем устройстве JVM и ее различных компонентах, но, к счастью, у нас есть отличная спецификация виртуальной машины Java для изучения основ. Она также является наиболее актуальным справочником, поскольку Java и JVM постоянно меняются, особенно после выхода Java 10.
Вопросы и учебные пособия для собеседования по Java
Read: http://www.java67.com/2019/08/best-books-to-learn-java-virtual-machine-in-depth.html
❤2
Даже математики ошибаются
Мы знаем, что математика — наука точная. Значит ли это, что GeoGebra — программное обеспечение для интерактивного изучения математики — столь же точно? Проанализируем же исходный код проекта с помощью PVS-Studio!
Читать: https://habr.com/ru/companies/pvs-studio/articles/834952/?utm_campaign=834952
@a_cup_of_java | Другие наши каналы
Мы знаем, что математика — наука точная. Значит ли это, что GeoGebra — программное обеспечение для интерактивного изучения математики — столь же точно? Проанализируем же исходный код проекта с помощью PVS-Studio!
Читать: https://habr.com/ru/companies/pvs-studio/articles/834952/?utm_campaign=834952
@a_cup_of_java | Другие наши каналы
👍2👎1
И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot
Долгое время разрабатывая микросервисы в разных командах, я сталкивался с типовой задачей: созданием максимально информативного ответа на запрос, когда произошла какая-то ошибка. Особенно это актуально для систем с пользовательским фронтендом, большим количеством интеграций или систем, которые представляют свой API как продукт. Во многих случаях это решалось выдачей сообщения «Ошибка системы» с HTTP-кодом 500. Из раза в раз меня не покидало ощущение, что решению этой задачи не уделяется должного внимания и времени. В текущем проекте нам пришлось пройти все круги ада, изменить несколько подходов и реализаций. И здесь я постарался описать, как это было, и сформулировать выводы, которые мы сделали на каждом шаге решения проблемы.
Читать: https://habr.com/ru/companies/T1Holding/articles/834288/?utm_campaign=834288
@a_cup_of_java | Другие наши каналы
Долгое время разрабатывая микросервисы в разных командах, я сталкивался с типовой задачей: созданием максимально информативного ответа на запрос, когда произошла какая-то ошибка. Особенно это актуально для систем с пользовательским фронтендом, большим количеством интеграций или систем, которые представляют свой API как продукт. Во многих случаях это решалось выдачей сообщения «Ошибка системы» с HTTP-кодом 500. Из раза в раз меня не покидало ощущение, что решению этой задачи не уделяется должного внимания и времени. В текущем проекте нам пришлось пройти все круги ада, изменить несколько подходов и реализаций. И здесь я постарался описать, как это было, и сформулировать выводы, которые мы сделали на каждом шаге решения проблемы.
Читать: https://habr.com/ru/companies/T1Holding/articles/834288/?utm_campaign=834288
@a_cup_of_java | Другие наши каналы
🎉3
Общее представление о контейнерах и бинах в Spring
IoC container - это контейнер, реализующий принцип Inversion of Control (IoC). Он управляет созданием, связыванием и жизненным циклом бинов, которые конфигурируются на различных этапах сборки приложения и затем добавляются в контекст.
Ознакомиться
Читать: https://habr.com/ru/articles/834966/?utm_campaign=834966
@a_cup_of_java | Другие наши каналы
IoC container - это контейнер, реализующий принцип Inversion of Control (IoC). Он управляет созданием, связыванием и жизненным циклом бинов, которые конфигурируются на различных этапах сборки приложения и затем добавляются в контекст.
org.springframework.beans и org.springframework.context пакеты являются основой для Spring Framework’s IoC container. BeanFactory это интерфейс контейнера Spring, предоставляющий базовый функционал для создания и управления бинами. BeanFactory используется в основном для простых приложений и в случаях, когда ресурсы ограничены. Это наиболее низкоуровневый интерфейс, предоставляющий базовые возможности по конфигурации и управлению бинами. ApplicationContext является под-интерфейсом BeanFactory. Он добавляет:Ознакомиться
Читать: https://habr.com/ru/articles/834966/?utm_campaign=834966
@a_cup_of_java | Другие наши каналы
👍2
Полезные фичи в Java: мой список
Привет, Хабр!
В Java никогда не бывает скучно, особенно когда речь заходит о вещах, которые делают нашу жизнь проще и код — чище.
Сегодня я хочу рассказать вам о четырех фичах в Java, которые сам активно использовал в своих проектах и которые, на мой взгляд, заслуживают внимания. Да, это мой личный список, и я не претендую на то, что эти фичи новы или являются последним писком моды. Однако, по моему опыту, они действительно могут упростить жизнь.
И знаете, что самое приятное? Когда коллеги начинают говорить: "А почему я об этом не знал раньше?"
Читать: https://habr.com/ru/companies/otus/articles/833462/?utm_campaign=833462
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
В Java никогда не бывает скучно, особенно когда речь заходит о вещах, которые делают нашу жизнь проще и код — чище.
Сегодня я хочу рассказать вам о четырех фичах в Java, которые сам активно использовал в своих проектах и которые, на мой взгляд, заслуживают внимания. Да, это мой личный список, и я не претендую на то, что эти фичи новы или являются последним писком моды. Однако, по моему опыту, они действительно могут упростить жизнь.
И знаете, что самое приятное? Когда коллеги начинают говорить: "А почему я об этом не знал раньше?"
Читать: https://habr.com/ru/companies/otus/articles/833462/?utm_campaign=833462
@a_cup_of_java | Другие наши каналы
👍3👏3
Новый инструмент для миграции AWS SDK for Java
AWS выпустил предварительную версию инструмента для упрощения перехода с SDK for Java 1.x на 2.x, который использует OpenRewrite. Инструмент снижает затраты на миграцию, однако пока не поддерживает AmazonS3Client и другие функции. Ознакомьтесь с новым инструментом и улучшите свои приложения! Новые функции в AWS SDK для Java
AWS выпустил новый инструмент миграции, который значительно облегчает процесс перехода на SDK для Java. Однако, текущая версия не поддерживает все функции, такие как S3 Transfer Manager и DynamoDB object mapper. Подробности и руководство по использованию доступны в Developer Guide.
Подробности: https://aws.amazon.com/blogs/developer/preview-release-of-the-migration-tool-for-the-aws-sdk-for-java-2-x/
#en
@a_cup_of_java | Другие наши каналы
AWS выпустил предварительную версию инструмента для упрощения перехода с SDK for Java 1.x на 2.x, который использует OpenRewrite. Инструмент снижает затраты на миграцию, однако пока не поддерживает AmazonS3Client и другие функции. Ознакомьтесь с новым инструментом и улучшите свои приложения! Новые функции в AWS SDK для Java
AWS выпустил новый инструмент миграции, который значительно облегчает процесс перехода на SDK для Java. Однако, текущая версия не поддерживает все функции, такие как S3 Transfer Manager и DynamoDB object mapper. Подробности и руководство по использованию доступны в Developer Guide.
Подробности: https://aws.amazon.com/blogs/developer/preview-release-of-the-migration-tool-for-the-aws-sdk-for-java-2-x/
#en
@a_cup_of_java | Другие наши каналы
Знакомство с BeanPostProcessor
В этой статье вы узнаете, как работает BeanPostProcessor, какую роль он играет в процессе сборки и подготовки бинов, а также получите общее представление о том, как бины регистрируются в контейнере
Ознакомиться
Читать: https://habr.com/ru/articles/835294/?utm_campaign=835294
@a_cup_of_java | Другие наши каналы
В этой статье вы узнаете, как работает BeanPostProcessor, какую роль он играет в процессе сборки и подготовки бинов, а также получите общее представление о том, как бины регистрируются в контейнере
Ознакомиться
Читать: https://habr.com/ru/articles/835294/?utm_campaign=835294
@a_cup_of_java | Другие наши каналы
🥰5
JSpecify 1.0.0 and Nullability in Java
The JSpecify collective has made its first release. The group's mission is to define common sets of annotation types for use in JVM languages, to improve static analysis and language interoperation. The first release is centred on nullability, and aligns with a recently announced Draft JEP that is exploring this issue at language level.
By Ben Evans
Read: https://www.infoq.com/news/2024/08/jspecify-java-nullability/
@a_cup_of_java | Другие наши каналы
The JSpecify collective has made its first release. The group's mission is to define common sets of annotation types for use in JVM languages, to improve static analysis and language interoperation. The first release is centred on nullability, and aligns with a recently announced Draft JEP that is exploring this issue at language level.
By Ben Evans
Read: https://www.infoq.com/news/2024/08/jspecify-java-nullability/
@a_cup_of_java | Другие наши каналы
👏2
Java News Roundup: JDK 23 RC1, New HotSpot JEP, Hibernate and Tomcat Releases, GlassFish 8.0-M7
This week's Java roundup for August 5th, 2024 features news highlighting: the first release candidates of JDK 23 and Gradle 8.10; JEP 483, Ahead-of-Time Class Loading & Linking, a new HotSpot feature; the releases of Hibernate ORM 6.6, Hibernate Search 7.2, Hibernate Reactive 2.4; multiple Apache Tomcat point and milestone releases; and GlassFish 8.0.0-M7.
By Michael Redlich
Read: https://www.infoq.com/news/2024/08/java-news-roundup-aug05-2024/
@a_cup_of_java | Другие наши каналы
This week's Java roundup for August 5th, 2024 features news highlighting: the first release candidates of JDK 23 and Gradle 8.10; JEP 483, Ahead-of-Time Class Loading & Linking, a new HotSpot feature; the releases of Hibernate ORM 6.6, Hibernate Search 7.2, Hibernate Reactive 2.4; multiple Apache Tomcat point and milestone releases; and GlassFish 8.0.0-M7.
By Michael Redlich
Read: https://www.infoq.com/news/2024/08/java-news-roundup-aug05-2024/
@a_cup_of_java | Другие наши каналы
🔥3
10 забавных фактов о Java
Угадаете, какие из них — правда в коротком тесте Иннотех и Tproger
Читать: «10 забавных фактов о Java»
@a_cup_of_java | Другие наши каналы
Угадаете, какие из них — правда в коротком тесте Иннотех и Tproger
Читать: «10 забавных фактов о Java»
@a_cup_of_java | Другие наши каналы
👌1
Null-Restricted and Nullable Types for Java
Draft JEP 8303099 was recently made public. This JEP discusses Null-Restricted and Nullable Types, and aims to bring optional nullness-marking to the Java language, in a similar way to that seen in other programming languages (such as Kotlin).
By Ben Evans
Read: https://www.infoq.com/news/2024/08/null-restricted-java/
@a_cup_of_java | Другие наши каналы
Draft JEP 8303099 was recently made public. This JEP discusses Null-Restricted and Nullable Types, and aims to bring optional nullness-marking to the Java language, in a similar way to that seen in other programming languages (such as Kotlin).
By Ben Evans
Read: https://www.infoq.com/news/2024/08/null-restricted-java/
@a_cup_of_java | Другие наши каналы
👍3
Бинарные деревья — решение алгоритмических задач, часть 1
Есть много статей, в том числе и на хабре, где подробно рассказывается про бинарные деревья как про структуру данных. В этой статье я больше сосредоточусь на подходах к решению алгоритмических задач, где используются бинарные деревья.
Немного теории для общего понимания сути.
Бинарное дерево - это иерархические структура данных, в которой каждый узел имеет не более двух дочерних узлов. Узлы обычно называются правыми и левыми потомками. При этом каждый из потомков, в свою очередь тоже является узлом, который может иметь двух потомков. Если у узла нет потомков, такой узел называют листом.
Кстати, у меня есть телеграм-канал, где пишу подходы к решениям всяких задачек с LeetCode, там больше разборов конкретных задач, чем здесь, потому что не всегда нужна статья. В общем, если интересно - жду здесь - t.me/crushiteasy :)
Читать: https://habr.com/ru/articles/835706/?utm_campaign=835706
@a_cup_of_java | Другие наши каналы
Есть много статей, в том числе и на хабре, где подробно рассказывается про бинарные деревья как про структуру данных. В этой статье я больше сосредоточусь на подходах к решению алгоритмических задач, где используются бинарные деревья.
Немного теории для общего понимания сути.
Бинарное дерево - это иерархические структура данных, в которой каждый узел имеет не более двух дочерних узлов. Узлы обычно называются правыми и левыми потомками. При этом каждый из потомков, в свою очередь тоже является узлом, который может иметь двух потомков. Если у узла нет потомков, такой узел называют листом.
Кстати, у меня есть телеграм-канал, где пишу подходы к решениям всяких задачек с LeetCode, там больше разборов конкретных задач, чем здесь, потому что не всегда нужна статья. В общем, если интересно - жду здесь - t.me/crushiteasy :)
Читать: https://habr.com/ru/articles/835706/?utm_campaign=835706
@a_cup_of_java | Другие наши каналы
😁3
Как сделать анализатор кода за два дня
Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.
Читать: https://habr.com/ru/companies/pvs-studio/articles/835936/?utm_campaign=835936
@a_cup_of_java | Другие наши каналы
Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.
Читать: https://habr.com/ru/companies/pvs-studio/articles/835936/?utm_campaign=835936
@a_cup_of_java | Другие наши каналы
Article: WebAssembly the Safer Alternative to Integrating Native Code in Java
Developers typically choose between porting the code or dynamic linking to run native code on the JVM. This article examines these approaches, using SQLite as an example, and introduces a third option: Chicory Wasm runtime. This alternative combines the advantages of traditional methods while addressing their limitations, potentially offering a more secure solution to integrate native code.
By Benjamin Eckel
Read: https://www.infoq.com/articles/sqlite-java-integration-webassembly/
@a_cup_of_java | Другие наши каналы
Developers typically choose between porting the code or dynamic linking to run native code on the JVM. This article examines these approaches, using SQLite as an example, and introduces a third option: Chicory Wasm runtime. This alternative combines the advantages of traditional methods while addressing their limitations, potentially offering a more secure solution to integrate native code.
By Benjamin Eckel
Read: https://www.infoq.com/articles/sqlite-java-integration-webassembly/
@a_cup_of_java | Другие наши каналы
😁3
JPA Entity. Загрузи меня не полностью
JPA часто подвергается критике за невозможность загружать сущности частично, что на самом деле является большим заблуждением. Spring Data JPA и Hibernate включают в себя множество инструментов по частичной загрузке сущностей.
Команда Spring АйО подготовила статью, в которой рассмотрела имеющиеся в Spring Data JPA инструменты для частичной загрузки сущностей, а также разобрала их особенности и corner-кейсы.
Читать: https://habr.com/ru/companies/spring_aio/articles/833918/?utm_campaign=833918
@a_cup_of_java | Другие наши каналы
JPA часто подвергается критике за невозможность загружать сущности частично, что на самом деле является большим заблуждением. Spring Data JPA и Hibernate включают в себя множество инструментов по частичной загрузке сущностей.
Команда Spring АйО подготовила статью, в которой рассмотрела имеющиеся в Spring Data JPA инструменты для частичной загрузки сущностей, а также разобрала их особенности и corner-кейсы.
Читать: https://habr.com/ru/companies/spring_aio/articles/833918/?utm_campaign=833918
@a_cup_of_java | Другие наши каналы
⚡8✍4🆒4
AWS SDK для Java прекращает поддержку Java 7
С 13 августа 2024 года новые версии AWS SDK для Java 1.12.x больше не будут поддерживать Java 7. Oracle завершила поддержку Java 7 еще в июле 2022 года, и ключевые библиотеки, такие как Jackson, также прекратили поддержку этой версии. Обновите до Java 8 или выше для получения актуальных обновлений.
Подробности: https://aws.amazon.com/blogs/developer/the-aws-sdk-for-java-1-x-will-no-longer-support-java-7/
#en
@a_cup_of_java | Другие наши каналы
С 13 августа 2024 года новые версии AWS SDK для Java 1.12.x больше не будут поддерживать Java 7. Oracle завершила поддержку Java 7 еще в июле 2022 года, и ключевые библиотеки, такие как Jackson, также прекратили поддержку этой версии. Обновите до Java 8 или выше для получения актуальных обновлений.
Подробности: https://aws.amazon.com/blogs/developer/the-aws-sdk-for-java-1-x-will-no-longer-support-java-7/
#en
@a_cup_of_java | Другие наши каналы