Widzę, że niektóre dekompilatory java mogą dekompilować kod bajtowy do czytelnych źródeł java. Zastanawiam się, czy cały kod bajtowy pochodzący z języka Java (a nie z innego języka JVM) może zostać ponownie zarchiwizowany do źródeł java?Czy cały kod bajtowy skompilowany ze źródeł java może zostać zdekompilowany do źródeł java?
Aktualizacja
Niestety, pozwól mi pytanie bardziej jasne.
Po prostu mów o normalnym kodzie Java na JVM (bez Androida, bez ulepszania kodu bajtowego, bez AOP, bez zaciemniania) i mam nadzieję, że kod bajtowy może zostać zdekompilowany. Ale nie wiem, czy istnieją formy kodu java, które zostały skompilowane do kodu bajtowego, nigdy nie będą w stanie zostać zdekompilowane do czytelnych źródeł java.
Większość kodu java jest napisana w języku ojczystym ... więc możesz "c" deklarację metody, ale nie jej ciało ... Również android na przykład zaciemni źródła ... utrudniając tobie czytać, nawet jeśli ją zdekompilujesz. – chuthan20
Teoretycznie każda niezakodowana klasa może być dobrze zdekompilowana. W praktyce wszystkie istniejące dekompilatory zawiodą w przypadku szczególnie dziwnych i skomplikowanych klas. Wiele z nich również nie radzi sobie z typowym rzucaniem wąskich prymatów. – Antimony