Современное состояние языка программирования java

Заказать уникальный доклад
Тип работы: Доклад
Предмет: Программирование java
  • 22 22 страницы
  • 12 + 12 источников
  • Добавлена 16.11.2023
748 руб.
  • Содержание
  • Часть работы
  • Список литературы
-
Фрагмент для ознакомления

Точно так же мы всегда могли сгенерировать HashMap следующим образом:Map map = new HashMap<>(120);Интуитивно можно подумать, что этот HashMap предлагает место для 120 сопоставлений, но это не так. Это связано с тем, что HashMap инициализируется с коэффициентом загрузки по умолчанию 0,75. Это означает, что как только HashMap заполнится на 75%, он будет перестроен («перефэширован») с двойным размером. Это гарантирует, что элементы будут распределены как можно более равномерно по сегментам HashMap и что как можно меньше сегментов будет содержать более одного элемента.Таким образом, HashMap, инициализированный емкостью 120, может содержать только 120 × 0,75 = 90 отображений.Чтобы создать HashMap на 120 сопоставлений, нужно было рассчитать емкость, разделив количество сопоставлений на коэффициент загрузки: 120 ÷ 0,75 = 160.Таким образом, HashMap для 120 сопоставлений нужно было создать следующим образом:// for 120 mappings: 120 / 0.75 = 160Map map = new HashMap<>(160);Java 19 облегчила нам задачу — теперь мы можем вместо этого написать следующее:Map map = HashMap.newHashMap(120);Метод newHashMap() также был добавлен в LinkedHashMap и WeakHashMap.4.2 Сопоставление шаблонов для switch (третья предварительная версия) – JEP 427Java 19 предоставляет нам функции (previewи incubator), которые еще не реализованы, но уже могут быть протестированы сообществом разработчиков. В Java 19 предложение по расширению JDK 427 изменило синтаксис так называемого «Защищенного шаблона». Вместо && теперь нам нужно использовать новое ключевое слово When.switch (obj) {case String s when s.length() > 5 -> System.out.println(s.toUpperCase()); case String s -> System.out.println(s.toLowerCase()); case Integer i -> System.out.println(i * i);default -> {}}5. JAVA 20НовыевозможностиJava 20 (21марта 2023 г)5.1 Scoped значения (JEP 429)Большое количество приложений Java имеют компоненты или модули, которым необходимо обмениваться данными между собой. Часто эти модули основаны на потоках, поэтому мы должны защищать данные, которыми они делятся, от любых изменений.Мы использовали переменные типа ThreadLocal, чтобы позволить компонентам обмениваться данными.Но это имеет некоторые последствия:Переменная ThreadLocal является изменяемой. API ThreadLocal обеспечивает доступ к методам get() и set()типа переменной.Мы можем столкнуться с проблемами утечки памяти, поскольку значение переменных ThreadLocal сохраняется до тех пор, пока мы явно не вызовем для него метод удаления() или пока поток не завершится. Таким образом, нет никакой привязки к времени жизни этих переменных для каждого потока.Они могут привести к чрезмерному использованию памяти в случае использования большого количества потоков. Это связано с тем, что дочерние потоки могут наследовать переменные ThreadLocal родительских потоков, выделяя таким образом память для каждой переменной ThreadLocal.Чтобы преодолеть эти проблемы, связанные с переменными ThreadLocal, в Java 20 введены значения с ограниченной областью действия для совместного использования данных внутри и между потоками.Значения с ограниченной областью действия предоставляют простой, неизменяемый и наследуемый вариант совместного использования данных, особенно в ситуациях, когда мы работаем с большим количеством потоков.ScopedValue — это неизменяемое значение, доступное для чтения в течение ограниченного периода выполнения потока. Поскольку он неизменяем, он обеспечивает безопасный и простой обмен данными в течение ограниченного периода выполнения потока. Кроме того, нам не нужно передавать значения в качестве аргументов метода.Мы можем использовать методwhere() класса ScopedValue, чтобы установить значение переменной для ограниченного периода выполнения потока. Более того, как только мы получим данные с помощью метода get(), мы не сможем снова получить к ним доступ.Как только метод run() потока завершает выполнение, scopedзначение возвращается в несвязанное состояние. Мы можем использовать метод get() для чтения значения переменной с scoped областью действия внутри потока.5.2 Структурированный параллелизм (JEP 437)Структурированный параллелизм был предложен в JEP 428 и представлен в JDK 19 в качестве инкубационного API. Этот JEP предлагает повторно инкубировать API без особых изменений в JDK 20. Таким образом, это дает время для получения дополнительной обратной связи.Цель — упростить многопоточное программирование путем введения API для структурированного параллелизма. Это повышает надежность за счет группировки нескольких потоков, выполняющих схожие задачи, в одну единицу работы. В результате улучшена обработка ошибок и отмена потоков. Кроме того, он продвигает улучшенный способ параллельного программирования, направленный на защиту от распространенных рисков, возникающих при отмене потоков.Однако в этом повторно инкубированном API есть одно изменение. Мы получаем обновленный StructuredTaskScope, который поддерживает наследование значений области действия потоками, созданными в области задачи. Таким образом, теперь мы можем удобно распределять неизменяемые данные по нескольким потокам.ЗАКЛЮЧЕНИЕJava — это важный язык программирования, который приобрел огромную популярность и значение в мире бизнеса и технологий. Его универсальность и надежность делают его идеальным выбором для разработки широкого спектра приложений: от корпоративных систем до веб-приложений и мобильных приложений. Java решает важнейшие задачи бизнеса, предлагая независимое от платформы и масштабируемое решение.Для Java разрабатывается ряд интересных новых функций и технологий, которые могут привести к тому, что в ближайшие годы Java станет еще более мощной и универсальной.Сообщество Java играет ключевую роль в продвижении инноваций и формировании будущего языка программирования. Благодаря активному участию, сотрудничеству и вкладам с открытым исходным кодом сообщество способствует постоянному совершенствованию и развитию новых идей и технологий. Группы пользователей Java (JUG), конференции и онлайн-форумы предоставляют платформы для обмена знаниями и налаживания связей, позволяя разработчикам быть в курсе последних тенденций и передового опыта. Описание некоторых из них с примерами использования были отражены в рамках выполнения данной работы.СПИСОК ЛИТЕРАТУРЫNew Features in Java 16 URL:https://www.baeldung.com/java-16-new-featuresNew Features in Java 17 URL: https://www.baeldung.com/java-17-new-featuresJava 17 new features – Javatpoint URL: https://www.javatpoint.com/java-17-new-featuresNew Features in Java 18 URL: https://www.developer.com/java/java-18-features/Java software development: Trends to watch in 2023 URL: https://www.softwebsolutions.com/resources/future-of-java-development-trends.htmlJava conferences 2023 / 2024 URL:https://dev.events/java2023 Trends for Java in the Enterprise URL:https://vaadin.com/blog/2023-trends-for-java-in-the-enterpriseJava Developer Roadmap in 2023 URL:https://www.simplilearn.com/java-developer-roadmap-articleORACLE JAVA 20 AND THE FUTURE OF OPENJDK IN 2023 URL:https://redresscompliance.com/oracle-java-20-and-the-future-of-openjdk-in-2023/Moving Java Forward at Oracle CloudWorld 2023 URL:https://blogs.oracle.com/java/post/moving-java-forward-at-oracle-cloudworld-2023Java™ Platform Standard Edition 19 Development Kit - JDK™ 19 URL: https://www.oracle.com/java/technologies/javase/jdk19-readme-downloads.htmlJDK 20 Release Notes URL: https://www.oracle.com/java/technologies/javase/20-relnote-issues.html

