System do manipulacji
bajtkodem języka Java
W celu zapewnienia przenośności programów napisanych w języku Java,
firma Sun postanowiła, że język ten nie będzie kompilowany do języka
maszynowego, tylko do języka pośredniego zwanego bajtkodem, wykonywanym
przez maszynę wirtualną.
Projekt niniejszy ma na celu stworzenie narzędzia do analizowania
bajtkodu wygenerowanego przez kompilator Javy. Narzędzie to ma
służyć nauce lepszego zrozumienia sposobu działania kompilatora Javy
poprzez eksperymenty z różnym stylem programowania. Powinno także
umożliwiać ręczną optymalizację małych fragmentów plików bajtkodu (np.
najbardziej kluczowych z punktu widzenia efektywności). Narzędzie to
będzie (znacznie) uproszczoną wersją środowiska Soot.
Narzędzie powinno być zrealizowane jako plugin platformy Eclipse.
Uzyskane
doświadczenie:
Po przejściu przez ten projekt studenci, oprócz znajomości przebiegu
wieloosobowego projektu informatycznego, powinni dysponować:
- dużą wiedzą na temat budowy aplikacji z graficznym interfejsem
użytkownika,
- głęboką wiedzą na temat bajtkodu oraz na temat budowy wewnętrznej
narzędzi go generujących,
- znajomością budowy i ponadstandardową umiejętnością korzystania
ze środowiska programistycznego Eclipse.
Wymagania
funkcjonalne:
- Oglądanie "na żywo" bajtkodu wygenerowanego ze źródeł przez
kompilator Javy.
- Synchronizacja pomiędzy pozycjami w źródłach i bajtkodzie.
- Możliwość lokalnych ręcznych modyfikacji bajtkodu (np. lokalne
optymalizacje) z możliwością integracji niezależnych ręcznych poprawek
w kodzie źródłowym.
Wymagania techniczne:
Kod programu powinien być napisany w języku Java i anotowany częściową
specyfikacją w języku JML, pozwalającą na poprawną weryfikację poprzez
narzędzie analizy statycznej ESC/Java2.
Źródła wiedzy:
Ostatnia modyfikacja: 14.09.2004