diplomová práce

Zpětný překladač jazyka Java

Text práce 7.15 MB Příloha 1.12 MB

Autor práce: Ing. Zdeněk Žamberský

Ak. rok: 2014/2015

Vedoucí: doc. Ing. Jan Roupec, Ph.D.

Oponent: Ing. Pavel Heriban, Ph.D.

Abstrakt:

Práce se zabývá vytvořením zpětného překladače pro jazyk Java. Cílem zpětného překladače je co nejlépe rekonstruovat zdrojový kód jazyka Java z class souborů. V práci je nejdříve rozebírán jazyk Java jako takový, kompilace Javy a struktura souborů class (zkompilovaná podoba Javy). Je také přiblíženo fungování virtuálního stroje Javy a jeho instrukční sada. Poté se přejde k problematice zpětného překladu a popisu algoritmů navržených a použitých pro realizaci zpětného překladače. V práci jsou uvedeny příklady dekompilovaného kódu.

Klíčová slova:

Java, zpětný překladač, bytecode

Termín obhajoby

16.6.2015

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znakmkaAznamka

Klasifikace

A

Jazyk práce

čeština

Fakulta

Ústav

Studijní obor

Aplikovaná informatika a řízení (M-AIŘ)

Složení komise

prof. Ing. Vladimír Vašek, CSc. (předseda)
doc. Ing. Lenka Landryová, CSc. (místopředseda)
Ing. Jiří Fischer, CSc. (člen)
RNDr. Jaroslav Pelikán, Ph.D. (člen)
prof. RNDr. Ing. Jiří Šťastný, CSc. (člen)
doc. RNDr. Jindřich Klapka, CSc. (člen)
doc. Ing. Ivan Švarc, CSc. (člen)

Posudek vedoucího
doc. Ing. Jan Roupec, Ph.D.

Cílem práce bylo vytvořit zpětný překladač jazyka Java. Problematika zpětného překladu je obecně dosti obtížná, diplomant se však s úskalími tématu vyrovnal velmi dobrým způsobem. Kromě solidních teoretických znalostí a schopností teoretické poznatky prakticky aplikovat vyžadovalo téma rovněž vynikající programátorské schopnosti a v neposlední řadě i zkušenosti. Autor prokázal, že všemi těmito vlastnostmi oplývá.
Zadání považuji za zcela splněné, vzniklý produkt je funkční a je zpracován na zcela profesionální úrovni.
Kritérium hodnocení Známka
Splnění požadavků a cílů zadání A
Postup a rozsah řešení, adekvátnost použitých metod A
Vlastní přínos a originalita A
Schopnost interpretovat dosažené vysledky a vyvozovat z nich závěry A
Využitelnost výsledků v praxi nebo teorii A
Logické uspořádání práce a formální náležitosti A
Grafická, stylistická úprava a pravopis B
Práce s literaturou včetně citací A
Samostatnost studenta při zpracování tématu A

Známka navržená vedoucím: A

Posudek oponenta
Ing. Pavel Heriban, Ph.D.

Předložená práce se věnuje problematice zpětného překladu, konkrétně zpětnému překladu programovacího jazyka Java. Úvodní části obsahují popis jazyka Java a postup jeho překladu. Následuje popis struktury souboru class a instrukční sady (bytecode) virtuálního stroje Java, včetně příkladu vykonávání bytecode virtuálním strojem. Nejrozsáhlejší kapitola se věnuje zpětnému překladu. Jsou zde podrobně popsány algoritmy používané ve vytvářené aplikaci. Hlavní pozornost byla věnována zpětnému překladu řídících struktur. V práci je uvedeno, že implementace zpětného překladu některých řídících struktur (např. switch) zatím nebyla dokončena. Při pokusu o zpětný překlad přiloženého souboru SimpleCode.class je vygenerován zdrojový kód, který není možné přeložit. Dvakrát je použit špatný typ proměnné v příkazu return (v metodách not a not1) a dvakrát je použit odkaz na neexistující jmenovku scope2 v příkazu break (v metodě nestedSet). Je zřejmé, že vývoj aplikace stále probíhá. Je tedy možné, že v době obhajoby už budou tyto (příp. i další) nedostatky odstraněny.

Formální stránka práce je dobrá. Často se vyskytuje přetečení textu přes pravý okraj sloupce. Není možné si nevšimnout autorovy jazykové (česko-anglické) rozdvojenosti. Např. „desckriptor“ (obsahuje ck), „methody“ (obsahující th) a nejednotné použití „scope“ a „skope“ (někde s c, jinde s k).
Kritérium hodnocení Známka
Splnění požadavků a cílů zadání B
Postup a rozsah řešení, adekvátnost použitých metod A
Vlastní přínos a originalita A
Schopnost interpretovat dosaž. vysledky a vyvozovat z nich závěry A
Využitelnost výsledků v praxi nebo teorii A
Logické uspořádání práce a formální náležitosti B
Grafická, stylistická úprava a pravopis B
Práce s literaturou včetně citací A

Známka navržená oponentem: A