1. New Features in Java 16 URL: https://www.baeldung.com/java-16-new-features
2. New Features in Java 17 URL: https://www.baeldung.com/java-17-new-features
3. Java 17 new features – Javatpoint URL: https://www.javatpoint.com/java-17-new-features
4. New Features in Java 18 URL: https://www.developer.com/java/java-18-features/
5. Java software development: Trends to watch in 2023 URL: https://www.softwebsolutions.com/resources/future-of-java-development-trends.html
6. Java conferences 2023 / 2024 URL:https://dev.events/java
7. 2023 Trends for Java in the Enterprise URL:https://vaadin.com/blog/2023-trends-for-java-in-the-enterprise
8. Java Developer Roadmap in 2023 URL:https://www.simplilearn.com/java-developer-roadmap-article
9. ORACLE JAVA 20 AND THE FUTURE OF OPENJDK IN 2023 URL:https://redresscompliance.com/oracle-java-20-and-the-future-of-openjdk-in-2023/
10. Moving Java Forward at Oracle CloudWorld 2023 URL:https://blogs.oracle.com/java/post/moving-java-forward-at-oracle-cloudworld-2023
11. Java™ Platform Standard Edition 19 Development Kit - JDK™ 19 URL: https://www.oracle.com/java/technologies/javase/jdk19-readme-downloads.html
12. JDK 20 Release Notes URL: https://www.oracle.com/java/technologies/javase/20-relnote-issues.html