bytecode

  • СофтФото Сравнительный анализ некоторых Java-декомпиляторов

    Сравнительный анализ некоторых Java-декомпиляторов

    В этой статье будут рассмотрены четыре декомпилятора — Fernflower, CFR, Procyon и jadx — и произведено их сравнение по нескольким параметрам. Дисклеймер: сравнение неформальное и не претендует на научность. Скорее, это просто обзор всех актуальных (на осень 2019) декомпиляторов Java-байткода. Автор — Анна Явейн (brontozyablik), разработчица Solar appScreener Наш инструмент — Solar appScreener — предназначен для поиска уязвимостей в коде.…

    Читать далее »
  • ХабрахабрФото Hello World из байт-кода для JVM

    Hello World из байт-кода для JVM

    Скомпилируем простенькую программу выводящую "Hello World" и пройдемся по его структуре Не думаю, что статья будет достаточно информативной для тех, кто поверхностно не знает как выглядит байт-код и как с ним работает JVM (например, хотя бы простейшие инструкции (знание об их существовании)). Достаточно использовать инструмент javap из JDK и рассмотреть дизассемблированный код. На самом деле, это не так сложно. А…

    Читать далее »
  • ХабрахабрФото Трансформация кода в Android 2. Анализ AST

    Трансформация кода в Android 2. Анализ AST

    В этой статье расскажу о том, как решал проблемы, с которыми столкнулся в предыдущей части при реализации проекта. Во-первых, при анализе трансформируемого класса, нужно как-то понять, является ли этот класс наследником Activity или Fragment, чтобы с уверенностью сказать, что класс подходит для нашей трансформации. Во-вторых, в трансформируемом .class файле для всех полей с аннотацией @State нужно явно определить тип, чтобы…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Конкатенация строк, или Патчим байткод

    [Из песочницы] Конкатенация строк, или Патчим байткод

    Не так давно прочёл статью об оптимизации производительности Java-кода — в частности, конкатенации строк. В ней остался поднятым вопрос — почему при использовании StringBuilder в коде под катом программа работает медленнее, чем при простом сложении. При этом += при компиляции превращаются в вызовы StringBuilder.append(). У меня сразу появилось желание разобраться в проблеме. // ~20 000 000 операций в секунду public…

    Читать далее »
  • ХабрахабрФото Хардкорные Java/JVM задачки

    Хардкорные Java/JVM задачки

    Перформансные задачи от Контура уже были, настала и наша очередь: представляем хардкорные задачи с Java-конференции JBreak 2018, aka «ад от Excelsior». Задачи даны в оригинальных формулировках, в каждой задаче может быть несколько правильных ответов, и к каждой задаче дано решение под спойлером. Задача 1 Ваш коллега начитался Java Language Specification и написал следующее: void playWithRef() { Object obj = new…

    Читать далее »


Кнопка «Наверх»