TGViewer
Channel Public Channel
Java guru

Java guru

@java_guru

Новости из мира Java, обзоры интересных библиотек и фреймворков, обучающие статьи. Онлайн обсуждения актуальных тем и обмен опытом. Для связи @RodmanDV
ry-12537748218192955366
Subscribers
923
Photos
1
Videos
1
Links
270

Showing posts older than #50 · Back to latest

Older Posts 20 shown
Post #49 1.3K
Вопросы для собеседования на Java Developer

Многие часто сталкиваются либо с задачей подготовки к собеседованиям либо самостоятельно проводят собеседования. Хочу поделиться с вами неплохой подборкой вопросов для собеседования.

Можно и самому пробежаться по ним и освежить знания ))

https://github.com/enhorse/java-interview
GitHub GitHub - enhorse/java-interview: Вопросы и ответы к интервью Java разработчика Вопросы и ответы к интервью Java разработчика. Contribute to enhorse/java-interview development by creating an account on GitHub.
Post #48 1.34K
Сравнение объектов в Java

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

В этой статье еще не затронута тема сравнения Enum. Возможно автор исходит из соображений, что все знают как это работает.

В моей практике меня больше всего поразил код одного джуна. Он повторял как мантру, что все нужно сравнивать через equals и как следствие даже приводил int к Integer для того чтобы сравнивать через equals (((

Статья интересна еще и тем, что там дают обзор по функционалу в разных библиотеках.

https://habr.com/ru/company/otus/blog/670630/
  • 👍 1
Post #47 1.36K
Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов.

В современном языке Java паттерн Посетитель (Visitor) уже не нужен. Он отлично компенсируется использованием запечатанных типов и переключателей, использующих сопоставление с шаблоном – в таком случае те же цели достигаются проще и меньшим объемом кода.

https://habr.com/ru/company/piter/blog/668646/
Хабр Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов В современном языке Java паттерн Посетитель (Visitor) уже не нужен. Он отлично компенсируется использованием запечатанных типов и переключателей, использующих сопоставление с шаблоном – в таком...
Post #46 3.73K
JetBrains планирует полностью поменять интерфейс IntelliJ IDEA и других своих IDE. Как утверждается в блоге JetBrains, "тренды графического интерфейса эволюционировали, и многие из наших пользователей говорят нам, что текущий интерфейс кажется тяжеловесным и устаревшим". Поэтому в компании было принято решение разработать абсолютно новый look-and-feel, который будет чистым, современным и мощным.

Новый графический интерфейс будет внедряться постепенно. Сначала ограниченный круг пользователей сможет принять участие в программе раннего доступа, где сможет попробовать новый интерфейс и поделиться обратной связью с командой JetBrains. Позже в этом году новый интерфейс станет общедоступным, а в следующем году он станет интерфейсом по умолчанию, сначала для новых пользователей, а потом для всех остальных. После этого старый интерфейс будет всё ещё доступен как минимум в течение года.
The JetBrains Blog Take Part in the New UI Preview for Your JetBrains IDE - The JetBrains Blog Update: The beta version of the new UI is available to all users in the 2022.3 release. Go to Settings | Appearance & Behavior | New UI to enable it. Last year IntelliJ IDEA celebrated its 20th
Post #45 1.23K
Какой алгоритм хеширования паролей лучше?

Согласно фонду OWASP, для современного хеширования паролей следует рассматривать лишь несколько алгоритмов.

1. Лучший алгоритм для использования на данный момент (в 2022 году) — Argon2id.
2. Если вы по какой-либо причине не можете использовать Argon2id, scrypt — хороший второй вариант.
3. Если Argon2id и scrypt недоступны, другим хорошим выбором является BCrypt.

В статье приводится краткое описание этих алгоритмов и способов их использования.

https://foojay.io/today/how-to-do-password-hashing-in-java-applications-the-right-way/
foojay How to do password hashing in Java applications the right way The first rule of password hashing algorithms is: Don't write your own password hashing algorithm! Let's learn how we do password hashing.
Post #44 1.17K
Связь логов через correlation id в многопоточных\многопользовательских системах.

В многопоточных\многопользовательских системах часто возникает задача ввести атрибут по которому можно будет находить логически связанные между собой записи логов. Например: записи относящиеся к сессии конкретного пользователя.

В Log4j для этой задачи есть класс MDC https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html

На старте обработки можно сохранить уникальный идентификатор. В качестве уникального идентификатора можно взять значение либо прикладного поля либо сгенерировать суррогатное UUID.randomUUID().toString()

MDC.put(CORRELATION_ID_LOG_VAR_NAME, correlationId);

CORRELATION_ID_LOG_VAR_NAME можно определить как
private static final String CORRELATION_ID_LOG_VAR_NAME = "correlationId";

Если по мере исполнения потребуется его извлечь, то можно вызвать Object correlationId = MDC.get(CORRELATION_ID_LOG_VAR_NAME);

В конце нужно обязательно почистить за собой

MDC.remove(CORRELATION_ID_LOG_VAR_NAME);

Для вывода в лог нужно добавить в log4j.xml значение %X{correlationId}

<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c] %X{correlationId} - &lt;%m&gt;%n"/>
</layout>
</appender>
Post #43 1.05K
Шпаргалка по коллекциям в Java

Отличная шпаргалка по Java коллекциям. Там сравнивают коллекции Java по следующим параметрам:
1. На чем основана — какая структура данных или коллекция используется под капотом.
2. Дубли — разрешены или нет в коллекции повторяющиеся значения.
3. Null — позволяет ли коллекция вставлять null.
4. Синхронизированность — все ли методы коллекции синхронизированы.
5. Потокобезопасность — безопасно ли использовать коллекцию в многопоточной среде.
6. Тип итератора — поведение итератора в многопоточной среде.

https://habr.com/ru/company/otus/blog/660959/
Хабр Шпаргалка по коллекциям в Java Сравним коллекции Java по следующим параметрам: На чем основана — какая структура данных или коллекция используется под капотом. Дубли — разрешены или нет в коллекции повторяющиеся значения. Null —...
Post #42 833
Из Oracle в Java

Сейчас наблюдается тенденция перехода Oracle разработчиков в Java-висты. Недавно я натолкнулся на довольно интересную статью в которой автор делится своими ощущениями от перехода на Java.

Статья будет интересна и преподавателям Java и тем кто планирует только перейти на Java.

https://habr.com/ru/company/custis/blog/568032/
Хабр Из Oracle в Java. Личный опыт К написанию статьи меня побудил интерес разработчиков Oracle к изучению Java. Статья не носит обучающий характер и не является инструкцией для перехода с одной технологии на другую. Цель —...
Post #41 1K
Sampler. Visualization for any shell command.

Я недавно наткнулся на довольно интересный инструмент визуализации в терминале. Он написан на Go и прямого отношения к Java не имеет, но при помощи него можно очень красиво в терминале отображать результаты работы разных приложений.

Для Java приложений можно организовать например опрос через JMX и отображение результатов в консоле.

Да, я знаю про различные промышленные системы мониторинга "монструозного" размера, но я всегда с особой любовью относился к "миру в консоле". Sampler просто порадовал своим функционалом и визуальными эффектами. На проме такое наврятли будете использовать, но иметь в своем арсенале такой инструмент полезно. Можно будет найти и ему применение. Любителям консоли однозначно стоит попробовать ))

