Чашечка Java
8.57K subscribers
3.88K photos
13 videos
56 files
6.33K links
Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Download Telegram
Новые диагностические правила в 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 | Другие наши каналы
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 | Другие наши каналы
👍4
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 | Другие наши каналы
👍2
Создание и использование оберток (wrappers) в Java: подробный разбор

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


Читать: https://habr.com/ru/articles/868786/?utm_campaign=868786

@a_cup_of_java | Другие наши каналы
👍2
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 | Другие наши каналы
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 | Другие наши каналы
2🔥2🙈2
Барьеры и модели памяти – explained

Всем привет!

Начну с предыстории.

Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы.

Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае.

Как родилась статья

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

Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка.

Что такое барьеры памяти и зачем это все нужно?

Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа.


Читать: https://habr.com/ru/articles/869188/?utm_campaign=869188

@a_cup_of_java | Другие наши каналы
👍4
Как жить без IntelliJ IDEA? Часть №5. Заключение

Наступил конец года и вместе с ним завершается наш цикл статей. Команда Spring АйО рассмотрела некоторые последствия ухода Ultimate IDEA из РФ и как с этим теперь жить.

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


Читать: https://habr.com/ru/companies/spring_aio/articles/869354/?utm_campaign=869354

@a_cup_of_java | Другие наши каналы
😁652❤‍🔥2😐2🫡1
Spring Boot, AspectJ. Введение в аспектно-ориентированное программирование

Привет, меня зовут Николай Пискунов, я руководитель направления Big Data и автор медиа вАЙТИ. Недавно мне в руки попался старый проект, написанный на Spring Boot. В нем я нашел пару десятков эндпоинтов, в которых метод обрамлен logger. Логирование в таком виде — это важный элемент как для ПО, так и для безопасности, но оно делает код объемнее, его становится сложнее читать.

В идеальном случае методы можно сократить буквально до пары строк, но для этого нужно отделить бизнес-логику от остального кода. Сделать это можно с помощью аспектно-ориентированного программирования (AOP) — языка для определения именованного аспекта. О нем и пойдет речь в этой статье.


Читать: https://habr.com/ru/companies/beeline_cloud/articles/869602/?utm_campaign=869602

@a_cup_of_java | Другие наши каналы
🎉2
5 лучших языков программирования для создания нейросетей

Топовые языки для программирования нейросетей — Python, Java, C#, С++.

Читать: «5 лучших языков программирования для создания нейросетей»

@a_cup_of_java | Другие наши каналы
🔥2
Параллелизм может быть только 1

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

Читать: https://habr.com/ru/articles/869856/?utm_campaign=869856

@a_cup_of_java | Другие наши каналы
👏3😁2
10 самых интересных ошибок в Java проектах за 2024 год

В 2024 году мы проверили много проектов, о чём регулярно писали в свой блог. Теперь же настала новогодняя пора, и самое время рассказывать новогодние истории. Вот и мы решили поведать о самых интересных Java ошибках, встреченных нами в Open Source проектах.


Читать: https://habr.com/ru/companies/pvs-studio/articles/869920/?utm_campaign=869920

@a_cup_of_java | Другие наши каналы
🎉2
Паттерн Data Mapper на котиках: Практическое руководство от разработчика, который не боится мурлыкать

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

В отличие от Active Record, где объекты сами знают, как сохранять себя в базу, Data Mapper разделяет эти ответственности.


Читать: https://habr.com/ru/companies/otus/articles/868588/?utm_campaign=868588

@a_cup_of_java | Другие наши каналы
😁3🎉2
Кошмар работы с *.docx файлами на Java посредством класса XWPFDocument из API Apache POI

Использование *.docx файлов как шаблонов для формирования кастомных отчётов с помощью библиотеки Apache POI XWPF на Java и связанные с этим проблемы. Примеры кода выполняющие простейшие операции поиска, замены, удаления элементов документа.


Читать: https://habr.com/ru/articles/870544/?utm_campaign=870544

@a_cup_of_java | Другие наши каналы
👍6
How Meta Ported Million Lines of Android Code from Java to Kotlin

In order to maximize the benefits brought by Kotlin in terms of productivity and safety, Meta engineers have been hard at work to translate their 10 million line Android codebase from Java into Kotlin. One year into this process, they have ported approximately half of their codebase and developed a specific tool, Kotlinator, to automate the process as much as possible.
By Sergio De Simone

Read: https://www.infoq.com/news/2024/12/meta-java-kotlin-port/

@a_cup_of_java | Другие наши каналы
🎉3🥱3
Построение динамических запросов к базе данных с использованием Spring Data JPA Specifications

Spring Data JPA Specifications — мощный инструмент для написания динамических запросов в реляционных базах данных. Они позволяют строить сложные SQL-запросы в декларативной форме, комбинируя их с помощью предикатов, таких как AND, OR и т.д используя Java-код. В этой статье мы рассмотрим, зачем нужны Specifications, их преимущества и недостатки, а также лучшие практики для использования.


Читать: https://habr.com/ru/articles/870698/?utm_campaign=870698

@a_cup_of_java | Другие наши каналы
👍42
Какие языки программирования учить в 2025 году

Топ-7 языков, в котором нет Rust, но есть 1С.

Читать: «Какие языки программирования учить в 2025 году»

@a_cup_of_java | Другие наши каналы
🤣5🎉3👎2
Java News Roundup: Spring AI 1.0-M5, LangChain4j 1.0-Alpha1, Grails 7.0-M1, JHipster 8.8

This week's Java roundup for December 23rd, 2024 features news highlighting: the fifth milestone release of Spring AI 1.0; the first milestone release of Grails 7.0; the first alpha release of LangChain4j 1.0; and the release of JHipster 8.8.
By Michael Redlich

Read: https://www.infoq.com/news/2024/12/java-news-roundup-dec23-2024/

@a_cup_of_java | Другие наши каналы
🔥2
Kafka Streams ч5: настройка окон, работа с задержанными событиями и suppression

Это моя финальная часть(ну пока что ;)) серии статей про Kafka Streams, прошлые статьи тут [ноль, один, два, три] Теперь давайте разработаем приложение, которое считывает: cобытия о пульсе из топика pulse-events.


Читать: https://habr.com/ru/articles/870784/?utm_campaign=870784

@a_cup_of_java | Другие наши каналы
2
Что такое API и как с ним работать?

В этой статье разберёмся, что такое API и как он работает на практике, как запустить первые интеграции и как научиться разбираться в документации.

Читать: «Что такое API и как с ним работать?»

@a_cup_of_java | Другие наши каналы
🔥5🤷‍♂1👍1
Конец года — новые баги с датами

Наткнулся сегодня (24-12-30) на преинтереснейшую ошибку.

Простенький скрипт ищет файл по дате создания в имени, и вместо вчерашнего дня (24-12-29) почему-то ищет файл за следующий год (25-12-29).

Казалось бы, мистика, всё прекрасно работало с лета, и как на зло сломалось как раз под конец года ... и кто в этом виноват?


Читать: https://habr.com/ru/articles/870994/?utm_campaign=870994

@a_cup_of_java | Другие наши каналы
👍7