Blad w bytecode

0

Czy majac jakis dowolny bytecode z JVM mozna jakos okreslic czy znajduja sie w nim bledy ?
Ewentualnie da sie go jakos zdekompilować ?

0

zdekompilować można bardzo prosto > https://www.google.com/search?q=java+decompiler

Co rozumiesz przez pojęcie "błędy". Bytecode jeżeli był tworzony przez kompilator jest zapewne OK (pomijam błędy w transmisji w sieci, uszkodzenia plików itp.). Błędy biznesowe? Trzeba napisać testy.

0

Hm, nigdzie nie moge znaleźć opisu od tej technicznej strony.

Jeżeli to herezje to z góry przepraszam:
Mamy kod w zwyklym pliku .java. Kompilowany jest do pliku .class to oczywiste. Kod "javovy" zamieniany jest na bytecode przez JVM i dopiero on jest kompilowany na kod maszynowy ?

0

Inaczej plik java trafia do kompilatora javac, który zmienia go na plik .class czyli bytecode. Tenże jest interpretowany przez maszynę wirtualną, która traktuje go jako swój własny kod maszynowy. By całość była wydajna mamy jeszcze takie coś jak JIT czyli dodatkowy kompilator, który działa w czasie pracy JVM i zamienia najczęściej wykonywane fragmenty kodu na kod maszynowy dla danego zestawu system+procek.

0

A w którym momencie łapane są błędy ? Znaczy logiczne że w trakcie tworzenia bytecodu - pliku .class przez javac ale jak to się odbywa ? Tworzony jest po kroku bytecode i jeżeli jest błąd to error ?

0

Zdefiniuj błąd. Jeśli chodzi o błędy składniowe to tak. W czasie kompilacji parser sprawdza poprawność składniową kodu, a następnie odbywa się jeszcze analiza semantyczna, która służy do weryfikacji np. poprawności typów. Jeśli chodzi o błędy "w logice" to zazwyczaj pisze się testy, które weryfikują poprawność napisanego kodu uruchamiając go z przykłaowymi danymi.

0

Mialem coś takiego na myśli: http://stackoverflow.com/questions/16947679/bytecode-compilation-errors jest podany bytecode i czy analizując go można zauważyć błąd - czy jest jakos zapisywany.

Dziękie wielkie za odpowiedzi.

0

Jak potrafisz czytać bytecode to zapewne wyłapiesz. Zaręczam jednak, że to działa w każdym przypadku i języku, bo albo znasz i wyłapiesz albo nie znasz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1