Вышла новая версия языка Java - Java 24 вместо с комплектом разработки JDK 24. Основные нововведения:
- Stream Gatherers: функциональность в Stream API, которая добавляет ряд операций по работе с потоками данных
- Class-File API: предоставляет стандартный API для анализа, генерации и преобразования файлов классов Java.
- Ahead-of-Time Class Loading & Linking: уменьшает время запуска приложений с помощью сохранения кэша загруженных классов
- Synchronize Virtual Threads without Pinning: решает проблему блокировки платформенных потоков при использовании виртуальных потоков в synchronized-блоках
- Ограничение использования JNI: использование Java Native Interface (JNI) и Foreign Function & Memory (FFM) теперь приводит к предупреждению, а в будущем планируется выбрасывать исключение
- Прекращена поддержка Windows 32-bit x86
Подробнее все нововведения - https://jdk.java.net/24/release-notes
#java #jdk
- Stream Gatherers: функциональность в Stream API, которая добавляет ряд операций по работе с потоками данных
- Class-File API: предоставляет стандартный API для анализа, генерации и преобразования файлов классов Java.
- Ahead-of-Time Class Loading & Linking: уменьшает время запуска приложений с помощью сохранения кэша загруженных классов
- Synchronize Virtual Threads without Pinning: решает проблему блокировки платформенных потоков при использовании виртуальных потоков в synchronized-блоках
- Ограничение использования JNI: использование Java Native Interface (JNI) и Foreign Function & Memory (FFM) теперь приводит к предупреждению, а в будущем планируется выбрасывать исключение
- Прекращена поддержка Windows 32-bit x86
Подробнее все нововведения - https://jdk.java.net/24/release-notes
#java #jdk
❤🔥7🔥1👏1
Языку Java исполняется 30 лет - именно 23 мая 1995 года вышла первая версия Java. Спустя год вышла также первая версия JDK - комплекта инструментов для разработчиков для Java. Выход первой версии языка Java (1.0) в 1995 году, разработанного компанией Sun Microsystems, стал знаковым событием для индустрии разработки программного обеспечения. Его значение заключается в нескольких ключевых аспектах:
- Платформонезависимость: Java ввела концепцию «пиши один раз, запускай везде» (Write Once, Run Anywhere, WORA). Благодаря виртуальной машине Java (JVM) программы, написанные на Java, могли выполняться на любой платформе с установленной JVM, что упростило кроссплатформенную разработку и снизило зависимость от конкретных операционных систем.
- Объектно-ориентированный подход: Java популяризировала объектно-ориентированное программирование (ООП), предоставляя простой, но мощный синтаксис, вдохновленный C++, но с устранением сложных элементов, таких как указатели. Это сделало язык доступным для широкого круга разработчиков.
- Надежность и безопасность: Java была спроектирована с упором на надежность и безопасность. Автоматическое управление памятью (сборка мусора), строгая типизация и встроенные механизмы безопасности (например, песочница для апплетов) сделали язык подходящим для создания надежных и защищенных приложений.
- Широкое применение: Java быстро завоевала популярность для разработки различных типов приложений:
1)Веб-апплеты: Первоначально Java активно использовалась для создания интерактивных веб-приложений (апплетов), что было новшеством для веба того времени.
2)Серверные приложения: Со временем Java стала стандартом для серверных приложений благодаря платформам, таким как Java EE.
3)Мобильные и встраиваемые системы: Появление Java ME расширило применение языка в мобильных устройствах и встраиваемых системах.
- Экосистема и сообщество: Выход Java сопровождался созданием мощной экосистемы, включая стандартные библиотеки (Java API), инструменты разработки (JDK) и активное сообщество. Это способствовало быстрому распространению языка и его адаптации в различных отраслях.
- Влияние на другие языки и технологии: Java оказала влияние на развитие других языков программирования (например, C#) и технологий, задав стандарты для современных языков, таких как управление памятью и кроссплатформенность.
- Корпоративное использование: Java стала основой для корпоративных приложений, особенно в банковской, финансовой и телекоммуникационной сферах, благодаря своей масштабируемости и надежности.
В долгосрочной перспективе Java заложила фундамент для современной разработки программного обеспечения, став одним из самых популярных языков программирования, который до сих пор активно используется (например, в экосистеме Android, серверных приложениях и больших данных). Ее выход изменил подход к разработке, сделав акцент на переносимость, безопасность и универсальность.
#java
- Платформонезависимость: Java ввела концепцию «пиши один раз, запускай везде» (Write Once, Run Anywhere, WORA). Благодаря виртуальной машине Java (JVM) программы, написанные на Java, могли выполняться на любой платформе с установленной JVM, что упростило кроссплатформенную разработку и снизило зависимость от конкретных операционных систем.
- Объектно-ориентированный подход: Java популяризировала объектно-ориентированное программирование (ООП), предоставляя простой, но мощный синтаксис, вдохновленный C++, но с устранением сложных элементов, таких как указатели. Это сделало язык доступным для широкого круга разработчиков.
- Надежность и безопасность: Java была спроектирована с упором на надежность и безопасность. Автоматическое управление памятью (сборка мусора), строгая типизация и встроенные механизмы безопасности (например, песочница для апплетов) сделали язык подходящим для создания надежных и защищенных приложений.
- Широкое применение: Java быстро завоевала популярность для разработки различных типов приложений:
1)Веб-апплеты: Первоначально Java активно использовалась для создания интерактивных веб-приложений (апплетов), что было новшеством для веба того времени.
2)Серверные приложения: Со временем Java стала стандартом для серверных приложений благодаря платформам, таким как Java EE.
3)Мобильные и встраиваемые системы: Появление Java ME расширило применение языка в мобильных устройствах и встраиваемых системах.
- Экосистема и сообщество: Выход Java сопровождался созданием мощной экосистемы, включая стандартные библиотеки (Java API), инструменты разработки (JDK) и активное сообщество. Это способствовало быстрому распространению языка и его адаптации в различных отраслях.
- Влияние на другие языки и технологии: Java оказала влияние на развитие других языков программирования (например, C#) и технологий, задав стандарты для современных языков, таких как управление памятью и кроссплатформенность.
- Корпоративное использование: Java стала основой для корпоративных приложений, особенно в банковской, финансовой и телекоммуникационной сферах, благодаря своей масштабируемости и надежности.
В долгосрочной перспективе Java заложила фундамент для современной разработки программного обеспечения, став одним из самых популярных языков программирования, который до сих пор активно используется (например, в экосистеме Android, серверных приложениях и больших данных). Ее выход изменил подход к разработке, сделав акцент на переносимость, безопасность и универсальность.
#java
❤27👍5❤🔥2
В руководство по языку Java добавлена новая статья Компактные файлы кода и метод main
https://metanit.com/java/tutorial/3.19.php
#java
https://metanit.com/java/tutorial/3.19.php
#java
👍19❤🔥3👏2👎1
Управление памятью Java: Сборка мусора
𝟏) Что такое сборка мусора
Сборка мусора (GC) — это автоматизированный процессдля освобождения памяти путем удаления объектов, которые больше не нужны или на которые не ссылается приложение. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложения.
𝟐) Как она работает?
В основе сборки мусора в Java лежит алгоритм Mark and Sweep (отметить и убрать):
🔹𝗠𝗮𝗿𝗸: GC начинает с корневых ссылок (таких как статические переменные, активные потоки и стеки методов) и помечает все достижимые объекты как «используемые».
🔹𝗦𝘄𝗲𝗲𝗽: Затем GC сканирует кучу на предмет объектов, не помеченных как «используемые», и освобождает их память, делая ее доступной для новых выделений.
𝟑) Когда выполняется сборка мусора?
Сборщик мусора может быть запущен автоматически JVM в следующих случаях:
🔹 Куча заполнена или близка к заполнению.
🔹 Куча старого поколения достигает порога.
🔹 Область памяти PermGen/Metaspace заполнена (в зависимости от версии Java).
🔹 Вручную вызван метод System.gc()
𝟒) Сборка мусора для поколений
Современные JVM делят кучу на поколения (молодые, старые и иногда ряд других). Большинство объектов умирают молодыми, поэтому GC фокусируется на молодом поколении для частой и быстрой очистки, в то время как старые объекты собираются реже, но более тщательно.
𝟓) Оптимизация
После очистки некоторые сборщики уплотняют память, перемещая активные объекты вместе, что снижает фрагментацию и ускоряет выделение памяти для новых объектов.
𝟔) Почему это важно?
Автоматическая сборка мусора освобождает разработчиков от ручного управления памятью (в отличие от C/C++), уменьшая количество ошибок, таких как утечки памяти и висячие указатели, и позволяя вам сосредоточиться на создании функций, а не на отслеживании памяти.
#java
𝟏) Что такое сборка мусора
Сборка мусора (GC) — это автоматизированный процессдля освобождения памяти путем удаления объектов, которые больше не нужны или на которые не ссылается приложение. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложения.
𝟐) Как она работает?
В основе сборки мусора в Java лежит алгоритм Mark and Sweep (отметить и убрать):
🔹𝗠𝗮𝗿𝗸: GC начинает с корневых ссылок (таких как статические переменные, активные потоки и стеки методов) и помечает все достижимые объекты как «используемые».
🔹𝗦𝘄𝗲𝗲𝗽: Затем GC сканирует кучу на предмет объектов, не помеченных как «используемые», и освобождает их память, делая ее доступной для новых выделений.
𝟑) Когда выполняется сборка мусора?
Сборщик мусора может быть запущен автоматически JVM в следующих случаях:
🔹 Куча заполнена или близка к заполнению.
🔹 Куча старого поколения достигает порога.
🔹 Область памяти PermGen/Metaspace заполнена (в зависимости от версии Java).
🔹 Вручную вызван метод System.gc()
𝟒) Сборка мусора для поколений
Современные JVM делят кучу на поколения (молодые, старые и иногда ряд других). Большинство объектов умирают молодыми, поэтому GC фокусируется на молодом поколении для частой и быстрой очистки, в то время как старые объекты собираются реже, но более тщательно.
𝟓) Оптимизация
После очистки некоторые сборщики уплотняют память, перемещая активные объекты вместе, что снижает фрагментацию и ускоряет выделение памяти для новых объектов.
𝟔) Почему это важно?
Автоматическая сборка мусора освобождает разработчиков от ручного управления памятью (в отличие от C/C++), уменьшая количество ошибок, таких как утечки памяти и висячие указатели, и позволяя вам сосредоточиться на создании функций, а не на отслеживании памяти.
#java
👍16🔥5❤3
Сообщество Eclipse представило платформу Jakarta EE 11, которая предназначена для разработки корпоративных Java-приложений и которая пришла на смену Java EE.
Основной акцент сделан на повышении производительности разработчиков, оптимизации процессов тестирования и поддержке последних версий Java LTS (Java 17 и 21).
Ключевые особенности релиза включают:
- Для упрощения работы с данными добавлена новая спецификация Jakarta Data, которая предоставляет ряд интерфейсов: BasicRepository (для базовых операций с данными, минимизирующий шаблонный код), CrudRepository (для поддержки полного набора CRUD-операций для интуитивного взаимодействия с базами данных),
Pagination (для поддержки постраничной навигации (offset и cursor-based) для эффективной работы с большими наборами данных) и упрощённый язык для определения запросов на уровне методов в репозиториях.
- Модернизация Test Compatibility Kit (TCK): Обновлённые тестовые наборы с использованием JUnit 5 и Maven повышают удобство и гибкость тестирования, снижая барьеры для новых участников и способствуя инновациям в экосистеме Jakarta EE.
- Добавлена поддержка Java 21, в том числе таких возможностей, как виртуальные потоки (Virtual Threads), которые повышают масштабируемость и производительность за счёт снижения накладных расходов.
Ряд продуктов уже поддерживают данную спецификацию, в частности, Eclipse GlassFish (Web Profile), Open Liberty, WildFly, Payara Platform Community Edition и Fujitsu Software Enterprise Application Platform (Core Profile)
https://newsroom.eclipse.org/news/announcements/eclipse-foundation%E2%80%99s-jakarta-ee-working-group-announces-jakarta-ee-11-release
#java #jakarta_ee
Основной акцент сделан на повышении производительности разработчиков, оптимизации процессов тестирования и поддержке последних версий Java LTS (Java 17 и 21).
Ключевые особенности релиза включают:
- Для упрощения работы с данными добавлена новая спецификация Jakarta Data, которая предоставляет ряд интерфейсов: BasicRepository (для базовых операций с данными, минимизирующий шаблонный код), CrudRepository (для поддержки полного набора CRUD-операций для интуитивного взаимодействия с базами данных),
Pagination (для поддержки постраничной навигации (offset и cursor-based) для эффективной работы с большими наборами данных) и упрощённый язык для определения запросов на уровне методов в репозиториях.
- Модернизация Test Compatibility Kit (TCK): Обновлённые тестовые наборы с использованием JUnit 5 и Maven повышают удобство и гибкость тестирования, снижая барьеры для новых участников и способствуя инновациям в экосистеме Jakarta EE.
- Добавлена поддержка Java 21, в том числе таких возможностей, как виртуальные потоки (Virtual Threads), которые повышают масштабируемость и производительность за счёт снижения накладных расходов.
Ряд продуктов уже поддерживают данную спецификацию, в частности, Eclipse GlassFish (Web Profile), Open Liberty, WildFly, Payara Platform Community Edition и Fujitsu Software Enterprise Application Platform (Core Profile)
https://newsroom.eclipse.org/news/announcements/eclipse-foundation%E2%80%99s-jakarta-ee-working-group-announces-jakarta-ee-11-release
#java #jakarta_ee
Eclipse News, Eclipse in the News, Eclipse Announcement
The Eclipse Foundation’s Jakarta EE Working Group Announces Jakarta EE 11 Release
The new Jakarta EE release modernises testing, boosts developer productivity, improves performance, and expands Java platform support.
❤6👀3❤🔥2👏1
В руководство по языку Java добавлены новые статьи:
Файлы JAR, их создание и выполнение
http://metanit.com/java/tutorial/13.1.php
Создание и подключение библиотеки JAR
http://metanit.com/java/tutorial/13.2.php
Установка пути к классам Java
http://metanit.com/java/tutorial/13.3.php
#java
Файлы JAR, их создание и выполнение
http://metanit.com/java/tutorial/13.1.php
Создание и подключение библиотеки JAR
http://metanit.com/java/tutorial/13.2.php
Установка пути к классам Java
http://metanit.com/java/tutorial/13.3.php
#java
🔥19👍4👏1
В руководство по языку Java добавлены новые статьи:
Sealed-классы и интерфейсы
https://metanit.com/java/tutorial/3.25.php"
Pattern мatching. Паттерн типов
https://metanit.com/java/tutorial/3.26.php"
Pattern мatching. record-паттерн
https://metanit.com/java/tutorial/3.27.php"
#java
Sealed-классы и интерфейсы
https://metanit.com/java/tutorial/3.25.php"
Pattern мatching. Паттерн типов
https://metanit.com/java/tutorial/3.26.php"
Pattern мatching. record-паттерн
https://metanit.com/java/tutorial/3.27.php"
#java
🔥22
В руководство по языку Java добавлена глава про Рефлексию
https://metanit.com/java/tutorial/14.1.php
#java
https://metanit.com/java/tutorial/14.1.php
#java
🔥23👍3👏2
В руководство по языку Java добавлена статья про Виртуальные потоки
https://metanit.com/java/tutorial/8.12.php
#java
https://metanit.com/java/tutorial/8.12.php
#java
🔥18❤6👍2❤🔥1🥰1🤮1
В руководство по языку Java добавлены новые статьи:
Асинхронные задачи FutureTask. Callable и Future
https://metanit.com/java/tutorial/8.13.php
Executor - исполнитель задач
https://metanit.com/java/tutorial/8.14.php
Координация выполнения асинхронных задач
https://metanit.com/java/tutorial/8.15.php
#java
Асинхронные задачи FutureTask. Callable и Future
https://metanit.com/java/tutorial/8.13.php
Executor - исполнитель задач
https://metanit.com/java/tutorial/8.14.php
Координация выполнения асинхронных задач
https://metanit.com/java/tutorial/8.15.php
#java
❤🔥13👍4🔥2
В руководство по языку Java добавлены новые статьи:
Переменные volatile в многопоточных приложениях
https://metanit.com/java/tutorial/8.16.php
Атомарность и Atomics. Потокобезопасность без блокировок в многопоточных приложениях
https://metanit.com/java/tutorial/8.17.php
#java
Переменные volatile в многопоточных приложениях
https://metanit.com/java/tutorial/8.16.php
Атомарность и Atomics. Потокобезопасность без блокировок в многопоточных приложениях
https://metanit.com/java/tutorial/8.17.php
#java
👍22👾3
В руководство по языку Java добавлены следующие статьи:
Управление процессами. Классы Process и ProcessBuilder
https://metanit.com/java/tutorial/12.4.php
CompletableFuture и промисы. Обработка результата асинхронных задач
https://metanit.com/java/tutorial/8.18.php
CompletableFuture, обработка ошибок и завершения асинхронных задач
https://metanit.com/java/tutorial/8.19.php
#java
В руководство по ассемблеру NASM добавлена статья
Создание структур с помощью макросы STRUC/ENDSTRUC
https://metanit.com/assembler/nasm/3.13.php
#assembler #assembly #nasm
Управление процессами. Классы Process и ProcessBuilder
https://metanit.com/java/tutorial/12.4.php
CompletableFuture и промисы. Обработка результата асинхронных задач
https://metanit.com/java/tutorial/8.18.php
CompletableFuture, обработка ошибок и завершения асинхронных задач
https://metanit.com/java/tutorial/8.19.php
#java
В руководство по ассемблеру NASM добавлена статья
Создание структур с помощью макросы STRUC/ENDSTRUC
https://metanit.com/assembler/nasm/3.13.php
#assembler #assembly #nasm
😁7❤4👍4🍓4💋3👏1
В руководство по языку Java добавлена глава по аннотациям: их объявлению и применению, созданию своих аннотаций и использованию встроенных
https://metanit.com/java/tutorial/15.1.php
#java
https://metanit.com/java/tutorial/15.1.php
#java
🔥12👍6👏2
Вышла новая версия Spring - распространенного фрейморка для создания корпоративных приложений на Java/Kotlin - Spring Framework 7.0
В сообщении о релизе отмечается, что Spring Framework 7.0 — это начало нового поколения фреймворка. Его ключевые ориентиры — Java 25 и новейшая экосистема с открытым исходным кодом. Фреймворк станет основой для Spring Boot 4.0.
Это поколение Spring включает обновление базовых компонентов и зависимостей:
* поддержка Java 25 (последняя версия с долгосрочной поддержкой) при сохранении базовой версии Java 17;
* уровень API Jakarta EE 11: Servlet 6.1, JPA 3.2, Bean Validation 3.1;
* комплексная защита от null‑значений с помощью JSpecify;
* поддержка Jackson 3.0 (при этом сохраняется устаревшая поддержка Jackson 2.x);
* Kotlin 2.2;
* JUnit 6.0.
Первый релиз Spring Framework 7.0 содержит широкий набор новых функций, в том числе:
* программную регистрацию бинов;
* базовые функции обеспечения отказоустойчивости;
* JmsClient;
* версионирование API;
* настройку клиента HTTP‑интерфейса;
* RestTestClient.
https://spring.io/blog/2025/11/13/spring-framework-7-0-general-availability/
#spring #java #kotlin
В сообщении о релизе отмечается, что Spring Framework 7.0 — это начало нового поколения фреймворка. Его ключевые ориентиры — Java 25 и новейшая экосистема с открытым исходным кодом. Фреймворк станет основой для Spring Boot 4.0.
Это поколение Spring включает обновление базовых компонентов и зависимостей:
* поддержка Java 25 (последняя версия с долгосрочной поддержкой) при сохранении базовой версии Java 17;
* уровень API Jakarta EE 11: Servlet 6.1, JPA 3.2, Bean Validation 3.1;
* комплексная защита от null‑значений с помощью JSpecify;
* поддержка Jackson 3.0 (при этом сохраняется устаревшая поддержка Jackson 2.x);
* Kotlin 2.2;
* JUnit 6.0.
Первый релиз Spring Framework 7.0 содержит широкий набор новых функций, в том числе:
* программную регистрацию бинов;
* базовые функции обеспечения отказоустойчивости;
* JmsClient;
* версионирование API;
* настройку клиента HTTP‑интерфейса;
* RestTestClient.
https://spring.io/blog/2025/11/13/spring-framework-7-0-general-availability/
#spring #java #kotlin
Spring Framework 7.0 General Availability
Level up your Java code and explore what Spring can do for you.
❤6👍5🤔2👀2😁1
❤5🔥2👏1💩1
Как работает сборщик мусора (Garbage Collector) в Java #java
(продолжение предыдущего поста)
Java использует систему автоматического управления памятью, которая называется сборщиком мусора (Garbage Collector, GC). Она освобождает память, занятую объектами, которые больше не нужны. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложений.
Во время выполнения программы:
→ Виртуальная машина Java (JVM) постоянно отслеживает ссылки на объекты, чтобы определить, какие из них всё ещё доступны из активных потоков и исполняемого кода.
→ Объекты, к которым больше нет доступа, помечаются как подходящие для сборки мусора.
→ Сборщик мусора использует такие алгоритмы, как «Маркировка и очистка» (Mark‑and‑Sweep), «Копирование» (Copying) и «Поколение» (Generational Collection), чтобы выявить неиспользованные объекты и освободить занятую ими память.
→ Молодое поколение (Young Generation) часто обрабатывается с помощью быстрых и эффективных циклов малой сборки мусора (minor GC).
→ Объекты, пережившие несколько циклов, перемещаются в старое поколение (Old Generation), где с долгоживущими объектами работают циклы основной сборки мусора (major GC).
→ После очистки сборщик мусора уплотняет память, чтобы уменьшить фрагментацию и повысить производительность при выделении памяти.
→ Весь процесс выполняется автоматически, позволяя разработчикам на Java сосредоточиться на написании кода без ручного освобождения памяти.
Результат: Java обеспечивает стабильное и эффективное использование памяти, автоматически обнаруживая неиспользованные объекты и освобождая занятое ими пространство посредством оптимизированных циклов сборки мусора.
(продолжение предыдущего поста)
Java использует систему автоматического управления памятью, которая называется сборщиком мусора (Garbage Collector, GC). Она освобождает память, занятую объектами, которые больше не нужны. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложений.
Во время выполнения программы:
→ Виртуальная машина Java (JVM) постоянно отслеживает ссылки на объекты, чтобы определить, какие из них всё ещё доступны из активных потоков и исполняемого кода.
→ Объекты, к которым больше нет доступа, помечаются как подходящие для сборки мусора.
→ Сборщик мусора использует такие алгоритмы, как «Маркировка и очистка» (Mark‑and‑Sweep), «Копирование» (Copying) и «Поколение» (Generational Collection), чтобы выявить неиспользованные объекты и освободить занятую ими память.
→ Молодое поколение (Young Generation) часто обрабатывается с помощью быстрых и эффективных циклов малой сборки мусора (minor GC).
→ Объекты, пережившие несколько циклов, перемещаются в старое поколение (Old Generation), где с долгоживущими объектами работают циклы основной сборки мусора (major GC).
→ После очистки сборщик мусора уплотняет память, чтобы уменьшить фрагментацию и повысить производительность при выделении памяти.
→ Весь процесс выполняется автоматически, позволяя разработчикам на Java сосредоточиться на написании кода без ручного освобождения памяти.
Результат: Java обеспечивает стабильное и эффективное использование памяти, автоматически обнаруживая неиспользованные объекты и освобождая занятое ими пространство посредством оптимизированных циклов сборки мусора.
Telegram
METANIT.COM
Как работает сборщик мусора (Garbage Collector) в Java #java
(продолжение в следующем посте)
(продолжение в следующем посте)
❤11🔥2🥰1
В руководство по языку Java добавил главу про Взаимодействие с нативным кодом с помощью JNI и Foreign Functions и Memory API
https://metanit.com/java/tutorial/16.1.php
#java
https://metanit.com/java/tutorial/16.1.php
#java
🔥15👍5👏1