METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Из одной вакансии. Знать язык Java не рекомендуется. #java
😁39💅6🖕2🤡1
Шпаргалка по массивам в языке Java #java
Вышла новая версия языка 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
❤‍🔥7🔥1👏1
Команды Docker для Java-разработчиков #java #docker
🤨7👍52
Языку 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
27👍5❤‍🔥2
В руководство по языку Java добавлена новая статья Компактные файлы кода и метод main
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
👍16🔥53
Сообщество 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
6👀3❤‍🔥2👏1
Вкратце все версии Java/JDK #java
👍15
В руководство по языку 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
🔥22
В руководство по языку Java добавлена глава про Рефлексию
https://metanit.com/java/tutorial/14.1.php
#java
🔥23👍3👏2
В руководство по языку Java добавлена статья про Виртуальные потоки
https://metanit.com/java/tutorial/8.12.php
#java
🔥186👍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
❤‍🔥13👍4🔥2
В руководство по языку 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
😁74👍4🍓4💋3👏1
В руководство по языку 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
6👍5🤔2👀2😁1
Как работает сборщик мусора (Garbage Collector) в Java #java
(продолжение в следующем посте)
5🔥2👏1💩1