а с теоретической точки зрения? Например есть тема, что в байткоде можно сделать так, что control flow граф был не reducible. правда ли, что на самой джаве так нельзя?
Тогда нет, не правда. Всегда можно написать на джаве интерпретатор байт-кода, а сам байт-код загрузить строкой прямо в исходник. Будет корректный код на джаве
Тогда нет, не правда. Всегда можно написать на джаве интерпретатор байт-кода, а сам байт-код загрузить строкой прямо в исходник. Будет корректный код на джаве
я легко могу себе представить, как императивный код, для которого можно написать алгоритм без goto, грубо говоря, оптимизируется в какую-нибудь лютую стейт-машину, которую без goto уже не выразить. И сделать обратное преобразование наверняка сложнее
на практике таких инструментов нет, насколько я понимаю. но вопрос о том, можно ли это в теории сделать.
Подождите, это два отдельных вопроса. 1. Восстановить Java-исходник из скомпилированного из этого исходника class-файла. Делается на раз. 2. "Восстановить" Java-код из произвольного (валидного) JVM-байткода (например, полученного от scalac). В общем случае - невозможно.