,qwurgxfwlrqwr-dyd9luwxdo 0dfklqhaxs53/497b/lectures/lecture5.pdf · class helloworld superclass...

29
,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQH

Upload: vandien

Post on 13-Apr-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

,QWURGXFWLRQ�WR�-DYD�9LUWXDO�0DFKLQH

Page 2: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

2XWOLQH

� -DYD�/DQJXDJH��-DYD�9LUWXDO�0DFKLQH�DQG�-DYD�3ODWIRUP

� 2UJDQL]DWLRQ�RI�-DYD�9LUWXDO�0DFKLQH

� *DUEDJH�&ROOHFWLRQ

� ,QWHUSUHWHU�DQG�-XVW�,Q�7LPH�&RPSLOHU

Page 3: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

7KH�%LJ�3LFWXUH

$�MDYD %�MDYD &�MDYD

-DYD�&RPSLOHU

$�FODVV %�FODVV &�FODVV

-DYD�9LUWXDO�0DFKLQH

-DYD�/DQJXDJH6SHFLILFDWLRQ

-DYD�9LUWXDO0DFKLQH

6SHFLILFDWLRQ

Page 4: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

: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

Page 5: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

%\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→ �

Page 6: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

&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

Page 7: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

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

Page 8: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

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

Page 9: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

,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

Page 10: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

-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(

Page 11: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

-DYD�3ODWIRUPV����

)URP .90 :KLWH 3DSHU �6XQ 0LFURV\VWHP�

Page 12: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

&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

Page 13: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

([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

Page 14: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

&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

Page 15: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

&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

Page 16: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

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

Page 17: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

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

Page 18: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

6WDFN�² (DFK�7KUHDG�+DV�LWV�RZQ�6WDFN

+HDS

6WDFN

7KUHDG�� 7KUHDG�� 7KUHDG��

)UDPH

)UDPH

)UDPH

)UDPH

)UDPH

)UDPH

)UDPH

)UDPH

Page 19: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

+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

Page 20: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

-DYD�2EMHFWV�LQ�WKH�+HDS

&ODVV�$UHD

FODVV�$

FODVV�2EMHFW

+HDS

FOD]]

)LHOGV��

)LHOGV��

… …)LHOGV�Q

FOD]]… …

FOD]]

… …

FODVV�%

Page 21: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

*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

Page 22: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

URRW$

%

&

'

(

)

*

URRW$

%

&

'

(

)

*

URRW

%

(

*

URRW%

(

*

%HIRUH *&

/LYH *DUEDJH 8QNQRZQ )UHH

$IWHU 0DUN $IWHU 6ZHHS $IWHU &RPSDFW

0DUN���6ZHHS���&RPSDFWLRQ

Page 23: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

*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

Page 24: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

,QWHUSUHWHU�YV -XVW�,Q�7LPH�&RPSLOHU

&38

,QWHUSUHWHU

%\WHFRGH

-,7&RPSLOHU

&38

1DWLYH&RGH

%\WHFRGH

,QWHUSUHWDWLRQ -,7�&RPSLODWLRQ

Page 25: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

%\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

Page 26: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

%\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

Page 27: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

-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

Page 28: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

$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

Page 29: ,QWURGXFWLRQWR-DYD9LUWXDO 0DFKLQHaxs53/497b/lectures/lecture5.pdf · class HelloWorld Superclass java/lang/Object Constant Pool #0: ‘Hello World’ Fields s descriptor : Ljava/lang/String;

+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