Преимущество OpenJ9 для сериализации Java
Сериализация Java предоставляет способ легко преобразовать последовательность байтов в и из java.lang.Object.
Одним шагом, который происходит в процессе десериализации, является загрузка класса, указанного дескриптором класса, в поток байтов. Это включает в себя вызов двух методов, которые способствуют снижению производительности: java.lang.Class.forName, java.io.ObjectInputStream. latestUserDefinedLoader
Это частный метод, который находит последний определенный пользователем загрузчик классов или «LUDCL» для использования Class.forName. Если сначала получить доступ к ВМ, это означает, что безопасно исследовать структуры данных ВМ и пройтись по стеку. Затем он обходит стек, чтобы найти самое последнее — ClassLoader, что является дорогостоящим действием.
В OpenJ9 есть несколько оптимизаций
Кэширование классов: создайте, java.io.ClassCache, чтобы уменьшить количество вызовов java.lang.Class.forName для повторных поисков.
Кэширование «LUDCL»: загрузчик может быть безопасно кэширован в ObjectInputStreamклассе. Если пользовательские readObjectметоды вызываются во время этого процесса, LUDCL необходимо обновить.
Замена JIT ObjectInputStream.readObject: Чтобы исключить другое извлечение LUDCL, JIT заменит ObjectInputStream.readObject()вызов на ObjectInputStream.redirectedReadObject(ObjectInputStream iStream, Class caller). ObjectInputStream.redirectedReadObject предоставит информацию LUDCL через аргумент, предотвращающий дополнительные вызовы LUDCL.
Результаты производительности
С этими оптимизациями производительность приложений увеличивается на 4% .
Это свойство десериализации будет включено по умолчанию, начиная с выпуска OpenJ9 0.18.0 в январе 2020 года для всех версий Java.
Сериализация Java предоставляет способ легко преобразовать последовательность байтов в и из java.lang.Object.
Одним шагом, который происходит в процессе десериализации, является загрузка класса, указанного дескриптором класса, в поток байтов. Это включает в себя вызов двух методов, которые способствуют снижению производительности: java.lang.Class.forName, java.io.ObjectInputStream. latestUserDefinedLoader
Это частный метод, который находит последний определенный пользователем загрузчик классов или «LUDCL» для использования Class.forName. Если сначала получить доступ к ВМ, это означает, что безопасно исследовать структуры данных ВМ и пройтись по стеку. Затем он обходит стек, чтобы найти самое последнее — ClassLoader, что является дорогостоящим действием.
В OpenJ9 есть несколько оптимизаций
Кэширование классов: создайте, java.io.ClassCache, чтобы уменьшить количество вызовов java.lang.Class.forName для повторных поисков.
Кэширование «LUDCL»: загрузчик может быть безопасно кэширован в ObjectInputStreamклассе. Если пользовательские readObjectметоды вызываются во время этого процесса, LUDCL необходимо обновить.
Замена JIT ObjectInputStream.readObject: Чтобы исключить другое извлечение LUDCL, JIT заменит ObjectInputStream.readObject()вызов на ObjectInputStream.redirectedReadObject(ObjectInputStream iStream, Class caller). ObjectInputStream.redirectedReadObject предоставит информацию LUDCL через аргумент, предотвращающий дополнительные вызовы LUDCL.
Результаты производительности
С этими оптимизациями производительность приложений увеличивается на 4% .
Это свойство десериализации будет включено по умолчанию, начиная с выпуска OpenJ9 0.18.0 в январе 2020 года для всех версий Java.
Eclipse OpenJ9 Blog
OpenJ9’s Advantage for Java Serialization
Did you know… that just by using OpenJ9 as your runtime, applications using deserialization could gain a huge performance advantage? Background Java serialization provides a way to easily con…
Вы хотели в детстве близнеца, на которого можно было отправить ходить в школу, мыть посуду, выносить мусор?
Сегодня Ваши мечты стали реальностью!
Мы предлагаем Вам цифрового двойника, на которого можно повесить абсолютно любую рутинную задачу, связанную с ИТ, а так же предлагаем возможность абсолютно БЕСПЛАТНО сконструировать и начать поддерживать своего собственного бота в Telegram, и для всего этого не потребуется каких-либо знаний в сфере программирования.
Для желающих сделать бота с более широким функционалом наши специалисты готовы помочь Вам в этом и возьмутся за любую Вашу задумку от интернет-магазина до системы управления умным домом.
https://prglb.ru/e5vj
Мы только начали развиваться и продолжаем делать это каждый день, для того чтобы помочь каждому!
Сегодня Ваши мечты стали реальностью!
Мы предлагаем Вам цифрового двойника, на которого можно повесить абсолютно любую рутинную задачу, связанную с ИТ, а так же предлагаем возможность абсолютно БЕСПЛАТНО сконструировать и начать поддерживать своего собственного бота в Telegram, и для всего этого не потребуется каких-либо знаний в сфере программирования.
Для желающих сделать бота с более широким функционалом наши специалисты готовы помочь Вам в этом и возьмутся за любую Вашу задумку от интернет-магазина до системы управления умным домом.
https://prglb.ru/e5vj
Мы только начали развиваться и продолжаем делать это каждый день, для того чтобы помочь каждому!
Начните с Jetty, Java и OAuth
Jetty — это небольшой масштабируемый веб-сервер на основе Java, поддерживающий HTTP/2, WebSockets и многие другие протоколы. Он поддерживает веб-сайты и платформы, как большие, так и маленькие, такие как Google AppEngine. Поскольку Jetty принадлежит Eclipse, его проект с открытым исходным кодом называется Eclipse Jetty. Он соответствует стандартам открытого исходного кода, а также коммерчески применим. Это главная альтернатива Tomcat при размещении Java-приложений. Как и в случае с Tomcat, вы можете использовать Jetty как встроенный, так и автономный.
По умолчанию Spring Boot создает приложения со встроенными веб-серверами, что означает, что сервер встроен в сам код приложения, поэтому нет необходимости запускать отдельный веб-сервер для публикации веб-приложений на Java. Однако с небольшой настройкой можно опубликовать файл WAR в отдельном контейнере Jetty или Tomcat (стиль сервера приложений старой школы). Spring также использует Tomcat по умолчанию, но это легко изменяемо.
Благодаря этому руководству вы можете создать:
- простой веб-сервис со встроенной Jetty =>
- один и тот же веб-сервис в Spring Boot и Jetty =>
- аутентификацию и авторизацию JWT (JSON Web Token) к веб-сервису, используя безопасность на уровне методов с Okta в качестве поставщика OAuth/OIDC.
Jetty — это небольшой масштабируемый веб-сервер на основе Java, поддерживающий HTTP/2, WebSockets и многие другие протоколы. Он поддерживает веб-сайты и платформы, как большие, так и маленькие, такие как Google AppEngine. Поскольку Jetty принадлежит Eclipse, его проект с открытым исходным кодом называется Eclipse Jetty. Он соответствует стандартам открытого исходного кода, а также коммерчески применим. Это главная альтернатива Tomcat при размещении Java-приложений. Как и в случае с Tomcat, вы можете использовать Jetty как встроенный, так и автономный.
По умолчанию Spring Boot создает приложения со встроенными веб-серверами, что означает, что сервер встроен в сам код приложения, поэтому нет необходимости запускать отдельный веб-сервер для публикации веб-приложений на Java. Однако с небольшой настройкой можно опубликовать файл WAR в отдельном контейнере Jetty или Tomcat (стиль сервера приложений старой школы). Spring также использует Tomcat по умолчанию, но это легко изменяемо.
Благодаря этому руководству вы можете создать:
- простой веб-сервис со встроенной Jetty =>
- один и тот же веб-сервис в Spring Boot и Jetty =>
- аутентификацию и авторизацию JWT (JSON Web Token) к веб-сервису, используя безопасность на уровне методов с Okta в качестве поставщика OAuth/OIDC.
Okta Developer
Get Started with Jetty, Java, and OAuth
Learn how to use Java and embedded Jetty to create a simple servlet-based web service. Then see how to do it with Spring Boot.
Подборка статей для Java Junior
Java Junior — лишь начало пути, но уже на этом этапе нужно обладать рядом знаний и умений. Представляем подборку материалов, которые могут оказаться весьма полезными для Джуна.
1) Подборка интерактивных курсов по C# и Java. Здесь собраны полезные ссылки на бесплатные и официальные ресурсы по этим двум языкам программирования.
2) Скрытые возможности в Java. Статья познакомит вас с такими неочевидными фактами, которые помогут понять тонкости ЯП и блеснуть знаниями на собеседовании.
3) Кстати, о работе: эта статья по Java приоткроет завесу тайны над собеседованиями и расскажет, что должен знать новичок.
4) Там же вы найдете пункт о Spring, универсальном фреймворке, который разобран по косточкам в статье Java Spring для начинающих: наиболее полный видеокурс.
5) Полезными будут и 34 крутые видеолекции по Java FX для начинающих.
6) А вот тем, кто уже задумывается об улучшении своего кода, предлагаем ознакомиться со статьей Пишем элегантный и чистый Java код в 5 этапов.
7) Еще в Java работают с базами данных, поэтому вы должны знать SQL минимум на уровне работы с PRIMARY KEY и FOREIGN KEY.
8) Полезные материалы по Java для тех, кто знает английский язык. Здесь рассматриваются библиотеки, приемы, советы по трудоустройству и многое другое.
9) Лучшие Java шпаргалки, с которыми не придется перерывать интернет в поисках ответов.
Java Junior — лишь начало пути, но уже на этом этапе нужно обладать рядом знаний и умений. Представляем подборку материалов, которые могут оказаться весьма полезными для Джуна.
1) Подборка интерактивных курсов по C# и Java. Здесь собраны полезные ссылки на бесплатные и официальные ресурсы по этим двум языкам программирования.
2) Скрытые возможности в Java. Статья познакомит вас с такими неочевидными фактами, которые помогут понять тонкости ЯП и блеснуть знаниями на собеседовании.
3) Кстати, о работе: эта статья по Java приоткроет завесу тайны над собеседованиями и расскажет, что должен знать новичок.
4) Там же вы найдете пункт о Spring, универсальном фреймворке, который разобран по косточкам в статье Java Spring для начинающих: наиболее полный видеокурс.
5) Полезными будут и 34 крутые видеолекции по Java FX для начинающих.
6) А вот тем, кто уже задумывается об улучшении своего кода, предлагаем ознакомиться со статьей Пишем элегантный и чистый Java код в 5 этапов.
7) Еще в Java работают с базами данных, поэтому вы должны знать SQL минимум на уровне работы с PRIMARY KEY и FOREIGN KEY.
8) Полезные материалы по Java для тех, кто знает английский язык. Здесь рассматриваются библиотеки, приемы, советы по трудоустройству и многое другое.
9) Лучшие Java шпаргалки, с которыми не придется перерывать интернет в поисках ответов.
Библиотека программиста
Подборка интерактивных курсов по C# и Java
Подборка полезных ссылок и бесплатных и официальных ресурсов по изучению С# и Java – популярных enterprise-языков программирования.
Поддержка Java 8
Хотя мы находимся на Java 13, есть много производственных установок, работающих с Java 8. В этом детальном рассмотрении совместимости с Java 8 показано как создавать байт-код Java 8 и исключить вызовы JDK, которые недоступны в Java 8.
Хотя мы находимся на Java 13, есть много производственных установок, работающих с Java 8. В этом детальном рассмотрении совместимости с Java 8 показано как создавать байт-код Java 8 и исключить вызовы JDK, которые недоступны в Java 8.
dzone.com
Supporting Java 8 - DZone Java
In this detailed look at Java 8 compatibility, we produce Java 8 bytecode and eliminate JDK calls that are not available in Java 8.
Добавление уровней безопасности в приложение в OpenShift
Сегодня защита приложений является «обязательной», но сложно представить ее без изменения кода, если не думать об этом в самом начале. К счастью, новые собственные облачные шаблоны, создаваемые контейнерами и платформами, такими как Kubernetes, предлагают простые способы решения проблем безопасности, не затрагивая код.
В серии блогов Лоран Бруду показывает каждый этап, чтобы обезопасить существующее fruits-catalog приложение:
Часть 1 - Развертывание и вход TLS
Часть 2. Аутентификация и авторизация с помощью Keycloak
Часть 3 - Секретное управление с Vault
Часть 4 - Динамические секреты с Vault
Часть 5 - Взаимный TLS с Istio
Сегодня защита приложений является «обязательной», но сложно представить ее без изменения кода, если не думать об этом в самом начале. К счастью, новые собственные облачные шаблоны, создаваемые контейнерами и платформами, такими как Kubernetes, предлагают простые способы решения проблем безопасности, не затрагивая код.
В серии блогов Лоран Бруду показывает каждый этап, чтобы обезопасить существующее fruits-catalog приложение:
Часть 1 - Развертывание и вход TLS
Часть 2. Аутентификация и авторизация с помощью Keycloak
Часть 3 - Секретное управление с Vault
Часть 4 - Динамические секреты с Vault
Часть 5 - Взаимный TLS с Istio
Medium
Adding security layers to your App on OpenShift — Part 1: Deployment and TLS Ingress
In this blog series, we will walk through many stages to secure an existing fruits-catalog application.
Структуры данных и алгоритмы в Java. Классика Computers Science. 2-е изд.
Автор: Лафоре Р.
#programming #java #book
Целевая аудитория: для начинающих разработчиков.
Структуры данных и алгоритмы на Java, второе издание, разработаны так, чтобы их было легко читать и понимать, хотя сама тема сложна. На четких и простых программных примерах автор объясняет эту сложную тему, предлагая читателям написать собственные программы и на практике освоить полученные знания.
В книге рассматриваются следующие темы:
✔️программы для различных структур данных и алгоритмов на Java;
✔️как анализировать алгоритмы;
✔️как писать и отслеживать рекурсивные алгоритмы и другое.
Преимущества:
➕ отлично подходит для тех, кто даже не знает Java, поскольку в первой главе объясняется, что вам нужно знать, чтобы следовать коду;
➕язык ясен и точен, и представление систематизировано и хорошо организовано.
Недостатки:
➖примеры часто плохи (загадочные имена переменных, дублирующий код и д.р.);
➖ часто запутанная.
Автор: Лафоре Р.
#programming #java #book
Целевая аудитория: для начинающих разработчиков.
Структуры данных и алгоритмы на Java, второе издание, разработаны так, чтобы их было легко читать и понимать, хотя сама тема сложна. На четких и простых программных примерах автор объясняет эту сложную тему, предлагая читателям написать собственные программы и на практике освоить полученные знания.
В книге рассматриваются следующие темы:
✔️программы для различных структур данных и алгоритмов на Java;
✔️как анализировать алгоритмы;
✔️как писать и отслеживать рекурсивные алгоритмы и другое.
Преимущества:
➕ отлично подходит для тех, кто даже не знает Java, поскольку в первой главе объясняется, что вам нужно знать, чтобы следовать коду;
➕язык ясен и точен, и представление систематизировано и хорошо организовано.
Недостатки:
➖примеры часто плохи (загадочные имена переменных, дублирующий код и д.р.);
➖ часто запутанная.
Что такое Maven, и где он обитает?
Лаконичный гайд по первым шагам в использовании maven. Пишем свой первый проект.
👇🤔
https://proglib.io/sh/D51ikuLNAd
Лаконичный гайд по первым шагам в использовании maven. Пишем свой первый проект.
👇🤔
https://proglib.io/sh/D51ikuLNAd
Библиотека программиста
Что такое Maven, и где он обитает?
Лаконичный гайд по первым шагам в использовании maven. Пишем свой первый проект.
Quarkus представляют новую версию и просят разработчиков протестировать ее
Недавно сообщество Quarkus выпустило первый выпуск Quarkus 1.0 Candidate Release, и вскоре планирует выпустить финальную версия 1.0. Последние несколько недель до объявления об этом сообщество очень усердно работало над повышением качества Quarkus: исправлением ошибок, улучшением документации, новыми расширениями и, прежде всего, повышением стандартов для разработчиков. "Теперь пришло время внести ваш вклад: протестировать Quarkus 1.0.0.CR1 и присоединиться к нам :)", — обращается к разработчикам команда Quarkus.
Quarkus — это стек с открытым исходным кодом для написания Java-приложений, предлагающий беспрецедентное время запуска, объем памяти и опыт разработчиков. Он предлагает знакомые модели программирования и API (Hibernate, JAX-RS, Eclipse Vert.x, Apache Camel, Eclipse MicroProfile, совместимость с Spring API и многое другое).
Недавно сообщество Quarkus выпустило первый выпуск Quarkus 1.0 Candidate Release, и вскоре планирует выпустить финальную версия 1.0. Последние несколько недель до объявления об этом сообщество очень усердно работало над повышением качества Quarkus: исправлением ошибок, улучшением документации, новыми расширениями и, прежде всего, повышением стандартов для разработчиков. "Теперь пришло время внести ваш вклад: протестировать Quarkus 1.0.0.CR1 и присоединиться к нам :)", — обращается к разработчикам команда Quarkus.
Quarkus — это стек с открытым исходным кодом для написания Java-приложений, предлагающий беспрецедентное время запуска, объем памяти и опыт разработчиков. Он предлагает знакомые модели программирования и API (Hibernate, JAX-RS, Eclipse Vert.x, Apache Camel, Eclipse MicroProfile, совместимость с Spring API и многое другое).
quarkus.io
Announcing Quarkus 1.0
Quarkus: Supersonic Subatomic Java
hazelcast —> Отличный пост (с образцом репозитория) о том, как ввести hazelcast как слой между базой данных и клиентами, а также улучшить производительность и гибкость в результате. Он берет пример с Spring JPA и дополняет его Spring Hazelcast для дополнительной скорости и устойчивости, не отбрасывая то, что уже есть.
"Для разработчика это маленькие шаги, а для архитектора — гигантские скачки".
"Для разработчика это маленькие шаги, а для архитектора — гигантские скачки".
GitHub
hazelcast-code-samples/hazelcast-integration/spring-data-jpa-hazelcast-migration at master · hazelcast/hazelcast-code-samples
Hazelcast Code Samples. Contribute to hazelcast/hazelcast-code-samples development by creating an account on GitHub.
Senior/Middle Java Backend Developer в TextBack
➕ 120 000 - 200 000 ₽ на руки
➕ Санкт-Петербург
https://prglb.ru/4z1dn
➕ 120 000 - 200 000 ₽ на руки
➕ Санкт-Петербург
https://prglb.ru/4z1dn
6-8 декабря в Москве состоится хакатон Rosbank Tech.Madness. К участию приглашаются разработчики и аналитики. Вас ждет:
- возможность заявить о себе в самом безумном соревновании уходящего года;
- незаезженные задачи;
- призовой фонд в 600 000 руб.
Регистрируйся на сайте https://prglb.ru/38nev
- возможность заявить о себе в самом безумном соревновании уходящего года;
- незаезженные задачи;
- призовой фонд в 600 000 руб.
Регистрируйся на сайте https://prglb.ru/38nev
Cписок лучших инструментов с их функциями и ссылками для скачивания
1) JUnit:
JUnit — это инструмент модульного тестирования с открытым исходным кодом для языка программирования Java. Это важный инструмент для разработки и развертывания на основе тестирования.
Ссылка для скачивания: http://junit.org/junit4/
2) NetBeans — это бесплатная IDE с открытым исходным кодом. Это позволяет разрабатывать приложения для рабочего стола, мобильные и веб-приложения.
Ссылка для скачивания: https://netbeans.org/downloads/index.html
3) Apache Maven — это программный инструмент управления проектами. Он основан на концепции объектной модели проекта (POM).
Ссылка для скачивания: http://maven.apache.org/download.cgi
4) JRat — это инструментарий анализа среды выполнения Java. Это простой в использовании профилировщик производительности с открытым исходным кодом для платформы Java. Он может контролировать выполнение приложения и измерения производительности.
Ссылка для скачивания: https://sourceforge.net/projects/jrat/files/JRat/
5) Mockito — это популярный фреймворк для Java с открытым исходным кодом. Он помогает разработчикам писать чистый, хорошо разработанный и слабо связанный код.
Ссылка для скачивания: http://site.mockito.org/
1) JUnit:
JUnit — это инструмент модульного тестирования с открытым исходным кодом для языка программирования Java. Это важный инструмент для разработки и развертывания на основе тестирования.
Ссылка для скачивания: http://junit.org/junit4/
2) NetBeans — это бесплатная IDE с открытым исходным кодом. Это позволяет разрабатывать приложения для рабочего стола, мобильные и веб-приложения.
Ссылка для скачивания: https://netbeans.org/downloads/index.html
3) Apache Maven — это программный инструмент управления проектами. Он основан на концепции объектной модели проекта (POM).
Ссылка для скачивания: http://maven.apache.org/download.cgi
4) JRat — это инструментарий анализа среды выполнения Java. Это простой в использовании профилировщик производительности с открытым исходным кодом для платформы Java. Он может контролировать выполнение приложения и измерения производительности.
Ссылка для скачивания: https://sourceforge.net/projects/jrat/files/JRat/
5) Mockito — это популярный фреймворк для Java с открытым исходным кодом. Он помогает разработчикам писать чистый, хорошо разработанный и слабо связанный код.
Ссылка для скачивания: http://site.mockito.org/
netbeans.apache.org
Apache NetBeans Releases
Apache NetBeans Releases Page
Идет набор на программу подготовки сильных Javа-программистов за 5 месяцев с оплатой после трудоустройства.Зарплата от 120 000 рублей на старте. За свою работу мы просим процент от зарплаты разработчика. У нас нет скрытых условий или кредитов.
Пройти тестовое задание нужно до 29 ноября:🙋♂️👉 https://clck.ru/KBUKt
👇Что ждет участника:
1. Подготовка с личным ментором online по индивидуальной программе
2. Жесткий контроль знаний на каждом этапе
2. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который даст опыт и строчку для резюме
5. Поддержка и общение со студентами-разработчиками в групповом чате slack (уже 1200 участников)
6. Возможность быстрого карьерного развития за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
Какие условия для участия?
— Обучению минимум 25 часов в неделю
— Готовность к переезду в Москву
Пройти тестовое задание нужно до 29 ноября:🙋♂️👉 https://clck.ru/KBUKt
👇Что ждет участника:
1. Подготовка с личным ментором online по индивидуальной программе
2. Жесткий контроль знаний на каждом этапе
2. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который даст опыт и строчку для резюме
5. Поддержка и общение со студентами-разработчиками в групповом чате slack (уже 1200 участников)
6. Возможность быстрого карьерного развития за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
Какие условия для участия?
— Обучению минимум 25 часов в неделю
— Готовность к переезду в Москву
Cheat_Sheet-_10_Java_Security_Best_Practices.pdf
139.4 KB
Шпаргалка: 10 рекомендаций по безопасности Java
Десять лучших рекомендаций по безопасности Java для разработчиков ПО с открытым исходным кодом. Это шпаргалка является совместной работой Брайана Вермеера и Джима Манико. Рекомендуем также прочесть статью-описание к ней.
Десять лучших рекомендаций по безопасности Java для разработчиков ПО с открытым исходным кодом. Это шпаргалка является совместной работой Брайана Вермеера и Джима Манико. Рекомендуем также прочесть статью-описание к ней.
Реализация A* поиска пути в Java
Алгоритмы поиска пути — это методы навигации по картам, позволяющие находить маршрут между двумя разными точками. Разные алгоритмы имеют разные плюсы и минусы, часто с точки зрения эффективности алгоритма и эффективности маршрута, который он генерирует.
В этой неплохой статье вы найдете, что такое алгоритм A*, как он работает и как реализовать его в собственных проектах.
Алгоритмы поиска пути — это методы навигации по картам, позволяющие находить маршрут между двумя разными точками. Разные алгоритмы имеют разные плюсы и минусы, часто с точки зрения эффективности алгоритма и эффективности маршрута, который он генерирует.
В этой неплохой статье вы найдете, что такое алгоритм A*, как он работает и как реализовать его в собственных проектах.
Baeldung
Implementing A* Pathfinding in Java
A quick and practical overview of A* Pathfinding Algorithm in Java.
int[] mass = {1, 2};
List<String> list = new ArrayList(10);
list.add("03");
list.add("04");
System.out.println(mass.length + list.size() + ".");
Код успешно скомпилируется и выведет на экран 4., так как длина массива mass составляет 2 и метод size() для листа тоже выдаст 2, ведь мы добавили 2 элемента.