en
Feedback
Чашечка Java

Чашечка Java

Open in Telegram

Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels

Show more
8 575
Subscribers
-124 hours
No data7 days
-1030 days
Posts Archive
Барьеры и модели памяти – explained Всем привет! Начну с предыстории. Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы. Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае. Как родилась статья Когда я впервые изучал модели памяти, я мало что понял, и спустя месяц все забыл. Потом прочитал еще раз, но, к сожалению, тоже хватило ненадолго. В итоге я решил расписать все для себя максимально подробно, с красивыми картинками, чтобы при необходимости можно было к ним возвращаться и не тратить много времени на вспоминание. Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка. Что такое барьеры памяти и зачем это все нужно? Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа. Читать: https://habr.com/ru/articles/869188/?utm_campaign=869188 @a_cup_of_java | Другие наши каналы

AI-ассистент с помощью Spring AI Команда Spring АйО перевела туториал, в котором рассматриваются возможности Spring AI для интеграции с LLM. Вы узнаете, как использовать API Function Calling для выполнения задач на естественном языке, генерировать ответы в JSON-формате и сохранять контекст диалога. Читать: https://habr.com/ru/companies/spring_aio/articles/869080/?utm_campaign=869080 @a_cup_of_java | Другие наши каналы

Java News Roundup: TomEE 10, Struts 7, Payara Platform, GlassFish, Commonhaus Foundation, Gradle This week's Java roundup for
Java News Roundup: TomEE 10, Struts 7, Payara Platform, GlassFish, Commonhaus Foundation, Gradle This week's Java roundup for December 16th, 2024 features news highlighting: GA releases of Apache TomEE 10.0.0 and Apache Struts 7.0.0; the December 2024 release of the Payara Platform, GlassFish 8.0.0-M9, Infinispan 15.1.0, Gradle 8.12.0, and SlateDB and Debezium join the Commonhaus Foundation. By Michael Redlich Read: https://www.infoq.com/news/2024/12/java-news-roundup-dec16-2024/ @a_cup_of_java | Другие наши каналы

Создание и использование оберток (wrappers) в Java: подробный разбор В мире разработки обертки (wrappers) — это мощный инструмент, который позволяет инкапсулировать сложную логику, добавлять новую функциональность или адаптировать существующие классы для более удобного использования. В этой статье мы рассмотрим, что такое обертки, какие задачи они решают, и как их правильно создавать на Java. Мы также приведем примеры реального применения, чтобы показать их пользу. Читать: https://habr.com/ru/articles/868786/?utm_campaign=868786 @a_cup_of_java | Другие наши каналы

Spring News Roundup: Delivering Point Releases of Boot, Security, Authorization Server, Session There was a flurry of activit
Spring News Roundup: Delivering Point Releases of Boot, Security, Authorization Server, Session There was a flurry of activity in the Spring ecosystem during the week of December 16th, 2024, highlighting point releases of: Spring Boot, Spring Security, Spring Authorization Server, Spring Session, Spring Integration, Spring Modulith, Spring Batch, Spring AMQP, Spring for Apache Kafka, Spring for Apache Pulsar and Spring Shell. By Michael Redlich Read: https://www.infoq.com/news/2024/12/spring-news-roundup-dec16-2024/ @a_cup_of_java | Другие наши каналы

PVS-Studio соответствует требованиям ГОСТ Р 71207—2024 (статический анализ программного обеспечения) Инструментальное средство PVS-Studio разрабатывается с учётом требований, предъявляемых к статическим анализаторам в ГОСТ Р 71207–2024, выявляет критические ошибки и может использоваться при разработке безопасного программного обеспечения. Рассмотрим функциональные возможности, реализованные в PVS-Studio на конец 2024 года в отношении анализа исходного кода программного обеспечения, написанного на компилируемых языках программирования C, C++, C#, Java. Читать: https://habr.com/ru/companies/pvs-studio/articles/868578/?utm_campaign=868578 @a_cup_of_java | Другие наши каналы

Новые диагностические правила в PVS-Studio 7.34 С релизом PVS-Studio 7.34 в анализаторе появились новые диагностические правила: taint для Java, множество Unity-диагностик для C#, углубление в OWASP и многое другое! Расскажем о них в этой статье. Читать: https://habr.com/ru/companies/pvs-studio/articles/868508/?utm_campaign=868508 @a_cup_of_java | Другие наши каналы

