⛓️ BTrace — динамический инструмент для трассировки Java-приложений. Проект позволяет безопасно отслеживать работу Java-программ в реальном времени без перезапуска. Встраивает байткод для мониторинга производительности, логирования вызовов методов или анализа проблем прямо в работающее приложение.
Интегрируется через командную строку или Maven-плагин. Особенно полезен при диагностике проблем в продакшн-средах, где традиционные профайлеры могут быть слишком тяжелыми.
🤖 GitHub
@javatg
Интегрируется через командную строку или Maven-плагин. Особенно полезен при диагностике проблем в продакшн-средах, где традиционные профайлеры могут быть слишком тяжелыми.
🤖 GitHub
@javatg
❤5🔥4👍3
🔐 jCasbin — библиотека контроля доступа для Java-приложений. Проект предлагает гибкую систему авторизации с поддержкой популярных моделей: ACL, RBAC, ABAC и других. Конфигурация правил доступа описывается в простых CONF-файлах, что позволяет легко адаптировать систему под разные сценарии — от RESTful API до сложных многоуровневых политик.
Инструмент имеет встроенный онлайн-редактор для тестирования правил прямо в браузере. Интегрируется с Spring Boot и работает с разными хранилищами политик, включая базы данных.
🤖 GitHub
@javatg
Инструмент имеет встроенный онлайн-редактор для тестирования правил прямо в браузере. Интегрируется с Spring Boot и работает с разными хранилищами политик, включая базы данных.
🤖 GitHub
@javatg
❤6👍3🔥2
⚛️ AtomicFU — библиотека для работы с атомарными операциями в Kotlin. Этот проект от JetBrains предоставляет удобный и эффективный способ работы с атомарными операциями в Kotlin-проектах. Поддерживает все основные платформы: JVM, Native, JS и Wasm.
Библиотека предлагает идиоматичный Kotlin API для атомарных операций, который затем трансформируется в эффективный код для каждой целевой платформы. Поддерживаются атомарные массивы, пользовательские расширения и даже примитивы синхронизации.
🤖 GitHub
@javatg
Библиотека предлагает идиоматичный Kotlin API для атомарных операций, который затем трансформируется в эффективный код для каждой целевой платформы. Поддерживаются атомарные массивы, пользовательские расширения и даже примитивы синхронизации.
🤖 GitHub
@javatg
👍4❤2🔥2🥰1
ArnoldC — это императивный язык программирования, где основные конструкции заменяются известными фразами из фильмов Арнольда Шварценеггера.
- if → BECAUSE I'M GOING TO SAY PLEASE
- while → STICK AROUND
- return → I'LL BE BACK
- LISTEN TO ME VERY CAREFULLY name — объявление метода
- I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE — аргументы
- GIVE THESE PEOPLE AIR — non-void метод
Код компилируется в Java, работает на JVM — это не просто шутка. Язык стабилен, есть примеры и документация.
HASTA LA VISTA, BABY
⚡️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤6😁6👍3👏1🤬1
🔧 JavaCV — мост между Java и нативными библиотеками компьютерного зрения
Проект предоставляет Java-обёртки для популярных C/C++ библиотек вроде OpenCV, FFmpeg и libdc1394, позволяя использовать их возможности без необходимости писать нативный код.
Инструмент имеет встроенные утилиты для калибровки камер, обнаружения объектов и работы с GPU через OpenCL/OpenGL. Поддерживается интеграция с аппаратными SDK. Установка возможна через Maven/Gradle или вручную.
🤖 GitHub
@javatg
Проект предоставляет Java-обёртки для популярных C/C++ библиотек вроде OpenCV, FFmpeg и libdc1394, позволяя использовать их возможности без необходимости писать нативный код.
Инструмент имеет встроенные утилиты для калибровки камер, обнаружения объектов и работы с GPU через OpenCL/OpenGL. Поддерживается интеграция с аппаратными SDK. Установка возможна через Maven/Gradle или вручную.
🤖 GitHub
@javatg
🔥11👍7❤4🥰2🤩1
🎮 Погружаемся в SQL, с помощью увлекательной аркадной игры
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
🔥13❤6👍4
🤖 AI заменит разработчиков?
Этот вопрос звучит как кликбейт. Но когда смотришь на то, что делает Explyt Agent, начинаешь думать иначе.
Этот AI не просто подсказывает код, а реально:
• редактирует файлы в проекте
• запускает тесты и отлавливает ошибки
• выполняет команды в терминале
• анализирует проект и добавляет недостающие файлы
Фактически, он ведет себя как джун, которому ты говоришь: «вот таска, сделай». А ты только проверяешь результат.
Попробуйте, как устроен этот агент и что он умеет🚀
Этот вопрос звучит как кликбейт. Но когда смотришь на то, что делает Explyt Agent, начинаешь думать иначе.
Этот AI не просто подсказывает код, а реально:
• редактирует файлы в проекте
• запускает тесты и отлавливает ошибки
• выполняет команды в терминале
• анализирует проект и добавляет недостающие файлы
Фактически, он ведет себя как джун, которому ты говоришь: «вот таска, сделай». А ты только проверяешь результат.
Попробуйте, как устроен этот агент и что он умеет🚀
🔥5🤬5😁4❤2👍1
Java 21 представила новый способ работы со строками — *string templates*. Это функция-превью (preview), которую нужно включать явно (`--enable-preview`) и использовать с JDK 21 или 22. В Java 23 от неё отказались, чтобы переработать дизайн.
Как это работает?
- Используется шаблонный процессор, например
STR.- Сразу после него идёт точка
. и строка-шаблон с выражениями внутри \{...}:
String name = "Duke";
String greeting = STR."My name is \{name}";
// -> "My name is Duke"
Встроенные выражения могут быть любыми Java-выражениями: арифметика, методы, поля:
int x = 10, y = 20;
String result = STR."\{x} + \{y} = \{x + y}";
- Поддержка многострочных шаблонов
Можно использовать текстовые блоки для JSON, SQL и других структур:
String json = STR."""
{
"user": "\{name}",
"temp": \{tempC}
}
""";
Технические детали
Шаблоны создают объект StringTemplate (runtime представление), содержащий массив литералов и значений выражений.
- Есть разные шаблонные процессоры:
- STR — стандартная интерполяция
- FMT — поддерживает форматирование и локаль
- RAW — необработанный шаблон, для кастомной обработки
Текущее состояние
- Java 21: функция доступна как preview (JEP 430)
- Java 22: вторая preview-итерация
- Java 23: удалена (даже как preview), дизайн требует доработки
Почему удалили?
- Жалобы на синтаксис — \{} вместо привычного ${}, processor.template вместо простого подхода
- Смешение capture (формирование шаблона) и processing нарушает удобство расширения
- Производительность можно обеспечить и без специального синтаксиса
- Дискуссия среди разработчиков: часть считает interpolation небезопасной/бесполезной, часть — нужной функцией качества жизни
Итог
Java 21 попыталась упростить работу со строками и структурными текстами с помощью string templates — но разработка приостановлена из-за критики синтаксиса и архитектуры. Пока функция нестабильна и требует пересмотра.
📌 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤10🔥3🤬1
📉 The Hidden Cost of Readability
Учёные проверили простой приём: убрать из кода *всё форматирование* перед подачей в LLM — и оказалось, что это экономит в среднем 24,5% входных токенов, при этом точность моделей почти не падает.
🔎 Почему так работает
- Отступы, пробелы и переносы строк помогают людям, но заставляют модель платить больше за каждый токен.
- Они удаляли только косметику, сохраняя смысл программы (контроль через сравнение AST).
- Тест: задача Fill-in-the-Middle на Java, C++, C# и Python.
📊 Результаты
- Большие модели почти не теряют в качестве, маленькие слегка «шатаются».
- В Python экономия меньше, так как пробелы — часть синтаксиса.
- Интересно: даже если на вход подать «смятый» код, модели всё равно печатают красиво отформатированный вывод. Поэтому экономия на выходе мала.
⚡ Решение
- Явный промпт «выводи без форматирования» или лёгкий дообучение на неформатированных примерах.
- В таком случае выходные токены сокращаются ещё на 25–36%, а pass-rate остаётся прежним.
- Авторы предлагают утилиту: она стирает форматирование перед инференсом и восстанавливает после — человек читает аккуратный код, а модель тратит меньше.
📑 Статья: *The Hidden Cost of Readability: How Code Formatting Silently Consumes Your LLM Budget*
👉 arxiv.org/abs/2508.13666
Учёные проверили простой приём: убрать из кода *всё форматирование* перед подачей в LLM — и оказалось, что это экономит в среднем 24,5% входных токенов, при этом точность моделей почти не падает.
🔎 Почему так работает
- Отступы, пробелы и переносы строк помогают людям, но заставляют модель платить больше за каждый токен.
- Они удаляли только косметику, сохраняя смысл программы (контроль через сравнение AST).
- Тест: задача Fill-in-the-Middle на Java, C++, C# и Python.
📊 Результаты
- Большие модели почти не теряют в качестве, маленькие слегка «шатаются».
- В Python экономия меньше, так как пробелы — часть синтаксиса.
- Интересно: даже если на вход подать «смятый» код, модели всё равно печатают красиво отформатированный вывод. Поэтому экономия на выходе мала.
⚡ Решение
- Явный промпт «выводи без форматирования» или лёгкий дообучение на неформатированных примерах.
- В таком случае выходные токены сокращаются ещё на 25–36%, а pass-rate остаётся прежним.
- Авторы предлагают утилиту: она стирает форматирование перед инференсом и восстанавливает после — человек читает аккуратный код, а модель тратит меньше.
📑 Статья: *The Hidden Cost of Readability: How Code Formatting Silently Consumes Your LLM Budget*
👉 arxiv.org/abs/2508.13666
👍11❤8🔥2🤔2
🔧 JLine — мощная Java-библиотека для работы с консольным вводом, которая делает интерактивные CLI-приложения удобнее и функциональнее. Она предлагает продвинутые возможности вроде редактирования строк, истории команд, автодополнения и даже интерактивных элементов интерфейса — меню, чекбоксов и подсказок.
Библиотека кроссплатформенная, поддерживает синтаксис ANSI, Unicode и даже интеграцию с SSH/Telnet. Минимальная требуемая версия Java — 11, а для проектов на JPMS есть готовые модули. Подключить инструмент просто: достаточно добавить зависимость в Maven или Gradle.
🤖 GitHub
@javatg
Библиотека кроссплатформенная, поддерживает синтаксис ANSI, Unicode и даже интеграцию с SSH/Telnet. Минимальная требуемая версия Java — 11, а для проектов на JPMS есть готовые модули. Подключить инструмент просто: достаточно добавить зависимость в Maven или Gradle.
🤖 GitHub
@javatg
🔥10❤7🥰2🎉1
🚀 Docker + Java совет
Для Java-приложений в Docker лучше всего использовать многоступенчатую сборку с
💡 Такой подход:
- уменьшает размер образа,
- использует только нужные зависимости,
- и корректно учитывает ограничения памяти/CPU контейнера.
@javatg
Для Java-приложений в Docker лучше всего использовать многоступенчатую сборку с
jlink или jpackage, чтобы собрать кастомный JRE только с нужными модулями.
# Этап сборки jar
FROM maven:3.9.8-eclipse-temurin-21 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn package -DskipTests
# Этап с оптимизированным JRE
FROM eclipse-temurin:21-jre-jammy
WORKDIR /app
COPY --from=builder /app/target/myapp.jar myapp.jar
# Оптимизация: ограничим потребление памяти JVM в контейнере
ENTRYPOINT ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75", "-jar", "myapp.jar"]
💡 Такой подход:
- уменьшает размер образа,
- использует только нужные зависимости,
- и корректно учитывает ограничения памяти/CPU контейнера.
@javatg
👍13🔥7❤3
Быстрый совет Java 💡
Хотите быстро замерить время выполнения кода без тяжёлых библиотек?
Используйте
@javatg
#junior #java
Хотите быстро замерить время выполнения кода без тяжёлых библиотек?
Используйте
System.nanoTime() - он точнее, чем currentTimeMillis(), и подходит для измерения производительности:
long start = System.nanoTime();
// код, который нужно замерить
Thread.sleep(500);
long end = System.nanoTime();
System.out.println("Время выполнения: " + (end - start) / 1_000_000 + " ms");
@javatg
#junior #java
👍20🔥7❤5🤬2😁1
🦙 Jlama — LLM-движок для Java-разработчиков. Проект поддерживает популярные модели вроде Llama 3, Mistral и Gemma 2, предлагая инструменты для их загрузки, квантования и запуска. Он работает с Java 20+ и поддерживает распределенные вычисления.
Разработчики могут использовать Jlama как через CLI-интерфейс для локального тестирования моделей, так и встраивать его в свои проекты через Maven-зависимости. Проект будет полезен для интеграции LLM в enterprise-решения без перехода на Python-стек.
🤖 GitHub
@javatg
Разработчики могут использовать Jlama как через CLI-интерфейс для локального тестирования моделей, так и встраивать его в свои проекты через Maven-зависимости. Проект будет полезен для интеграции LLM в enterprise-решения без перехода на Python-стек.
🤖 GitHub
@javatg
👍14🤯5❤4🔥1😁1
☕ Java25 уже на подходе!
В свежем релизе — важные улучшения, о которых стоит знать каждому Java-разработчику:
🔹 JEP 502: Stable Values — новый способ работы со значениями, который делает код надёжнее и эффективнее.
🔹 JEP 514/515: Project Leyden — фокус на время запуска приложений и оптимизацию старта JVM.
📖 Подробный разбор:
https://softwaremill.com/jep-502-stable-values-new-feature-of-java-25-explained/
#Java #JEP #Leyden #Programming
В свежем релизе — важные улучшения, о которых стоит знать каждому Java-разработчику:
🔹 JEP 502: Stable Values — новый способ работы со значениями, который делает код надёжнее и эффективнее.
🔹 JEP 514/515: Project Leyden — фокус на время запуска приложений и оптимизацию старта JVM.
📖 Подробный разбор:
https://softwaremill.com/jep-502-stable-values-new-feature-of-java-25-explained/
#Java #JEP #Leyden #Programming
❤6👍5🎉2
💡 Полезный совет по Java
В Java часто нужно работать с датами и временем. Вместо устаревших Date и Calendar лучше использовать современное API java.time, появившееся в Java 8. Оно более удобное, безопасное и читаемое.
Например, если нужно добавить дни к текущей дате:
✅ Код становится проще и понятнее.
📌 Совет: всегда отдавайте предпочтение java.time вместо старых классов.
@javatg
В Java часто нужно работать с датами и временем. Вместо устаревших Date и Calendar лучше использовать современное API java.time, появившееся в Java 8. Оно более удобное, безопасное и читаемое.
Например, если нужно добавить дни к текущей дате:
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate nextWeek = today.plusDays(7);
System.out.println("Сегодня: " + today);
System.out.println("Через неделю: " + nextWeek);
}
}
✅ Код становится проще и понятнее.
📌 Совет: всегда отдавайте предпочтение java.time вместо старых классов.
@javatg
🔥13👍4🥰1
🚀 Linux Pro совет
Хотите быстро найти, какой процесс держит порт и мешает вашему сервису запуститься?
Вместо хаотичных перезапусков используйте:
💡 Отличный способ понять, почему приложение не стартует:
сразу видно PID процесса, который занял порт.
Дальше можно решить — убить процесс, изменить конфиг или переназначить порт.
@javatg
Хотите быстро найти, какой процесс держит порт и мешает вашему сервису запуститься?
Вместо хаотичных перезапусков используйте:
# Проверка, кто слушает на порту 8080
lsof -i :8080
# Или
fuser 8080/tcp
💡 Отличный способ понять, почему приложение не стартует:
сразу видно PID процесса, который занял порт.
Дальше можно решить — убить процесс, изменить конфиг или переназначить порт.
@javatg
🔥9👍6❤3
🔥 Успех в IT = скорость + знания + окружение
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tg-me.com/ai_machinelearning_big_data
Python: www.tg-me.com/pythonl
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/devops_teleg
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/DevOPSitsec
Data Science: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/csharp_1001_notes
Java: www.tg-me.com/java_library
Базы данных: www.tg-me.com/sqlhub
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
ИИ: www.tg-me.com/vistehno
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
Разработка игр: https://www.tg-me.com/gamedev
Haskell: www.tg-me.com/haskell_tg
Физика: www.tg-me.com/fizmat
💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tg-me.com/ai_machinelearning_big_data
Python: www.tg-me.com/pythonl
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/devops_teleg
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/DevOPSitsec
Data Science: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/csharp_1001_notes
Java: www.tg-me.com/java_library
Базы данных: www.tg-me.com/sqlhub
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
ИИ: www.tg-me.com/vistehno
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
Разработка игр: https://www.tg-me.com/gamedev
Haskell: www.tg-me.com/haskell_tg
Физика: www.tg-me.com/fizmat
💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
⚡ Java полезный совет
При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать
Лучше сразу применять
Пример
📌 Итог:
- Для поиска в коллекции всегда используйте Set, если не нужен порядок.
- HashSet → быстрый доступ за O(1).
- TreeSet → доступ за O(log n), но с сортировкой элементов.
@javatg
При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать
List.contains(), то поиск будет O(n) — медленно на больших данных. Лучше сразу применять
Set (например, `HashSet`) для поиска за O(1). Пример
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "grape");
// Медленно — O(n)
boolean slowCheck = list.contains("orange");
// Быстро — O(1)
Set<String> set = new HashSet<>(list);
boolean fastCheck = set.contains("orange");
System.out.println("List check: " + slowCheck);
System.out.println("Set check: " + fastCheck);
}
}
📌 Итог:
- Для поиска в коллекции всегда используйте Set, если не нужен порядок.
- HashSet → быстрый доступ за O(1).
- TreeSet → доступ за O(log n), но с сортировкой элементов.
@javatg
❤13👍10🥰2😁1🤬1
