Programování

Jak virtuální stroj Java zpracovává vyvolání a vrácení metody

Tento měsíc Under The Hood se zaměřuje na vyvolání metody a návrat uvnitř virtuálního stroje Java (JVM). Popisuje čtyři způsoby, jak lze vyvolat metody Java (a nativní), poskytuje ukázku kódu, který ilustruje čtyři způsoby, a pokrývá příslušné bytecodes.

Vyvolání metody

Programovací jazyk Java poskytuje dva základní druhy metod: instance metody a třídy (nebo statické) metody. Rozdíl mezi těmito dvěma druhy metod je:

  1. Instance metody vyžadují instanci, než je lze vyvolat, zatímco třída metody ne.
  2. Instance metody používají dynamickou (pozdní) vazbu, zatímco třída metody používají statickou (časnou) vazbu.

Když virtuální stroj Java vyvolá metodu třídy, vybere metodu k vyvolání na základě typu odkazu na objekt, který je vždy znám v době kompilace. Na druhou stranu, když virtuální stroj vyvolá metodu instance, vybere metodu k vyvolání na základě skutečné třídy objektu, která může být známa pouze za běhu.

K vyvolání těchto dvou různých druhů metod používá JVM dvě různé instrukce uvedené v následující tabulce: invokevirtual pro instance metody a invokestatický pro třída metody.