Mastering Java Streams: Полное руководство для разработчиков
Java Streams, представленные в Java 8, — одно из самых мощных дополнений к языку. Они позволяют выполнять операции в функциональном стиле с коллекциями и последовательностями, изменяя подход к обработке данных в Java. Streams упрощают такие задачи, как фильтрация, отображение и сбор данных, а также поддерживают параллельные операции для повышения производительности. В этой статье мы рассмотрим основы Streams, обсудим виды поддерживаемых операций и приведем примеры, которые помогут вам максимально эффективно использовать эту важную функцию.
https://dev.to/be11amer/mastering-java-streams-a-complete-guide-for-developers-495d
👉
Java Streams, представленные в Java 8, — одно из самых мощных дополнений к языку. Они позволяют выполнять операции в функциональном стиле с коллекциями и последовательностями, изменяя подход к обработке данных в Java. Streams упрощают такие задачи, как фильтрация, отображение и сбор данных, а также поддерживают параллельные операции для повышения производительности. В этой статье мы рассмотрим основы Streams, обсудим виды поддерживаемых операций и приведем примеры, которые помогут вам максимально эффективно использовать эту важную функцию.
https://dev.to/be11amer/mastering-java-streams-a-complete-guide-for-developers-495d
👉
Определение и отличие IP адресов LAN, PPP в Java
Чтобы определить IP-адрес локальной машины с использованием Java, примените следующий код:
Работа с несколькими сетевыми интерфейсами
Если ваш компьютер оснащён несколькими сетевыми интерфейсами, иногда бывает необходимо обойти весь список интерфейсов и отфильтровать адреса, не являющиеся обратными петлями и являющиеся локальными для сайта. Это особенно актуально при работе в средах с многочисленными сетями.
Чтобы определить IP-адрес локальной машины с использованием Java, примените следующий код:
import java.net.*;
public class GetIP {
public static void main(String[] args) throws UnknownHostException {
System.out.println(InetAddress.getLocalHost().getHostAddress());
}
}
Работа с несколькими сетевыми интерфейсами
Если ваш компьютер оснащён несколькими сетевыми интерфейсами, иногда бывает необходимо обойти весь список интерфейсов и отфильтровать адреса, не являющиеся обратными петлями и являющиеся локальными для сайта. Это особенно актуально при работе в средах с многочисленными сетями.
import java.net.*;...
import java.util.*;
public class GetMultiIPs {
public static void main(String[] args) throws SocketException {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface iface = interfaces.nextElement();
if (
Определение и отличие IP адресов LAN, PPP в Java. Использование DatagramSocket для нестандартных ситуаций
В некоторых случаях, например, при работе с Linux-системами, InetAddress.getLocalHost() может давать неожиданный результат. В таких ситуациях может быть полезно использовать другой способ — через DatagramSocket, отправляя запрос в сеть:
Сервер не получает эти данные, однако этот метод поможет определить предпочтительный локальный IP-адрес.
👉
В некоторых случаях, например, при работе с Linux-системами, InetAddress.getLocalHost() может давать неожиданный результат. В таких ситуациях может быть полезно использовать другой способ — через DatagramSocket, отправляя запрос в сеть:
import java.net.*;
public class GetPreferredIP {
public static void main(String[] args) throws SocketException {
try (final DatagramSocket socket = new DatagramSocket()) {
socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
System.out.println(socket.getLocalAddress().getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
Сервер не получает эти данные, однако этот метод поможет определить предпочтительный локальный IP-адрес.
👉
Java Language Futures - Fall 2024 Edition
0:00 - Intro
3:54 - Records
9:14 - Sealed classes
11:22 - Pattern matching
20:00 - Data Oriented Programming
29:00 - Implicitly declared classes & instance main methods
33:20 - with Expressions
38:20 - Flexible constructor bodies
48:10 - What's next
50:53 - Conclusion
https://www.youtube.com/watch?v=NNPN5tvjzqA
👉
0:00 - Intro
3:54 - Records
9:14 - Sealed classes
11:22 - Pattern matching
20:00 - Data Oriented Programming
29:00 - Implicitly declared classes & instance main methods
33:20 - with Expressions
38:20 - Flexible constructor bodies
48:10 - What's next
50:53 - Conclusion
https://www.youtube.com/watch?v=NNPN5tvjzqA
👉
YouTube
Java Language Futures - Fall 2024 Edition
_The Java Programming Language is evolving fast. In this talk we’ll summarise many of the recent changes that have appeared as well as looking ahead to directions and features that are in development and will appear in future editions._
Presented by *Gavin…
Presented by *Gavin…
Jextract — The Native Library Binding Extraction Tool
Проект Panama разработан для поддержки доступа к нативным библиотекам на Java. Foreign Function and Memory API (FFM API) упрощает взаимодействие между JVM и чужими API-интерфейсами. FFM API добавлена в JDK 22 для поддержки доступа к внешней памяти и вызова внешних функций. Инструмент Jextract анализирует заголовочные файлы нативных библиотек и генерирует Java-код для использования внешних функций и API памяти. О том, как использовать этот инструмент, подробно в гайде.
https://dev.java/learn/jvm/tools/complementary/jextract/
👉
Проект Panama разработан для поддержки доступа к нативным библиотекам на Java. Foreign Function and Memory API (FFM API) упрощает взаимодействие между JVM и чужими API-интерфейсами. FFM API добавлена в JDK 22 для поддержки доступа к внешней памяти и вызова внешних функций. Инструмент Jextract анализирует заголовочные файлы нативных библиотек и генерирует Java-код для использования внешних функций и API памяти. О том, как использовать этот инструмент, подробно в гайде.
https://dev.java/learn/jvm/tools/complementary/jextract/
👉
Dev.java: The Destination for Java Developers
Jextract - The Native Library Binding Extraction Tool - Dev.java
Run jextract and use the generated Java bindings to integrate native libraries in your application.
Advancing AI by Accelerating Java on Parallel Architectures
Статья рассказывает про эволюцию платформы Java в контексте растущих требований к машинному обучению и параллельной обработке. Java, известная своей надежностью и масштабируемостью, адаптируется для создания высокопроизводительных, ориентированных на данные приложений. Это подробное исследование предназначено для опытных разработчиков Java, архитекторов программного обеспечения и энтузиастов, которые заинтересованы в использовании возможностей Java для внедрения инноваций в быстро растущих областях искусственного интеллекта и высокопроизводительных вычислений.
https://inside.java/2024/10/23/java-and-ai/
👉
Статья рассказывает про эволюцию платформы Java в контексте растущих требований к машинному обучению и параллельной обработке. Java, известная своей надежностью и масштабируемостью, адаптируется для создания высокопроизводительных, ориентированных на данные приложений. Это подробное исследование предназначено для опытных разработчиков Java, архитекторов программного обеспечения и энтузиастов, которые заинтересованы в использовании возможностей Java для внедрения инноваций в быстро растущих областях искусственного интеллекта и высокопроизводительных вычислений.
https://inside.java/2024/10/23/java-and-ai/
👉
Five Ways to Speed up Your Maven Builds
Как ускорить ваши Maven-сборки? «Поставить Gradle», — скажет кто-то. Ребята из Gradle считают иначе и даже подготовили статью на эту тему. По их мнению, в случае проблем со скоростью ваших сборок стоит присмотреться к профилям: возможно, некоторые плагины сильно замедляют сборку. С помощью профилей можно отключить часть плагинов для локальной или CI-сборки в зависимости от того, что вам нужно ускорить.
https://gradle.com/blog/five-ways-to-speed-up-your-apache-maven-builds/
👉
Как ускорить ваши Maven-сборки? «Поставить Gradle», — скажет кто-то. Ребята из Gradle считают иначе и даже подготовили статью на эту тему. По их мнению, в случае проблем со скоростью ваших сборок стоит присмотреться к профилям: возможно, некоторые плагины сильно замедляют сборку. С помощью профилей можно отключить часть плагинов для локальной или CI-сборки в зависимости от того, что вам нужно ускорить.
https://gradle.com/blog/five-ways-to-speed-up-your-apache-maven-builds/
👉
Илья Спицын, X5 Tech — jOOQ. Лекарство от Hibernate?
Поговорили об SQL-driven работе с БД. Спикер кратко сравнил инструменты и рассказал о преимуществах jOOQ для построения сложных запросов. Показал несколько примеров, где jOOQ может пригодиться разработчику.
Доклад будет полезен разработчикам, которые задумываются о поиске альтернативных инструментов для работы с БД.
https://youtu.be/SCSLoi4iiXA?si=D3Ez3kFFKFLB4zmK
👉
Поговорили об SQL-driven работе с БД. Спикер кратко сравнил инструменты и рассказал о преимуществах jOOQ для построения сложных запросов. Показал несколько примеров, где jOOQ может пригодиться разработчику.
Доклад будет полезен разработчикам, которые задумываются о поиске альтернативных инструментов для работы с БД.
https://youtu.be/SCSLoi4iiXA?si=D3Ez3kFFKFLB4zmK
👉
YouTube
Илья Спицын, X5 Tech — jOOQ. Лекарство от Hibernate?
Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
Скачать презентацию с сайта Joker — https://jrg.su/I1Ewqb
Поговорили об SQL-driven работе с БД. Спикер кратко сравнил инструменты и рассказал…
Подробности и билеты: https://jrg.su/T2zfbS
— —
Скачать презентацию с сайта Joker — https://jrg.su/I1Ewqb
Поговорили об SQL-driven работе с БД. Спикер кратко сравнил инструменты и рассказал…
RESOURCE_LOCAL JPA Transaction Type
Небольшая статья от Vlad Mihalcea, посвященная типу транзакции RESOURCE_LOCAL в JPA. Тип транзакции RESOURCE_LOCAL используется как стандартный в Spring Data JPA. Советуем ознакомится со статьей, если еще не слышали про такой тип транзакции.
https://vladmihalcea.com/resource_local-jpa-transaction-type/
👉
Небольшая статья от Vlad Mihalcea, посвященная типу транзакции RESOURCE_LOCAL в JPA. Тип транзакции RESOURCE_LOCAL используется как стандартный в Spring Data JPA. Советуем ознакомится со статьей, если еще не слышали про такой тип транзакции.
https://vladmihalcea.com/resource_local-jpa-transaction-type/
👉
CompletableFuture Example: Crawler
Статья посвященная использованию Completable Future и содержит интересный пример его использования. Описана реализация веб-сканера (web crawler), который, начиная с Reddit/r/Java, будет по ссылкам искать новости, посвященные хакингу.
https://concurrencydeepdives.com/java-completablefuture-example/
👉
Статья посвященная использованию Completable Future и содержит интересный пример его использования. Описана реализация веб-сканера (web crawler), который, начиная с Reddit/r/Java, будет по ссылкам искать новости, посвященные хакингу.
https://concurrencydeepdives.com/java-completablefuture-example/
👉
Null Object Pattern to Avoid Null Pointer Exception with JEP-45
Небольшая заметка об использовании Null Object Pattern в контексте добавления поддержки примитивных типов в Pattern Matching в JEP-455.
https://foojay.io/today/exploring-new-features-in-jdk-23-null-object-pattern-to-avoid-null-pointer-exception-with-jep-455/
👉
Небольшая заметка об использовании Null Object Pattern в контексте добавления поддержки примитивных типов в Pattern Matching в JEP-455.
https://foojay.io/today/exploring-new-features-in-jdk-23-null-object-pattern-to-avoid-null-pointer-exception-with-jep-455/
👉
How to Use LazyConnectionDataSourceProxy with Spring Data JPA
Небольшая заметка о LazyConnectionDataSourceProxy — инструменте, который позволяет получать коннект к БД в Lazy-режиме, то есть в момент непосредственного выполнения запроса, что улучшает утилизацию коннектов и позволяет увеличить пропускную способность приложения.
https://vladmihalcea.com/lazyconnectiondatasourceproxy-spring-data-jpa/
👉
Как готовить свой код к виртуальным потокам
Олег Естехин
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так уж и много. То ли все очень просто, и все (кроме нас) уже давно переключились, и там нечего рассказывать. То ли все очень сложно, и все просто стесняются рассказать о своих фейлах. А нам бы очень не помешали подсказки — что и зачем менять в коде, чтобы он мог работать на виртуальных потоках.
Разобираемся, почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать. Подсматриваем, что делали в JDK и известных фреймворках и библиотеках, чтобы их можно было использовать с виртуальными потоками. Примеряем эти решения на свой код.
Решаем, надо ли вообще что-то менять.
https://www.youtube.com/watch?v=dVh88WVS6NU
👉
Олег Естехин
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так уж и много. То ли все очень просто, и все (кроме нас) уже давно переключились, и там нечего рассказывать. То ли все очень сложно, и все просто стесняются рассказать о своих фейлах. А нам бы очень не помешали подсказки — что и зачем менять в коде, чтобы он мог работать на виртуальных потоках.
Разобираемся, почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать. Подсматриваем, что делали в JDK и известных фреймворках и библиотеках, чтобы их можно было использовать с виртуальными потоками. Примеряем эти решения на свой код.
Решаем, надо ли вообще что-то менять.
https://www.youtube.com/watch?v=dVh88WVS6NU
👉
YouTube
Олег Естехин — Как готовить свой код к виртуальным потокам
Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так…
Подробности и билеты: https://jrg.su/T2zfbS
— —
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так…
Addressing Fragmentation in ZGC through Custom Allocators
Исследование направлено на уменьшение фрагментации в ZGC с помощью пользовательских распределителей. Цель исследования — уменьшить необходимость перемещения объектов в ZGC за счет использования распределителя на основе свободного списка.
https://inside.java/2024/06/19/thesis-zgc-fragmentation/
👉
Исследование направлено на уменьшение фрагментации в ZGC с помощью пользовательских распределителей. Цель исследования — уменьшить необходимость перемещения объектов в ZGC за счет использования распределителя на основе свободного списка.
https://inside.java/2024/06/19/thesis-zgc-fragmentation/
👉
Hack a Java application with the debugger
В статье автор рассматривает использование дебаггера для взаимодействия и изменения поведения JVM-приложений в режиме реального времени. Автор демонстрирует примеры изменения значений переменных и вызова методов приложения через отладчик, что позволяет вносить изменения в приложение без его перезапуска.
https://foojay.io/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/
👉
В статье автор рассматривает использование дебаггера для взаимодействия и изменения поведения JVM-приложений в режиме реального времени. Автор демонстрирует примеры изменения значений переменных и вызова методов приложения через отладчик, что позволяет вносить изменения в приложение без его перезапуска.
https://foojay.io/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/
👉
Hibernate JAVA_TIME_USE_DIRECT_JDBC setting
Небольшая статья Vlad Mihalcea о настройке в Hibernate, которая позволяет маппить типы времени из java.time напрямую, без прослойки в виде объекта Timestamp. А еще рассматривается то, какими драйверами для популярных БД это поддерживается.
https://vladmihalcea.com/hibernate-type-java_time_use_direct_jdbc/
👉
Небольшая статья Vlad Mihalcea о настройке в Hibernate, которая позволяет маппить типы времени из java.time напрямую, без прослойки в виде объекта Timestamp. А еще рассматривается то, какими драйверами для популярных БД это поддерживается.
https://vladmihalcea.com/hibernate-type-java_time_use_direct_jdbc/
👉
Vlad Mihalcea
Hibernate JAVA_TIME_USE_DIRECT_JDBC setting
Learn how the Hibernate JAVA_TIME_USE_DIRECT_JDBC setting works and what JDBC Driver supports this feature.
Как бы изменились наши будни, если бы создание программного кода стало легким и непринужденным? Представьте язык, созданный для удобства именно человека, а не машины, его синтаксис прост и понятен.
Такая мечта жила в умах разработчиков Microsoft, и в результате для нас разработали C#.
Итак, основные причины продолжить изучение C# уже на профессиональном уровне:
✔️C# занимает ведущую позицию среди языков программирования для создания компьютерных игр.
- Только C# официально совместим с движком Unity, одной из самых востребованных и надежных платформ для разработки игр.
⁃ Какой доход вы можете ожидать, изучив C# для разработки игр? При усердной работе можно рассчитывать на заработок от 200 000 рублей в месяц!
✔️C# - основной язык для разработки приложений под Windows:
- Изначально C# создан Microsoft для использования в своих продуктах.
- Они также разработали среду разработки Visual Studio, где поддержка C# реализована на высшем уровне. В Visual Studio есть инструменты Windows Forms, позволяющие созд...
Такая мечта жила в умах разработчиков Microsoft, и в результате для нас разработали C#.
Итак, основные причины продолжить изучение C# уже на профессиональном уровне:
✔️C# занимает ведущую позицию среди языков программирования для создания компьютерных игр.
- Только C# официально совместим с движком Unity, одной из самых востребованных и надежных платформ для разработки игр.
⁃ Какой доход вы можете ожидать, изучив C# для разработки игр? При усердной работе можно рассчитывать на заработок от 200 000 рублей в месяц!
✔️C# - основной язык для разработки приложений под Windows:
- Изначально C# создан Microsoft для использования в своих продуктах.
- Они также разработали среду разработки Visual Studio, где поддержка C# реализована на высшем уровне. В Visual Studio есть инструменты Windows Forms, позволяющие созд...
Совет по Spring Boot 💡
Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence (https://persistence.blazebit.com). Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.
👉
Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence (https://persistence.blazebit.com). Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.
👉