https://github.com/sqshq/sampler
GitHub GitHub - sqshq/sampler: Tool for shell commands execution, visualization and alerting. Configured with a simple YAML file. Tool for shell commands execution, visualization and alerting. Configured with a simple YAML file. - sqshq/sampler
Post #40 849
Кент Бек

Кент Бек, создатель методологии "Разработка через тестирование" (TDD), как-то написал:

"Мне платят за работающий код, а не за тесты, поэтому моя философия заключается в том, чтобы тестировать настолько мало, насколько это возможно, чтобы достичь заданного уровня уверенности".
(источник)

Люди в комментариях к этому высказыванию Бека были в шоке, они думали, что он всегда пропагандировал 100% покрытие кода:

Невероятно, что Кент Бек мог такое сказать! Легионы разработчиков добросовестно добиваются 100% покрытия, потому что они думают, что именно так поступил бы Кент Бек! Я говорил многим, что вы сказали в своей книге по XP, что не всегда религиозно придерживаетесь Test First. Но я тоже удивлен!
https://habr.com/ru/company/karuna/blog/663906/
Stack Overflow How deep are your unit tests? The thing I've found about TDD is that its takes time to get your tests set up and being naturally lazy I always want to write as little code as possible. The first thing I seem do is test my const...
  • 👍 1
Post #39 1.63K
Вышел Hibernate 6.0 Final.

Новая версия фреймворка не является полностью совместимой с предыдущей версией 5.x. Для тех, кто использует Hibernate исключительно через Jakarta Persistence API, переход должен быть полностью совместимым. Для остальных был написан подробный гид по миграции.

1. Базовая версия Java для него теперь 11.
2. Java Persistence больше не поддерживается. Hibernate 6.0 можно использовать только с пространством имён
jakarta.persistence
.
3. Теперь используется Read-by-position вместо Read-by-name при чтении из JDBC
ResultSet
. Это приводит к улучшению производительности, а также к более компактным и читаемым сгенерированным SQL-запросам.
In Relation To Hibernate 6.0 Final - In Relation To It has been years in the making, but ORM 6.0 Final has finally been released! This announcement will discuss the major changes, as well as give insight into why certain choices were made. We will also be following up with a series of more focused posts…
Post #38 2.16K
Выпущен Quarkus 2.7.1. Почему именно Quarkus?

