Kako Java virtualni stroj postupa s pozivom i povratom metode

Ovogjesečni Under the Hood fokusiran je na pozivanje metode i povratak unutar Java virtualnog stroja (JVM). Opisuje četiri načina na koje se mogu pozivati ​​Java (i izvorne) metode, daje uzorak koda koji ilustrira četiri načina i pokriva relevantne bajtkodove.

Pozivanje metode

Programski jezik Java nudi dvije osnovne vrste metoda: metode instance i metode klase (ili statike). Razlika između ove dvije vrste metoda je:

  1. Instancemetode zahtijevaju instancu prije nego što se mogu pozvati, dok classmetode ne.
  2. Instancemetode koriste dinamičko (kasno) vezivanje, dok classmetode koriste statičko (rano) vezivanje.

Kada Java virtualni stroj pozove metodu klase, odabire metodu koju će pozvati na temelju vrste reference objekta, koja je uvijek poznata u vrijeme prevođenja. S druge strane, kada virtualni stroj poziva metodu instance, on odabire metodu koju će pozvati na temelju stvarne klase objekta, koja može biti poznata samo u vrijeme izvođenja.

JVM koristi dvije različite upute, prikazane u sljedećoj tablici, za pozivanje ove dvije različite vrste metoda: invokevirtual za instancemetode i invokestatic za classmetode.