Онлайн-курс «JAVA-разработчик» от EdMe.pro: 6 месяцев, гарантия работы, оплата после трудоустройства Обучение идеально подойд
Онлайн-курс «JAVA-разработчик» от EdMe.pro: 6 месяцев, гарантия работы, оплата после трудоустройства Обучение идеально подойдет для начинающих разработчиков, а также для опытных кодеров, которые хотят освоить Java. Курс основан на менторстве и сосредоточен на комплексной подготовке к трудоустройству. На обучение нужно выделять от 15 часов в неделю. Из основных плюсов можно отметить: – Гарантированное трудоустройство на вакансии с зарплатой от 150 000 рублей; – Оплата только после выхода на работу – 20% от зарплаты в течение 18 месяцев; – Бесплатная карьерная поддержка после окончания курса; – Если по какой то причине вы не сможете закончить курс, можно завершить обучение без оплаты и штрафов. Посмотрите подробную программу Это #партнерский пост

Gradle: Исправление зависимостей в один клик Работаете с Gradle? Dependency Analysis Gradle Plugin помогает не только находить лишние зависимости, но и автоматически исправлять проблемы с ними. Механизм fixDependencies переписывает скрипты сборки, чтобы они соответствовали реальной структуре проекта. Последние обновления сделали процесс анализа ещё точнее, а работу с Kotlin DSL — проще и надёжнее. Читайте про фикс зависимостей в один клик в новом переводе от команды SpringАйО. Читать: https://habr.com/ru/companies/spring_aio/articles/868440/?utm_campaign=868440 @a_cup_of_java | Другие наши каналы

Как мы делаем Java: 30 лет истории российской разработки Банки, биржи, платежные системы — множество стратегически важных сервисов работает на Java. Не случайно язык, которому скоро исполнится 30 лет, уверенно держится в тройке лидеров рейтинга TIOBE. А еще Java — одна из «самых российских» технологий. Из всех разработчиков за пределами США именно россияне сделали наиболее заметный вклад в платформу — и продолжают развивать ее сейчас. Чтобы понять, как так вышло, мы вспомнили историю Java в России с девяностых годов до наших дней. Дисклеймер: этот не историческое исследование. Текст собран из воспоминаний участников событий и инженеров, которые уже почти 30-лет заботятся о безопасности Java в России. Читать: https://habr.com/ru/companies/axiomjdk/articles/868056/?utm_campaign=868056 @a_cup_of_java | Другие наши каналы

Анализ фильмов с интернет-портала Кинопоиск Данное исследование посвящено анализу данных о фильмах, собранных с крупнейшей российской платформы КиноПоиск. Основная цель работы — выявить факторы, влияющие на популярность фильмов, их рейтинги и финансовую успешность. В ходе исследования были проанализированы жанровые предпочтения аудитории, проведено сравнение оценок фильмов на Кинопоиске и IMDb, а также исследована взаимосвязь между бюджетами фильмов и их кассовыми сборами. Разработка включала этапы сбора, обработки, анализа и визуализации данных. Для обработки данных применялись методы очистки от пропусков и ошибок, фильтрации по ключевым показателям и трансформации структур данных. Были реализованы функции для конвертации валют, извлечения данных о жанрах и персоналиях фильмов (актёрах и режиссёрах), а также вычисления статистических показателей полноты и однородности выборки. Для эффективной работы системы был использован современный технологический стек. Обработка данных осуществлялась с помощью MongoDB, что обеспечило хранение и управление большими объёмами неструктурированной информации. RabbitMQ организовал асинхронный обмен сообщениями между компонентами системы, а серверная часть приложения разрабатывалась на базе Spring Boot, что ускорило процесс разработки и упростило развертывание приложения. Контейнеризация с использованием Docker обеспечила удобное развертывание и масштабирование системы. Основными языками программирования стали Java 17 и Python: Java использовалась для серверной части и микросервисов, а Python — для анализа данных и построения алгоритмов обработки информации. Для анализа данных применялись библиотеки Pandas, Seaborn и SciPy, которые обеспечили эффективную обработку данных и визуализацию результатов. В рамках анализа строились графики, отображающие популярность жанров, исследовалась корреляция оценок на Кинопоиске и IMDb, а также визуализировалась связь между бюджетами и кассовыми сборами. Для представления результатов применялись такие инструменты, как matplotlib и seaborn, позволяя визуализировать ключевые закономерности в виде графиков и диаграмм. Анализ выявил ключевые закономерности: популярность определённых жанров, зависимость коммерческого успеха фильма от его бюджета и значительное влияние известных актёров и режиссёров на успех фильма. Полученные результаты могут быть полезны для киностудий и продюсеров при планировании новых проектов, прогнозировании кассовых сборов и выборе жанров. Результаты также могут применяться для оптимизации маркетинговых стратегий при продвижении фильмов. В будущем планируется углубить исследование, проанализировать долгосрочные тренды в изменении популярности жанров и исследовать влияние пользовательских рецензий на успех фильмов. Читать: https://habr.com/ru/articles/868238/?utm_campaign=868238 @a_cup_of_java | Другие наши каналы

