В конце октября мы провели митап "Карты, деньги, JVM" 🔥
Вместе с гостями обсудили внутренности JVM и компилятора: разобрали, как JVM оптимизирует динамические вызовы, чем MethodHandle лучше рефлексии, и как компилятор обрабатывает код — от фронтенда до практического применения.
И вот, наконец-то, мы делимся с вами записью!
Посмотреть можно тут🔗
#видео #java
Вместе с гостями обсудили внутренности JVM и компилятора: разобрали, как JVM оптимизирует динамические вызовы, чем MethodHandle лучше рефлексии, и как компилятор обрабатывает код — от фронтенда до практического применения.
И вот, наконец-то, мы делимся с вами записью!
Посмотреть можно тут
#видео #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Рассказываем, что такое XSS уязвимость 🧐
P.s можно попробовать анализатор на своем проекте бесплатно: https://pvs-studio.ru/xss_tg
#видео #java
#видео #java
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье посмотрим на багов-путешественников, найденных с помощью статического анализатора PVS-Studio в LanguageTool — инструменте для проверки орфографии, стилистики и грамматики.
#статья #java
#статья #java
Java пополняется новыми модными механизмами, а вместе с ней и её усыпальница — место, куда отправляются устаревшие механизмы, такие как Vector, Finalization, NashornScriptEngine, SecurityManager и Unsafe. Взглянем на эти "реликвии" и посмотрим, что пришло им на замену.
Подробности по ссылке🔗
#статья #java
Подробности по ссылке
#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Анализ исходного кода — задача непростая. Особенно когда дело касается выявления потенциальных уязвимостей. В новой статье расскажем, как мы учитывали поток данных, проходящий через поля объектов.
Переходите по ссылке🔗
#статья #java
Переходите по ссылке
#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
По старой доброй традиции представляем вам ТОП-10 самых интересных ошибок в Java проектах за 2025 год 🔥
Minecraft моды, каталонский язык и неочевидные взаимодействия с тернарным оператором — с чем только не успел познакомиться наш анализатор. А значит, самое время вам об этом рассказать.
Переходите по ссылке 🔗
#статья #java
Minecraft моды, каталонский язык и неочевидные взаимодействия с тернарным оператором — с чем только не успел познакомиться наш анализатор. А значит, самое время вам об этом рассказать.
Переходите по ссылке 🔗
#статья #java
Статья для любителей геймдева и Minecraft 🔥
Читать тут🔗
#статья #java #gamedev
Уверен, что многие владельцы Minecraft-проектов сталкивались с игроками, которые хотели взломать сервер и выдать себе права администратора. Я понимаю, что подобное случается не только в играх, и из научного интереса изучаю, как и почему это происходит. В этой статье мы рассмотрим уязвимость в моде Integrated Scripting.
Читать тут
#статья #java #gamedev
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉21 января — День, когда выпустили Java 1.0.
💻 День, когда компьютеры стали говорить "Hello, world!" на новом языке. Всё благодаря компании Sun Microsystems, которая в 1996 году выпустила первую официальную версию Java.
PVS-Studio поддерживает анализ Java, и наша команда регулярно пишет статьи о багах, найденных в открытых проектах на этом языке. Подписывайтесь на дайджест статей, чтобы ничего не пропустить!
#праздник #java
PVS-Studio поддерживает анализ Java, и наша команда регулярно пишет статьи о багах, найденных в открытых проектах на этом языке. Подписывайтесь на дайджест статей, чтобы ничего не пропустить!
#праздник #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы начинаем цикл статей, в котором рассказываем, с чем придётся столкнуться разработчику при переходе между LTS-версиями Java. В этой статье рассмотрим основные изменения, которые ждут программиста, если он решит перейти с Java 8 на Java 11.
Читать тут🔗
#статья #java
Читать тут
#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
OWASP Top 10 – это одна из главных классификаций веб уязвимостей. В ней представлены 10 обобщенных категорий, каждая из которых агрегирует набор актуальных атак на веб-приложения. А PVS-Studio – это статический анализатор, и Java является одним из поддерживаемых им языков.
Можем ли мы находить потенциальные уязвимости из перечня OWASP Top 10? Да!
На протяжении большого количества времени мы делали так, чтобы PVS-Studio для языка Java умел находить потенциальные уязвимости в большем количестве категорий OWASP Top 10. На данный момент, диагностики анализатора попадают в 9 из 10 её категорий. Среди таковых, возможные SQL-инъекции, Path-Traversal, XSS-инъекции и многое другое.
Взглянуть одним глазком можно в статье "OWASP Top Ten 2021 через простые примеры на Java. И немного про SAST". Но, всегда лучше попробовать самому. Получить пробную лицензию PVS-Studio для своего Java проекта можно по этой ссылке
#java #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
Спешим поделиться интересной ошибкой, которую нашел наш анализатор. В примере ошибка из проекта OpenIDE:
Срабатывание анализатора PVS-Studio: V6050 Class initialization cycle is present. Initialization of 'DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED' appears before the initialization of 'LOG'. UsageType.java 46
Анализатор говорит, что мы имеем дело с циклической зависимостью при инициализации статических полей. Снова не самый очевидный момент, связанный с нюансами языка Java.
Для инициализации поля DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED используется конструктор. А в нём мы обращаемся к логгеру LOG.
Всё дело в том, что поля инициализируются в порядке их объявления. Как вы можете видеть, DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED располагается выше LOG, т.е. инициализируется раньше. Как следствие, LOG на момент исполнения конструктора будет равен null, и при обращении к нему мы столкнёмся с NPE.
Исправление, как и в большинстве случаев выше, будет донельзя простым. Нужно просто разместить объявление LOG выше, чем DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED.
Не совершай такую ошибку в своем проекте! А узнать о других багах из проекта можно по этой ссылке🔗
#java #programming #ошибка
public final class UsageType {
....
public static final UsageType
DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED = new UsageType(
UsageViewBundle.messagePointer(
"usage.type.delegate.to.another.instance.method.parameters.changed"
)
);
private static final Logger LOG = Logger.getInstance(UsageType.class);
public UsageType(@NotNull Supplier<....> nameComputable) {
myNameComputable = nameComputable;
if (ApplicationManager.getApplication().isUnitTestMode()) {
String usageTypeString = myNameComputable.get();
if (usageTypeString.indexOf('{') != -1) {
LOG.error(....);
}
}
}
....
}Срабатывание анализатора PVS-Studio: V6050 Class initialization cycle is present. Initialization of 'DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED' appears before the initialization of 'LOG'. UsageType.java 46
Анализатор говорит, что мы имеем дело с циклической зависимостью при инициализации статических полей. Снова не самый очевидный момент, связанный с нюансами языка Java.
Для инициализации поля DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED используется конструктор. А в нём мы обращаемся к логгеру LOG.
Всё дело в том, что поля инициализируются в порядке их объявления. Как вы можете видеть, DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED располагается выше LOG, т.е. инициализируется раньше. Как следствие, LOG на момент исполнения конструктора будет равен null, и при обращении к нему мы столкнёмся с NPE.
Исправление, как и в большинстве случаев выше, будет донельзя простым. Нужно просто разместить объявление LOG выше, чем DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED.
Не совершай такую ошибку в своем проекте! А узнать о других багах из проекта можно по этой ссылке
#java #programming #ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM