🤔🤔 Эффективность Spring-приложений в рантайме. Текущее состояние дел и планы на будущее
В свете недавнего выхода Spring Framework 6.1 и Spring Boot 3.2, автор хотел бы поделиться обзором тех усилий, которые предпринимает команда Spring, чтобы позволить разработчикам оптимизировать эффективность их приложений во время выполнения.
В статье:
➕ Spring MVC вместе с Virtual Threads на JDK 21
➕ Развёртывание Spring-приложений в облаке с использованием GraalVM Native Image
➕ Восстановление контрольной точки
➕ Масштабирование приложений до нуля с помощью Spring и Project CRaC
➕ Будущее OpenJDK со Spring AOT и Project Leyden
Читать статью
#почитать
В свете недавнего выхода Spring Framework 6.1 и Spring Boot 3.2, автор хотел бы поделиться обзором тех усилий, которые предпринимает команда Spring, чтобы позволить разработчикам оптимизировать эффективность их приложений во время выполнения.
В статье:
➕ Spring MVC вместе с Virtual Threads на JDK 21
➕ Развёртывание Spring-приложений в облаке с использованием GraalVM Native Image
➕ Восстановление контрольной точки
➕ Масштабирование приложений до нуля с помощью Spring и Project CRaC
➕ Будущее OpenJDK со Spring AOT и Project Leyden
Читать статью
#почитать
Что такое Lambda-выражения?
Это способ написать анонимные функции (или функциональные объекты) в Java. Они были введены в Java 8 и позволяют передавать поведение как аргументы в методы. Они значительно упрощают работу с такими функциональными интерфейсами, как Runnable, Callable, Comparator и многими другими.
Преимущества:
👉 Краткость: Лямбда-выражения позволяют писать меньше кода.
👉 Читаемость: Код становится более читабельным и понятным.
👉 Поддержка функциональных интерфейсов: Лямбда-выражения работают с функциональными интерфейсами, делая работу с ними проще и интуитивно понятной.
👉 Повышенная производительность: В некоторых случаях лямбда-выражения могут улучшить производительность за счёт оптимизаций, выполненных компилятором.
Это способ написать анонимные функции (или функциональные объекты) в Java. Они были введены в Java 8 и позволяют передавать поведение как аргументы в методы. Они значительно упрощают работу с такими функциональными интерфейсами, как Runnable, Callable, Comparator и многими другими.
Преимущества:
👉 Краткость: Лямбда-выражения позволяют писать меньше кода.
👉 Читаемость: Код становится более читабельным и понятным.
👉 Поддержка функциональных интерфейсов: Лямбда-выражения работают с функциональными интерфейсами, делая работу с ними проще и интуитивно понятной.
👉 Повышенная производительность: В некоторых случаях лямбда-выражения могут улучшить производительность за счёт оптимизаций, выполненных компилятором.
🚧🚧 Тестирование асинхронного контракта Spring Boot приложения (Kafka Consumer+Producer)
Как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью Kafka. Сначала автор разбирает проблему, а затем поэтапно развивает тесты, чтобы привести их к состоянию defenition-of-done.
Читать статью
#гайд
Как написать интеграционный\сервисный\авто тест для Spring Boot приложения, которое взаимодействует с внешним миром исключительно с помощью Kafka. Сначала автор разбирает проблему, а затем поэтапно развивает тесты, чтобы привести их к состоянию defenition-of-done.
Читать статью
#гайд
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).
Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).
Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.
Привет, друзья! 👋
Мы готовим статью о типичных ошибках начинающих разработчиков. И нам очень нужна ваша помощь! 🙏
Поделитесь своим опытом и мнением в комментариях:
❓С какими сложностями вы сталкивались в начале своего пути в разработке?
❓Какие ошибки допускали и как их исправляли?
❓Что помогло вам быстрее расти профессионально?
Самые интересные и полезные советы мы обязательно включим в статью, а их авторов упомянем в публикации! 😊
Мы готовим статью о типичных ошибках начинающих разработчиков. И нам очень нужна ваша помощь! 🙏
Поделитесь своим опытом и мнением в комментариях:
❓С какими сложностями вы сталкивались в начале своего пути в разработке?
❓Какие ошибки допускали и как их исправляли?
❓Что помогло вам быстрее расти профессионально?
Самые интересные и полезные советы мы обязательно включим в статью, а их авторов упомянем в публикации! 😊
#дайджест перед выходными
⤵️ Modules Make javac Easy: Dependencies and Tests — автор рассказал про то, как добавлять зависимости в проект и запускать тесты, не покидая терминал
⤵️ Конференция KotlinConf’24 — записи с конфы в Копенгагене
⤵️ Guide to Graal VM — рассказывают про GraalVM и преимущества, которые он предоставляет, затем небольшой бенчмарк со сравнением с популярными VM для Java
⤵️ flatmappers 019 — оригинальные подходы в сборке Scala проектов и Yтка-DB
⤵️ Middle-starter-pack по spring data — особенности использования Transactional в SpringBoot приложении (разбор типовых ошибок среднестатистического разработчика)
⤵️ Modules Make javac Easy: Dependencies and Tests — автор рассказал про то, как добавлять зависимости в проект и запускать тесты, не покидая терминал
⤵️ Конференция KotlinConf’24 — записи с конфы в Копенгагене
⤵️ Guide to Graal VM — рассказывают про GraalVM и преимущества, которые он предоставляет, затем небольшой бенчмарк со сравнением с популярными VM для Java
⤵️ flatmappers 019 — оригинальные подходы в сборке Scala проектов и Yтка-DB
⤵️ Middle-starter-pack по spring data — особенности использования Transactional в SpringBoot приложении (разбор типовых ошибок среднестатистического разработчика)
Forwarded from Библиотека питониста | Python, Django, Flask
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
В статье рассказываем, как создать собственный чат-бот на Python с помощью языковой модели falcon-7b-instruct, которая следует инструкциям. Доступ к модели мы получаем благодаря Hugging Face.
🔗 Читать статью
🔗 Зеркало
В статье рассказываем, как создать собственный чат-бот на Python с помощью языковой модели falcon-7b-instruct, которая следует инструкциям. Доступ к модели мы получаем благодаря Hugging Face.
🔗 Читать статью
🔗 Зеркало
💁💁 Spring Boot Starter: практически, принципиально и подробно
В этом цикле статей автор поделится выжимкой из материалов, накопленных в процессе создания микросервисов. Это будет полезно тем, кто только начинает разбираться, что же такое Spring Boot Starter и с чем его едят.
Первая часть посвящена созданию принципиального решения, которое позволит запустить стартер как подключаемую к другому Spring Boot-приложению библиотеку.
Во второй части будет разбор зависимостей, стандартных и кастомных аннотаций
#туториал
В этом цикле статей автор поделится выжимкой из материалов, накопленных в процессе создания микросервисов. Это будет полезно тем, кто только начинает разбираться, что же такое Spring Boot Starter и с чем его едят.
Первая часть посвящена созданию принципиального решения, которое позволит запустить стартер как подключаемую к другому Spring Boot-приложению библиотеку.
Во второй части будет разбор зависимостей, стандартных и кастомных аннотаций
#туториал
Forwarded from Азбука айтишника
Переменная в Java — это контейнер, в котором может храниться некоторое значение данных для дальнейшего использования в программе. Переменные в Java бывают двух видов: предназначенные для для маленьких данных (примитивные переменные) и для более сложных, тяжёлых (ссылочные переменные). Мы рассмотрим первый случай, когда переменные хранят именно само значение данных.
Кстати, прошлый пост про Java:
☕️🎓 Java — современный инструмент разработчика
#Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
microG Services — открытая реализация Play Services на Java и Kotlin
Это FLOSS (Free/Libre Open Source Software) фреймворк, позволяющий запускать приложения, разработанные для Google Play Services, на системах, где Play Services недоступны.
🔘 Wiki
#софт
Это FLOSS (Free/Libre Open Source Software) фреймворк, позволяющий запускать приложения, разработанные для Google Play Services, на системах, где Play Services недоступны.
🔘 Wiki
#софт
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
📧 Отклик на вакансию по email: как сделать так, чтобы ваше письмо выделялось
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
😎😎 Запуск встроенного LDAP на базе OpenDJ в Spring Boot приложении
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
Очередной #дайджест для джавистов
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉 авторов в наше медиа proglib.io
👉 контент-менеджеров для ведения телеграм-каналов
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов
Please open Telegram to view this post
VIEW IN TELEGRAM