Новый HTTP клиент от Amplicode на Kotlin Script для Spring приложений и не только Команда Amplicode решила реализовать свой собственный HTTP-клиент и пару недель назад, в последнем мажорном релизе 2024-го года, мы его выпустили! Сегодня я расскажу, чем наш клиент лучше HTTP-клиента от JetBrains, покажу базовые сценарии его использования, а также немного расскажу о планах на будущее. Статья также доступна в формате видео на YouTube, VK Видео и RUTUBE, так что можно и смотреть, и читать — как вам удобнее! Читать: https://habr.com/ru/companies/haulmont/articles/868106/?utm_campaign=868106 @a_cup_of_java | Другие наши каналы

Борьба Добра со Злом в играх со скрытой информацией. Боты Заинтересовавшись теорией игр, вы найдёте огромное количество статей, посвящённых самых различным теоретическим изысканиям и их приложениям. Но, чаще всего, признаемся честно, лишь для тривиальных случаев с точки зрения игровой динамики. В этой статье мы будем рассматривать игры со скрытой информацией, с ветвистыми и глубокими деревьями решений. Несмотря на то, что математика теории игр не перестаёт работать для выбранной нами области, использовать чисто математические абстракции становится недостаточным. На первое место выходит инженерный подход с глубоким погружением в предметную область. Под инженерным подходом я подразумеваю тяжелые длительные вычисления, поиск и перебор множества вариантов, а также прочие точечные ML решения. Итак, что будем делать? Будем писать ботов и, со временем, средства их обнаружения. И тут важно согласиться, что боты – это не всегда Зло. Боты – это лишь инструмент в руках Зла. Или Добра... Выбрать сторону) Читать: https://habr.com/ru/articles/867750/?utm_campaign=867750 @a_cup_of_java | Другие наши каналы

Вся правда о @Subselect: преимущества, недостатки и альтернативы в Hibernate В современных приложениях иногда возникает необходимость получать данные из сложных запросов и аннотация "@Subselect" в Hibernate может стать отличным решением. В новой статье от эксперта сообщества Spring АйО, Михаила Поливахи, вы узнаете как использовать "@Subselect", какие существуют альтернативы и в чём заключаются их преимущества и недостатки. Читать: https://habr.com/ru/companies/spring_aio/articles/867662/?utm_campaign=867662 @a_cup_of_java | Другие наши каналы

Podcast: InfoQ Java Trends Report 2024 - Discussing Insights with Ixchel Ruiz and Gunnar Morling In this episode, Ixchel Ruiz
Podcast: InfoQ Java Trends Report 2024 - Discussing Insights with Ixchel Ruiz and Gunnar Morling In this episode, Ixchel Ruiz and Gunnar Morling sat down with podcast host Michael Redlich, Lead Editor of the Java topic at InfoQ, to discuss the recent publication of the InfoQ Java Trends Report. Topics covered included: the advantages of the Java six-month release cadence; Project Lilliput and compact object headers; nullability in Java; the impact of Python; and the One Billion Row Challenge. By Ixchel Ruiz, Gunnar Morling Read: https://www.infoq.com/podcasts/insights-java-trends-report-2024/ @a_cup_of_java | Другие наши каналы

Article: InfoQ Java Trends Report - December 2024 This report summarizes how the InfoQ Java editorial team and several Java C
Article: InfoQ Java Trends Report - December 2024 This report summarizes how the InfoQ Java editorial team and several Java Champions currently see the adoption of technology and emerging trends within the Java and JVM space in 2024. We focus on Java the language, as well as related languages like Kotlin and Scala, the Java Virtual Machine (JVM), and Java-based frameworks and utilities. By Michael Redlich, Ben Evans, Holly Cummins, A N M Bazlur Rahman, Grace Jansen, Emily Jiang, Ivar Grimstad, Andrea Peruffo, Erik Costlow, Johan Janssen, Karsten Silz Read: https://www.infoq.com/articles/java-trends-report-2024/ @a_cup_of_java | Другие наши каналы