Quarkus, платформа Java для микросервисов, первоначально выпущенная RedHat в марте 2019 года, достигла версии 2.7.1

Довольно интересный анализ проведен в статье

https://shly.link/LvM7C
www.i-programmer.info Quarkus 2.7.1 Released - Why Quarkus? Programming book reviews, programming tutorials,programming news, C#, Ruby, Python,C, C++, PHP, Visual Basic, Computer book reviews, computer history, programming history, joomla, theory, spreadsheets and more.
Post #37 3.21K
Migrating From JDK 8 to Later JDK Releases

На данный момент еще много проектов используют JDK 8 и многим только предстоит миграция на новую версию. В Java стараются по возможности сохранять обратную совместимость, но скорость изменений все нарастает и не для всех изменений это можно обеспечить.

Если вы уже столкнулись с задачей миграции или вам это только предстоит, то я рекомендую ознакомиться с документом подготовленным специалистами Oracle:

https://docs.oracle.com/en/java/javase/17/migrate/migrating-jdk-8-later-jdk-releases.html#GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6
Oracle Help Center Oracle JDK Migration Guide There were significant changes made between the JDK 8 and later JDK releases.
  • 👍 1
Post #36 2.86K
NullAway: Fast Annotation-Based Null Checking for Java

Многим разработчикам в Kotlin нравятся такие фичи как null-safety и sealed-классы.

В 15 версии Java появились sealed классы и в 14 версии NPE стали более информативными, но по факту мы как и раньше ловим NPE в рантайме.

Достаточно интересное решение предлагает Uber. Это плагин NullAway для статического анализа кода для Error Prone.

Надо пробовать плагин и надеяться, что в следующих версиях Java предложат решение борьбы с NPE не хуже чем в Kotlin.
GitHub GitHub - uber/NullAway: A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead - uber/NullAway
Post #35 2.06K
Illustrated TLS Connection

Думаю каждый Java разработчик сталкивался с вопросами криптографии. Как минимум времена "голого" HTTP давно прошли. Сегодня хочу с вами поделиться замечательным ресурсом на котором в очень наглядной форме описывается суть TLS 1.3.

Для перехвата пакетов и анализа трафика можно использовать Wireshark и\или tcpdump.

В Spring Boot можно добавить в конфигурацию

server.port=443
server.ssl.enabled=true
server.ssl.protocol=TLS
server.ssl.enabled-protocols=TLSv1.3

и добавить детали keystore (хранилища)

server.ssl.key-store-type=PKCS12
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=password

В реальных приложениях лучше добавлять криптографию на уровне gateway\balancer, а не Spring Boot приложения. Например ставить nginx перед приложениями.

https://tls13.ulfheim.net
tls13.xargs.org The Illustrated TLS 1.3 Connection Every byte of a TLS connection explained and reproduced
Post #34
Java guru pinned «Java Troubleshooting Guide Как оказалось не все Java разработчики знают о существовании такого замечательного руководства как Java Troubleshooting Guide от Oracle. Я считаю, что каждый Java разработчик должен его прочитать. Особенно разделы "Troubleshoot…»
Post #33
Java guru pinned «The Java Version Almanac Недавно наткнулся на замечательный ресурс созданный легендарными Java чемпионами Марком Хоффманом и Кей С. Хорстманном (Marc R. Hoffmann and Cay S. Horstmann). Этот ресурс примечателен тем, что там собраны все ключевые полезные ссылки…»
Post #32 1.59K
К сожалению пришлось срочно отключить комментарии. Нахлынули боты и начали спамить в комментариях. После автоматизации очистки включу обратно.
Post #31 1.8K
Java Troubleshooting Guide

Как оказалось не все Java разработчики знают о существовании такого замечательного руководства как Java Troubleshooting Guide от Oracle.

Я считаю, что каждый Java разработчик должен его прочитать. Особенно разделы "Troubleshoot Memory Leaks" и "Troubleshoot Performance Issues Using JFR".

По Java 17
https://docs.oracle.com/en/java/javase/17/troubleshoot/

По Java 11
https://docs.oracle.com/en/java/javase/11/troubleshoot/

По Java 8
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html
Oracle Help Center Troubleshooting Guide Troubleshooting tips and techniques for issues that might occur with Java Client applications created on the Java Platform, Standard Edition (Java SE) and Java HotSpot VM.
Post #30
Java guru pinned «The Java Version Almanac Недавно наткнулся на замечательный ресурс созданный легендарными Java чемпионами Марком Хоффманом и Кей С. Хорстманном (Marc R. Hoffmann and Cay S. Horstmann). Этот ресурс примечателен тем, что там собраны все ключевые полезные ссылки…»
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →