Post on 13-Apr-2018
,QWURGXFWLRQ�WR�-DYD�9LUWXDO�0DFKLQH
2XWOLQH
� -DYD�/DQJXDJH��-DYD�9LUWXDO�0DFKLQH�DQG�-DYD�3ODWIRUP
� 2UJDQL]DWLRQ�RI�-DYD�9LUWXDO�0DFKLQH
� *DUEDJH�&ROOHFWLRQ
� ,QWHUSUHWHU�DQG�-XVW�,Q�7LPH�&RPSLOHU
7KH�%LJ�3LFWXUH
$�MDYD %�MDYD &�MDYD
-DYD�&RPSLOHU
$�FODVV %�FODVV &�FODVV
-DYD�9LUWXDO�0DFKLQH
-DYD�/DQJXDJH6SHFLILFDWLRQ
-DYD�9LUWXDO0DFKLQH
6SHFLILFDWLRQ
:KDW�,V�LQ�WKH�-90�6SHF"
� %\WHFRGHV ² WKH�LQVWUXFWLRQ�VHW�IRU�-DYD�9LUWXDO�0DFKLQH
� &ODVV�)LOH�)RUPDW ² 7KH�SODWIRUP�LQGHSHQGHQW�UHSUHVHQWDWLRQ�RI�-DYD�ELQDU\�FRGH
� 9HULILFDWLRQ�5XOHV ² WKH�DOJRULWKP�IRU�LGHQWLI\LQJ�SURJUDPV�WKDW�FDQQRW�FRPSURPLVH�WKH�LQWHJULW\�RI�WKH�-90
%\WHFRGH�H[DPSOH
ELSXVK �ELSXVK��LDGG
6WDFN
3&→
63→
ELSXVK �ELSXVK��LDGG
6WDFN
3&→
63→
�
ELSXVK �ELSXVK��LDGG
6WDFN
3&→
63→
�
�
ELSXVK �ELSXVK��LDGG
6WDFN
3&→
63→ �
&ODVV�)LOH�([DPSOH����
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( );
}}
+HOOR:RUOG�MDYD
class HelloWorldSuperclass java/lang/ObjectConstant Pool
#0: ‘Hello World’Fields
s descriptor : Ljava/lang/String;modifiers : private
Methods<init> descriptor : ()V
modifiers : publicsayHello descriptor : ()V
modifiers : publicmain descriptor : (Ljava/lan/String[;)V
modifiers : public, staticBytecodes
Bytecodes for <init> (the constrtuctor)Bytecodes for sayHelloBytecodes for main
&ODVV�)LOH�([DPSOH���� +HOOR:RUOG�FODVV
9HULILFDWLRQ
� ,V�LW�D�VWUXFWXUDOO\�YDOLG�FODVV�ILOH"
� $UH�DOO�FRQVWDQW�UHIHUHQFHV�FRUUHFW"
� :LOO�HDFK�LQVWUXFWLRQ�DOZD\V�ILQG�D�FRUUHFW�IRUPHG�VWDFN�DQG�ORFDO�YDULDEOH�DUUD\"
� &KHFN�RXW�H[WHUQDO�UHIHUHQFHV�
� 2WKHU�VDIHW\�UHTXLUHPHQWV
,PSOHPHQWDWLRQV�RI�-90
-90
26
+DUGZDUH
-DYD�26
+DUGZDUH
-DYD�&KLS
-DYD$SSOLFDWLRQ
-DYD$SSOLFDWLRQ
-DYD$SSOLFDWLRQ
-90�6SHFLILFDWLRQ�GRHV�QRW�VSHFLI\KRZ�D�-90�LV�LPSOHPHQWHG
-DYD�3ODWIRUPV����
� $�-DYD�3ODWIRUP�FRQVLVWV�RI�-DYD�9LUWXDO�0DFKLQH�DQG�D�VHW�RI�VWDQGDUG�FODVVHV
� -90 LQ�DOO�SODWIRUPV�PXVW�VDWLVI\�-90�6SHFLILFDWLRQ
� 6WDQGDUG�FODVVHV�FDQ�EH�WDLORUHG�DFFRUGLQJ�WKH�WKH�UHVRXUFH�FRQVWUDLQWV
� 7KUHH�OHYHOV�RI�-DYD�SODWIRUPV�-�((��-�6( DQG�-�0(
-DYD�3ODWIRUPV����
)URP .90 :KLWH 3DSHU �6XQ 0LFURV\VWHP�
&ODVV�$UHD
2UJDQL]DWLRQ�RI�-90
&ODVV�,QIRUPDWLRQ
&RQVWDQW�3RRO
0HWKRG�$UHD
+HDS 6WDFN1DWLYH6WDFN
([HFXWLRQ(QJLQH
1DWLYH,QWHUIDFH&ODVV
/RDGHU
)LOH�6\VWHP �FODVV
,QWHUQHW �FODVV
3&��)3��63�5HJLVWHUV
1DWLYH0HWKRGV
([HFXWLRQ�(QJLQH
� ([HFXWHV�-DYD�E\WHFRGHV�HLWKHU�XVLQJ�LQWHUSUHWHU�RU�-XVW�,Q�7LPH�FRPSLOHU
� 5HJLVWHUV�² 3&� 3URJUDP�&RXQWHU
² )3���)UDPH�3RLQWHU
² 63��2SHUDQG�6WDFN�7RS�3RLQWHU
&ODVV�/RDGHU
�� /RDGLQJ��ILQGLQJ�DQG�LPSRUWLQJ�WKH�ELQDU\�GDWD�IRU�D�FODVV�
�� /LQNLQJ�� 9HULILFDWLRQ��HQVXULQJ�WKH�FRUUHFWQHVV�RI�WKH�
LPSRUWHG�W\SH�
� 3UHSDUDWLRQ��DOORFDWLQJ�PHPRU\�IRU�FODVV�YDULDEOHV�DQG�LQLWLDOL]LQJ�WKH�PHPRU\�WR�GHIDXOW�YDOXHV�
� 5HVROXWLRQ��WUDQVIRUPLQJ�V\PEROLF�UHIHUHQFHV�IURP�WKH�W\SH�LQWR�GLUHFW�UHIHUHQFHV��
�� ,QLWLDOL]DWLRQ��LQYRNLQJ�-DYD�FRGH�WKDW�LQLWLDOL]HV�FODVV�YDULDEOHV�WR�WKHLU�SURSHU�VWDUWLQJ�YDOXHV
&ODVV�$UHD
� &ODVV�,QIRUPDWLRQ² ,QWHUQDO�UHSUHVHQWDWLRQ�RI�-DYD�FODVVHV
² ,QIRUPDWLRQ�DERXW�WKH VXSHUFODVV DQG�LPSOHPHQWHG�LQWHUIDFHV
² ,QIRUPDWLRQ�DERXW�WKH�ILHOGV�DQG�PHWKRGV
� &RQVWDQW�3RRO
� 0HWKRG�$UHD² &RQWDLQV�WKH�E\WHFRGHV RI�WKH�PHWKRGV�RI�WKH�ORDGHG�FODVVHV
6WDFN� 7KH�-DYD�VWDFN�LV�FRPSRVHG�RI�IUDPHV
² $�IUDPH�FRQWDLQV�WKH�VWDWH�RI�RQH�-DYD�PHWKRG�LQYRFDWLRQ
² /RJLFDOO\��D�IUDPH�KDV�WZR�SDUWV�� ORFDO�YDULDEOH�DUUD\ DQG�RSHUDQG�VWDFN
� -90 KDV�QR�UHJLVWHUV��LW�XVHV�WKH�RSHUDQG�VWDFN IRU�VWRUDJH�RI�LQWHUPHGLDWH�GDWD�YDOXHV² WR�NHHS�WKH -90V LQVWUXFWLRQ�VHW�FRPSDFW�
² WR�IDFLOLWDWH�LPSOHPHQWDWLRQ�RQ�DUFKLWHFWXUHV�ZLWK�OLPLWHG�QXPEHU�RI�JHQHUDO�SXUSRVH�UHJLVWHUV
� (DFK�-DYD�WKUHDG�KDV�LWV�RZQ�VWDFN�DQG�FDQQRW�DFFHVV�WKH�VWDFN�RI�RWKHU�WKUHDGV
6WDFN�)UDPH
public class A {
... ...void f(int x){
int i;for(i=0; i<x; i++){
... ...}
... ... }
5HWXUQ�3&
&DOOHU·V�)3
&DOOHU·V�63
[L
,QWHU�0HGLDWH'DWD9DOXHV
63→
/RFDO9DULDEOH$UUD\
)3→
2SHUDQG6WDFN
6WDFN�² (DFK�7KUHDG�+DV�LWV�RZQ�6WDFN
+HDS
6WDFN
7KUHDG�� 7KUHDG�� 7KUHDG��
)UDPH
)UDPH
)UDPH
)UDPH
)UDPH
)UDPH
)UDPH
)UDPH
+HDS
� $OO�-DYD�REMHFWV�DUH�DOORFDWHG�LQ�WKH�KHDS
� -DYD�DSSOLFDWLRQV�FDQQRW�H[SOLFLWO\�IUHH�DQ�REMHFW
� 7KH�*DUEDJH�&ROOHFWRU LV�LQYRNHG�IURP�WLPH�WR�WLPH�DXWRPDWLFDOO\�WR�UHFODLP�WKH�REMHFWV�WKDW�DUH�QR�ORQJHU�QHHGHG�E\�WKH�DSSOLFDWLRQ
� 7KH�KHDS�LV�VKDUHG�E\�DOO�-DYD�WKUHDGV
-DYD�2EMHFWV�LQ�WKH�+HDS
&ODVV�$UHD
FODVV�$
FODVV�2EMHFW
+HDS
FOD]]
)LHOGV��
)LHOGV��
… …)LHOGV�Q
FOD]]… …
FOD]]
… …
FODVV�%
*DUEDJH�&ROOHFWRU5RRWV��LQWHUQDOO\�GHILQHG�E\�WKH�-90 LPSOHPHQWDWLRQ
URRW
$ B
& '
( )
*
URRW
$ B
& '
( )
*
/LYH�2EMHFWV��UHDFKDEOH�IURP�WKH�URRWV
*DUEDJH��'HDG�2EMHFWV���QRW�UHDFKDEOH�IURP�WKH�URRWV��QRW�DFFHVVLEOH�WR�WKH�DSSOLFDWLRQ
URRW$
%
&
'
(
)
*
URRW$
%
&
'
(
)
*
URRW
%
(
*
URRW%
(
*
%HIRUH *&
/LYH *DUEDJH 8QNQRZQ )UHH
$IWHU 0DUN $IWHU 6ZHHS $IWHU &RPSDFW
0DUN���6ZHHS���&RPSDFWLRQ
*HQHUDWLRQDO�*DUEDJH�&ROOHFWLRQ� 0RVW�REMHFWV�OLYH�IRU�YHU\�VKRW�WLPH
� $�VPDOO�SHUFHQWDJH�RI�WKHP�OLYH�PXFK�ORQJHU
2OG*HQHUDWLRQ
)UHH
<RXQJ*HQHUDWLRQ
2OG*HQHUDWLRQ
<RXQJ*HQHUDWLRQ
)UHH
2OG*HQHUDWLRQ
2OG*HQHUDWLRQ
<RXQJ*HQHUDWLRQ
)UHH
,QWHUSUHWHU�YV -XVW�,Q�7LPH�&RPSLOHU
&38
,QWHUSUHWHU
%\WHFRGH
-,7&RPSLOHU
&38
1DWLYH&RGH
%\WHFRGH
,QWHUSUHWDWLRQ -,7�&RPSLODWLRQ
%\WHFRGH�,QWHUSUHWHU����
while( program not end ) {fetch next bytecode => bswitch(b) {
case ILOAD:load an integer from the localvariable array and push on topof current operand stack;
case ISTORE:pop an integer from the top ofcurrent operand stack and storeit into the local variable array;
case ALOAD:….. ...
} // end of switch} // end of while
%\WHFRGH�LQWHUSUHWHU����
� $GYDQWDJH² (DVH�WR�LPSOHPHQW
² 'RHV�QRW�QHHG�H[WUD�PHPRU\�WR�VWRUH�FRPSLOHG�FRGH
� 'LVDGYDQWDJH² 9HU\�6ORZ�����a�����WLPHV�VORZHU�WKDQ�H[HFXWLRQ�RI�QDWLYH�FRGH
-XVW�,Q�7LPH�&RPSLOHU
� '\QDPLFDOO\�FRPSLOHV�E\WHFRGH�LQWR�QDWLYH�FRGH�DW�UXQWLPH��XVXDOO\�LQ�PHWKRG�JUDQXODULW\
� ([HFXWLRQ�RI�QDWLYH�FRGH�LV�PXFK�IDVWHU�WKDQ�LQWHUSUHWDWLRQ�RI�E\WHFRGH
� &RPSLODWLRQ�LV�WLPH�FRQVXPLQJ�DQG�PD\�VORZ�GRZQ�WKH�DSSOLFDWLRQ
� 7UDGHRIIV�EHWZHHQ�H[HFXWLRQ�WLPH�DQG�FRPSLODWLRQ�WLPH
$GDSWLYH�&RPSLOHU
� 2EVHUYDWLRQ��OHVV�WKDQ�����RI�WKH�PHWKRGV�DFFRXQW�IRU�PRUH�WKDQ�����RI�H[HFXWLRQ�WLPH² 0HWKRGV�FRQWDLQV�ORRS�ZLWK�ODUJH�QXPEHU�RI�LWHUDWLRQ��
² 0HWKRGV�WKDW�DUH�IUHTXHQWO\�LQYRNHG
� ,GHD����RQO\�FRPSLOH�WKH�PHWKRGV�ZKHUH�WKH�DSSOLFDWLRQ�VSHQGV�D�ORW�RI�WLPH
� ,GHD����SHUIRUP�DGYDQFHG�FRPSLOHU�RSWLPL]DWLRQ�IRU�WKH�KRWWHVW�PHWKRGV��VLPSOH�RU�QR�FRPSLOHU�RSWLPL]DWLRQ�IRU�OHVV�KRW�PHWKRGV
+RZ�$GDSWLYH�&RPSLOHU�:RUNV
� 6HW�WKUHH�WKUHVKROGV�7���7���7��7��
� (DFK�PHWKRG�KDV�D�FRXQWHU�WKDW�LV�LQLWLDOL]HG�WR����:KHQHYHU�WKH�PHWKRG�LV�LQYRNHG��LQFUHDVH�LWV�FRXQWHU�E\��
� 7KH�PHWKRGV�ZLWK�FRXQWHU�ORZHU�WKDQ�7��DUH�H[HFXWHG�XVLQJ�LQWHUSUHWHU
� :KHQ�D�PHWKRG·V�FRXQWHU�UHDFKHV�7���FRPSLOH�WKLV�PHWKRG�ZLWK�VLPSOH�RSWLPL]DWLRQV
� :KHQ�D�PHWKRG·V�FRXQWHU�UHDFKHV�7���UHFRPSLOH�WKLV�PHWKRG�ZLWK�DGYDQFHG�RSWLPL]DWLRQV