Эволюция Java
Наиболее важные усовершенствования языка, которые были сделаны в Java за последние 20 лет
https://betterprogramming.pub/the-evolution-of-java-37e4dc8e6cc7
👉@BookJava
Наиболее важные усовершенствования языка, которые были сделаны в Java за последние 20 лет
https://betterprogramming.pub/the-evolution-of-java-37e4dc8e6cc7
👉@BookJava
👍3
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Скачать JDK 21 можно по этим ссылкам:
Oracle JDK (лицензия NFTC)
OpenJDK (лицензия GPLv2 with Classpath Exception)
https://habr.com/ru/articles/762084/
👉@BookJava
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Скачать JDK 21 можно по этим ссылкам:
Oracle JDK (лицензия NFTC)
OpenJDK (лицензия GPLv2 with Classpath Exception)
https://habr.com/ru/articles/762084/
👉@BookJava
👍9
Project Loom и Spring Boot: тесты производительности
Сегодня я хочу выяснить, готов ли Project Loom заменить Spring WebFlux при создании высоконагруженных приложений с высокой пропускной способностью.
Проблемы реактивного подхода
WebFlux - замечательная технология с фантастической производительностью, однако:
- При использовании реактивного подхода код сложнее писать и сопровождать
- Стектрейсы малополезны при разборе ошибок
- Все связанные клиенты/библиотеки также должны быть написаны в реактивном стиле
Что такое Project Loom
- В статусе превью-фичи с Java 19, разработка стартовала в 2017
- Основное нововведение - виртуальные потоки, призванные значительно снизить трудозатраты на написание и сопровождение приложений
- Предполагается возможность создавать миллионы виртуальных потоков. (Прим. пер. мне кажется, автору стоило явно выделить основную мысль. Поскольку виртуальные потоки дешевы, то запуск блокирующего кода в таком потоке тоже дешевая операция, т.к. реальный системный поток при этом не блокируется и может заняться чем-нибудь полезным )
- Предполагается минимальное вмешательство в существующий код
- Стек виртуальных потоков хранится в хипе JVM
Rus https://habr.com/ru/articles/745748/
Eng https://filia-aleks.medium.com/project-loom-with-spring-boot-performance-tests-c007e0e411c8
👉@BookJava
Сегодня я хочу выяснить, готов ли Project Loom заменить Spring WebFlux при создании высоконагруженных приложений с высокой пропускной способностью.
Проблемы реактивного подхода
WebFlux - замечательная технология с фантастической производительностью, однако:
- При использовании реактивного подхода код сложнее писать и сопровождать
- Стектрейсы малополезны при разборе ошибок
- Все связанные клиенты/библиотеки также должны быть написаны в реактивном стиле
Что такое Project Loom
- В статусе превью-фичи с Java 19, разработка стартовала в 2017
- Основное нововведение - виртуальные потоки, призванные значительно снизить трудозатраты на написание и сопровождение приложений
- Предполагается возможность создавать миллионы виртуальных потоков. (Прим. пер. мне кажется, автору стоило явно выделить основную мысль. Поскольку виртуальные потоки дешевы, то запуск блокирующего кода в таком потоке тоже дешевая операция, т.к. реальный системный поток при этом не блокируется и может заняться чем-нибудь полезным )
- Предполагается минимальное вмешательство в существующий код
- Стек виртуальных потоков хранится в хипе JVM
Rus https://habr.com/ru/articles/745748/
Eng https://filia-aleks.medium.com/project-loom-with-spring-boot-performance-tests-c007e0e411c8
👉@BookJava
👍4🔥3❤1👎1
The elusive and beautiful Java Method Reference
https://medium.com/javarevisited/the-elusive-and-beautiful-java-method-reference-97e566d2088b
👉@BookJava
https://medium.com/javarevisited/the-elusive-and-beautiful-java-method-reference-97e566d2088b
👉@BookJava
👍4
Media is too big
VIEW IN TELEGRAM
Java. Быстрая сортировка. Реализация алгоритма QuickSort.
Как работает быстрая сортировка, разбор и реализация алгоритма.
источник
👉@BookJava
Как работает быстрая сортировка, разбор и реализация алгоритма.
источник
👉@BookJava
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Автоматическое создание интерактивных диаграмм последовательностей поведения Java-кода во время исполнения
Диаграммы последовательностей являются невероятно мощным средством визуализации и понимания поведения во время выполнения программы. Присущая им структура - объекты перетекают по странице, время течет вниз по странице - интуитивно понятна и проста в освоении. Кроме того, они являются одним из лучших инструментов для разработчиков и технических специалистов, не являющихся разработчиками (например, инженерных менеджеров и менеджеров по продуктам), при обсуждении дизайна кода.
https://dev.to/appmap/automatically-generate-interactive-sequence-diagrams-of-your-java-codes-runtime-behavior-2jg0
👉@BookJava
Диаграммы последовательностей являются невероятно мощным средством визуализации и понимания поведения во время выполнения программы. Присущая им структура - объекты перетекают по странице, время течет вниз по странице - интуитивно понятна и проста в освоении. Кроме того, они являются одним из лучших инструментов для разработчиков и технических специалистов, не являющихся разработчиками (например, инженерных менеджеров и менеджеров по продуктам), при обсуждении дизайна кода.
https://dev.to/appmap/automatically-generate-interactive-sequence-diagrams-of-your-java-codes-runtime-behavior-2jg0
👉@BookJava
👍5
Настройка производительности Java
Основные методы повышения скорости работы и отзывчивости приложений
Как разработчик, я часто использую популярный язык программирования Java для создания приложений. Настройка производительности является одним из ключевых компонентов создания эффективных Java-приложений. Мне необходимо оптимизировать код для достижения максимальной производительности, чтобы гарантировать, что мое приложение будет соответствовать ожиданиям пользователей и бизнес-задачам. В этой статье я расскажу о ключевых методах оптимизации производительности Java, чтобы вы тоже могли повысить эффективность своих Java-приложений.
https://developnsolve.com/java-performance-tuning
👉@BookJava
Основные методы повышения скорости работы и отзывчивости приложений
Как разработчик, я часто использую популярный язык программирования Java для создания приложений. Настройка производительности является одним из ключевых компонентов создания эффективных Java-приложений. Мне необходимо оптимизировать код для достижения максимальной производительности, чтобы гарантировать, что мое приложение будет соответствовать ожиданиям пользователей и бизнес-задачам. В этой статье я расскажу о ключевых методах оптимизации производительности Java, чтобы вы тоже могли повысить эффективность своих Java-приложений.
https://developnsolve.com/java-performance-tuning
👉@BookJava
👍3
☕️ Освоение бэкэнд-разработки с помощью Java Spring Boot: лучшие практики и профессиональные советы
Spring Boot - это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Здесь приведены некоторые лучшие практики и несколько советов, которые можно использовать для улучшения приложения Spring Boot и повышения его эффективности.
https://itznihal.medium.com/mastering-backend-development-with-java-spring-boot-best-practices-and-pro-tips-3fc0f501418e
👉@BookJava
Spring Boot - это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Здесь приведены некоторые лучшие практики и несколько советов, которые можно использовать для улучшения приложения Spring Boot и повышения его эффективности.
https://itznihal.medium.com/mastering-backend-development-with-java-spring-boot-best-practices-and-pro-tips-3fc0f501418e
👉@BookJava
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Присоединяйтесь к нашему каналу "Java | Фишки и трюки"! 🚀
🔥 Хотите узнать все секреты программирования на Java? Мы расскажем вам о самых крутых фишках и трюках, которые сделают вас настоящим гуру Java!
📚 У нас вы найдете:
✨ Советы по оптимизации кода
✨ Лучшие практики разработки на Java
✨ Увлекательные задачи для тренировки навыков
✨ И многое другое!
Прокачайте свои навыки программирования и станьте экспертом в мире Java! Присоединяйтесь к нам прямо сейчас!
👉 Java | Фишки и трюки 👈
#Java #Программирование
🔥 Хотите узнать все секреты программирования на Java? Мы расскажем вам о самых крутых фишках и трюках, которые сделают вас настоящим гуру Java!
📚 У нас вы найдете:
✨ Советы по оптимизации кода
✨ Лучшие практики разработки на Java
✨ Увлекательные задачи для тренировки навыков
✨ И многое другое!
Прокачайте свои навыки программирования и станьте экспертом в мире Java! Присоединяйтесь к нам прямо сейчас!
👉 Java | Фишки и трюки 👈
#Java #Программирование
👍1
Media is too big
VIEW IN TELEGRAM
Запускаем WebSocket сервер на базе Jetty, без Spring
Иногда хочется не целый каравай, а просто хлеб с маслом.
Вот и мне понадобился простой java проект с socket-сервером, без необходимости тащить спринг.
00:00 Старт
00:05 Новый проект
01:04 Jetty dependency
01:54 App
02:14 Server
04:18 WebSocketContainer
04:58 @ WebSocket annotations
07:50 DO NOT COPY A CODE! ))
09:12 server.start()
09:56 @ OnWebSocketError ))
11:21 Done
12:04 Like & Subscribe
GitHub
Источник
👉@BookJava
Иногда хочется не целый каравай, а просто хлеб с маслом.
Вот и мне понадобился простой java проект с socket-сервером, без необходимости тащить спринг.
00:00 Старт
00:05 Новый проект
01:04 Jetty dependency
01:54 App
02:14 Server
04:18 WebSocketContainer
04:58 @ WebSocket annotations
07:50 DO NOT COPY A CODE! ))
09:12 server.start()
09:56 @ OnWebSocketError ))
11:21 Done
12:04 Like & Subscribe
GitHub
Источник
👉@BookJava
👍8
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
🤮1
☕️ Основные методы экономии памяти для программирования на Java
Java - популярный язык программирования, широко используемый для разработки сложных приложений. Однако одной из распространенных проблем Java-программ является большое потребление памяти, что может привести к снижению производительности и даже к сбоям. Поэтому для оптимизации Java-кода и снижения потребления памяти важно использовать методы экономии памяти.
В этой статье мы рассмотрим некоторые из лучших практик и советов по экономии памяти в Java.
https://medium.com/javarevisited/basic-memory-saving-techniques-for-java-programming-6677a7237a69
👉@BookJava
Java - популярный язык программирования, широко используемый для разработки сложных приложений. Однако одной из распространенных проблем Java-программ является большое потребление памяти, что может привести к снижению производительности и даже к сбоям. Поэтому для оптимизации Java-кода и снижения потребления памяти важно использовать методы экономии памяти.
В этой статье мы рассмотрим некоторые из лучших практик и советов по экономии памяти в Java.
https://medium.com/javarevisited/basic-memory-saving-techniques-for-java-programming-6677a7237a69
👉@BookJava
👍1
Пример пузырьковой сортировки
Алгоритм сортировки пузырьком известен, прежде всего, своей простотой, но в то же время обладает одной из самых низких скоростей выполнения.
Пузырьковая сортировка характеризуется очень низкой эффективностью и имеет временную сложность O(N²), так как в ней используются вложенные циклы. Внешний цикл выполняется N раз, а внутренний также N раз, что в итоге дает N*N, или N², итераций.
👉@BookJava
Алгоритм сортировки пузырьком известен, прежде всего, своей простотой, но в то же время обладает одной из самых низких скоростей выполнения.
Пузырьковая сортировка характеризуется очень низкой эффективностью и имеет временную сложность O(N²), так как в ней используются вложенные циклы. Внешний цикл выполняется N раз, а внутренний также N раз, что в итоге дает N*N, или N², итераций.
👉@BookJava
👍7
Как сканировать и проверять загружаемые изображения в Java
В этой статье рассматриваются опасности, связанные с загрузкой графических файлов, и представлены два решения для проверки на вирусы и валидации графических файлов соответственно.
https://dzone.com/articles/how-to-scan-and-validate-image-uploads-in-java
👉@BookJava
В этой статье рассматриваются опасности, связанные с загрузкой графических файлов, и представлены два решения для проверки на вирусы и валидации графических файлов соответственно.
https://dzone.com/articles/how-to-scan-and-validate-image-uploads-in-java
👉@BookJava
DZone
How To Scan and Validate Image Uploads in Java
This article discusses the dangers of image file uploads and presents two solutions for virus scanning and validating image files respectively.
👍3
Какая разница между абстрактным классом и интерфейсом?
Абстрактный класс:
• абстрактные классы имеют дефолтный конструктор; он вызывается каждый раз, когда создается потомок этого абстрактного класса;
• содержит как абстрактные методы, так и не абстрактные. По большому счету может и не содержать абстрактных методов, но все равно быть абстрактным классом;
• класс, который наследуется от абстрактного, должен реализовать только абстрактные методы;
• абстрактный класс может содержать Instance Variable
Интерфейс:
• не имеет никакого конструктора и не может быть инициализирован;
• только абстрактные методы должны быть добавлены (не считая default methods);
• классы, реализующие интерфейс, должны реализовать все методы (не считая default methods);
• интерфейсы могут содержать только константы.
👉@BookJava
Абстрактный класс:
• абстрактные классы имеют дефолтный конструктор; он вызывается каждый раз, когда создается потомок этого абстрактного класса;
• содержит как абстрактные методы, так и не абстрактные. По большому счету может и не содержать абстрактных методов, но все равно быть абстрактным классом;
• класс, который наследуется от абстрактного, должен реализовать только абстрактные методы;
• абстрактный класс может содержать Instance Variable
Интерфейс:
• не имеет никакого конструктора и не может быть инициализирован;
• только абстрактные методы должны быть добавлены (не считая default methods);
• классы, реализующие интерфейс, должны реализовать все методы (не считая default methods);
• интерфейсы могут содержать только константы.
👉@BookJava
👍5❤1
Инструментация байт-кода Java
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
https://habr.com/ru/articles/750028/
👉@BookJava
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
https://habr.com/ru/articles/750028/
👉@BookJava
👍2