Java
17.7K subscribers
991 photos
64 videos
2 files
1.03K links
Самая актуальная информация из мира Java

По всем вопросам- @haarrp

@itchannels_telegram - 🔥лучшие ит-каналы

@pythonl - 🐍

@ai_machinelearning_big_data- ml

@ArtificialIntelligencedl - AI

@datascienceiot - ds

@pythonlbooks 📚

РКН: clck.ru/3FmwKr
Download Telegram
🚀 Совет по Java🚀

Профилирование производительности Java с помощью

VisualVM. Анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения.

https://visualvm.github.io

#Java #JavaMonitoring

@javatg
12👍6🔥2
🚀 Юнит-тестирование вашей Java-архитектуры 🚀

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

https://archunit.org

#ArchUnit #Java #Тестирование

@javatg
8👍5🔥1
🚀 JUnit 5 Tip🚀

Прерывание теста с помощью TestAbortedException

Выводитее исключеение TestAbortedException, чтобы явно прервать тест на основе определенных условий, не помечая его как неудачный. 🔥

#JUnit #Java

@javatg
👍153🔥1
Совет 🚀 JUnit 5 🚀

Повторяющиеся тесты с помощью @RepeatedTest

Используйте @RepeatedTest для запуска одного и того же теста несколько раз, каждый раз с разными входными данными или условиями, что особенно полезно для тестирования. 🔥

https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html

#JUnit5 #Java

@javatg
👍115🔥1
🚀 Spring совет 🚀

WebUtils

Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html

#Spring #java

@javatg
👍145🔥3
🚀 Совет по Java API🚀

java.nio.file.WatchService

Отслеживайте события файловой системы в режиме реального времени.

Инструмент для обнаружения изменений в файлах и каталогах независимым от платформы способом. 🔥

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/WatchService.html

#Java #JavaAPI

@javatg
👍155🔥4
🖥 #Java #SpringFramework Совет:

При использовании
@SpringSecurity вы можете получить доступ к текущим данным аутентификации, добавив объект Authentication в качестве параметра метода в классе @RestController.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥65
#Java #Spring @SpringSecurity

Совет: Если вы хотите получить доступ к текущему аутентифицированному пользователю в любом месте кода, вы можете использовать класс SecurityContextHolder.

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

@javatg
👍199🔥4🥰2
☕️ JDK 23, запланированный к выпуску 17 сентября, представит множество новшеств, включая третий просмотр таких функций, как ограниченные значения и структурированная параллельность, а также второй просмотр гибких конструкторов и др.

📝 Также в новой версии появятся декларации импорта модулей и Markdown в комментариях документации. Нововведение будет поддерживать разработчиков с помощью улучшенных возможностей для надёжной работы приложений и обработки данных. Однако, возможность использования строковых шаблонов исключена из этой версии. JDK 23 не будет иметь долгосрочной поддержки (LTS), поддержка будет осуществляться всего лишь шесть месяцев.

#java #integrity #openjdk #programming

@javatg
👍113🤬2🔥1
🖥 Курс по основам программирования на Kotlin

Kotlin — современный язык программирования, который упрощает процесс разработки и повышает безопасность кода.

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

Курс

#java #курс

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4😁4🔥2🤯1
🖥 Apache Gravitino (incubating)

Apache Gravitino - это высокопроизводительное, геораспределенное озеро метаданных.

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

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


Язык: Java

🌟Звезд: 912
📝Forks: 292

Github

#java #advanced #datalake

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥3
🖥 Java Уроки

Урок 1. Java Start | Java для начинающих | Java с нуля
Урок 2. Java переменные | Java типы данных | Java для автоматизаторов | Урок 2
Урок 3. Java комментарий | Java как вывести сообщения в консоль | Java конкатенация строк | Урок 3
Урок 4. Java арифметические операции | Java для автоматизаторов | строк | Урок 4
Урок 5. Java библиотеки классов | Java Scanner | строк | Урок 5
Урок 6. Java String | Класс String и его методы
Урок 7. Условный оператор if в Java | Оператор switch | Конструкция if-else |

📌 источник

#junior #java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥73
Media is too big
VIEW IN TELEGRAM
🖥 Flyway + Spring Boot | Настройка и написании миграций баз данных | Amplicode

Процедура проходит с помощью инструментов максимально эффективной и комфортной разработки сервисов и web приложений на Spring Boot в IntelliJ IDEA и административного пользовательского интерфейса на React Admin в VS Code.

00:00 — Зачем нужно версионировать БД?
00:51 — Задачи на сегодня
01:30 — Обзор Spring Boot приложения (via Amplicode Explorer)
03:17 — Подключение и настройка Flyway (генерация скриптов инициализации БД)
05:49 — Модификация JPA модели
06:52 — Генерация Flyway скриптов миграции для синхронизации JPA модели и схемы БД
09:04 — Запуск Spring Boot приложения

📌 Источник

