Циклы Java в сторону - даешь потоки!
Поток данных — одна из важнейших возможностей Java 8. Чтобы узнать все ее преимущества, необходимо понять ее суть.
Поток — это последовательность данных, позволяющая по-особенному обрабатывать их все целиком или выборочно. Потоки можно создавать или преобразовывать в них уже имеющиеся структуры. Ими можно заменить циклы, поскольку по аналогии с ними они способствуют обработке последовательности данных.
Читать статью
Поток данных — одна из важнейших возможностей Java 8. Чтобы узнать все ее преимущества, необходимо понять ее суть.
Поток — это последовательность данных, позволяющая по-особенному обрабатывать их все целиком или выборочно. Потоки можно создавать или преобразовывать в них уже имеющиеся структуры. Ими можно заменить циклы, поскольку по аналогии с ними они способствуют обработке последовательности данных.
Читать статью
👍10
Как в Java устроено выделение регистров в памяти
Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором.
Читать статью
Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором.
Читать статью
👍4
Java News Roundup: Java Plans for 2022, Spring Framework 6.0-M2, Introducing Eclipse Jifa
This week's Java roundup for January 10th, 2021, features news from JDK 18, JDK 19, Java's plans for 2022 as presented by Nicolai Parlog, point releases for Spring Framework and Spring Data, Quarkus 2.6.2, Micronaut 3.2.5 and 3.2.6, Piranha 22.1.0, JobRunr 4.0.6, introducing Eclipse Jifa, Micrometer Metrics 2.0.0-M1, Micrometer Tracing 1.0.0-M1 and the July - December 2021 Foojay Status Report.
Читать статью
This week's Java roundup for January 10th, 2021, features news from JDK 18, JDK 19, Java's plans for 2022 as presented by Nicolai Parlog, point releases for Spring Framework and Spring Data, Quarkus 2.6.2, Micronaut 3.2.5 and 3.2.6, Piranha 22.1.0, JobRunr 4.0.6, introducing Eclipse Jifa, Micrometer Metrics 2.0.0-M1, Micrometer Tracing 1.0.0-M1 and the July - December 2021 Foojay Status Report.
Читать статью
InfoQ
Java News Roundup: Java Plans for 2022, Spring Framework 6.0-M2, Introducing Eclipse Jifa
This week's Java roundup for January 10th, 2022, features news from JDK 18, JDK 19, Java’s plans for 2022 as presented by Nicolai Parlog, point releases for Spring Framework and Spring Data, Quarkus 2.6.2, Micronaut 3.2.5 and 3.2.6, Piranha 22.1.0, JobRunr…
👍4
Потратить миллион, чтобы нанять двух джунов: профит и около него
Привет, меня зовут Валерий Антонов, я руковожу направлением Java в Уральском банке реконструкции и развития (УБРиР).
Осенью у нас окончилось обучение в двух школах Java. По итогам работы мы приняли в штат двух учеников школы Java, а несколько сотрудников банка сменили свои должности, став разработчиками на языке Java. В этой статье я расскажу, как мы запускали школу, кого учили, какая была программа и с какими сложностями мы столкнулись. Надеюсь, статья будет полезна тем, кто собирается запускать свое обучение, а также тем, кто стоит на распутье в изучении Java и не знает, с какой стороны подступиться.
Читать статью
Привет, меня зовут Валерий Антонов, я руковожу направлением Java в Уральском банке реконструкции и развития (УБРиР).
Осенью у нас окончилось обучение в двух школах Java. По итогам работы мы приняли в штат двух учеников школы Java, а несколько сотрудников банка сменили свои должности, став разработчиками на языке Java. В этой статье я расскажу, как мы запускали школу, кого учили, какая была программа и с какими сложностями мы столкнулись. Надеюсь, статья будет полезна тем, кто собирается запускать свое обучение, а также тем, кто стоит на распутье в изучении Java и не знает, с какой стороны подступиться.
Читать статью
👍5
Вы используете ненадежный код
В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков.
Я сразу установил связь между Log4Shell и Security Manager. Сначала я не хотел об этом писать. Но ко мне поступили просьбы, и я не мог обойти это стороной.
Насколько я помню команда Oracle отказалась от Security Manager в Java 17. Один из аргументов, на котором основывалось это решение, заключается в том, что он изначально был разработан для защиты апплетов.
Читать статью
В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков.
Я сразу установил связь между Log4Shell и Security Manager. Сначала я не хотел об этом писать. Но ко мне поступили просьбы, и я не мог обойти это стороной.
Насколько я помню команда Oracle отказалась от Security Manager в Java 17. Один из аргументов, на котором основывалось это решение, заключается в том, что он изначально был разработан для защиты апплетов.
Читать статью
👍5
Java-библиотеки, которые повысят вашу производительность
Написание шаблонного кода или кода, который на самом деле не нужен, отнимает много времени. У языка Java есть большое сообщество, создавшее множество библиотек, которые помогут вам повысить производительность, избавив от необходимости писать шаблонный код или предоставляя утилиты для решения распространенных проблем. В этой статье мы рассмотрим некоторые из таких библиотек.
Читать статью
Написание шаблонного кода или кода, который на самом деле не нужен, отнимает много времени. У языка Java есть большое сообщество, создавшее множество библиотек, которые помогут вам повысить производительность, избавив от необходимости писать шаблонный код или предоставляя утилиты для решения распространенных проблем. В этой статье мы рассмотрим некоторые из таких библиотек.
Читать статью
👍7🔥4
Telegram-бот на вебхуках — Java+Spring, Redis, клавиатуры и деплой на Heroku — снова для самых маленьких
Это вторая статья в моей серии «для самых маленьких» — предыдущая была посвящена «классическому» Telegram-боту, наследуемому от TelegramLongPollingBot.
Для кого написано:
Если вы ни разу не писали Telegram-ботов на Java с использованием вебхуков и только начинаете разбираться — эта статья для вас. В ней подробно и с пояснениями описано создание реального бота, автоматизирующего одну конкретную функцию. Можно использовать статью как мануал для создания скелета своего бота, а потом подключить его к своей бизнес-логике.
Я пытаюсь писать как для себя, а не сразу для умных — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Читать статью
Это вторая статья в моей серии «для самых маленьких» — предыдущая была посвящена «классическому» Telegram-боту, наследуемому от TelegramLongPollingBot.
Для кого написано:
Если вы ни разу не писали Telegram-ботов на Java с использованием вебхуков и только начинаете разбираться — эта статья для вас. В ней подробно и с пояснениями описано создание реального бота, автоматизирующего одну конкретную функцию. Можно использовать статью как мануал для создания скелета своего бота, а потом подключить его к своей бизнес-логике.
Я пытаюсь писать как для себя, а не сразу для умных — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Читать статью
👍5🔥1🤩1
Java News Roundup: JDK 18 in RD2, Spring Boot Updates, GraalVM 22, WildFly 2022 Release Plan
This week's Java roundup for January 17th, 2021, features news from JDK 17, JDK 18, JDK 19, multiple Spring releases, Payara Platform, Open Liberty 22.0.0.1 and 22.0.0.2-beta, Quarkus 2.6.3.Final, WildFly 26.0.1 and 2022 release plan, Micronaut 3.2.7 and 3.3.0-M1, Hibernate ORM 5.6.4.Final and Hibernate Search 6.1.0-CR1, Liberica JDK 17.0.2, GraalVM 22 and JReleaser 0.10.0 and 1.0.0-M1.
Читать статью
This week's Java roundup for January 17th, 2021, features news from JDK 17, JDK 18, JDK 19, multiple Spring releases, Payara Platform, Open Liberty 22.0.0.1 and 22.0.0.2-beta, Quarkus 2.6.3.Final, WildFly 26.0.1 and 2022 release plan, Micronaut 3.2.7 and 3.3.0-M1, Hibernate ORM 5.6.4.Final and Hibernate Search 6.1.0-CR1, Liberica JDK 17.0.2, GraalVM 22 and JReleaser 0.10.0 and 1.0.0-M1.
Читать статью
InfoQ
Java News Roundup: JDK 18 in RD2, Spring Boot Updates, GraalVM 22, WildFly 2022 Release Plan
This week's Java roundup for January 17th, 2022, features news from JDK 17, JDK 18, JDK 19, multiple Spring releases, Payara Platform, Open Liberty 22.0.0.1 and 22.0.0.2-beta, Quarkus 2.6.3.Final, WildFly 26.0.1 and 2022 release plan, Micronaut 3.2.7 and…
👍6
Превратите свой Java-код в полностью асинхронный
Java долгие годы считается безопасным языком высокого уровня, который предоставляет различные API для поддержки блокировки, параллелизма и даже асинхронного программирования. В JDK 1.5 впервые в качестве опробования асинхронных функций был представлен интерфейс Future. Но это, скорее, псевдосинхронность — этот интерфейс не избавлял разработчиков от ожиданий, тогда как некоторые другие языки, например JavaScript и Node.js, уже поддерживали полную асинхронность с применением обратных вызовов.
Читать статью
Java долгие годы считается безопасным языком высокого уровня, который предоставляет различные API для поддержки блокировки, параллелизма и даже асинхронного программирования. В JDK 1.5 впервые в качестве опробования асинхронных функций был представлен интерфейс Future. Но это, скорее, псевдосинхронность — этот интерфейс не избавлял разработчиков от ожиданий, тогда как некоторые другие языки, например JavaScript и Node.js, уже поддерживали полную асинхронность с применением обратных вызовов.
Читать статью
👍6
Уж+ёж: реактивные компоненты в сервлетном окружении (1/3)
Когда рассказывают о прелестях реактивного фреймворка Spring WebFlux и его подкапотном Project Reactor, для примера чаще всего показывают новые, создаваемые с нуля приложения. Однако на практике приходится строить из готовых блоков, в том числе из собственных прикладных и инфраструктурных модулей, которые уже написаны в императивном стиле и опираются на сервлетный стек. Как правило, такие модули нельзя/некогда/неохота (нужное подчеркнуть) переписывать, поэтому надо как-то адаптировать их к создаваемому реактивному приложению с минимумом правок (а лучше без них вовсе). О некоторых подходах к такой задаче и пойдёт речь в этой серии заметок.
Читать статью
Когда рассказывают о прелестях реактивного фреймворка Spring WebFlux и его подкапотном Project Reactor, для примера чаще всего показывают новые, создаваемые с нуля приложения. Однако на практике приходится строить из готовых блоков, в том числе из собственных прикладных и инфраструктурных модулей, которые уже написаны в императивном стиле и опираются на сервлетный стек. Как правило, такие модули нельзя/некогда/неохота (нужное подчеркнуть) переписывать, поэтому надо как-то адаптировать их к создаваемому реактивному приложению с минимумом правок (а лучше без них вовсе). О некоторых подходах к такой задаче и пойдёт речь в этой серии заметок.
Читать статью
👍4
Уж+ёж: реактивные компоненты в сервлетном окружении (2/3)
В предыдущей заметке было показано несколько подходов к управлению зависимостями в «гибридных» приложениях (использующих части сервлетного и реактивного стеков), а также вариант реализации универсального механизма для поддержки MDC-меток в логах. А в этой заметке речь пойдёт о том, как обеспечить доступность текущего обрабатываемого HTTP-запроса из любой точки бизнес-логики.
Читать статью
В предыдущей заметке было показано несколько подходов к управлению зависимостями в «гибридных» приложениях (использующих части сервлетного и реактивного стеков), а также вариант реализации универсального механизма для поддержки MDC-меток в логах. А в этой заметке речь пойдёт о том, как обеспечить доступность текущего обрабатываемого HTTP-запроса из любой точки бизнес-логики.
Читать статью
👍5
Java News Roundup: Loom and Panama Updates, Groovy 4.0, GraalVM 22.0 CE, Jakarta EE RPC
This week's Java roundup for January 24th, 2021, features news from OpenJDK, JDK 18, JDK 19, Projects Loom and Panama, Jakarta EE, Groovy 4.0, Spring Framework updates, Micronaut 3.3.0, GraalVM 22.0 CE, Liberica NIK, MicroProfile Reactive Streams Operators 3.0-RC1, Hibernate updates, JHipster 7.6, IntelliJ IDEA 2021.3.2, JReleaser early-access, Apache Camel and Camel K, and Foojay.io at FOSDEM.
Читать статью
This week's Java roundup for January 24th, 2021, features news from OpenJDK, JDK 18, JDK 19, Projects Loom and Panama, Jakarta EE, Groovy 4.0, Spring Framework updates, Micronaut 3.3.0, GraalVM 22.0 CE, Liberica NIK, MicroProfile Reactive Streams Operators 3.0-RC1, Hibernate updates, JHipster 7.6, IntelliJ IDEA 2021.3.2, JReleaser early-access, Apache Camel and Camel K, and Foojay.io at FOSDEM.
Читать статью
InfoQ
Java News Roundup: Loom and Panama Updates, Groovy 4.0, GraalVM 22.0 CE, Jakarta EE RPC
This week's Java roundup for January 24th, 2022, features news from OpenJDK, JDK 18, JDK 19, Projects Loom and Panama, Jakarta EE, Groovy 4.0, Spring Framework updates, Micronaut 3.3.0, GraalVM 22.0 CE, Liberica NIK, MicroProfile Reactive Streams Operators…
👍5
Введение в Maven Toolchain
Java развивается гораздо быстрее, чем раньше. Но не все проекты, над которыми мы работаем, поспевают за этим темпом.
У меня есть проекты на Java 8, 11 и 17, и иногда я хочу поиграть с имеющимися сборками более новых версий.
Как обеспечить их создание без необходимости постоянно переключать среды выполнения Java?
Toolchain спешит на помощь!
Читать статью
Java развивается гораздо быстрее, чем раньше. Но не все проекты, над которыми мы работаем, поспевают за этим темпом.
У меня есть проекты на Java 8, 11 и 17, и иногда я хочу поиграть с имеющимися сборками более новых версий.
Как обеспечить их создание без необходимости постоянно переключать среды выполнения Java?
Toolchain спешит на помощь!
Читать статью
👍8
Java 18. Что нового добавили и почему вам это пригодится
Выход Java 18 назначен на 22 марта 2022 года, ждать осталось недолго. Релиз уже несколько дней находится во второй фазе стабилизации, а значит, список фич уже финализирован, а значит настало время обратить на них наше внимание.
Сейчас у нас есть возможность попробовать новый функционал и понять, насколько он полезен. А пробовать есть что, несмотря на то, что это не LTS релиз!
В этой статье мы рассмотрим новые JEP и объясним, что они делают, и для чего они нужны.
Читать статью
Выход Java 18 назначен на 22 марта 2022 года, ждать осталось недолго. Релиз уже несколько дней находится во второй фазе стабилизации, а значит, список фич уже финализирован, а значит настало время обратить на них наше внимание.
Сейчас у нас есть возможность попробовать новый функционал и понять, насколько он полезен. А пробовать есть что, несмотря на то, что это не LTS релиз!
В этой статье мы рассмотрим новые JEP и объясним, что они делают, и для чего они нужны.
Читать статью
👍6😢1
Уж+ёж: реактивные компоненты в сервлетном окружении (3/3)
В предыдущей заметке было подробно рассмотрено одно из решений для обеспечения повсеместной доступности текущего обрабатываемого HTTP-запроса. В отличие от неё, нынешняя заметка посвящена не одному большому пункту, а двум компактным: поддержке AOP-аспектов и работе OpenFeign-клиентов в «гибридных» приложениях.
Читать статью
В предыдущей заметке было подробно рассмотрено одно из решений для обеспечения повсеместной доступности текущего обрабатываемого HTTP-запроса. В отличие от неё, нынешняя заметка посвящена не одному большому пункту, а двум компактным: поддержке AOP-аспектов и работе OpenFeign-клиентов в «гибридных» приложениях.
Читать статью
👍4
Java: есть ли жизнь на десктопе?
Привет! Я Виктор Барсуков, Java-разработчик в Lamoda. В этой статье хочу рассказать о своем опыте разработки десктопного Java-приложения в рамках пет-проджекта. Что из этого получилось и что можно было бы сделать иначе.
Читать статью
Привет! Я Виктор Барсуков, Java-разработчик в Lamoda. В этой статье хочу рассказать о своем опыте разработки десктопного Java-приложения в рамках пет-проджекта. Что из этого получилось и что можно было бы сделать иначе.
Читать статью
👍8
Публикуем проект с помощью Gradle и Sonatype в Maven Central без рук
Это такое приятное чувство, когда ты закончил какую-то задачу. А особенно когда твой проект уже готов к релизу. Остался лишь последний шаг.
Публикация проекта в Maven Central, имеено об этом я расскажу в этой статье. Как настроить Gradle, чтобы потом без труда настроить CI.
Читать статью
Это такое приятное чувство, когда ты закончил какую-то задачу. А особенно когда твой проект уже готов к релизу. Остался лишь последний шаг.
Публикация проекта в Maven Central, имеено об этом я расскажу в этой статье. Как настроить Gradle, чтобы потом без труда настроить CI.
Читать статью
👍6
Java News Roundup: Payara Platform 2022 Roadmap, OpenJDK Drafts, Kotlin 1.6.20-M1, Gradle 7.4
This week's Java roundup for February 7th, 2022, features news from OpenJDK, JDK 18, JDK 19, JSR 381 approved by the JCP, Payara Platform 2022 roadmap, Quarkus 2.7.1, Helidon 2.4.2, Micronaut 3.3.1, Hibernate Search 6.1.1, Hibernate Reactive 1.1.3.Final, JReleaser Early-Access, Failsafe 3.2.1, Kotlin 1.6.20-M1, Gradle 7.4, Apache Tika 2.3.0 and end-of-life for Apache Tika 1.x release train.
Читать статью
This week's Java roundup for February 7th, 2022, features news from OpenJDK, JDK 18, JDK 19, JSR 381 approved by the JCP, Payara Platform 2022 roadmap, Quarkus 2.7.1, Helidon 2.4.2, Micronaut 3.3.1, Hibernate Search 6.1.1, Hibernate Reactive 1.1.3.Final, JReleaser Early-Access, Failsafe 3.2.1, Kotlin 1.6.20-M1, Gradle 7.4, Apache Tika 2.3.0 and end-of-life for Apache Tika 1.x release train.
Читать статью
InfoQ
Java News Roundup: Payara Platform 2022 Roadmap, OpenJDK Drafts, Kotlin 1.6.20-M1, Gradle 7.4
This week's Java roundup for February 7th, 2022, features news from OpenJDK, JDK 18, JDK 19, JSR 381 approved by the JCP, Payara Platform 2022 roadmap, Quarkus 2.7.1, Helidon 2.4.2, Micronaut 3.3.1, Hibernate Search 6.1.1, Hibernate Reactive 1.1.3.Final,…
👍6
Лучшие практики по работе с микросервисами в Spring Boot
Работая с микросервисами Spring Boot на протяжении многих лет, автор статьи составил список рекомендаций по стилю кодирования и лучших практик. Он пишет: "Этот список вовсе не является исчерпывающим, но я надеюсь, что вы найдете в нем что-то интересное для себя вне зависимости от того, являетесь ли вы новичком или опытным разработчиком микросервисов Spring Boot."
Читать статью
Работая с микросервисами Spring Boot на протяжении многих лет, автор статьи составил список рекомендаций по стилю кодирования и лучших практик. Он пишет: "Этот список вовсе не является исчерпывающим, но я надеюсь, что вы найдете в нем что-то интересное для себя вне зависимости от того, являетесь ли вы новичком или опытным разработчиком микросервисов Spring Boot."
Читать статью
👍6
Как я отказался от миллионных RSU или опыт собеседования в Ozon
Данный текст появился как результат моего желания дать Ozon развернутый честный фидбэк о процессе собеседования и примерное описание чего же ждать на разных этапах интервью своим коллегам-соискателям. Приступим!
Читать статью
Данный текст появился как результат моего желания дать Ozon развернутый честный фидбэк о процессе собеседования и примерное описание чего же ждать на разных этапах интервью своим коллегам-соискателям. Приступим!
Читать статью
👍4
Eclipse Collections 11.0.0 Features New APIs and Functionality
The release of Eclipse Collections 11.0.0, a collections library compatible with the Java collection types, provides new methods for new functionalities or improved performance. The ClassComparer class was introduced to compare the methods of two classes and display the similarities and differences.
Читать статью
The release of Eclipse Collections 11.0.0, a collections library compatible with the Java collection types, provides new methods for new functionalities or improved performance. The ClassComparer class was introduced to compare the methods of two classes and display the similarities and differences.
Читать статью
InfoQ
Eclipse Collections 11.0.0 Features New APIs and Functionality
The release of Eclipse Collections 11.0.0, a collections library compatible with the Java collection types, provides new methods for new functionalities or improved performance. The ClassComparer class was introduced to compare the methods of two classes…
👍6