Dagger 2: как сделать свой DI за 10 минут Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. Если в первой статье мы разбирали фреймворк Koin, то во второй на наш исследовательский стол попадёт Dagger, который мы используем на большинстве проектов Ozon, в том числе на приложении Ozon Курьер Экспресс, за которое отвечает наш отдел.  Это мобильное приложение, которое позволяет курьерам-фрилансерам и водителям службы доставки взять подработку в Ozon и доставлять экспресс-заказы от селлера напрямую клиенту или в ПВЗ Ozon. В проекте мы используем Dagger 2 согласно его основной функциональности — собирать общие компоненты и навигацию между модулями, изолировать зависимости, улучшить тестируемость и поддерживаемость. Его важный плюс в том, что он строит дерево зависимостей и может в момент компиляции узнать, какие зависимости достижимы, а какие нет. Стоит сказать, что мы не будет разбирать механизм кодогенерации, а сосредоточимся именно на классах, которые Dagger 2 создаёт для своей работы. Эта статья будет полезна тем, кто использует Dagger 2 в своих приложениях и иногда/часто попадает в ситуации непонимания, почему Dagger 2 ведёт себя не так, как мы ожидаем. А это может создавать определённые трудности, особенно при отладке сложных проблем или при необходимости настройки более сложных сценариев внедрения зависимостей. Например, в приложении Ozon Курьер Экспресс ведутся большие работы по переписыванию приложения на новую архитектуру. Поэтому рядом с существующей DI-архитектурой появилась вторая DI-архитектура.  Чтобы их подружить, пришлось покопаться во внутренностях кода, что генерирует Dagger 2. Дополнительная (но не менее важная) цель статьи — показать, что базовый код, который генерирует Dagger, не такой уж и страшный :). Читать: https://habr.com/ru/companies/ozontech/articles/866452/?utm_campaign=866452 @a_cup_of_java | Другие наши каналы

Создаём CRUD REST API в Spring Boot быстро и просто вместе с Amplicode Не так давно на нашем канале вышло видео, в котором Георгий Власов рассказывал, как с помощью Amplicode можно сгенерировать CRUD Rest Controller сразу со всеми необходимыми методами. Но создавать что-то с нуля нам приходиться не так часто, как модифицировать, улучшать и дополнять уже имеющийся код. Команда Amplicode это прекрасно понимает и по этой причине в нашем инструменте есть возможность создавать как отдельные CRUD методы для контроллера, так и возможность делегировать методы в контроллер из уже существующих бинов. Благодаря этим фичам разработка API становится одной из простейших и приятнейших  задач. Давайте посмотрим как эти фичи выглядят на практике! Читать: https://habr.com/ru/companies/haulmont/articles/866060/?utm_campaign=866060 @a_cup_of_java | Другие наши каналы

Интеграция предобученных нейросетей в Java-проектах: практический пример При работе с нейросетями, не обязательно каждый раз писать свою и заново, можно использовать предобученные модели, что позволяет значительно сократить время разработки, а развитие модели и поддержка сообществом позволяет повысить точность анализа текстов. В данной статье я привожу практический пример интеграции с предобученной моделью, так рассмотрим задачу извлечения именованных сущностей (NER) — автоматического определения имен, мест или дат из текста. Мы будем использовать предобученную модель BERT, выполненную через библиотеку ONNX Runtime. Вообще существует множество предобученных моделей для извлечения именованных сущностей (NER) и других задач NLP. Вот некоторые из них: Читать: https://habr.com/ru/articles/867120/?utm_campaign=867120 @a_cup_of_java | Другие наши каналы

Система отчётов в Gatling: как работать и что включает? Продолжим наш разговор про инструмент Gatling. В этот раз я бы хотел обсудить систему отчетов, которую предоставляет Gatling из коробки. Что она в себя включает, как с ней работать и где ее можно использовать. После выполнения нагрузочного тестирования в Gatling генерируется HTML-отчёт, который предоставляет детальную информацию о работе системы и результатах теста. Эти отчёты позволяют глубже проанализировать производительность приложения и выявить слабые места. Давайте разберём, как с ними работать и что они включают. Читать: https://habr.com/ru/articles/867130/?utm_campaign=867130 @a_cup_of_java | Другие наши каналы