#видео #SpringBoot #java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥64
🖥 Большой курс по Java от Владиславы Сморжок включает в себя 10 уроков, предназначенных для студентов Санкт-Петербургского государственного электротехнического университета.

Курс посвящен основам разработки на Java и помогает освоить необходимые инструменты для работы. Мы рекомендуем вам ознакомиться с этим курсом.

👉 Источник

#java #бесплатныйкурс

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍6🤔3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Интерактивный roadMap для Java-разработчиков!

Это наглядная дорожная карта для изучения java в 2025 году!

#junior #java #roadmap

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍103🤔2
🖥 Java исполняется 30 лет 🎊🎊🎊

Команда Java отмечает это событие шестичасовым прямым эфиром, посвящённым эволюции языка, его глобальному влиянию и формированию его будущего.

💝 Поздравь коллегу

https://www.youtube.com/watch?v=LHHPbI7sYv8

@javatg

#Java #OpenJDK
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8🎉43🤩1
🚀 Java API Tip — Integer.valueOf() и кеширование 🚀

Знаешь ли ты, что Integer.valueOf(int) не всегда создаёт новый объект?

📦 Значения в диапазоне от -128 до 127 кэшируются!
Это значит, что:


Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // 👉 true (один и тот же объект)


Но:


Integer x = Integer.valueOf(200);
Integer y = Integer.valueOf(200);
System.out.println(x == y); // 👉 false (два разных объекта)


🔍 Почему так?

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

🛠 Кстати, ты можешь изменить границу кеша через JVM-опцию:


-XX:AutoBoxCacheMax=512


📌 Полезно, если у тебя в системе часто используются числа вне стандартного диапазона.

#Java #Performance #JVM #DevTips

@javatg
👍9🔥54
Media is too big
VIEW IN TELEGRAM
🖥Java 25 и JEP 470: нативная работа с PEM-файлами

🚀 Что нового
• Встроенный API для разбора и генерации PEM-текста (Privacy-Enhanced Mail)
• Поддержка публичных и приватных ключей, X.509-сертификатов, CRL
• Единый высокоуровневый интерфейс без сторонних зависимостей

🔍 Почему это важно
• Упрощает интеграцию с PKI и системами безопасности
• Исключает ручной парсинг Base64 и ошибки форматирования
• Обеспечивает безопасное хранение шифруемых ключей

Video: https://www.youtube.com/watch?v=hqvMn2SwKiI
JEP 470: https://openjdk.org/jeps/470
JDK 25 EA: https://jdk.java.net/25/

#Java #OpenJDK #Security

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍3
Java Совет 💡
Как понять, что Java‑код мог быть сгенерирован ИИ?

Если вы видите в коде Collectors.toList(), а не Stream.toList() — это явный намёк 😉

Stream.toList() появился только в Java 16.
А Collectors.toList() — с нами ещё с Java 8, поэтому его до сих пор полно в туториалах, на Stack Overflow и во всех датасетах, на которых обучают ИИ.

📌 Документация:
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html#toList()

@javatg

#java #tip
👍14🤯63🔥2😁2🤔1
🧠 Продвинутая задача JavaНевидимая утечка памяти в лямбдах

Задача:

Предположим, вы пишете сервис, в котором создаются задачи (например, отложенные действия):


public class TaskScheduler {
private final List<Runnable> tasks = new ArrayList<>();

public void scheduleTask(String name) {
String largeData = name.repeat(10_000); // имитируем большой объект

tasks.add(() -> {
System.out.println("Running task: " + name);
});
}

public void runAll() {
tasks.forEach(Runnable::run);
}
}


Теперь создайте 1_000_000 таких задач:


TaskScheduler scheduler = new TaskScheduler();
for (int i = 0; i < 1_000_000; i++) {
scheduler.scheduleTask("Task" + i);
}


Вопрос:
Почему String largeData не освобождается сборщиком мусора, хотя он нигде явно не используется?

Разбор:

На первый взгляд, largeData нигде не используется — его можно было бы освободить.
Но на самом деле лямбда-захват переменной name удерживает весь стек метода scheduleTask, включая largeData.

Это называется неявная утечка памяти через замыкания.

---

Как исправить?

Чтобы избежать утечки, выносите только нужные значения в лямбду:


public void scheduleTask(String name) {
String taskName = name; // только то, что действительно нужно
tasks.add(() -> {
System.out.println("Running task: " + taskName);
});
}


Или даже:


tasks.add(() -> System.out.println("Running task: " + name));


НО! Убедитесь, что переменные вне лямбды не держат в памяти тяжёлые объекты, которые не нужны после исполнения.

💡 Вывод:
- Java лямбды могут неявно захватывать контекст, включая большие объекты
- Это может привести к утечкам памяти, особенно в long-lived объектах (пулы задач, слушатели и т.п.)
- Профилируйте и проверяйте, что захватывает ваша лямбда

#java #memoryleak #lambda #gc #profiling


@javatg
👍15🤔54🔥2