Introduction to Java Virtual Machine

Introduction to Java Virtual Machine

,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQH 2XWOLQH -DYD/DQJXDJH-DYD9LUWXDO0DFKLQH DQG-DYD3ODWIRUP 2UJDQL]DWLRQRI-DYD9LUWXDO0DFKLQH *DUEDJH&ROOHFWLRQ ,QWHUSUHWHUDQG-XVW,Q7LPH &RPSLOHU 7KH%LJ3LFWXUH $MDYD %MDYD &MDYD -DYD/DQJXDJH 6SHFLILFDWLRQ -DYD &RPSLOHU $FODVV %FODVV &FODVV -DYD9LUWXDO 0DFKLQH -DYD9LUWXDO0DFKLQH 6SHFLILFDWLRQ :KDW,VLQWKH-906SHF" %\WHFRGHV ² WKHLQVWUXFWLRQVHWIRU -DYD9LUWXDO0DFKLQH &ODVV)LOH)RUPDW ² 7KHSODWIRUP LQGHSHQGHQWUHSUHVHQWDWLRQRI-DYD ELQDU\FRGH 9HULILFDWLRQ5XOHV ² WKHDOJRULWKPIRU LGHQWLI\LQJSURJUDPVWKDWFDQQRW FRPSURPLVHWKHLQWHJULW\RIWKH-90 %\WHFRGHH[DPSOH 6WDFN 6WDFN 6WDFN 6WDFN 63→ 63→ 63→ 63→ 3&→ELSXVK ELSXVK ELSXVK ELSXVK ELSXVK 3&→ELSXVK ELSXVK ELSXVK LDGG LDGG 3&→LDGG LDGG 3&→ &ODVV)LOH([DPSOH +HOOR:RUOGMDYD public class HelloWorld extends Object { private String s; public HelloWorld() { s = ‘Hello World!’; } public void sayHello() { System.out.println(s); } public static void main(String[] args) { HelloWorld hello = new HelloWorld(); hello.sayHello( ); } } &ODVV)LOH([DPSOH +HOOR:RUOGFODVV class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String; modifiers : private Methods <init> descriptor : ()V modifiers : public sayHello descriptor : ()V modifiers : public main descriptor : (Ljava/lan/String[;)V modifiers : public, static Bytecodes Bytecodes for <init> (the constrtuctor) Bytecodes for sayHello Bytecodes for main 9HULILFDWLRQ ,VLWDVWUXFWXUDOO\YDOLGFODVVILOH" $UHDOOFRQVWDQWUHIHUHQFHVFRUUHFW" :LOOHDFKLQVWUXFWLRQDOZD\VILQGD FRUUHFWIRUPHGVWDFNDQGORFDOYDULDEOH DUUD\" &KHFNRXWH[WHUQDOUHIHUHQFHV 2WKHUVDIHW\UHTXLUHPHQWV ,PSOHPHQWDWLRQVRI-90 -DYD -DYD -DYD $SSOLFDWLRQ $SSOLFDWLRQ $SSOLFDWLRQ -90 -DYD26 26 -DYD&KLS +DUGZDUH +DUGZDUH -906SHFLILFDWLRQGRHVQRWVSHFLI\ KRZD-90LVLPSOHPHQWHG -DYD3ODWIRUPV $-DYD3ODWIRUPFRQVLVWVRI-DYD 9LUWXDO0DFKLQHDQGDVHWRI VWDQGDUGFODVVHV -90 LQDOOSODWIRUPVPXVWVDWLVI\ -906SHFLILFDWLRQ 6WDQGDUGFODVVHVFDQEHWDLORUHG DFFRUGLQJWKHWKHUHVRXUFH FRQVWUDLQWV 7KUHHOHYHOVRI-DYDSODWIRUPV -((-6( DQG-0( -DYD3ODWIRUPV )URP .90 :KLWH 3DSHU 6XQ 0LFURV\VWHP 2UJDQL]DWLRQRI-90 &ODVV$UHD &ODVV,QIRUPDWLRQ 1DWLYH +HDS 6WDFN &RQVWDQW3RRO 6WDFN 0HWKRG$UHD ,QWHUQHW 3&)363 FODVV 5HJLVWHUV 1DWLYH &ODVV ,QWHUIDFH /RDGHU ([HFXWLRQ (QJLQH )LOH6\VWHP 1DWLYH FODVV 0HWKRGV ([HFXWLRQ(QJLQH ([HFXWHV-DYDE\WHFRGHVHLWKHU XVLQJLQWHUSUHWHURU-XVW,Q7LPH FRPSLOHU 5HJLVWHUV ² 3& 3URJUDP&RXQWHU ² )3)UDPH3RLQWHU ² 632SHUDQG6WDFN7RS3RLQWHU &ODVV/RDGHU /RDGLQJILQGLQJDQGLPSRUWLQJWKHELQDU\ GDWDIRUDFODVV /LQNLQJ 9HULILFDWLRQHQVXULQJWKHFRUUHFWQHVVRIWKH LPSRUWHGW\SH 3UHSDUDWLRQDOORFDWLQJPHPRU\IRUFODVVYDULDEOHV DQGLQLWLDOL]LQJWKHPHPRU\WRGHIDXOWYDOXHV 5HVROXWLRQWUDQVIRUPLQJV\PEROLFUHIHUHQFHVIURP WKHW\SHLQWRGLUHFWUHIHUHQFHV ,QLWLDOL]DWLRQLQYRNLQJ-DYDFRGHWKDW LQLWLDOL]HVFODVVYDULDEOHVWRWKHLUSURSHU VWDUWLQJYDOXHV &ODVV$UHD &ODVV,QIRUPDWLRQ ² ,QWHUQDOUHSUHVHQWDWLRQRI-DYDFODVVHV ² ,QIRUPDWLRQDERXWWKH VXSHUFODVV DQG LPSOHPHQWHGLQWHUIDFHV ² ,QIRUPDWLRQDERXWWKHILHOGVDQGPHWKRGV &RQVWDQW3RRO 0HWKRG$UHD ² &RQWDLQVWKHE\WHFRGHV RIWKHPHWKRGVRI WKHORDGHGFODVVHV 6WDFN 7KH-DYDVWDFNLVFRPSRVHGRIIUDPHV ² $IUDPHFRQWDLQVWKHVWDWHRIRQH-DYDPHWKRG LQYRFDWLRQ ² /RJLFDOO\DIUDPHKDVWZRSDUWV ORFDOYDULDEOH DUUD\ DQGRSHUDQGVWDFN -90 KDVQRUHJLVWHUVLWXVHVWKHRSHUDQG VWDFN IRUVWRUDJHRILQWHUPHGLDWHGDWDYDOXHV ² WRNHHSWKH -90 V LQVWUXFWLRQVHWFRPSDFW ² WRIDFLOLWDWHLPSOHPHQWDWLRQRQDUFKLWHFWXUHVZLWK OLPLWHGQXPEHURIJHQHUDOSXUSRVHUHJLVWHUV (DFK-DYDWKUHDGKDVLWVRZQVWDFNDQGFDQQRW DFFHVVWKHVWDFNRIRWKHUWKUHDGV 6WDFN)UDPH public class A ,QWHU { 0HGLDWH 2SHUDQG ... ... 63→ 'DWD 6WDFN void f(int x) 9DOXHV { int i; L /RFDO for(i=0; i<x; i++) 9DULDEOH { [ $UUD\ ... ... &DOOHU·V63 } ... ... &DOOHU·V)3 } )3→ 5HWXUQ3& 6WDFN² (DFK7KUHDG+DVLWVRZQ6WDFN +HDS 7KUHDG 7KUHDG 7KUHDG )UDPH )UDPH )UDPH )UDPH )UDPH )UDPH )UDPH )UDPH 6WDFN +HDS $OO-DYDREMHFWVDUHDOORFDWHGLQWKH KHDS -DYDDSSOLFDWLRQVFDQQRWH[SOLFLWO\IUHH DQREMHFW 7KH*DUEDJH&ROOHFWRU LVLQYRNHGIURP WLPHWRWLPHDXWRPDWLFDOO\WRUHFODLP WKHREMHFWVWKDWDUHQRORQJHUQHHGHG E\WKHDSSOLFDWLRQ 7KHKHDSLVVKDUHGE\DOO-DYDWKUHDGV -DYD2EMHFWVLQWKH+HDS FOD]] )LHOGV )LHOGV … … FODVV2EMHFW )LHOGVQ FODVV$ FODVV% FOD]] … FOD]] &ODVV$UHD … +HDS *DUEDJH&ROOHFWRU 5RRWVLQWHUQDOO\GHILQHGE\WKH -90 LPSOHPHQWDWLRQ /LYH2EMHFWVUHDFKDEOHIURPWKHURRWV *DUEDJH 'HDG2EMHFWV QRWUHDFKDEOHIURPWKH URRWVQRWDFFHVVLEOHWRWKHDSSOLFDWLRQ URRW $ B ( ) & ' * 0DUN6ZHHS&RPSDFWLRQ URRW URRW URRW URRW $ $ % % % % ( & & * ' ' ( ( ( ) ) * * * %HIRUH *& $IWHU 0DUN $IWHU 6ZHHS $IWHU &RPSDFW /LYH *DUEDJH 8QNQRZQ )UHH *HQHUDWLRQDO*DUEDJH&ROOHFWLRQ 0RVWREMHFWVOLYHIRUYHU\VKRWWLPH $VPDOOSHUFHQWDJHRIWKHPOLYHPXFKORQJHU )UHH )UHH )UHH <RXQJ *HQHUDWLRQ <RXQJ *HQHUDWLRQ 2OG *HQHUDWLRQ <RXQJ *HQHUDWLRQ 2OG 2OG *HQHUDWLRQ *HQHUDWLRQ 2OG *HQHUDWLRQ ,QWHUSUHWHUYV -XVW,Q7LPH&RPSLOHU %\WHFRGH %\WHFRGH 1DWLYH -,7 ,QWHUSUHWHU &RGH &RPSLOHU &38 &38 ,QWHUSUHWDWLRQ -,7&RPSLODWLRQ %\WHFRGH,QWHUSUHWHU while(program not end ) { fetch next bytecode => b switch(b) { case ILOAD: load an integer from the local variable array and push on top of current operand stack; case ISTORE: pop an integer from the top of current operand stack and store it into the local variable array; case ALOAD: ….. ... } // end of switch } // end of while %\WHFRGHLQWHUSUHWHU $GYDQWDJH ² (DVHWRLPSOHPHQW ² 'RHVQRWQHHGH[WUDPHPRU\WRVWRUH FRPSLOHGFRGH 'LVDGYDQWDJH ² 9HU\6ORZaWLPHVVORZHUWKDQ H[HFXWLRQRIQDWLYHFRGH -XVW,Q7LPH&RPSLOHU '\QDPLFDOO\FRPSLOHVE\WHFRGHLQWR QDWLYHFRGHDWUXQWLPHXVXDOO\LQ PHWKRGJUDQXODULW\ ([HFXWLRQRIQDWLYHFRGHLVPXFK IDVWHUWKDQLQWHUSUHWDWLRQRIE\WHFRGH &RPSLODWLRQLVWLPHFRQVXPLQJDQGPD\ VORZGRZQWKHDSSOLFDWLRQ 7UDGHRIIVEHWZHHQH[HFXWLRQWLPHDQG FRPSLODWLRQWLPH $GDSWLYH&RPSLOHU 2EVHUYDWLRQOHVVWKDQRIWKHPHWKRGV DFFRXQWIRUPRUHWKDQRIH[HFXWLRQWLPH ² 0HWKRGVFRQWDLQVORRSZLWKODUJHQXPEHURI LWHUDWLRQ ² 0HWKRGVWKDWDUHIUHTXHQWO\LQYRNHG ,GHDRQO\FRPSLOHWKHPHWKRGVZKHUHWKH DSSOLFDWLRQVSHQGVDORWRIWLPH ,GHDSHUIRUPDGYDQFHGFRPSLOHU RSWLPL]DWLRQIRUWKHKRWWHVWPHWKRGVVLPSOH RUQRFRPSLOHURSWLPL]DWLRQIRUOHVVKRW PHWKRGV +RZ$GDSWLYH&RPSLOHU:RUNV 6HWWKUHHWKUHVKROGV77 77 (DFKPHWKRGKDVDFRXQWHUWKDWLVLQLWLDOL]HG WR:KHQHYHUWKHPHWKRGLVLQYRNHG LQFUHDVHLWVFRXQWHUE\ 7KHPHWKRGVZLWKFRXQWHUORZHUWKDQ7DUH H[HFXWHGXVLQJLQWHUSUHWHU :KHQDPHWKRG·VFRXQWHUUHDFKHV7FRPSLOH WKLVPHWKRGZLWKVLPSOHRSWLPL]DWLRQV :KHQDPHWKRG·VFRXQWHUUHDFKHV7 UHFRPSLOHWKLVPHWKRGZLWKDGYDQFHG RSWLPL]DWLRQV.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    29 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us