Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Преимущество 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.
Вы хотели в детстве близнеца, на которого можно было отправить ходить в школу, мыть посуду, выносить мусор?

Сегодня Ваши мечты стали реальностью!

Мы предлагаем Вам цифрового двойника, на которого можно повесить абсолютно любую рутинную задачу, связанную с ИТ, а так же предлагаем возможность абсолютно БЕСПЛАТНО сконструировать и начать поддерживать своего собственного бота в 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.
Подборка статей для 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 8
Хотя мы находимся на Java 13, есть много производственных установок, работающих с Java 8. В этом детальном рассмотрении совместимости с Java 8 показано как создавать байт-код Java 8 и исключить вызовы JDK, которые недоступны в Java 8.
Добавление уровней безопасности в приложение в OpenShift
Сегодня защита приложений является «обязательной», но сложно представить ее без изменения кода, если не думать об этом в самом начале. К счастью, новые собственные облачные шаблоны, создаваемые контейнерами и платформами, такими как Kubernetes, предлагают простые способы решения проблем безопасности, не затрагивая код.

В серии блогов Лоран Бруду показывает каждый этап, чтобы обезопасить существующее fruits-catalog приложение:
Часть 1 - Развертывание и вход TLS
Часть 2. Аутентификация и авторизация с помощью Keycloak
Часть 3 - Секретное управление с Vault
Часть 4 - Динамические секреты с Vault
Часть 5 - Взаимный TLS с Istio
Структуры данных и алгоритмы в Java. Классика Computers Science. 2-е изд.
Автор: Лафоре Р.

#programming #java #book

Целевая аудитория: для начинающих разработчиков.

Структуры данных и алгоритмы на Java, второе издание, разработаны так, чтобы их было легко читать и понимать, хотя сама тема сложна. На четких и простых программных примерах автор объясняет эту сложную тему, предлагая читателям написать собственные программы и на практике освоить полученные знания.

В книге рассматриваются следующие темы:
✔️программы для различных структур данных и алгоритмов на Java;
✔️как анализировать алгоритмы;
✔️как писать и отслеживать рекурсивные алгоритмы и другое.

Преимущества:
отлично подходит для тех, кто даже не знает Java, поскольку в первой главе объясняется, что вам нужно знать, чтобы следовать коду;
язык ясен и точен, и представление систематизировано и хорошо организовано.

Недостатки:
примеры часто плохи (загадочные имена переменных, дублирующий код и д.р.);
часто запутанная.
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 и многое другое).
hazelcast —> Отличный пост (с образцом репозитория) о том, как ввести hazelcast как слой между базой данных и клиентами, а также улучшить производительность и гибкость в результате. Он берет пример с Spring JPA и дополняет его Spring Hazelcast для дополнительной скорости и устойчивости, не отбрасывая то, что уже есть.
"Для разработчика это маленькие шаги, а для архитектора — гигантские скачки".
Senior/Middle Java Backend Developer в TextBack

120 000 - 200 000 ₽ на руки
Санкт-Петербург

https://prglb.ru/4z1dn
6-8 декабря в Москве состоится хакатон Rosbank Tech.Madness. К участию приглашаются разработчики и аналитики. Вас ждет:

- возможность заявить о себе в самом безумном соревновании уходящего года;

- незаезженные задачи;

- призовой фонд в 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/
Идет набор на программу подготовки сильных 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 часов в неделю
— Готовность к переезду в Москву
Cheat_Sheet-_10_Java_Security_Best_Practices.pdf
139.4 KB
Шпаргалка: 10 рекомендаций по безопасности Java
Десять лучших рекомендаций по безопасности Java для разработчиков ПО с открытым исходным кодом. Это шпаргалка является совместной работой Брайана Вермеера и Джима Манико. Рекомендуем также прочесть статью-описание к ней.
Реализация A* поиска пути в Java
Алгоритмы поиска пути — это методы навигации по картам, позволяющие находить маршрут между двумя разными точками. Разные алгоритмы имеют разные плюсы и минусы, часто с точки зрения эффективности алгоритма и эффективности маршрута, который он генерирует.

В этой неплохой статье вы найдете, что такое алгоритм A*, как он работает и как реализовать его в собственных проектах.
int[] mass = {1, 2}; 
List<String> list = new ArrayList(10);
list.add("03");
list.add("04");
System.out.println(mass.length + list.size() + ".");
Что выведет программа?
Anonymous Poll
2%
1.
7%
2.
5%
3.
87%
4.
Код успешно скомпилируется и выведет на экран 4., так как длина массива mass составляет 2 и метод size() для листа тоже выдаст 2, ведь мы добавили 2 элемента.