Telegram Web Link
⛓️ BTrace — динамический инструмент для трассировки Java-приложений. Проект позволяет безопасно отслеживать работу Java-программ в реальном времени без перезапуска. Встраивает байткод для мониторинга производительности, логирования вызовов методов или анализа проблем прямо в работающее приложение.

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

🤖 GitHub

@javatg
5🔥4👍3
🔐 jCasbin — библиотека контроля доступа для Java-приложений. Проект предлагает гибкую систему авторизации с поддержкой популярных моделей: ACL, RBAC, ABAC и других. Конфигурация правил доступа описывается в простых CONF-файлах, что позволяет легко адаптировать систему под разные сценарии — от RESTful API до сложных многоуровневых политик.

Инструмент имеет встроенный онлайн-редактор для тестирования правил прямо в браузере. Интегрируется с Spring Boot и работает с разными хранилищами политик, включая базы данных.

🤖 GitHub

@javatg
6👍3🔥2
⚛️ AtomicFU — библиотека для работы с атомарными операциями в Kotlin. Этот проект от JetBrains предоставляет удобный и эффективный способ работы с атомарными операциями в Kotlin-проектах. Поддерживает все основные платформы: JVM, Native, JS и Wasm.

Библиотека предлагает идиоматичный Kotlin API для атомарных операций, который затем трансформируется в эффективный код для каждой целевой платформы. Поддерживаются атомарные массивы, пользовательские расширения и даже примитивы синхронизации.

🤖 GitHub

@javatg
👍42🔥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
🔥116😁6👍3👏1🤬1
🔧 JavaCV — мост между Java и нативными библиотеками компьютерного зрения

Проект предоставляет Java-обёртки для популярных C/C++ библиотек вроде OpenCV, FFmpeg и libdc1394, позволяя использовать их возможности без необходимости писать нативный код.

Инструмент имеет встроенные утилиты для калибровки камер, обнаружения объектов и работы с GPU через OpenCL/OpenGL. Поддерживается интеграция с аппаратными SDK. Установка возможна через Maven/Gradle или вручную.

🤖 GitHub

@javatg
🔥11👍74🥰2🤩1
🎮 Погружаемся в SQL, с помощью увлекательной аркадной игры

Разработчики замутили настоящий олдскульный
шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.

• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.

Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
🔥136👍4
🤖 AI заменит разработчиков?
Этот вопрос звучит как кликбейт. Но когда смотришь на то, что делает Explyt Agent, начинаешь думать иначе.

Этот AI не просто подсказывает код, а реально:
• редактирует файлы в проекте
• запускает тесты и отлавливает ошибки
• выполняет команды в терминале
• анализирует проект и добавляет недостающие файлы

Фактически, он ведет себя как джун, которому ты говоришь: «вот таска, сделай». А ты только проверяешь результат.

Попробуйте, как устроен этот агент и что он умеет🚀
🔥5🤬5😁42👍1
🖥 Java 21: String Templates (JEP 430) — Интерполяция строк как в JavaScript, но со своим подходом

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
👍1410🔥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
👍118🔥2🤔2
🔧 JLine — мощная Java-библиотека для работы с консольным вводом, которая делает интерактивные CLI-приложения удобнее и функциональнее. Она предлагает продвинутые возможности вроде редактирования строк, истории команд, автодополнения и даже интерактивных элементов интерфейса — меню, чекбоксов и подсказок.

Библиотека кроссплатформенная, поддерживает синтаксис ANSI, Unicode и даже интеграцию с SSH/Telnet. Минимальная требуемая версия Java — 11, а для проектов на JPMS есть готовые модули. Подключить инструмент просто: достаточно добавить зависимость в Maven или Gradle.

🤖 GitHub

@javatg
🔥107🥰2🎉1
🚀 Docker + Java совет

Для 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🔥73
🖥 Malimite — это декомпилятор iOS, призванный помочь исследователям анализировать и декодировать файлы IPA!

🌟 Он создан на основе декомпиляции Ghidra для обеспечения прямой поддержки ресурсов Swift, Objective-C и iOS.

🔐 Лицензия: Apache-2.0

🖥 Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😱3
Быстрый совет 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🔥75🤬2😁1
Что мешает тебе писать код вот так?
😁284🤔3
🦙 Jlama — LLM-движок для Java-разработчиков. Проект поддерживает популярные модели вроде Llama 3, Mistral и Gemma 2, предлагая инструменты для их загрузки, квантования и запуска. Он работает с Java 20+ и поддерживает распределенные вычисления.

Разработчики могут использовать Jlama как через CLI-интерфейс для локального тестирования моделей, так и встраивать его в свои проекты через Maven-зависимости. Проект будет полезен для интеграции LLM в enterprise-решения без перехода на Python-стек.

🤖 GitHub

@javatg
👍14🤯54🔥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
6👍5🎉2
💡 Полезный совет по Java

В 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 совет

Хотите быстро найти, какой процесс держит порт и мешает вашему сервису запуститься?
Вместо хаотичных перезапусков используйте:


# Проверка, кто слушает на порту 8080
lsof -i :8080

# Или
fuser 8080/tcp


💡 Отличный способ понять, почему приложение не стартует:
сразу видно PID процесса, который занял порт.
Дальше можно решить — убить процесс, изменить конфиг или переназначить порт.

@javatg
🔥9👍63
🔥 Успех в 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

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Java полезный совет

При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать 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
2025/10/26 08:11:25
Back to Top
HTML Embed Code: