WEBVTT

1
00:00:02.885 --> 00:00:03.315
<00:00:02.885>Thank <00:00:03.272>you.

2
00:00:03.375 --> 00:00:06.435
<00:00:03.375>Um, <00:00:03.530>as <00:00:03.686>I <00:00:03.841>said, <00:00:03.997>I'll <00:00:04.152>be <00:00:04.308>talking <00:00:04.463>about <00:00:04.619>debugging <00:00:04.775>in

3
00:00:06.435 --> 00:00:07.475
<00:00:06.435>the <00:00:06.747>following <00:00:07.058>few <00:00:07.371>minutes.

4
00:00:07.735 --> 00:00:10.235
<00:00:07.735>Um, <00:00:07.935>I'm <00:00:08.135>Johan <00:00:08.335>Berg <00:00:08.535>as <00:00:08.735>you <00:00:08.935>already <00:00:09.135>heard,

5
00:00:10.295 --> 00:00:13.875
<00:00:10.295>and <00:00:10.435>I'll, <00:00:10.575>I'll <00:00:10.715>start <00:00:10.855>and <00:00:10.995>I'll <00:00:11.135>start <00:00:11.275>with <00:00:11.415>a <00:00:11.555>simple <00:00:11.695>example.

6
00:00:13.975 --> 00:00:15.715
<00:00:13.975>So <00:00:14.254>when <00:00:14.535>we <00:00:14.815>talk <00:00:15.094>about <00:00:15.375>debugging,

7
00:00:15.855 --> 00:00:18.795
<00:00:15.855>we <00:00:16.010>usually <00:00:16.166>don't <00:00:16.321>talk <00:00:16.477>about <00:00:16.632>enoughs, <00:00:16.788>which, <00:00:16.943>which <00:00:17.099>is <00:00:17.255>here,

8
00:00:18.795 --> 00:00:22.035
<00:00:18.795>which <00:00:18.950>is <00:00:19.106>probably <00:00:19.261>one <00:00:19.417>of <00:00:19.572>the <00:00:19.728>first <00:00:19.883>found <00:00:20.039>computer <00:00:20.195>bug.

9
00:00:22.575 --> 00:00:26.555
<00:00:22.575>But <00:00:22.750>what <00:00:22.925>we're <00:00:23.099>talking <00:00:23.275>about <00:00:23.450>are, <00:00:23.625>are <00:00:23.800>software <00:00:23.974>problems

10
00:00:26.555 --> 00:00:27.835
<00:00:26.555>that <00:00:26.785>we <00:00:27.015>have <00:00:27.246>in <00:00:27.476>our <00:00:27.707>software.

11
00:00:28.015 --> 00:00:32.435
<00:00:28.015>And, <00:00:28.248>um, <00:00:28.481>at <00:00:28.715>Atka <00:00:28.948>wrote <00:00:29.181>a <00:00:29.415>couple

12
00:00:32.435 --> 00:00:34.195
<00:00:32.435>of <00:00:32.610>years <00:00:32.785>back, <00:00:32.960>if <00:00:33.135>de <00:00:33.310>bank <00:00:33.485>is <00:00:33.660>the <00:00:33.835>process

13
00:00:34.295 --> 00:00:35.675
<00:00:34.295>of <00:00:34.709>removing <00:00:35.123>software <00:00:35.537>bug,

14
00:00:36.185 --> 00:00:38.955
<00:00:36.185>then <00:00:36.340>proclaim <00:00:36.496>must <00:00:36.651>be <00:00:36.807>the <00:00:36.962>process <00:00:37.118>of <00:00:37.273>putting <00:00:37.429>that <00:00:37.585>in.

15
00:00:39.415 --> 00:00:40.955
<00:00:39.415>And <00:00:39.761>as <00:00:40.108>many <00:00:40.454>of <00:00:40.801>you

16
00:00:40.975 --> 00:00:44.115
<00:00:40.975>and <00:00:41.102>also <00:00:41.229>as <00:00:41.356>I <00:00:41.484>do, <00:00:41.611>um, <00:00:41.738>probably <00:00:41.865>write <00:00:41.993>a <00:00:42.120>lot <00:00:42.247>of <00:00:42.375>code,

17
00:00:44.125 --> 00:00:47.035
<00:00:44.125>we're <00:00:44.280>also <00:00:44.436>putting <00:00:44.591>a <00:00:44.747>lot <00:00:44.902>of, <00:00:45.058>uh, <00:00:45.213>bugs <00:00:45.369>in <00:00:45.525>them.

18
00:00:47.975 --> 00:00:50.955
<00:00:47.975>And <00:00:48.130>here <00:00:48.286>for <00:00:48.441>this <00:00:48.597>example <00:00:48.752>that <00:00:48.908>we'll <00:00:49.063>keep <00:00:49.219>using <00:00:49.375>in,

19
00:00:51.095 --> 00:00:55.925
<00:00:51.095>in <00:00:51.269>the <00:00:51.445>following <00:00:51.620>talk, <00:00:51.795>um, <00:00:51.970>is <00:00:52.144>my <00:00:52.320>line <00:00:52.495>counter.

20
00:00:55.985 --> 00:00:57.805
<00:00:55.985>And <00:00:56.265>it's <00:00:56.545>essentially <00:00:56.825>a <00:00:57.105>simple <00:00:57.385>application

21
00:00:57.805 --> 00:00:59.685
<00:00:57.805>that <00:00:58.155>should <00:00:58.505>count <00:00:58.855>my <00:00:59.205>lines.

22
00:00:59.785 --> 00:01:02.645
<00:00:59.785>It <00:00:59.940>has <00:01:00.096>two <00:01:00.251>options. <00:01:00.407>You <00:01:00.562>can <00:01:00.718>either <00:01:00.873>count, <00:01:01.029>line, <00:01:01.184>um,

23
00:01:02.735 --> 00:01:05.525
<00:01:02.735>count <00:01:02.910>the <00:01:03.085>lines <00:01:03.260>or <00:01:03.435>count <00:01:03.610>the <00:01:03.785>code <00:01:03.960>lines, <00:01:04.135>so

24
00:01:06.035 --> 00:01:07.405
<00:01:06.035>excluding <00:01:06.651>empty <00:01:07.268>lines.

25
00:01:07.825 --> 00:01:09.965
<00:01:07.825>But <00:01:08.025>here <00:01:08.225>in <00:01:08.425>this <00:01:08.625>example, <00:01:08.825>we <00:01:09.025>would <00:01:09.225>expect

26
00:01:09.965 --> 00:01:13.925
<00:01:09.965>that <00:01:10.092>when <00:01:10.219>we <00:01:10.346>run <00:01:10.474>it <00:01:10.601>on <00:01:10.728>our <00:01:10.855>own <00:01:10.983>application <00:01:11.110>line <00:01:11.237>count <00:01:11.365>the

27
00:01:13.955 --> 00:01:16.325
<00:01:13.955>Java <00:01:14.304>that <00:01:14.655>it <00:01:15.005>outputs <00:01:15.355>36

28
00:01:16.325 --> 00:01:18.565
<00:01:16.325>because <00:01:16.558>that's <00:01:16.791>the <00:01:17.025>amount <00:01:17.258>of <00:01:17.491>lines <00:01:17.725>there.

29
00:01:19.025 --> 00:01:21.885
<00:01:19.025>The <00:01:19.305>problem <00:01:19.585>is <00:01:19.865>actually <00:01:20.145>our <00:01:20.425>program,

30
00:01:22.475 --> 00:01:24.685
<00:01:22.475>I'll <00:01:22.708>put <00:01:22.941>some <00:01:23.175>nice <00:01:23.408>little <00:01:23.641>Aries <00:01:23.875>that,

31
00:01:24.685 --> 00:01:27.125
<00:01:24.685>that <00:01:24.840>we <00:01:24.996>get <00:01:25.151>from <00:01:25.307>Java <00:01:25.462>once <00:01:25.618>in <00:01:25.773>a <00:01:25.929>while, <00:01:26.085>um,

32
00:01:27.125 --> 00:01:28.445
<00:01:27.125>because <00:01:27.422>we <00:01:27.719>have <00:01:28.015>an <00:01:28.312>exception

33
00:01:28.465 --> 00:01:31.845
<00:01:28.465>and <00:01:28.620>it <00:01:28.776>tells <00:01:28.931>us <00:01:29.087>that <00:01:29.242>there's <00:01:29.398>no <00:01:29.553>such <00:01:29.709>file <00:01:29.865>lines.

34
00:01:31.905 --> 00:01:34.565
<00:01:31.905>And <00:01:32.060>so <00:01:32.216>what <00:01:32.371>we <00:01:32.527>do, <00:01:32.682>we'll <00:01:32.838>look <00:01:32.993>at <00:01:33.149>the <00:01:33.305>code

35
00:01:34.705 --> 00:01:37.645
<00:01:34.705>and <00:01:34.821>when <00:01:34.938>look <00:01:35.054>at <00:01:35.171>the <00:01:35.288>code, <00:01:35.405>we <00:01:35.521>can <00:01:35.638>look <00:01:35.755>at <00:01:35.871>the <00:01:35.988>main <00:01:36.105>method.

36
00:01:37.905 --> 00:01:41.405
<00:01:37.905>We <00:01:38.021>can <00:01:38.138>look <00:01:38.255>at <00:01:38.371>the <00:01:38.488>count <00:01:38.605>lines <00:01:38.721>and <00:01:38.838>the <00:01:38.955>can <00:01:39.071>code <00:01:39.188>line <00:01:39.305>method

37
00:01:41.545 --> 00:01:44.895
<00:01:41.545>and <00:01:41.825>showed <00:01:42.105>it <00:01:42.385>to <00:01:42.665>you <00:01:42.945>shortly

38
00:01:44.895 --> 00:01:47.055
<00:01:44.895>because <00:01:45.095>like, <00:01:45.295>that's <00:01:45.495>the <00:01:45.695>idea <00:01:45.895>in <00:01:46.095>this <00:01:46.295>stock

39
00:01:47.055 --> 00:01:50.935
<00:01:47.055>that <00:01:47.210>you <00:01:47.366>use <00:01:47.521>debuggers <00:01:47.677>because <00:01:47.832>debuggers <00:01:47.988>come <00:01:48.143>to <00:01:48.299>your <00:01:48.455>help.

40
00:01:50.935 --> 00:01:54.495
<00:01:50.935>They, <00:01:51.075>they <00:01:51.215>help <00:01:51.355>you <00:01:51.495>discover <00:01:51.635>why, <00:01:51.775>why <00:01:51.915>from, <00:01:52.055>um, <00:01:52.195>is <00:01:52.335>there.

41
00:01:55.035 --> 00:01:59.745
<00:01:55.035>Um, <00:01:55.151>and <00:01:55.268>here <00:01:55.384>when <00:01:55.501>we <00:01:55.618>go <00:01:55.735>into <00:01:55.851>the <00:01:55.968>debugger, <00:01:56.085>we <00:01:56.201>put <00:01:56.318>a, <00:01:56.435>um,

42
00:02:00.165 --> 00:02:04.185
<00:02:00.165>uh, <00:02:00.272>we, <00:02:00.380>we <00:02:00.488>call <00:02:00.595>the, <00:02:00.703>um, <00:02:00.811>we <00:02:00.918>put <00:02:01.026>a <00:02:01.134>break <00:02:01.241>point <00:02:01.349>at <00:02:01.457>the <00:02:01.565>line

43
00:02:04.185 --> 00:02:06.625
<00:02:04.185>where <00:02:04.385>the <00:02:04.585>exception <00:02:04.785>said <00:02:04.985>that <00:02:05.185>there's <00:02:05.385>something <00:02:05.585>wrong.

44
00:02:06.805 --> 00:02:09.385
<00:02:06.805>And <00:02:07.038>then <00:02:07.271>we <00:02:07.505>are <00:02:07.738>at <00:02:07.971>the <00:02:08.205>line

45
00:02:09.565 --> 00:02:12.585
<00:02:09.565>and <00:02:09.720>then <00:02:09.876>we <00:02:10.031>see <00:02:10.187>that <00:02:10.342>we're <00:02:10.498>getting <00:02:10.653>the <00:02:10.809>wrong <00:02:10.965>file.

46
00:02:12.805 --> 00:02:16.305
<00:02:12.805>Um, <00:02:12.921>so, <00:02:13.038>uh, <00:02:13.155>we <00:02:13.271>step <00:02:13.388>over <00:02:13.505>and <00:02:13.621>we <00:02:13.738>see <00:02:13.855>that <00:02:13.971>as <00:02:14.088>a <00:02:14.205>file.

47
00:02:16.405 --> 00:02:21.225
<00:02:16.405>We <00:02:16.532>get, <00:02:16.659>um, <00:02:16.786>code <00:02:16.914>lines <00:02:17.041>or <00:02:17.168>lines, <00:02:17.295>um, <00:02:17.423>and <00:02:17.550>this <00:02:17.677>is <00:02:17.805>wrong.

48
00:02:21.325 --> 00:02:23.065
<00:02:21.325>So <00:02:21.558>we <00:02:21.791>just <00:02:22.024>picked <00:02:22.258>the <00:02:22.491>wrong <00:02:22.725>argument

49
00:02:23.125 --> 00:02:25.825
<00:02:23.125>and <00:02:23.265>that's <00:02:23.405>easy <00:02:23.545>to <00:02:23.685>see <00:02:23.825>with, <00:02:23.965>and <00:02:24.105>that's <00:02:24.245>where <00:02:24.385>I <00:02:24.525>help.

50
00:02:26.085 --> 00:02:28.025
<00:02:26.085>Um, <00:02:26.365>and <00:02:26.645>they <00:02:26.925>of <00:02:27.205>course <00:02:27.485>help

51
00:02:28.025 --> 00:02:29.985
<00:02:28.025>with <00:02:28.305>many <00:02:28.585>more <00:02:28.865>things <00:02:29.145>in <00:02:29.425>following.

52
00:02:30.055 --> 00:02:34.465
<00:02:30.055>I'll <00:02:30.230>be <00:02:30.405>showing <00:02:30.580>you <00:02:30.755>many <00:02:30.930>UI <00:02:31.105>examples, <00:02:31.280>um, <00:02:31.455>um,

53
00:02:34.595 --> 00:02:37.825
<00:02:34.595>using <00:02:34.750>Intel <00:02:34.906>J <00:02:35.061>just <00:02:35.217>because <00:02:35.372>that's <00:02:35.528>like <00:02:35.683>my <00:02:35.839>daily <00:02:35.995>driver.

54
00:02:38.205 --> 00:02:41.105
<00:02:38.204>But <00:02:38.344>of <00:02:38.484>course <00:02:38.624>most <00:02:38.765>of <00:02:38.904>the <00:02:39.045>examples, <00:02:39.184>most <00:02:39.325>of <00:02:39.464>the <00:02:39.605>things

55
00:02:41.125 --> 00:02:44.225
<00:02:41.125>behind <00:02:41.300>it <00:02:41.475>also <00:02:41.650>work <00:02:41.825>for <00:02:42.000>other <00:02:42.175>IDs <00:02:42.350>like <00:02:42.525>Eclipse.

56
00:02:45.325 --> 00:02:47.625
<00:02:45.325>Uh, <00:02:45.558>so <00:02:45.791>why, <00:02:46.024>why <00:02:46.258>should <00:02:46.491>you <00:02:46.725>do,

57
00:02:48.205 --> 00:02:52.865
<00:02:48.204>why <00:02:48.380>should <00:02:48.554>you <00:02:48.730>debug <00:02:48.904>There <00:02:49.079>essentially <00:02:49.255>six, <00:02:49.429>um, <00:02:49.605>reasons,

58
00:02:53.085 --> 00:02:56.985
<00:02:53.085>and <00:02:53.240>that's <00:02:53.396>from <00:02:53.551>Igo <00:02:53.707>OV <00:02:53.862>someone <00:02:54.018>who <00:02:54.173>works <00:02:54.329>at <00:02:54.485>checkpoints

59
00:02:56.985 --> 00:03:01.565
<00:02:56.985>and <00:02:57.085>he <00:02:57.185>wrote, <00:02:57.285>yeah, <00:02:57.385>you <00:02:57.485>want <00:02:57.585>to <00:02:57.685>find <00:02:57.785>a <00:02:57.885>fix <00:02:57.985>bug <00:02:58.085>or <00:02:58.185>a <00:02:58.285>fix <00:02:58.385>bug.

60
00:03:01.625 --> 00:03:03.165
<00:03:01.625>Of <00:03:01.856>course <00:03:02.087>you <00:03:02.317>want <00:03:02.549>to <00:03:02.780>analyze <00:03:03.011>the

61
00:03:03.165 --> 00:03:04.325
<00:03:03.165>code <00:03:03.426>to <00:03:03.686>get <00:03:03.947>an <00:03:04.209>understanding.

62
00:03:04.825 --> 00:03:06.925
<00:03:04.825>You <00:03:05.024>can <00:03:05.225>add <00:03:05.424>more <00:03:05.625>logging <00:03:05.825>on <00:03:06.024>the <00:03:06.225>fly.

63
00:03:06.985 --> 00:03:10.445
<00:03:06.985>You <00:03:07.140>can <00:03:07.296>change <00:03:07.451>the <00:03:07.607>behavior <00:03:07.762>on <00:03:07.918>the <00:03:08.073>fly <00:03:08.229>to <00:03:08.385>optimize

64
00:03:10.505 --> 00:03:11.685
<00:03:10.505>to <00:03:10.859>try <00:03:11.213>things <00:03:11.567>out.

65
00:03:12.025 --> 00:03:14.485
<00:03:12.025>And <00:03:12.200>you <00:03:12.375>can <00:03:12.550>also <00:03:12.725>opt, <00:03:12.900>um, <00:03:13.075>analyze <00:03:13.250>memory <00:03:13.425>issues

66
00:03:15.025 --> 00:03:18.805
<00:03:15.025>and <00:03:15.258>many, <00:03:15.491>many <00:03:15.725>more <00:03:15.958>things, <00:03:16.191>um, <00:03:16.425>like

67
00:03:20.025 --> 00:03:21.645
<00:03:20.025>on <00:03:20.491>the <00:03:20.958>fly <00:03:21.425>monitoring.

68
00:03:22.265 --> 00:03:24.925
<00:03:22.265>But <00:03:22.440>let's <00:03:22.614>discover <00:03:22.790>this <00:03:22.964>in, <00:03:23.140>uh, <00:03:23.315>in <00:03:23.489>the <00:03:23.665>following.

69
00:03:25.945 --> 00:03:30.005
<00:03:25.945>So, <00:03:26.225>um, <00:03:26.505>uh, <00:03:26.785>a <00:03:27.065>question <00:03:27.345>that,

70
00:03:30.005 --> 00:03:32.805
<00:03:30.005>that <00:03:30.160>I <00:03:30.316>typically <00:03:30.471>do, <00:03:30.627>uh, <00:03:30.782>when, <00:03:30.938>when <00:03:31.093>I'm <00:03:31.249>at <00:03:31.405>stage,

71
00:03:32.985 --> 00:03:36.765
<00:03:32.985>I'm <00:03:33.160>just <00:03:33.335>usually <00:03:33.510>asking <00:03:33.685>JK <00:03:33.860>whether <00:03:34.035>they're <00:03:34.210>open <00:03:34.385>JK

72
00:03:36.765 --> 00:03:38.485
<00:03:36.765>developers <00:03:37.231>here, <00:03:37.698>because, <00:03:38.165>um,

73
00:03:38.675 --> 00:03:40.725
<00:03:38.675>what <00:03:38.850>you <00:03:39.025>see <00:03:39.200>in <00:03:39.375>the <00:03:39.550>following <00:03:39.725>is <00:03:39.900>just <00:03:40.075>my,

74
00:03:41.705 --> 00:03:43.365
<00:03:41.704>my <00:03:41.984>knowledge <00:03:42.265>of <00:03:42.545>how <00:03:42.825>it <00:03:43.105>works.

75
00:03:43.825 --> 00:03:45.685
<00:03:43.825>But <00:03:44.000>of <00:03:44.174>course, <00:03:44.350>there <00:03:44.524>are <00:03:44.700>people <00:03:44.875>out <00:03:45.049>there <00:03:45.225>that

76
00:03:45.685 --> 00:03:47.045
<00:03:45.685>that <00:03:46.093>know <00:03:46.501>slowly <00:03:46.909>more.

77
00:03:47.145 --> 00:03:49.445
<00:03:47.145>So, <00:03:47.845>um, <00:03:48.545>um,

78
00:03:52.025 --> 00:03:55.445
<00:03:52.025>uh, <00:03:52.200>many <00:03:52.375>of <00:03:52.550>you <00:03:52.725>have <00:03:52.900>used <00:03:53.075>the <00:03:53.250>debug <00:03:53.425>before,

79
00:03:55.465 --> 00:03:57.685
<00:03:55.465>but <00:03:55.620>for <00:03:55.776>those <00:03:55.931>of <00:03:56.087>you <00:03:56.242>that <00:03:56.398>haven't <00:03:56.553>used <00:03:56.709>the <00:03:56.865>debug

80
00:03:57.685 --> 00:04:00.445
<00:03:57.685>before, <00:03:57.885>um, <00:03:58.085>I <00:03:58.285>put <00:03:58.485>a <00:03:58.685>QR <00:03:58.885>link <00:03:59.085>there

81
00:04:00.585 --> 00:04:04.485
<00:04:00.585>and <00:04:00.725>there <00:04:00.865>are <00:04:01.005>some <00:04:01.145>correct <00:04:01.285>resources, <00:04:01.425>um, <00:04:01.565>related <00:04:01.705>to <00:04:01.845>Tel <00:04:01.985>J

82
00:04:04.505 --> 00:04:05.725
<00:04:04.505>but <00:04:04.870>also <00:04:05.237>to <00:04:05.603>Eclipse.

83
00:04:05.985 --> 00:04:08.405
<00:04:05.985>And <00:04:06.185>that's <00:04:06.385>not <00:04:06.585>what <00:04:06.785>you, <00:04:06.985>uh, <00:04:07.185>what <00:04:07.385>well,

84
00:04:08.405 --> 00:04:09.925
<00:04:08.405>I'll <00:04:08.633>give <00:04:08.861>you <00:04:09.089>in <00:04:09.317>in <00:04:09.545>the <00:04:09.773>talk.

85
00:04:10.165 --> 00:04:12.885
<00:04:10.165>I <00:04:10.320>don't <00:04:10.476>show <00:04:10.631>you <00:04:10.787>how <00:04:10.942>to <00:04:11.098>simply <00:04:11.253>use <00:04:11.409>the <00:04:11.565>debug

86
00:04:12.965 --> 00:04:16.925
<00:04:12.965>and <00:04:13.120>how <00:04:13.276>to <00:04:13.431>debug <00:04:13.587>effectively <00:04:13.742>because <00:04:13.898>yeah, <00:04:14.053>go <00:04:14.209>going <00:04:14.365>dinner

87
00:04:16.925 --> 00:04:19.325
<00:04:16.925>and <00:04:17.080>that's <00:04:17.236>there, <00:04:17.391>there <00:04:17.547>are <00:04:17.702>lots <00:04:17.858>of <00:04:18.013>other <00:04:18.169>resources <00:04:18.325>here.

88
00:04:19.985 --> 00:04:24.845
<00:04:19.985>Um, <00:04:20.160>but <00:04:20.335>rather <00:04:20.510>I <00:04:20.685>tell <00:04:20.860>you <00:04:21.035>about <00:04:21.210>things, <00:04:21.385>um,

89
00:04:25.985 --> 00:04:28.565
<00:04:25.985>in <00:04:26.160>in, <00:04:26.335>in <00:04:26.510>how <00:04:26.685>to, <00:04:26.860>how <00:04:27.035>to <00:04:27.210>use <00:04:27.385>them

90
00:04:28.945 --> 00:04:32.125
<00:04:28.945>and <00:04:29.145>about <00:04:29.344>the, <00:04:29.545>about <00:04:29.745>the <00:04:29.945>many <00:04:30.145>hidden <00:04:30.344>features.

91
00:04:32.125 --> 00:04:34.645
<00:04:32.125>And <00:04:32.280>I <00:04:32.436>think <00:04:32.591>debugging, <00:04:32.747>like <00:04:32.902>the <00:04:33.058>skill <00:04:33.213>of <00:04:33.369>debugging <00:04:33.525>belongs

92
00:04:34.645 --> 00:04:38.245
<00:04:34.645>to <00:04:34.772>your <00:04:34.899>toolbox <00:04:35.026>that <00:04:35.154>you <00:04:35.281>open, <00:04:35.408>um, <00:04:35.535>when <00:04:35.663>you <00:04:35.790>have <00:04:35.917>a <00:04:36.044>problem.

93
00:04:38.345 --> 00:04:43.085
<00:04:38.345>And <00:04:38.485>there <00:04:38.625>also <00:04:38.765>belongs <00:04:38.905>in <00:04:39.045>the, <00:04:39.185>the <00:04:39.325>capability <00:04:39.465>to <00:04:39.605>write <00:04:39.745>tests

94
00:04:43.185 --> 00:04:44.645
<00:04:43.185>and <00:04:43.513>also <00:04:43.842>to <00:04:44.170>do <00:04:44.498>profiling.

95
00:04:45.385 --> 00:04:49.005
<00:04:45.385>Um, <00:04:45.525>and <00:04:45.664>I'm <00:04:45.805>Johannes, <00:04:45.945>um, <00:04:46.085>as <00:04:46.224>you <00:04:46.365>all <00:04:46.505>already <00:04:46.645>know, <00:04:46.784>um,

96
00:04:49.685 --> 00:04:51.525
<00:04:49.685>I <00:04:50.035>usually <00:04:50.385>talk <00:04:50.735>about <00:04:51.085>profiling,

97
00:04:51.545 --> 00:04:55.165
<00:04:51.545>that's <00:04:51.685>me <00:04:51.825>in <00:04:51.965>at <00:04:52.105>Geek <00:04:52.245>in <00:04:52.385>London <00:04:52.525>in <00:04:52.665>March <00:04:52.805>last <00:04:52.945>year.

98
00:04:55.225 --> 00:04:56.805
<00:04:55.225>And <00:04:55.458>I <00:04:55.691>work <00:04:55.925>at <00:04:56.158>the <00:04:56.391>submachine <00:04:56.625>team.

99
00:04:56.905 --> 00:04:59.565
<00:04:56.905>We <00:04:57.060>are <00:04:57.216>the <00:04:57.371>third <00:04:57.527>biggest <00:04:57.682>contributor <00:04:57.838>to <00:04:57.993>the <00:04:58.149>open <00:04:58.304>JK.

100
00:05:00.105 --> 00:05:04.485
<00:05:00.105>Um, <00:05:00.232>and <00:05:00.359>we're <00:05:00.486>one <00:05:00.614>of <00:05:00.741>the <00:05:00.868>many <00:05:00.995>trades <00:05:01.123>projects, <00:05:01.250>uh, <00:05:01.377>at <00:05:01.505>SAP.

101
00:05:05.825 --> 00:05:08.805
<00:05:05.825>And <00:05:06.104>so <00:05:06.385>I <00:05:06.664>usually <00:05:06.945>work <00:05:07.224>on

102
00:05:09.605 --> 00:05:10.845
<00:05:09.605>software <00:05:10.163>related <00:05:10.721>profiling,

103
00:05:10.905 --> 00:05:14.245
<00:05:10.905>but <00:05:11.044>they <00:05:11.184>also <00:05:11.325>work <00:05:11.465>on, <00:05:11.604>on <00:05:11.744>debugging, <00:05:11.885>fix <00:05:12.025>and <00:05:12.164>stuff <00:05:12.304>steering.

104
00:05:15.305 --> 00:05:18.765
<00:05:15.305>So, <00:05:15.460>uh, <00:05:15.616>now <00:05:15.771>come <00:05:15.927>with <00:05:16.082>me <00:05:16.238>down <00:05:16.393>the <00:05:16.549>rabbit <00:05:16.705>hole

105
00:05:19.065 --> 00:05:23.685
<00:05:19.065>and <00:05:19.220>we <00:05:19.376>always <00:05:19.531>start <00:05:19.687>with <00:05:19.842>how <00:05:19.998>the, <00:05:20.153>the <00:05:20.309>broad <00:05:20.465>architecture

106
00:05:23.685 --> 00:05:27.965
<00:05:23.685>of <00:05:23.840>like <00:05:23.996>your <00:05:24.151>debugging <00:05:24.307>tools, <00:05:24.462>um, <00:05:24.618>is, <00:05:24.773>is <00:05:24.929>laid <00:05:25.085>out.

107
00:05:28.465 --> 00:05:31.565
<00:05:28.465>So <00:05:28.620>general <00:05:28.776>architecture <00:05:28.931>is <00:05:29.087>that <00:05:29.242>you <00:05:29.398>have <00:05:29.553>your <00:05:29.709>ID <00:05:29.864>with

108
00:05:31.565 --> 00:05:32.845
<00:05:31.565>with <00:05:31.949>a <00:05:32.333>UI <00:05:32.717>debugger.

109
00:05:33.065 --> 00:05:37.405
<00:05:33.065>And <00:05:33.220>this <00:05:33.376>uses <00:05:33.531>Java <00:05:33.687>to <00:05:33.842>call <00:05:33.998>the <00:05:34.153>Java <00:05:34.309>debunk <00:05:34.465>interface.

110
00:05:37.405 --> 00:05:39.405
<00:05:37.405>And <00:05:37.638>this <00:05:37.871>Java <00:05:38.104>Deb <00:05:38.338>bank <00:05:38.571>interface <00:05:38.804>then

111
00:05:39.915 --> 00:05:41.645
<00:05:39.915>uses <00:05:40.265>an <00:05:40.615>arcane <00:05:40.965>protocol <00:05:41.315>called

112
00:05:42.405 --> 00:05:46.485
<00:05:42.405>JDWP <00:05:42.638>Java <00:05:42.871>debug <00:05:43.104>wire <00:05:43.338>protocol <00:05:43.571>to <00:05:43.804>interface

113
00:05:46.555 --> 00:05:51.455
<00:05:46.555>with <00:05:46.788>your <00:05:47.021>JVM <00:05:47.255>and <00:05:47.488>also <00:05:47.721>to, <00:05:47.955>um,

114
00:05:52.235 --> 00:05:54.975
<00:05:52.235>and <00:05:52.515>this <00:05:52.795>agent <00:05:53.075>then <00:05:53.355>uses <00:05:53.635>JVMT,

115
00:05:55.055 --> 00:05:58.005
<00:05:55.055>I <00:05:55.255>like <00:05:55.455>the <00:05:55.655>JVM <00:05:55.855>native <00:05:56.055>interface <00:05:56.255>to <00:05:56.455>interface

116
00:05:58.005 --> 00:05:59.405
<00:05:58.005>with <00:05:58.425>the <00:05:58.844>JVM <00:05:59.265>directly.

117
00:05:59.905 --> 00:06:01.645
<00:05:59.905>Um, <00:06:00.255>then <00:06:00.604>calls <00:06:00.955>the <00:06:01.304>stuff.

118
00:06:03.065 --> 00:06:07.925
<00:06:03.065>And <00:06:03.220>this <00:06:03.376>whole <00:06:03.531>architecture <00:06:03.687>here <00:06:03.842>is <00:06:03.998>called <00:06:04.153>the, <00:06:04.309>the <00:06:04.465>JPDA,

119
00:06:08.125 --> 00:06:11.085
<00:06:08.125>I <00:06:08.300>think <00:06:08.475>it <00:06:08.650>stands <00:06:08.825>for <00:06:09.000>Java <00:06:09.175>Platform <00:06:09.350>Debug <00:06:09.525>Architecture.

120
00:06:11.225 --> 00:06:16.105
<00:06:11.225>And <00:06:11.341>the <00:06:11.458>cool <00:06:11.575>thing <00:06:11.691>is <00:06:11.808>with <00:06:11.925>we <00:06:12.041>as <00:06:12.158>code, <00:06:12.275>it's <00:06:12.391>almost <00:06:12.508>the <00:06:12.625>same

121
00:06:16.105 --> 00:06:17.225
<00:06:16.105>because <00:06:16.609>like <00:06:17.113>VS.

122
00:06:17.225 --> 00:06:21.425
<00:06:17.225>Code <00:06:17.380>has <00:06:17.536>this <00:06:17.691>new, <00:06:17.847>um, <00:06:18.002>has <00:06:18.158>has, <00:06:18.313>um, <00:06:18.469>um, <00:06:18.625>eclipse

123
00:06:21.425 --> 00:06:26.145
<00:06:21.425>and <00:06:21.600>actually <00:06:21.775>a <00:06:21.950>click <00:06:22.125>space, <00:06:22.300>um, <00:06:22.475>debugging <00:06:22.650>server, <00:06:22.825>uh,

124
00:06:26.175 --> 00:06:29.145
<00:06:26.175>that <00:06:26.350>translates <00:06:26.525>between <00:06:26.700>the <00:06:26.875>debug <00:06:27.050>adapter <00:06:27.225>protocol <00:06:27.400>V <00:06:27.575>ass

125
00:06:29.145 --> 00:06:33.825
<00:06:29.145>code, <00:06:29.320>um, <00:06:29.495>and <00:06:29.669>in <00:06:29.844>the <00:06:30.020>end <00:06:30.195>JDI <00:06:30.370>and <00:06:30.544>JWPN.

126
00:06:33.825 --> 00:06:35.465
<00:06:33.825>So <00:06:34.175>when <00:06:34.525>using <00:06:34.875>this <00:06:35.224>code

127
00:06:35.685 --> 00:06:38.865
<00:06:35.685>and <00:06:35.840>when <00:06:35.996>you're <00:06:36.151>using <00:06:36.307>a <00:06:36.462>debugger, <00:06:36.618>you're <00:06:36.773>actually <00:06:36.929>using, <00:06:37.085>uh,

128
00:06:39.545 --> 00:06:40.945
<00:06:39.545>eclipse <00:06:39.965>behind <00:06:40.385>the <00:06:40.805>scenes.

129
00:06:41.685 --> 00:06:43.905
<00:06:41.685>So <00:06:43.085>now

130
00:06:44.035 --> 00:06:48.305
<00:06:44.034>after <00:06:44.174>I <00:06:44.314>showed <00:06:44.455>you <00:06:44.594>how <00:06:44.734>the <00:06:44.874>architecture <00:06:45.015>kind <00:06:45.155>of <00:06:45.294>works, <00:06:45.434>I'll,

131
00:06:48.305 --> 00:06:49.385
<00:06:48.305>I'll <00:06:48.629>show <00:06:48.953>you, <00:06:49.277>um,

132
00:06:49.565 --> 00:06:51.825
<00:06:49.565>and <00:06:49.740>talk <00:06:49.915>a <00:06:50.090>bit <00:06:50.265>more <00:06:50.440>about <00:06:50.615>your <00:06:50.790>remote <00:06:50.965>debug.

133
00:06:52.045 --> 00:06:55.505
<00:06:52.045>So <00:06:52.172>the <00:06:52.299>cool <00:06:52.426>thing <00:06:52.554>with <00:06:52.681>remote <00:06:52.808>dba, <00:06:52.935>you <00:06:53.063>can <00:06:53.190>easily <00:06:53.317>use <00:06:53.445>it

134
00:06:55.505 --> 00:06:59.465
<00:06:55.505>to <00:06:55.632>connect <00:06:55.759>to <00:06:55.886>remote, <00:06:56.014>um, <00:06:56.141>you <00:06:56.268>can <00:06:56.395>easily <00:06:56.523>use <00:06:56.650>it <00:06:56.777>to <00:06:56.905>re

135
00:06:59.645 --> 00:07:02.345
<00:06:59.645>to <00:06:59.878>connect <00:07:00.111>to <00:07:00.344>remote <00:07:00.578>JVMs, <00:07:00.811>for <00:07:01.044>example.

136
00:07:02.375 --> 00:07:06.705
<00:07:02.375>Here <00:07:02.530>you <00:07:02.686>can <00:07:02.841>configure <00:07:02.997>it, <00:07:03.152>um, <00:07:03.308>by <00:07:03.463>the <00:07:03.619>DBA <00:07:03.775>configuration,

137
00:07:06.805 --> 00:07:10.665
<00:07:06.805>by <00:07:06.960>the <00:07:07.116>run <00:07:07.271>DBA <00:07:07.427>configurations <00:07:07.582>tab <00:07:07.738>in <00:07:07.893>Intel <00:07:08.049>J <00:07:08.205>on

138
00:07:10.665 --> 00:07:13.705
<00:07:10.665>that <00:07:10.820>tells <00:07:10.976>you <00:07:11.131>also <00:07:11.287>which <00:07:11.442>command <00:07:11.598>line <00:07:11.753>to, <00:07:11.909>to <00:07:12.065>append

139
00:07:13.765 --> 00:07:16.385
<00:07:13.765>to <00:07:13.998>your <00:07:14.231>JVM <00:07:14.465>to <00:07:14.698>start <00:07:14.931>this <00:07:15.164>agent.

140
00:07:17.325 --> 00:07:20.785
<00:07:17.325>And <00:07:17.604>what's <00:07:17.885>interesting <00:07:18.164>that <00:07:18.445>typically, <00:07:18.724>um,

141
00:07:20.785 --> 00:07:24.545
<00:07:20.785>intelligent <00:07:20.940>j <00:07:21.096>recommends <00:07:21.251>you <00:07:21.407>to <00:07:21.562>give <00:07:21.718>as <00:07:21.873>natural <00:07:22.029>like <00:07:22.185>star

142
00:07:25.215 --> 00:07:28.345
<00:07:25.215>call, <00:07:25.414>um, <00:07:25.614>five <00:07:25.815>and <00:07:26.015>files <00:07:26.215>like <00:07:26.414>the <00:07:26.614>port.

143
00:07:28.565 --> 00:07:32.305
<00:07:28.565>But <00:07:28.740>this <00:07:28.915>means <00:07:29.090>that <00:07:29.265>your <00:07:29.440>JVM <00:07:29.615>accepts <00:07:29.790>all <00:07:29.965>incoming

144
00:07:32.305 --> 00:07:35.985
<00:07:32.305>connections <00:07:32.655>at <00:07:33.005>port, <00:07:33.355>um, <00:07:33.705>5,005.

145
00:07:36.775 --> 00:07:40.905
<00:07:36.775>Usually <00:07:36.914>when <00:07:37.054>you're <00:07:37.195>in <00:07:37.335>you, <00:07:37.474>you <00:07:37.614>want <00:07:37.755>to <00:07:37.895>tailor <00:07:38.034>it <00:07:38.174>down

146
00:07:40.925 --> 00:07:44.745
<00:07:40.925>to <00:07:41.065>like <00:07:41.205>really <00:07:41.345>the <00:07:41.485>IPO <00:07:41.625>user <00:07:41.765>system <00:07:41.905>just <00:07:42.045>to <00:07:42.185>prevent <00:07:42.325>some,

147
00:07:45.365 --> 00:07:46.665
<00:07:45.365>um, <00:07:45.950>security <00:07:46.535>instance.

148
00:07:47.405 --> 00:07:51.955
<00:07:47.405>Um, <00:07:47.755>so, <00:07:48.104>um, <00:07:48.455>are <00:07:48.804>the,

149
00:07:51.955 --> 00:07:54.275
<00:07:51.955>the <00:07:52.130>questions <00:07:52.305>then <00:07:52.479>of <00:07:52.655>course, <00:07:52.830>are <00:07:53.005>there <00:07:53.180>any <00:07:53.354>differences

150
00:07:54.275 --> 00:07:57.875
<00:07:54.275>between <00:07:54.625>remote <00:07:54.974>and <00:07:55.325>non-report, <00:07:55.674>um,

151
00:07:59.485 --> 00:08:03.305
<00:07:59.485>uh, <00:07:59.951>between <00:08:00.418>non-REM <00:08:00.885>remote

152
00:08:03.305 --> 00:08:04.905
<00:08:03.305>and <00:08:03.655>non-REM <00:08:04.005>remote <00:08:04.355>debugging <00:08:04.705>sessions?

153
00:08:05.045 --> 00:08:07.305
<00:08:05.045>And <00:08:05.200>I <00:08:05.356>dunno <00:08:05.511>whether <00:08:05.667>it <00:08:05.822>works <00:08:05.978>with <00:08:06.133>the <00:08:06.289>comments, <00:08:06.445>but,

154
00:08:07.885 --> 00:08:11.025
<00:08:07.885>but <00:08:08.040>maybe <00:08:08.196>do <00:08:08.351>any <00:08:08.507>of <00:08:08.662>you <00:08:08.818>have <00:08:08.973>some, <00:08:09.129>some <00:08:09.284>ideas,

155
00:08:11.275 --> 00:08:13.025
<00:08:11.275>other <00:08:11.625>differences <00:08:11.974>or <00:08:12.325>aren't <00:08:12.674>there,

156
00:08:22.335 --> 00:08:26.505
<00:08:22.335>uh, <00:08:22.801>okay, <00:08:23.268>maybe, <00:08:23.734>um,

157
00:08:26.985 --> 00:08:28.305
<00:08:26.985>I <00:08:27.183>know <00:08:27.381>whether <00:08:27.579>I <00:08:27.777>see <00:08:27.975>in <00:08:28.173>comments

158
00:08:28.485 --> 00:08:33.075
<00:08:28.485>but <00:08:28.685>about, <00:08:28.885>um, <00:08:29.085>there, <00:08:29.285>there <00:08:29.485>aren't <00:08:29.685>any <00:08:29.885>differences.

159
00:08:35.515 --> 00:08:36.695
<00:08:35.515>Um, <00:08:35.780>it's <00:08:36.046>just <00:08:36.311>the <00:08:36.577>same.

160
00:08:36.875 --> 00:08:41.255
<00:08:36.875>You <00:08:37.030>just <00:08:37.186>connect <00:08:37.341>to <00:08:37.497>your <00:08:37.652>JVM <00:08:37.808>directly <00:08:37.963>and <00:08:38.119>the <00:08:38.275>j

161
00:08:41.315 --> 00:08:45.135
<00:08:41.315>and <00:08:41.442>your <00:08:41.569>Intel <00:08:41.696>J <00:08:41.824>and <00:08:41.951>your <00:08:42.078>Eclipse <00:08:42.205>hides <00:08:42.333>just, <00:08:42.460>just <00:08:42.587>from <00:08:42.715>you.

162
00:08:45.515 --> 00:08:47.775
<00:08:45.515>So, <00:08:45.795>um, <00:08:46.074>in <00:08:46.355>the <00:08:46.635>following, <00:08:46.915>um,

163
00:08:48.285 --> 00:08:51.575
<00:08:48.285>I'll <00:08:48.440>be <00:08:48.596>talking <00:08:48.751>a <00:08:48.907>bit <00:08:49.062>about <00:08:49.218>some <00:08:49.373>little <00:08:49.529>known <00:08:49.685>gems

164
00:08:52.125 --> 00:08:54.695
<00:08:52.125>that <00:08:52.358>have <00:08:52.591>found <00:08:52.825>together <00:08:53.058>with <00:08:53.291>Thomas <00:08:53.525>Mont.

165
00:08:54.795 --> 00:08:59.055
<00:08:54.795>Um, <00:08:54.935>and <00:08:55.074>I <00:08:55.214>also <00:08:55.354>wrote <00:08:55.495>a <00:08:55.635>blog <00:08:55.775>post <00:08:55.915>on <00:08:56.055>them, <00:08:56.194>um,

166
00:08:59.195 --> 00:09:01.735
<00:08:59.195>that's <00:08:59.661>called <00:09:00.128>Omni <00:09:00.595>Mounting.

167
00:09:01.875 --> 00:09:05.095
<00:09:01.875>Um, <00:09:02.155>so <00:09:02.435>the <00:09:02.715>idea <00:09:02.995>is, <00:09:03.275>uh,

168
00:09:05.285 --> 00:09:09.015
<00:09:05.285>that <00:09:05.440>you <00:09:05.596>can <00:09:05.751>tell <00:09:05.907>the <00:09:06.062>JVM <00:09:06.218>please <00:09:06.373>start <00:09:06.529>debu <00:09:06.685>session

169
00:09:09.115 --> 00:09:11.815
<00:09:09.115>or <00:09:09.315>please <00:09:09.515>wait <00:09:09.715>that <00:09:09.915>someone <00:09:10.115>connects <00:09:10.315>to <00:09:10.515>you.

170
00:09:12.475 --> 00:09:14.405
<00:09:12.475>Um, <00:09:13.875>only

171
00:09:14.895 --> 00:09:18.205
<00:09:14.895>after <00:09:15.050>you, <00:09:15.206>you <00:09:15.361>told <00:09:15.517>it <00:09:15.672>on <00:09:15.828>the <00:09:15.983>command <00:09:16.139>line, <00:09:16.295>Hey,

172
00:09:18.325 --> 00:09:20.645
<00:09:18.325>JVM <00:09:18.558>please <00:09:18.791>be <00:09:19.025>available <00:09:19.258>for <00:09:19.491>Deb <00:09:19.725>Bank.

173
00:09:20.665 --> 00:09:23.085
<00:09:20.665>And <00:09:20.805>that's <00:09:20.944>pretty <00:09:21.084>nice. <00:09:21.224>That <00:09:21.365>saves <00:09:21.505>you <00:09:21.645>a <00:09:21.785>bit <00:09:21.925>of <00:09:22.064>performance,

174
00:09:23.085 --> 00:09:24.805
<00:09:23.085>especially <00:09:23.318>when <00:09:23.551>you're <00:09:23.785>waiting <00:09:24.018>a <00:09:24.251>long <00:09:24.485>time

175
00:09:25.315 --> 00:09:26.405
<00:09:25.315>till <00:09:25.642>Deb <00:09:25.969>Bank <00:09:26.295>starts.

176
00:09:26.865 --> 00:09:31.275
<00:09:26.865>Um, <00:09:27.020>there's <00:09:27.176>also <00:09:27.331>the <00:09:27.487>features <00:09:27.642>of <00:09:27.798>on <00:09:27.953>exceptionally <00:09:28.109>Deb <00:09:28.265>Bank.

177
00:09:31.415 --> 00:09:35.075
<00:09:31.415>So <00:09:31.570>the <00:09:31.726>ideas <00:09:31.881>that <00:09:32.037>when <00:09:32.192>you <00:09:32.348>throw <00:09:32.503>a <00:09:32.659>new <00:09:32.814>exception

178
00:09:35.175 --> 00:09:37.315
<00:09:35.175>or <00:09:35.454>specific <00:09:35.734>exception <00:09:36.015>the <00:09:36.295>first <00:09:36.574>time,

179
00:09:37.665 --> 00:09:39.235
<00:09:37.665>then <00:09:37.944>you <00:09:38.224>start <00:09:38.505>a <00:09:38.785>debugging <00:09:39.064>session,

180
00:09:39.405 --> 00:09:42.955
<00:09:39.405>which <00:09:39.579>can <00:09:39.755>be <00:09:39.930>quite <00:09:40.105>useful <00:09:40.280>when <00:09:40.454>you <00:09:40.630>debug <00:09:40.805>some,

181
00:09:44.385 --> 00:09:46.875
<00:09:44.385>some <00:09:44.665>exception <00:09:44.944>that <00:09:45.225>happens <00:09:45.505>quite <00:09:45.785>long

182
00:09:46.875 --> 00:09:51.565
<00:09:46.875>after <00:09:47.108>your, <00:09:47.341>um, <00:09:47.575>after <00:09:47.808>your <00:09:48.041>application <00:09:48.275>started.

183
00:09:52.665 --> 00:09:54.965
<00:09:52.665>And <00:09:52.898>there <00:09:53.131>are <00:09:53.365>few <00:09:53.598>other <00:09:53.831>options <00:09:54.064>here.

184
00:09:55.225 --> 00:10:00.045
<00:09:55.225>Um, <00:09:55.365>for <00:09:55.505>example, <00:09:55.645>the, <00:09:55.785>you <00:09:55.925>can <00:09:56.065>tell <00:09:56.205>it <00:09:56.345>to, <00:09:56.485>um, <00:09:56.625>to

185
00:10:00.745 --> 00:10:03.645
<00:10:00.745>be <00:10:00.920>not <00:10:01.095>in <00:10:01.270>several <00:10:01.445>mode, <00:10:01.620>so <00:10:01.795>to <00:10:01.970>not <00:10:02.145>listen,

186
00:10:03.785 --> 00:10:05.725
<00:10:03.785>but <00:10:04.135>to <00:10:04.485>actually, <00:10:04.834>uh, <00:10:05.185>go

187
00:10:05.725 --> 00:10:07.245
<00:10:05.725>and <00:10:06.067>connect <00:10:06.409>to <00:10:06.751>a <00:10:07.093>debugger,

188
00:10:07.245 --> 00:10:10.245
<00:10:07.245>which <00:10:07.420>might <00:10:07.595>be <00:10:07.770>interesting <00:10:07.945>when <00:10:08.120>you <00:10:08.295>are <00:10:08.470>in, <00:10:08.645>um,

189
00:10:12.295 --> 00:10:13.615
<00:10:12.295>fireball <00:10:13.483>applications

190
00:10:13.615 --> 00:10:16.095
<00:10:13.615>where <00:10:13.755>you <00:10:13.895>can <00:10:14.035>all <00:10:14.175>like <00:10:14.315>reach <00:10:14.455>out <00:10:14.595>but <00:10:14.735>not <00:10:14.875>reach <00:10:15.015>in.

191
00:10:16.875 --> 00:10:21.535
<00:10:16.875>And <00:10:17.050>there's <00:10:17.225>also <00:10:17.400>here <00:10:17.575>the <00:10:17.750>availability <00:10:17.925>of <00:10:18.100>other <00:10:18.275>ways

192
00:10:21.835 --> 00:10:25.935
<00:10:21.835>to, <00:10:21.990>to <00:10:22.146>use, <00:10:22.301>um, <00:10:22.457>not <00:10:22.612>to <00:10:22.768>go <00:10:22.923>over <00:10:23.079>like <00:10:23.235>sockets,

193
00:10:25.935 --> 00:10:30.455
<00:10:25.935>but <00:10:26.090>on <00:10:26.246>venues <00:10:26.401>to <00:10:26.557>also <00:10:26.712>go <00:10:26.868>over, <00:10:27.023>uh, <00:10:27.179>shared <00:10:27.334>memory,

194
00:10:30.545 --> 00:10:32.055
<00:10:30.545>which <00:10:30.816>might <00:10:31.088>be <00:10:31.360>a <00:10:31.632>bit <00:10:31.904>better,

195
00:10:32.155 --> 00:10:35.895
<00:10:32.155>but <00:10:32.388>um, <00:10:32.621>yeah, <00:10:32.855>not <00:10:33.088>support <00:10:33.321>on <00:10:33.555>Linux.

196
00:10:36.395 --> 00:10:38.455
<00:10:36.395>And <00:10:36.628>there <00:10:36.861>are <00:10:37.095>also <00:10:37.328>some <00:10:37.561>examples <00:10:37.795>there.

197
00:10:38.475 --> 00:10:39.735
<00:10:38.475>And <00:10:38.701>that's, <00:10:38.928>and <00:10:39.155>that's <00:10:39.382>very <00:10:39.609>cool.

198
00:10:39.755 --> 00:10:41.295
<00:10:39.755>So <00:10:40.032>I <00:10:40.309>can <00:10:40.586>really <00:10:40.863>recommend <00:10:41.141>like

199
00:10:41.935 --> 00:10:44.655
<00:10:41.935>checking <00:10:42.214>the <00:10:42.494>JWP <00:10:42.775>help <00:10:43.055>documentation <00:10:43.334>out.

200
00:10:45.355 --> 00:10:50.085
<00:10:45.355>Um, <00:10:46.055>but <00:10:46.755>now

201
00:10:50.565 --> 00:10:53.045
<00:10:50.565>I <00:10:50.720>want <00:10:50.876>to <00:10:51.031>take <00:10:51.187>you <00:10:51.342>with <00:10:51.498>me <00:10:51.653>on <00:10:51.809>a <00:10:51.965>journey.

202
00:10:53.385 --> 00:10:55.605
<00:10:53.385>Um, <00:10:53.851>I <00:10:54.318>was, <00:10:54.785>um,

203
00:10:56.285 --> 00:10:59.285
<00:10:56.285>I <00:10:56.459>I <00:10:56.635>went <00:10:56.810>the <00:10:56.985>last <00:10:57.160>year <00:10:57.334>onto <00:10:57.510>Devox <00:10:57.685>Belgium

204
00:10:59.305 --> 00:11:00.565
<00:10:59.305>to <00:10:59.531>give <00:10:59.758>a <00:10:59.985>talk <00:11:00.212>on <00:11:00.439>profile.

205
00:11:00.585 --> 00:11:04.365
<00:11:00.585>And <00:11:00.760>so <00:11:00.935>it <00:11:01.110>started <00:11:01.285>out <00:11:01.460>in <00:11:01.635>kazu <00:11:01.810>in <00:11:01.985>the,

206
00:11:04.365 --> 00:11:05.525
<00:11:04.365>in <00:11:04.573>the <00:11:04.782>dead <00:11:04.991>of <00:11:05.200>the <00:11:05.409>night.

207
00:11:05.745 --> 00:11:09.705
<00:11:05.745>And <00:11:05.872>then <00:11:05.999>I <00:11:06.126>was <00:11:06.254>writing <00:11:06.381>a <00:11:06.508>blog <00:11:06.635>post <00:11:06.763>on <00:11:06.890>the <00:11:07.017>train <00:11:07.145>on,

208
00:11:09.765 --> 00:11:12.145
<00:11:09.765>on <00:11:09.998>the <00:11:10.231>topic <00:11:10.465>of <00:11:10.698>de <00:11:10.931>on <00:11:11.165>demand.

209
00:11:12.405 --> 00:11:14.865
<00:11:12.405>Um, <00:11:12.579>and <00:11:12.755>yeah, <00:11:12.930>they <00:11:13.105>have <00:11:13.280>a <00:11:13.454>nice <00:11:13.630>train <00:11:13.805>station,

210
00:11:14.965 --> 00:11:16.265
<00:11:14.965>can <00:11:15.355>recommend <00:11:15.745>going <00:11:16.135>there,

211
00:11:16.295 --> 00:11:18.145
<00:11:16.295>just <00:11:16.528>be <00:11:16.761>just <00:11:16.995>for <00:11:17.228>the <00:11:17.461>train <00:11:17.694>station.

212
00:11:18.565 --> 00:11:19.985
<00:11:18.565>But <00:11:18.991>yeah, <00:11:19.417>meeting <00:11:19.843>some,

213
00:11:19.985 --> 00:11:21.745
<00:11:19.985>some <00:11:20.265>people <00:11:20.545>loosely <00:11:20.825>relative <00:11:21.105>to <00:11:21.385>Java.

214
00:11:21.745 --> 00:11:26.345
<00:11:21.745>And, <00:11:21.900>um, <00:11:22.056>I <00:11:22.211>was <00:11:22.367>looking <00:11:22.522>into <00:11:22.678>the <00:11:22.833>JDAP <00:11:22.989>agent, <00:11:23.145>um,

215
00:11:27.085 --> 00:11:31.665
<00:11:27.085>and <00:11:27.225>I, <00:11:27.365>I <00:11:27.505>recognized <00:11:27.645>the <00:11:27.785>back <00:11:27.925>with, <00:11:28.065>um, <00:11:28.205>with <00:11:28.345>on <00:11:28.485>show

216
00:11:31.695 --> 00:11:35.865
<00:11:31.695>with <00:11:31.822>the, <00:11:31.949>uh, <00:11:32.076>uh, <00:11:32.204>and <00:11:32.331>I, <00:11:32.458>I <00:11:32.585>didn't <00:11:32.713>know <00:11:32.840>what <00:11:32.967>I <00:11:33.095>liked.

217
00:11:35.865 --> 00:11:38.825
<00:11:35.865>The <00:11:36.040>exceptional <00:11:36.215>related <00:11:36.390>bug <00:11:36.565>was <00:11:36.740>just <00:11:36.915>me <00:11:37.090>not <00:11:37.265>using

218
00:11:38.825 --> 00:11:39.945
<00:11:38.825>it <00:11:39.833>correctly.

219
00:11:40.005 --> 00:11:42.865
<00:11:40.005>So <00:11:40.205>I <00:11:40.405>was <00:11:40.605>there <00:11:40.805>with, <00:11:41.005>uh, <00:11:41.205>Alex <00:11:41.405>Chip

220
00:11:43.125 --> 00:11:44.305
<00:11:43.125>and <00:11:43.390>keeping <00:11:43.656>the <00:11:43.921>back <00:11:44.186>there.

221
00:11:44.485 --> 00:11:47.505
<00:11:44.485>Um, <00:11:44.660>and <00:11:44.835>this <00:11:45.010>back <00:11:45.185>has <00:11:45.360>been <00:11:45.535>there <00:11:45.710>for <00:11:45.885>ages.

222
00:11:47.525 --> 00:11:49.745
<00:11:47.525>So, <00:11:47.758>um, <00:11:47.991>it <00:11:48.225>was <00:11:48.458>a <00:11:48.691>mysterious <00:11:48.925>back

223
00:11:50.485 --> 00:11:54.125
<00:11:50.485>and <00:11:50.625>not <00:11:50.765>the <00:11:50.905>one <00:11:51.045>that, <00:11:51.185>that <00:11:51.325>it <00:11:51.465>brought <00:11:51.605>like <00:11:51.745>from, <00:11:51.885>from

224
00:11:54.845 --> 00:11:56.205
<00:11:54.845>accidentally <00:11:55.457>with <00:11:56.069>me.

225
00:11:56.225 --> 00:11:59.885
<00:11:56.225>But, <00:11:56.365>um, <00:11:56.505>so <00:11:56.645>the <00:11:56.785>idea <00:11:56.925>was, <00:11:57.065>um, <00:11:57.205>with <00:11:57.345>this <00:11:57.485>bag <00:11:57.625>that

226
00:12:00.585 --> 00:12:03.405
<00:12:00.585>you <00:12:00.818>had <00:12:01.051>a <00:12:01.285>null <00:12:01.518>point <00:12:01.751>exception <00:12:01.985>directly

227
00:12:04.885 --> 00:12:05.905
<00:12:04.885>in <00:12:05.343>your <00:12:05.803>debugger.

228
00:12:05.905 --> 00:12:08.465
<00:12:05.905>So <00:12:06.060>you <00:12:06.216>have <00:12:06.371>JDP <00:12:06.527>that's <00:12:06.682>like <00:12:06.838>a <00:12:06.993>command <00:12:07.149>line <00:12:07.305>version

229
00:12:08.465 --> 00:12:11.465
<00:12:08.465>of <00:12:08.620>a <00:12:08.776>debugger <00:12:08.931>and <00:12:09.087>it <00:12:09.242>through <00:12:09.398>a <00:12:09.553>null <00:12:09.709>point <00:12:09.865>exception,

230
00:12:11.545 --> 00:12:13.225
<00:12:11.545>and <00:12:11.895>it <00:12:12.245>was <00:12:12.594>quite <00:12:12.944>interesting.

231
00:12:13.325 --> 00:12:15.545
<00:12:13.325>So <00:12:13.605>when <00:12:13.885>you <00:12:14.165>are <00:12:14.445>using <00:12:14.725>features

232
00:12:15.545 --> 00:12:18.985
<00:12:15.545>that <00:12:15.719>are <00:12:15.895>slightly <00:12:16.069>more <00:12:16.245>obscure, <00:12:16.420>entry <00:12:16.594>p <00:12:16.770>expect <00:12:16.944>them

233
00:12:19.205 --> 00:12:20.745
<00:12:19.205>to <00:12:19.667>sometimes <00:12:20.129>be <00:12:20.591>proven.

234
00:12:21.045 --> 00:12:24.665
<00:12:21.045>Um, <00:12:21.161>but <00:12:21.278>the <00:12:21.395>cool <00:12:21.511>thing <00:12:21.628>is <00:12:21.745>for <00:12:21.861>open <00:12:21.978>source, <00:12:22.094>you <00:12:22.211>can <00:12:22.328>just, <00:12:22.444>uh,

235
00:12:24.665 --> 00:12:27.825
<00:12:24.665>create <00:12:24.792>a <00:12:24.919>issue <00:12:25.046>and <00:12:25.174>you <00:12:25.301>can <00:12:25.428>fix <00:12:25.555>it <00:12:25.683>and <00:12:25.810>that's <00:12:25.937>what <00:12:26.064>it,

236
00:12:27.845 --> 00:12:31.705
<00:12:27.845>and <00:12:27.985>so, <00:12:28.125>uh, <00:12:28.265>you <00:12:28.405>can <00:12:28.545>use <00:12:28.685>omni <00:12:28.825>man <00:12:28.965>debugging <00:12:29.105>probably, <00:12:29.245>um,

237
00:12:32.125 --> 00:12:36.825
<00:12:32.125>and <00:12:32.265>on <00:12:32.405>show <00:12:32.545>debugging <00:12:32.685>in <00:12:32.825>in <00:12:32.965>the <00:12:33.105>newest <00:12:33.245>releases <00:12:33.385>of <00:12:33.525>OJK.

238
00:12:37.565 --> 00:12:42.345
<00:12:37.565>Um, <00:12:37.681>and <00:12:37.798>the <00:12:37.915>cool <00:12:38.031>thing <00:12:38.148>is <00:12:38.265>we <00:12:38.381>can, <00:12:38.498>for <00:12:38.615>example, <00:12:38.731>tell <00:12:38.848>to, <00:12:38.965>uh,

239
00:12:42.535 --> 00:12:47.225
<00:12:42.535>with <00:12:42.768>ONS <00:12:43.001>show <00:12:43.235>equals <00:12:43.468>XAEX, <00:12:43.701>um, <00:12:43.935>to

240
00:12:47.915 --> 00:12:50.545
<00:12:47.915>start <00:12:48.089>the <00:12:48.265>debugging <00:12:48.439>session <00:12:48.615>when <00:12:48.790>this <00:12:48.964>exception <00:12:49.140>is <00:12:49.314>thrown,

241
00:12:50.565 --> 00:12:51.785
<00:12:50.565>and <00:12:50.784>then <00:12:51.004>we <00:12:51.223>can <00:12:51.443>debug <00:12:51.663>it.

242
00:12:52.425 --> 00:12:56.925
<00:12:52.425>It's <00:12:52.599>very <00:12:52.775>nice. <00:12:52.949>Now <00:12:53.125>we're <00:12:53.300>onto <00:12:53.474>the <00:12:53.650>part, <00:12:53.824>um,

243
00:12:57.935 --> 00:13:00.605
<00:12:57.935>where <00:12:58.109>it's, <00:12:58.285>where <00:12:58.459>it <00:12:58.635>gets <00:12:58.810>interesting <00:12:58.984>onto <00:12:59.160>the <00:12:59.334>part

244
00:13:00.605 --> 00:13:02.885
<00:13:00.605>of <00:13:00.838>the <00:13:01.071>J <00:13:01.305>Java <00:13:01.538>debunk <00:13:01.771>wire <00:13:02.005>protocol.

245
00:13:03.065 --> 00:13:06.865
<00:13:03.065>And, <00:13:03.205>and <00:13:03.345>the <00:13:03.485>idea <00:13:03.625>is <00:13:03.765>that <00:13:03.905>this <00:13:04.045>is <00:13:04.185>like <00:13:04.325>the <00:13:04.465>connection

246
00:13:06.865 --> 00:13:11.785
<00:13:06.865>between <00:13:07.020>like <00:13:07.176>your <00:13:07.331>IDE <00:13:07.487>AVA <00:13:07.642>process <00:13:07.798>and <00:13:07.953>the <00:13:08.109>JVM <00:13:08.265>calls

247
00:13:11.925 --> 00:13:14.505
<00:13:11.925>and <00:13:12.204>it <00:13:12.484>maps <00:13:12.765>nicely <00:13:13.045>onto <00:13:13.324>J-V-M-T-I.

248
00:13:14.605 --> 00:13:17.985
<00:13:14.605>So <00:13:14.721>it's, <00:13:14.838>it <00:13:14.955>pretty <00:13:15.071>much <00:13:15.188>tell <00:13:15.305>you <00:13:15.421>to <00:13:15.538>do <00:13:15.655>what <00:13:15.771>the <00:13:15.888>JVM <00:13:16.005>does.

249
00:13:19.275 --> 00:13:21.935
<00:13:19.275>And <00:13:19.430>you <00:13:19.586>d <00:13:19.741>here <00:13:19.897>that <00:13:20.052>we <00:13:20.208>focus <00:13:20.363>on <00:13:20.519>this, <00:13:20.675>um,

250
00:13:22.285 --> 00:13:26.935
<00:13:22.285>because <00:13:22.401>the <00:13:22.518>upper <00:13:22.635>level <00:13:22.751>I <00:13:22.868>can <00:13:22.985>tell <00:13:23.101>j <00:13:23.218>what's <00:13:23.334>what <00:13:23.451>they <00:13:23.568>do <00:13:23.685>is

251
00:13:27.495 --> 00:13:29.215
<00:13:27.495>interesting, <00:13:27.961>but <00:13:28.428>the, <00:13:28.895>the,

252
00:13:29.235 --> 00:13:31.695
<00:13:29.235>the <00:13:29.410>interesting <00:13:29.585>part <00:13:29.760>is <00:13:29.935>like <00:13:30.110>on <00:13:30.285>the <00:13:30.460>connections <00:13:30.635>side,

253
00:13:31.695 --> 00:13:34.575
<00:13:31.695>because <00:13:31.850>then <00:13:32.006>you <00:13:32.161>can <00:13:32.317>understand <00:13:32.472>some <00:13:32.628>of <00:13:32.783>the <00:13:32.939>issues <00:13:33.095>of

254
00:13:35.155 --> 00:13:37.735
<00:13:35.155>why <00:13:35.355>things <00:13:35.555>like <00:13:35.755>conditional <00:13:35.954>break <00:13:36.155>points <00:13:36.355>might <00:13:36.555>not

255
00:13:37.735 --> 00:13:38.815
<00:13:37.735>be <00:13:38.059>the <00:13:38.383>fastest <00:13:38.707>option.

256
00:13:39.955 --> 00:13:43.135
<00:13:39.955>So <00:13:40.110>the <00:13:40.266>idea <00:13:40.421>with <00:13:40.577>JWP, <00:13:40.732>it's <00:13:40.888>a <00:13:41.043>quite <00:13:41.199>akin <00:13:41.355>protocol.

257
00:13:43.195 --> 00:13:44.815
<00:13:43.195>It <00:13:43.475>was <00:13:43.755>developed <00:13:44.035>in <00:13:44.315>the <00:13:44.595>nineties,

258
00:13:45.195 --> 00:13:49.975
<00:13:45.195>but <00:13:45.322>you <00:13:45.449>have <00:13:45.576>on <00:13:45.704>the <00:13:45.831>one <00:13:45.958>hand <00:13:46.085>requests, <00:13:46.213>um, <00:13:46.340>that <00:13:46.467>come <00:13:46.595>in.

259
00:13:50.035 --> 00:13:54.935
<00:13:50.035>So <00:13:50.162>your <00:13:50.289>j <00:13:50.416>so <00:13:50.544>your <00:13:50.671>RDE <00:13:50.798>requests, <00:13:50.925>for <00:13:51.053>example, <00:13:51.180>a <00:13:51.307>value, <00:13:51.435>um,

260
00:13:55.355 --> 00:13:59.495
<00:13:55.355>and <00:13:55.495>you <00:13:55.635>have <00:13:55.775>events <00:13:55.915>coming <00:13:56.055>in <00:13:56.195>from <00:13:56.335>the <00:13:56.475>JBM <00:13:56.615>side, <00:13:56.755>you,

261
00:13:59.515 --> 00:14:03.375
<00:13:59.515>so <00:13:59.670>your <00:13:59.826>JBM <00:13:59.981>tells, <00:14:00.137>for <00:14:00.292>example, <00:14:00.448>your <00:14:00.603>RDE, <00:14:00.759>hey, <00:14:00.915>the,

262
00:14:03.475 --> 00:14:05.375
<00:14:03.475>the <00:14:03.825>process, <00:14:04.175>the <00:14:04.525>program <00:14:04.875>started,

263
00:14:05.795 --> 00:14:09.095
<00:14:05.795>and <00:14:05.922>then <00:14:06.049>you <00:14:06.176>of <00:14:06.304>course <00:14:06.431>have <00:14:06.558>replies <00:14:06.685>that <00:14:06.813>like <00:14:06.940>to <00:14:07.067>JVM <00:14:07.194>tells

264
00:14:09.095 --> 00:14:12.935
<00:14:09.095>after <00:14:09.295>requests <00:14:09.495>and <00:14:09.695>you <00:14:09.895>have <00:14:10.095>lots <00:14:10.295>of, <00:14:10.495>lots

265
00:14:12.935 --> 00:14:14.815
<00:14:12.935>of <00:14:13.401>these, <00:14:13.868>uh, <00:14:14.334>events.

266
00:14:15.115 --> 00:14:19.745
<00:14:15.115>Um, <00:14:15.395>and <00:14:15.675>if <00:14:15.955>everything <00:14:16.235>works <00:14:16.515>well,

267
00:14:19.905 --> 00:14:23.815
<00:14:19.905>I <00:14:20.138>can <00:14:20.371>show <00:14:20.605>you <00:14:20.838>a <00:14:21.071>demo <00:14:21.305>here.

268
00:14:24.035 --> 00:14:25.535
<00:14:24.035>Uh, <00:14:24.260>I <00:14:24.485>hope <00:14:24.709>you <00:14:24.935>can <00:14:25.160>see <00:14:25.385>it.

269
00:14:25.565 --> 00:14:29.095
<00:14:25.565>Also, <00:14:25.692>the <00:14:25.819>idea <00:14:25.946>is <00:14:26.074>that <00:14:26.201>we <00:14:26.328>have <00:14:26.455>our <00:14:26.583>line <00:14:26.710>contact <00:14:26.837>example <00:14:26.965>from

270
00:14:29.515 --> 00:14:32.815
<00:14:29.515>before <00:14:29.670>and <00:14:29.826>I <00:14:29.981>just <00:14:30.137>put <00:14:30.292>some <00:14:30.448>break <00:14:30.603>points <00:14:30.759>in <00:14:30.915>it

271
00:14:33.595 --> 00:14:37.295
<00:14:33.595>and <00:14:33.945>we <00:14:34.295>can <00:14:34.645>use, <00:14:34.995>um,

272
00:14:38.035 --> 00:14:40.215
<00:14:38.035>we <00:14:38.235>can <00:14:38.435>start <00:14:38.635>the <00:14:38.834>JVM <00:14:39.035>and <00:14:39.235>what <00:14:39.435>developed.

273
00:14:40.215 --> 00:14:41.815
<00:14:40.215>And <00:14:40.415>that <00:14:40.615>was <00:14:40.815>also <00:14:41.015>one <00:14:41.215>the <00:14:41.415>reasons <00:14:41.615>why,

274
00:14:42.075 --> 00:14:46.295
<00:14:42.075>why <00:14:42.202>not <00:14:42.329>giving <00:14:42.456>this <00:14:42.584>talk <00:14:42.711>is <00:14:42.838>that <00:14:42.965>I <00:14:43.093>developed <00:14:43.220>a <00:14:43.347>prototype <00:14:43.475>of,

275
00:14:46.475 --> 00:14:49.255
<00:14:46.475>of, <00:14:46.675>um, <00:14:46.875>of <00:14:47.075>a <00:14:47.275>project <00:14:47.475>which <00:14:47.675>can <00:14:47.875>lock

276
00:14:50.035 --> 00:14:52.005
<00:14:50.035>all <00:14:50.501>JW <00:14:50.968>hu <00:14:51.435>messages.

277
00:14:52.025 --> 00:14:53.765
<00:14:52.025>And <00:14:52.225>we <00:14:52.425>can <00:14:52.625>start <00:14:52.824>it, <00:14:53.025>we <00:14:53.225>can <00:14:53.425>start

278
00:14:54.345 --> 00:14:55.645
<00:14:54.345>the <00:14:54.637>remote <00:14:54.930>de <00:14:55.222>banking <00:14:55.515>session

279
00:14:55.745 --> 00:14:58.725
<00:14:55.745>and <00:14:55.900>then <00:14:56.056>just <00:14:56.211>see <00:14:56.367>how <00:14:56.522>many <00:14:56.678>messages <00:14:56.833>they're <00:14:56.989>going <00:14:57.145>through.

280
00:14:58.785 --> 00:15:00.485
<00:14:58.785>So <00:14:59.018>you <00:14:59.251>see <00:14:59.485>here <00:14:59.718>that <00:14:59.951>there's <00:15:00.185>like

281
00:15:01.385 --> 00:15:04.605
<00:15:01.385>around <00:15:01.735>3,400 <00:15:02.085>messages <00:15:02.435>going <00:15:02.785>around,

282
00:15:04.985 --> 00:15:09.605
<00:15:04.985>and <00:15:05.140>if <00:15:05.296>we <00:15:05.451>like <00:15:05.607>single <00:15:05.762>up, <00:15:05.918>we <00:15:06.073>can <00:15:06.229>also <00:15:06.385>see

283
00:15:09.605 --> 00:15:11.605
<00:15:09.605>that <00:15:09.885>there's <00:15:10.165>some, <00:15:10.445>some <00:15:10.725>commotions <00:15:11.005>there.

284
00:15:11.705 --> 00:15:14.845
<00:15:11.705>We <00:15:11.832>look <00:15:11.959>in <00:15:12.086>and <00:15:12.214>that's, <00:15:12.341>you <00:15:12.468>see, <00:15:12.595>you <00:15:12.723>get <00:15:12.850>probably <00:15:12.977>the <00:15:13.105>picture

285
00:15:14.915 --> 00:15:16.965
<00:15:14.915>that <00:15:15.148>there's <00:15:15.381>lots <00:15:15.615>of <00:15:15.848>things <00:15:16.081>going <00:15:16.314>on.

286
00:15:17.065 --> 00:15:20.605
<00:15:17.065>And <00:15:17.265>now, <00:15:17.465>now <00:15:17.665>back <00:15:17.865>to, <00:15:18.065>to <00:15:18.265>the <00:15:18.465>talk.

287
00:15:21.465 --> 00:15:26.335
<00:15:21.465>Um, <00:15:21.620>so <00:15:21.776>now <00:15:21.931>I'll, <00:15:22.087>I'll, <00:15:22.242>I <00:15:22.398>wanna <00:15:22.553>show <00:15:22.709>you <00:15:22.865>what,

288
00:15:26.795 --> 00:15:29.895
<00:15:26.795>uh, <00:15:26.995>um, <00:15:27.194>how <00:15:27.395>it <00:15:27.594>works <00:15:27.795>from <00:15:27.995>the <00:15:28.194>beginning.

289
00:15:29.965 --> 00:15:33.415
<00:15:29.965>Like <00:15:30.120>your, <00:15:30.276>your <00:15:30.431>program <00:15:30.587>starts, <00:15:30.742>you <00:15:30.898>attach <00:15:31.053>to <00:15:31.209>your, <00:15:31.365>um,

290
00:15:34.055 --> 00:15:38.415
<00:15:34.055>debugger <00:15:34.229>to, <00:15:34.405>uh, <00:15:34.579>to <00:15:34.755>your <00:15:34.930>JVM <00:15:35.104>to <00:15:35.280>the <00:15:35.454>beginning

291
00:15:38.475 --> 00:15:40.375
<00:15:38.475>of <00:15:38.675>like <00:15:38.875>being <00:15:39.075>at <00:15:39.275>the <00:15:39.475>first <00:15:39.675>break <00:15:39.875>point.

292
00:15:40.515 --> 00:15:43.135
<00:15:40.515>So <00:15:40.655>in <00:15:40.795>the <00:15:40.935>beginning, <00:15:41.074>uh, <00:15:41.215>your <00:15:41.355>debugger <00:15:41.495>asked <00:15:41.635>the <00:15:41.775>JVM, <00:15:41.915>Hey,

293
00:15:43.235 --> 00:15:45.855
<00:15:43.235>oh, <00:15:43.468>please, <00:15:43.701>I, <00:15:43.935>I'm <00:15:44.168>a <00:15:44.401>debugger <00:15:44.635>too.

294
00:15:46.635 --> 00:15:48.175
<00:15:46.635>Uh, <00:15:46.912>here's, <00:15:47.189>here's <00:15:47.466>a <00:15:47.743>hand <00:15:48.021>handshake.

295
00:15:48.355 --> 00:15:49.895
<00:15:48.355>Um, <00:15:48.701>please <00:15:49.048>start <00:15:49.394>debugging <00:15:49.741>session.

296
00:15:50.275 --> 00:15:53.095
<00:15:50.275>And <00:15:50.449>then <00:15:50.625>JVM <00:15:50.800>tells <00:15:50.975>you, <00:15:51.150>uh, <00:15:51.324>test <00:15:51.500>the <00:15:51.675>debugger.

297
00:15:53.195 --> 00:15:55.615
<00:15:53.195>Hey, <00:15:53.395>yeah, <00:15:53.595>the, <00:15:53.795>the <00:15:53.995>VM <00:15:54.195>now <00:15:54.395>started <00:15:54.595>call.

298
00:15:56.075 --> 00:15:59.695
<00:15:56.075>Um, <00:15:56.250>what's <00:15:56.425>also <00:15:56.600>interesting <00:15:56.775>is <00:15:56.950>that <00:15:57.125>the <00:15:57.300>debugger <00:15:57.475>wants

299
00:15:59.695 --> 00:16:01.975
<00:15:59.695>to <00:15:59.895>know <00:16:00.095>how <00:16:00.295>large <00:16:00.495>some <00:16:00.695>of <00:16:00.895>the <00:16:01.095>fields,

300
00:16:02.305 --> 00:16:06.775
<00:16:02.305>field <00:16:02.460>types <00:16:02.616>are <00:16:02.771>in <00:16:02.927>the <00:16:03.082>JVM <00:16:03.238>because <00:16:03.393>this <00:16:03.549>might <00:16:03.704>change.

301
00:16:07.115 --> 00:16:08.935
<00:16:07.115>So <00:16:07.348>for <00:16:07.581>example, <00:16:07.815>like <00:16:08.048>the <00:16:08.281>field <00:16:08.515>ideas

302
00:16:08.935 --> 00:16:12.055
<00:16:08.935>that <00:16:09.090>you <00:16:09.246>have <00:16:09.401>in <00:16:09.557>this <00:16:09.712>protocol <00:16:09.868>are <00:16:10.023>related <00:16:10.179>to <00:16:10.334>point

303
00:16:12.075 --> 00:16:13.135
<00:16:12.075>of <00:16:12.552>sciences <00:16:13.029>usually.

304
00:16:13.635 --> 00:16:17.055
<00:16:13.635>So <00:16:13.775>when <00:16:13.915>you <00:16:14.055>have <00:16:14.194>30 <00:16:14.335>bed <00:16:14.475>and <00:16:14.615>six, <00:16:14.755>say <00:16:14.895>two <00:16:15.035>bed

305
00:16:17.055 --> 00:16:21.135
<00:16:17.055>and <00:16:17.288>64 <00:16:17.521>bit, <00:16:17.755>um, <00:16:17.988>um, <00:16:18.221>uh, <00:16:18.454>VMs,

306
00:16:21.565 --> 00:16:23.055
<00:16:21.565>this <00:16:22.012>much <00:16:22.459>be <00:16:22.906>different.

307
00:16:23.555 --> 00:16:26.295
<00:16:23.555>Um, <00:16:23.710>and <00:16:23.866>then <00:16:24.021>the <00:16:24.177>debug <00:16:24.332>tells <00:16:24.488>the <00:16:24.643>JVM, <00:16:24.799>Hey, <00:16:24.954>please,

308
00:16:26.575 --> 00:16:28.575
<00:16:26.575>whenever <00:16:26.925>uh, <00:16:27.275>glass <00:16:27.625>is <00:16:27.975>prepared,

309
00:16:28.855 --> 00:16:31.335
<00:16:28.855>whenever <00:16:29.030>glass <00:16:29.205>is <00:16:29.380>loaded, <00:16:29.555>please <00:16:29.730>tell <00:16:29.905>it <00:16:30.080>to <00:16:30.255>me.

310
00:16:31.365 --> 00:16:34.095
<00:16:31.365>Because <00:16:31.520>we <00:16:31.676>have <00:16:31.831>to <00:16:31.987>keep <00:16:32.142>in <00:16:32.298>mind <00:16:32.453>that <00:16:32.609>the <00:16:32.765>debug

311
00:16:34.095 --> 00:16:37.655
<00:16:34.095>and <00:16:34.250>the <00:16:34.406>JBM <00:16:34.561>have <00:16:34.717>to <00:16:34.872>keep, <00:16:35.028>um, <00:16:35.183>some <00:16:35.339>shared <00:16:35.495>state

312
00:16:37.685 --> 00:16:39.415
<00:16:37.685>between <00:16:38.035>them, <00:16:38.385>so <00:16:38.734>they <00:16:39.084>have

313
00:16:39.415 --> 00:16:43.335
<00:16:39.415>to <00:16:39.615>know <00:16:39.814>which <00:16:40.015>other <00:16:40.214>available <00:16:40.415>glasses, <00:16:40.615>um, <00:16:40.814>so

314
00:16:43.335 --> 00:16:46.215
<00:16:43.335>that <00:16:43.568>the <00:16:43.801>debugger <00:16:44.035>can <00:16:44.268>work <00:16:44.501>with <00:16:44.735>them.

315
00:16:46.635 --> 00:16:49.055
<00:16:46.635>And <00:16:46.835>then <00:16:47.035>the <00:16:47.235>debugger <00:16:47.435>ask <00:16:47.635>the <00:16:47.835>JVM, <00:16:48.035>Hey,

316
00:16:49.055 --> 00:16:51.735
<00:16:49.055>please <00:16:49.210>give <00:16:49.366>me <00:16:49.521>the <00:16:49.677>version <00:16:49.832>because <00:16:49.988>the <00:16:50.143>debugger <00:16:50.299>doesn't <00:16:50.454>know

317
00:16:51.755 --> 00:16:56.435
<00:16:51.755>if <00:16:51.910>this <00:16:52.066>A <00:16:52.221>JVM <00:16:52.377>or <00:16:52.532>JDK <00:16:52.688>17 <00:16:52.843>or <00:16:52.999>JK <00:16:53.155>21

318
00:16:56.435 --> 00:16:59.115
<00:16:56.435>or <00:16:56.635>so, <00:16:56.834>and <00:16:57.035>thereby <00:16:57.234>also <00:16:57.435>knows <00:16:57.635>like, <00:16:57.834>um,

319
00:17:00.065 --> 00:17:04.275
<00:17:00.065>what <00:17:00.192>it <00:17:00.319>can <00:17:00.446>expect <00:17:00.574>from <00:17:00.701>it <00:17:00.828>also, <00:17:00.955>what <00:17:01.083>buy <00:17:01.210>codes <00:17:01.337>it <00:17:01.465>supports,

320
00:17:04.735 --> 00:17:07.915
<00:17:04.734>uh, <00:17:04.890>which <00:17:05.046>is <00:17:05.201>interesting <00:17:05.357>when <00:17:05.512>you're <00:17:05.668>doing, <00:17:05.823>um, <00:17:05.979>like, <00:17:06.135>uh,

321
00:17:08.095 --> 00:17:09.995
<00:17:08.095>source <00:17:08.444>hot <00:17:08.795>source <00:17:09.145>code <00:17:09.495>reload.

322
00:17:10.855 --> 00:17:13.115
<00:17:10.855>And <00:17:11.055>then <00:17:11.255>the <00:17:11.454>debug <00:17:11.655>also <00:17:11.855>ask <00:17:12.055>us, <00:17:12.255>Hey,

323
00:17:13.145 --> 00:17:14.235
<00:17:13.145>what <00:17:13.472>are <00:17:13.799>your <00:17:14.126>capabilities?

324
00:17:14.535 --> 00:17:16.555
<00:17:14.535>And <00:17:14.768>first, <00:17:15.001>these <00:17:15.235>capabilities <00:17:15.468>work <00:17:15.701>quite <00:17:15.935>minimal.

325
00:17:16.555 --> 00:17:18.195
<00:17:16.555>There <00:17:16.905>were <00:17:17.255>that <00:17:17.605>many <00:17:17.955>there,

326
00:17:18.335 --> 00:17:23.155
<00:17:18.335>but <00:17:18.490>then, <00:17:18.646>um, <00:17:18.801>in <00:17:18.957>JK <00:17:19.112>1.41 <00:17:19.268>to <00:17:19.423>12, <00:17:19.579>they <00:17:19.735>decided

327
00:17:23.185 --> 00:17:25.195
<00:17:23.185>that <00:17:23.385>they <00:17:23.585>de <00:17:23.784>that <00:17:23.984>they <00:17:24.185>need <00:17:24.385>some <00:17:24.585>more.

328
00:17:25.195 --> 00:17:26.995
<00:17:25.194>And <00:17:25.369>so <00:17:25.544>they, <00:17:25.720>they <00:17:25.895>added <00:17:26.069>a <00:17:26.244>couple <00:17:26.419>of <00:17:26.595>them.

329
00:17:27.535 --> 00:17:31.915
<00:17:27.535>Um, <00:17:27.690>so <00:17:27.846>essentially <00:17:28.001>the <00:17:28.157>j <00:17:28.312>enters <00:17:28.468>you <00:17:28.623>debugger, <00:17:28.779>Hey, <00:17:28.935>can,

330
00:17:32.055 --> 00:17:33.235
<00:17:32.055>can <00:17:32.320>I <00:17:32.586>do <00:17:32.851>early <00:17:33.117>returns?

331
00:17:33.415 --> 00:17:37.075
<00:17:33.415>Can <00:17:33.542>I <00:17:33.669>do, <00:17:33.796>uh, <00:17:33.924>can, <00:17:34.051>can <00:17:34.178>the <00:17:34.305>debugger <00:17:34.433>ad <00:17:34.560>methods <00:17:34.687>or <00:17:34.815>so,

332
00:17:37.095 --> 00:17:41.235
<00:17:37.095>and <00:17:37.250>that's <00:17:37.406>pretty <00:17:37.561>cool <00:17:37.717>because <00:17:37.872>this <00:17:38.028>enables <00:17:38.183>the, <00:17:38.339>the <00:17:38.495>JVM

333
00:17:41.375 --> 00:17:42.955
<00:17:41.375>to <00:17:41.841>disallow <00:17:42.308>those <00:17:42.775>things.

334
00:17:43.015 --> 00:17:46.035
<00:17:43.015>So <00:17:43.155>you <00:17:43.295>could <00:17:43.435>build <00:17:43.575>a <00:17:43.715>JVM <00:17:43.855>that, <00:17:43.995>that <00:17:44.135>would <00:17:44.275>disallow <00:17:44.415>most

335
00:17:46.055 --> 00:17:49.645
<00:17:46.055>of <00:17:46.195>this, <00:17:46.335>and <00:17:46.475>hopefully <00:17:46.615>you <00:17:46.755>do <00:17:46.895>bigger <00:17:47.035>cancer <00:17:47.175>work <00:17:47.315>with <00:17:47.455>it.

336
00:17:50.425 --> 00:17:54.365
<00:17:50.425>So <00:17:50.580>what <00:17:50.736>the <00:17:50.891>does, <00:17:51.047>it <00:17:51.202>needs <00:17:51.358>to <00:17:51.513>know <00:17:51.669>all <00:17:51.825>classes

337
00:17:54.475 --> 00:17:55.685
<00:17:54.475>that <00:17:54.838>are <00:17:55.201>initially <00:17:55.563>loaded

338
00:17:56.025 --> 00:17:59.005
<00:17:56.025>and <00:17:56.180>for <00:17:56.336>each <00:17:56.491>class <00:17:56.647>it <00:17:56.802>know, <00:17:56.958>it <00:17:57.113>gets <00:17:57.269>the <00:17:57.425>kind.

339
00:17:59.105 --> 00:18:02.685
<00:17:59.105>So <00:17:59.245>if <00:17:59.385>there's <00:17:59.525>a <00:17:59.665>class <00:17:59.805>or <00:17:59.945>an <00:18:00.085>interface, <00:18:00.225>it <00:18:00.365>gets <00:18:00.505>ID

340
00:18:02.685 --> 00:18:05.965
<00:18:02.685>that <00:18:02.840>it <00:18:02.996>can <00:18:03.151>use <00:18:03.307>later <00:18:03.462>to <00:18:03.618>identify <00:18:03.773>class <00:18:03.929>to <00:18:04.085>signature,

341
00:18:06.585 --> 00:18:07.765
<00:18:06.585>to <00:18:07.116>includes <00:18:07.647>name

342
00:18:08.025 --> 00:18:11.685
<00:18:08.025>and <00:18:08.152>also <00:18:08.279>the <00:18:08.406>state, <00:18:08.534>usually <00:18:08.661>it's <00:18:08.788>us, <00:18:08.915>like <00:18:09.043>it <00:18:09.170>tells <00:18:09.297>it <00:18:09.425>like,

343
00:18:11.705 --> 00:18:13.165
<00:18:11.705>oh, <00:18:11.967>this <00:18:12.230>glass <00:18:12.493>is <00:18:12.756>already <00:18:13.019>loaded.

344
00:18:14.185 --> 00:18:16.085
<00:18:14.185>And <00:18:14.465>then <00:18:14.745>of <00:18:15.024>course <00:18:15.304>it <00:18:15.585>wants

345
00:18:16.085 --> 00:18:17.725
<00:18:16.085>to <00:18:16.318>know <00:18:16.551>which <00:18:16.785>threads <00:18:17.018>are <00:18:17.251>currently <00:18:17.485>running.

346
00:18:18.465 --> 00:18:20.405
<00:18:18.465>And <00:18:18.931>also, <00:18:19.398>hey, <00:18:19.865>when,

347
00:18:20.685 --> 00:18:23.565
<00:18:20.685>whenever <00:18:20.840>a <00:18:20.996>new <00:18:21.151>threader <00:18:21.307>started, <00:18:21.462>please <00:18:21.618>notify <00:18:21.773>me <00:18:21.929>of <00:18:22.085>this.

348
00:18:23.945 --> 00:18:26.045
<00:18:23.945>And <00:18:24.145>then <00:18:24.345>the <00:18:24.544>JVM <00:18:24.745>is <00:18:24.945>like, <00:18:25.145>oh, <00:18:25.345>cool.

349
00:18:26.265 --> 00:18:28.725
<00:18:26.265>Um, <00:18:26.545>the <00:18:26.825>JVM, <00:18:27.105>the, <00:18:27.385>the <00:18:27.665>main

350
00:18:28.725 --> 00:18:32.245
<00:18:28.725>and <00:18:28.925>the <00:18:29.125>notify <00:18:29.324>shreds, <00:18:29.524>they <00:18:29.725>are <00:18:29.925>started <00:18:30.125>here.

351
00:18:32.385 --> 00:18:36.245
<00:18:32.385>The, <00:18:32.540>the, <00:18:32.696>and <00:18:32.851>so <00:18:33.007>they <00:18:33.162>have <00:18:33.318>again, <00:18:33.473>the <00:18:33.629>shred <00:18:33.785>state

352
00:18:38.275 --> 00:18:41.615
<00:18:38.275>and <00:18:38.450>then, <00:18:38.625>uh, <00:18:38.800>the <00:18:38.975>JVM <00:18:39.150>tells <00:18:39.325>the <00:18:39.500>hey, <00:18:39.675>um,

353
00:18:41.615 --> 00:18:45.495
<00:18:41.615>because <00:18:41.770>here <00:18:41.926>in <00:18:42.081>this <00:18:42.237>example <00:18:42.392>were, <00:18:42.548>were <00:18:42.703>loading, <00:18:42.859>um, <00:18:43.015>uh,

354
00:18:46.495 --> 00:18:47.855
<00:18:46.495>a <00:18:46.801>program <00:18:47.107>from <00:18:47.413>a <00:18:47.719>file.

355
00:18:48.435 --> 00:18:52.855
<00:18:48.435>Um, <00:18:48.590>I <00:18:48.746>prepare <00:18:48.901>the <00:18:49.057>URL <00:18:49.212>class <00:18:49.368>per <00:18:49.523>file <00:18:49.679>or <00:18:49.835>class.

356
00:18:52.915 --> 00:18:55.415
<00:18:52.915>So <00:18:53.115>that's <00:18:53.315>the <00:18:53.514>first <00:18:53.715>class <00:18:53.915>that's <00:18:54.115>actually <00:18:54.315>loaded.

357
00:18:56.315 --> 00:18:59.815
<00:18:56.315>And <00:18:56.548>then <00:18:56.781>it <00:18:57.015>tells <00:18:57.248>the <00:18:57.481>debug, <00:18:57.715>Hey,

358
00:18:59.935 --> 00:19:02.375
<00:18:59.935>I <00:19:00.135>also <00:19:00.335>prepared <00:19:00.534>like <00:19:00.735>the <00:19:00.935>line <00:19:01.135>counter <00:19:01.335>class.

359
00:19:03.195 --> 00:19:06.775
<00:19:03.195>And <00:19:03.322>then <00:19:03.449>what <00:19:03.576>the <00:19:03.704>debug <00:19:03.831>usually <00:19:03.958>does <00:19:04.085>when <00:19:04.213>it <00:19:04.340>gets <00:19:04.467>a <00:19:04.595>new,

360
00:19:07.005 --> 00:19:11.255
<00:19:07.005>when <00:19:07.145>it, <00:19:07.285>um, <00:19:07.425>gets <00:19:07.565>a <00:19:07.705>new <00:19:07.845>class, <00:19:07.985>it <00:19:08.125>obtains <00:19:08.265>some <00:19:08.405>information.

361
00:19:11.755 --> 00:19:14.615
<00:19:11.755>Um, <00:19:11.955>for <00:19:12.155>example, <00:19:12.355>it <00:19:12.555>once <00:19:12.755>in <00:19:12.955>our <00:19:13.155>example,

362
00:19:14.615 --> 00:19:16.855
<00:19:14.615>because <00:19:14.848>we're <00:19:15.081>looking <00:19:15.315>into <00:19:15.548>these <00:19:15.781>methods <00:19:16.015>now,

363
00:19:17.755 --> 00:19:22.735
<00:19:17.755>how <00:19:17.882>the <00:19:18.009>methods <00:19:18.136>look <00:19:18.264>like, <00:19:18.391>how <00:19:18.518>like <00:19:18.645>the, <00:19:18.773>the <00:19:18.900>lines <00:19:19.027>are <00:19:19.155>met

364
00:19:22.815 --> 00:19:25.335
<00:19:22.815>to <00:19:22.990>the <00:19:23.165>bike <00:19:23.340>code, <00:19:23.515>so <00:19:23.690>it <00:19:23.865>can, <00:19:24.040>um, <00:19:24.215>obtain

365
00:19:26.005 --> 00:19:28.855
<00:19:26.005>information <00:19:26.180>symbol <00:19:26.355>on <00:19:26.530>where <00:19:26.705>it, <00:19:26.880>where <00:19:27.055>you <00:19:27.230>are <00:19:27.405>located,

366
00:19:28.855 --> 00:19:30.855
<00:19:28.855>because <00:19:29.135>the <00:19:29.415>JVM <00:19:29.695>only <00:19:29.975>knows <00:19:30.255>about,

367
00:19:30.855 --> 00:19:33.135
<00:19:30.855>usually <00:19:31.088>only <00:19:31.321>learns <00:19:31.555>about <00:19:31.788>by <00:19:32.021>code <00:19:32.255>index.

368
00:19:33.155 --> 00:19:37.095
<00:19:33.155>So <00:19:33.282>the <00:19:33.409>JVM <00:19:33.536>knows <00:19:33.664>I'm <00:19:33.791>currently <00:19:33.918>standing <00:19:34.045>at <00:19:34.173>by <00:19:34.300>code <00:19:34.427>index <00:19:34.555>Y.

369
00:19:37.635 --> 00:19:40.975
<00:19:37.635>But, <00:19:37.810>um, <00:19:37.985>the <00:19:38.160>debug <00:19:38.335>wants <00:19:38.510>to <00:19:38.685>show <00:19:38.860>you, <00:19:39.035>hey,

370
00:19:41.135 --> 00:19:42.935
<00:19:41.135>you're <00:19:41.368>currently <00:19:41.601>at <00:19:41.835>a <00:19:42.068>certain <00:19:42.301>line, <00:19:42.535>so,

371
00:19:43.035 --> 00:19:44.255
<00:19:43.035>so <00:19:43.309>you <00:19:43.584>need <00:19:43.858>this <00:19:44.133>information.

372
00:19:44.715 --> 00:19:48.175
<00:19:44.715>And <00:19:44.889>also <00:19:45.064>it's <00:19:45.240>helpful, <00:19:45.415>um, <00:19:45.590>for <00:19:45.764>debug <00:19:45.939>to <00:19:46.115>know

373
00:19:48.175 --> 00:19:50.295
<00:19:48.175>where <00:19:48.455>this <00:19:48.735>glass <00:19:49.014>is <00:19:49.294>located, <00:19:49.575>um,

374
00:19:50.955 --> 00:19:53.255
<00:19:50.955>and <00:19:51.155>much <00:19:51.355>more <00:19:51.554>they, <00:19:51.754>you <00:19:51.955>saw <00:19:52.155>there, <00:19:52.355>there,

375
00:19:53.265 --> 00:19:55.335
<00:19:53.265>there <00:19:53.440>are <00:19:53.615>many <00:19:53.790>more <00:19:53.965>things <00:19:54.140>that <00:19:54.315>they <00:19:54.490>can <00:19:54.665>ask.

376
00:19:56.035 --> 00:20:00.015
<00:19:56.035>Uh, <00:19:56.235>and <00:19:56.435>then, <00:19:56.635>um, <00:19:56.835>we, <00:19:57.035>we <00:19:57.235>also <00:19:57.435>already,

377
00:20:00.155 --> 00:20:03.535
<00:20:00.155>you <00:20:00.271>saw <00:20:00.388>in <00:20:00.504>my <00:20:00.621>example, <00:20:00.738>we <00:20:00.855>can <00:20:00.971>set <00:20:01.088>a <00:20:01.205>break <00:20:01.321>point <00:20:01.438>of <00:20:01.555>course

378
00:20:03.635 --> 00:20:05.415
<00:20:03.635>before <00:20:03.985>we're <00:20:04.335>starting <00:20:04.685>the <00:20:05.035>application.

379
00:20:06.455 --> 00:20:07.955
<00:20:06.455>And <00:20:06.647>so <00:20:06.840>that's <00:20:07.033>what <00:20:07.226>we <00:20:07.419>are <00:20:07.612>doing <00:20:07.804>here.

380
00:20:07.955 --> 00:20:12.515
<00:20:07.955>The <00:20:08.110>debugger <00:20:08.266>tells <00:20:08.421>the <00:20:08.577>JBMA <00:20:08.732>please, <00:20:08.888>um, <00:20:09.043>set <00:20:09.199>break <00:20:09.355>point.

381
00:20:13.885 --> 00:20:17.285
<00:20:13.885>Um, <00:20:14.085>and <00:20:14.285>the <00:20:14.485>cool <00:20:14.685>thing <00:20:14.885>is <00:20:15.085>here, <00:20:15.285>um,

382
00:20:18.425 --> 00:20:20.605
<00:20:18.425>the <00:20:18.891>JVM <00:20:19.358>supports <00:20:19.825>breakpoint.

383
00:20:20.655 --> 00:20:25.205
<00:20:20.655>There <00:20:20.830>other <00:20:21.004>run <00:20:21.180>times, <00:20:21.355>for <00:20:21.530>example, <00:20:21.705>Python <00:20:21.879>that, <00:20:22.055>um,

384
00:20:26.175 --> 00:20:28.245
<00:20:26.175>don't <00:20:26.641>really <00:20:27.108>support <00:20:27.575>breakpoint.

385
00:20:28.345 --> 00:20:30.085
<00:20:28.345>So <00:20:28.811>that'ss <00:20:29.278>quite <00:20:29.745>interesting

386
00:20:30.145 --> 00:20:32.405
<00:20:30.145>and <00:20:30.378>it's <00:20:30.611>like <00:20:30.845>a <00:20:31.078>de <00:20:31.311>buying <00:20:31.545>interface

387
00:20:32.405 --> 00:20:34.765
<00:20:32.405>that <00:20:32.685>doesn't <00:20:32.965>understand <00:20:33.245>breakpoint <00:20:33.524>is <00:20:33.805>possible

388
00:20:34.985 --> 00:20:36.285
<00:20:34.985>and <00:20:35.277>it <00:20:35.570>has <00:20:35.862>its <00:20:36.155>users.

389
00:20:36.425 --> 00:20:40.325
<00:20:36.425>But <00:20:36.600>the <00:20:36.774>JVM <00:20:36.950>directly <00:20:37.125>supports <00:20:37.300>the <00:20:37.475>concept <00:20:37.649>of <00:20:37.825>breakpoint,

390
00:20:40.335 --> 00:20:44.285
<00:20:40.335>which <00:20:40.568>makes <00:20:40.801>implementing <00:20:41.035>debuggers <00:20:41.268>easier <00:20:41.501>and <00:20:41.735>faster

391
00:20:44.755 --> 00:20:48.085
<00:20:44.755>because <00:20:44.910>the <00:20:45.066>JVM <00:20:45.221>can <00:20:45.377>optimize <00:20:45.532>for <00:20:45.688>the <00:20:45.843>break <00:20:45.999>point <00:20:46.155>usage.

392
00:20:48.745 --> 00:20:51.925
<00:20:48.745>And <00:20:48.919>yeah, <00:20:49.094>then <00:20:49.270>the <00:20:49.445>debugger <00:20:49.620>finished <00:20:49.794>with <00:20:49.969>the <00:20:50.145>setup

393
00:20:52.105 --> 00:20:54.405
<00:20:52.105>and <00:20:52.305>it <00:20:52.505>tells <00:20:52.705>the <00:20:52.905>JVM, <00:20:53.105>Hey, <00:20:53.305>please <00:20:53.505>resume

394
00:20:54.465 --> 00:20:56.685
<00:20:54.465>and <00:20:54.745>please <00:20:55.024>run <00:20:55.304>the <00:20:55.584>extra <00:20:55.865>program.

395
00:20:57.705 --> 00:21:00.685
<00:20:57.705>And <00:20:57.860>then, <00:20:58.016>uh, <00:20:58.171>when <00:20:58.327>the <00:20:58.482>JVM <00:20:58.638>hit <00:20:58.793>the <00:20:58.949>break <00:20:59.105>point,

396
00:21:00.785 --> 00:21:03.525
<00:21:00.785>it <00:21:00.940>tells <00:21:01.096>the <00:21:01.251>debugger, <00:21:01.407>Hey, <00:21:01.562>I've <00:21:01.718>hit <00:21:01.873>this <00:21:02.029>break <00:21:02.185>point

397
00:21:03.525 --> 00:21:06.165
<00:21:03.525>with <00:21:03.805>this <00:21:04.085>net <00:21:04.365>in <00:21:04.645>this <00:21:04.925>thread

398
00:21:06.225 --> 00:21:08.365
<00:21:06.225>and <00:21:06.458>is <00:21:06.691>dislocation <00:21:06.925>and <00:21:07.158>it's <00:21:07.391>pretty <00:21:07.625>nice.

399
00:21:08.535 --> 00:21:12.485
<00:21:08.535>Debug <00:21:08.651>can <00:21:08.768>then <00:21:08.885>pop <00:21:09.001>up, <00:21:09.118>uh, <00:21:09.235>the <00:21:09.351>view <00:21:09.468>and <00:21:09.585>show <00:21:09.701>you <00:21:09.818>the <00:21:09.935>values,

400
00:21:12.985 --> 00:21:15.405
<00:21:12.985>and <00:21:13.218>then <00:21:13.451>the <00:21:13.685>debug <00:21:13.918>asks, <00:21:14.151>Hey, <00:21:14.385>please,

401
00:21:15.705 --> 00:21:17.245
<00:21:15.705>what's <00:21:16.051>your <00:21:16.398>current <00:21:16.744>state <00:21:17.091>like?

402
00:21:17.465 --> 00:21:22.225
<00:21:17.465>And <00:21:17.620>then <00:21:17.776>when, <00:21:17.931>when <00:21:18.087>it's <00:21:18.242>finished, <00:21:18.398>when <00:21:18.553>you, <00:21:18.709>when <00:21:18.865>the,

403
00:21:22.325 --> 00:21:25.465
<00:21:22.325>the, <00:21:22.500>the <00:21:22.675>person <00:21:22.850>clicking <00:21:23.025>on <00:21:23.200>like <00:21:23.375>this, <00:21:23.550>please <00:21:23.725>go,

404
00:21:25.525 --> 00:21:27.225
<00:21:25.525>go <00:21:25.805>further <00:21:26.085>in <00:21:26.365>the <00:21:26.645>program's <00:21:26.925>execution.

405
00:21:27.225 --> 00:21:29.345
<00:21:27.225>And <00:21:27.425>the <00:21:27.625>debug <00:21:27.824>tells <00:21:28.024>the <00:21:28.225>JBM <00:21:28.425>please <00:21:28.625>resume.

406
00:21:30.445 --> 00:21:31.985
<00:21:30.445>And <00:21:30.907>this <00:21:31.369>repeats <00:21:31.831>essentially.

407
00:21:32.405 --> 00:21:36.545
<00:21:32.405>Um, <00:21:32.532>and <00:21:32.659>then <00:21:32.786>there <00:21:32.914>will <00:21:33.041>be <00:21:33.168>a <00:21:33.295>time <00:21:33.423>when <00:21:33.550>the <00:21:33.677>VM <00:21:33.805>dies.

408
00:21:36.605 --> 00:21:38.985
<00:21:36.605>So <00:21:36.838>then <00:21:37.071>there's <00:21:37.305>the <00:21:37.538>VM <00:21:37.771>dev <00:21:38.005>event

409
00:21:39.075 --> 00:21:43.605
<00:21:39.075>where <00:21:39.230>the <00:21:39.386>JBM <00:21:39.541>tells <00:21:39.697>the <00:21:39.852>debugger <00:21:40.008>I'm <00:21:40.163>about <00:21:40.319>to <00:21:40.475>die.

410
00:21:43.945 --> 00:21:48.405
<00:21:43.945>Um, <00:21:44.085>and <00:21:44.225>I'm <00:21:44.365>about <00:21:44.504>to <00:21:44.645>close <00:21:44.784>the <00:21:44.925>connection <00:21:45.064>on. <00:21:45.205>That's <00:21:45.345>all.

411
00:21:48.405 --> 00:21:51.645
<00:21:48.405>That's <00:21:48.560>from <00:21:48.716>the <00:21:48.871>beginning <00:21:49.027>to <00:21:49.182>the <00:21:49.338>end, <00:21:49.493>from <00:21:49.649>the <00:21:49.805>birth

412
00:21:51.985 --> 00:21:53.405
<00:21:51.985>of <00:21:52.197>in <00:21:52.410>the <00:21:52.624>death <00:21:52.837>of <00:21:53.050>a <00:21:53.263>program.

413
00:21:54.025 --> 00:21:56.245
<00:21:54.025>And <00:21:54.225>there <00:21:54.425>are <00:21:54.625>many, <00:21:54.825>many, <00:21:55.025>many <00:21:55.225>commands <00:21:55.425>available.

414
00:21:56.395 --> 00:21:58.845
<00:21:56.395>I've <00:21:56.570>shown <00:21:56.745>you <00:21:56.920>here <00:21:57.095>a <00:21:57.270>small <00:21:57.445>selection <00:21:57.620>of <00:21:57.795>commands.

415
00:21:58.845 --> 00:22:02.805
<00:21:58.845>There <00:21:59.078>are <00:21:59.311>route <00:21:59.545>95 <00:21:59.778>into <00:22:00.011>K <00:22:00.245>20.

416
00:22:03.225 --> 00:22:07.165
<00:22:03.225>Um, <00:22:03.399>they're, <00:22:03.574>they're <00:22:03.750>always <00:22:03.925>coming, <00:22:04.100>every <00:22:04.274>new <00:22:04.449>release <00:22:04.625>there,

417
00:22:07.165 --> 00:22:08.245
<00:22:07.165>a <00:22:07.408>few <00:22:07.650>more <00:22:07.894>coming <00:22:08.137>in.

418
00:22:08.745 --> 00:22:13.435
<00:22:08.745>Uh, <00:22:08.885>if <00:22:09.024>you're <00:22:09.165>interested, <00:22:09.304>you <00:22:09.445>can <00:22:09.584>go <00:22:09.725>to <00:22:09.864>the, <00:22:10.004>um, <00:22:10.145>uh,

419
00:22:13.435 --> 00:22:15.835
<00:22:13.435>to <00:22:13.610>the <00:22:13.784>protocol <00:22:13.960>website <00:22:14.135>and, <00:22:14.310>and <00:22:14.485>look <00:22:14.659>them <00:22:14.835>up.

420
00:22:16.735 --> 00:22:20.965
<00:22:16.735>So <00:22:16.890>the <00:22:17.046>questions <00:22:17.201>then <00:22:17.357>that <00:22:17.512>I <00:22:17.668>asked, <00:22:17.823>so <00:22:17.979>hey, <00:22:18.135>we,

421
00:22:20.965 --> 00:22:24.965
<00:22:20.965>we <00:22:21.105>are <00:22:21.245>seeing <00:22:21.385>that <00:22:21.524>like <00:22:21.665>the, <00:22:21.804>the <00:22:21.945>debugger <00:22:22.084>when, <00:22:22.225>when <00:22:22.365>the,

422
00:22:24.985 --> 00:22:27.765
<00:22:24.985>the <00:22:25.218>session <00:22:25.451>announced <00:22:25.685>that <00:22:25.918>the <00:22:26.151>JVM <00:22:26.385>dies,

423
00:22:28.225 --> 00:22:32.365
<00:22:28.225>but <00:22:28.341>does <00:22:28.458>the <00:22:28.574>JVM <00:22:28.691>have <00:22:28.808>to <00:22:28.925>die <00:22:29.041>to <00:22:29.158>finish, <00:22:29.274>um, <00:22:29.391>a <00:22:29.508>debug <00:22:29.625>session?

424
00:22:32.945 --> 00:22:35.205
<00:22:32.945>Um, <00:22:33.120>so <00:22:33.294>the <00:22:33.470>question <00:22:33.645>is, <00:22:33.820>who <00:22:33.995>killed <00:22:34.169>the <00:22:34.345>JVM?

425
00:22:35.425 --> 00:22:39.755
<00:22:35.425>And <00:22:35.625>the <00:22:35.825>JVM <00:22:36.024>either <00:22:36.225>dies <00:22:36.425>on <00:22:36.625>its <00:22:36.825>own,

426
00:22:40.215 --> 00:22:44.755
<00:22:40.215>um, <00:22:40.342>of <00:22:40.469>course, <00:22:40.596>like <00:22:40.724>when <00:22:40.851>you <00:22:40.978>call <00:22:41.105>system <00:22:41.233>exit <00:22:41.360>in <00:22:41.487>your <00:22:41.615>JBM

427
00:22:44.755 --> 00:22:46.275
<00:22:44.755>application <00:22:45.028>and <00:22:45.302>the <00:22:45.575>JV <00:22:45.849>m <00:22:46.123>NICE

428
00:22:46.535 --> 00:22:51.195
<00:22:46.535>or <00:22:46.662>the <00:22:46.789>debug <00:22:46.916>can <00:22:47.044>can <00:22:47.171>also <00:22:47.298>tell <00:22:47.425>the <00:22:47.553>jvm, <00:22:47.680>Hey, <00:22:47.807>please <00:22:47.935>exit,

429
00:22:51.195 --> 00:22:52.395
<00:22:51.195>please, <00:22:51.735>please <00:22:52.275>die.

430
00:22:53.015 --> 00:22:56.365
<00:22:53.015>Um, <00:22:53.481>so <00:22:53.948>the <00:22:54.415>question

431
00:22:56.465 --> 00:22:58.565
<00:22:56.465>for <00:22:56.639>me <00:22:56.814>was <00:22:56.990>can <00:22:57.165>we <00:22:57.340>reat <00:22:57.514>touch <00:22:57.689>a <00:22:57.865>debugger?

432
00:22:58.565 --> 00:22:59.685
<00:22:58.565>And <00:22:58.817>that's, <00:22:59.069>and <00:22:59.321>that's <00:22:59.572>possible.

433
00:22:59.705 --> 00:23:03.045
<00:22:59.705>So, <00:22:59.905>um, <00:23:00.105>in <00:23:00.304>eclipse, <00:23:00.504>there <00:23:00.705>are <00:23:00.905>two <00:23:01.105>ways

434
00:23:03.065 --> 00:23:04.485
<00:23:03.065>to <00:23:03.384>terminate <00:23:03.704>the <00:23:04.023>debriefing <00:23:04.342>session.

435
00:23:04.785 --> 00:23:08.525
<00:23:04.785>One <00:23:04.912>is <00:23:05.039>you <00:23:05.166>can <00:23:05.294>terminate <00:23:05.421>it <00:23:05.548>with <00:23:05.675>like <00:23:05.803>this, <00:23:05.930>this <00:23:06.057>curve <00:23:06.185>box,

436
00:23:09.025 --> 00:23:10.405
<00:23:09.025>or <00:23:09.335>you <00:23:09.646>can <00:23:09.956>just <00:23:10.267>disconnect

437
00:23:10.425 --> 00:23:12.965
<00:23:10.425>and <00:23:10.600>the <00:23:10.774>JVM <00:23:10.950>runs <00:23:11.125>further <00:23:11.300>and <00:23:11.475>you <00:23:11.649>can <00:23:11.825>reconnect.

438
00:23:12.995 --> 00:23:15.085
<00:23:12.995>It's <00:23:13.344>quite <00:23:13.695>nice <00:23:14.044>in <00:23:14.395>intelligent,

439
00:23:17.145 --> 00:23:19.045
<00:23:17.145>that's <00:23:17.495>a <00:23:17.845>slightly <00:23:18.195>harder, <00:23:18.545>um,

440
00:23:19.235 --> 00:23:22.005
<00:23:19.235>there's <00:23:19.468>the <00:23:19.701>stopwatch <00:23:19.935>kills <00:23:20.168>the <00:23:20.401>the, <00:23:20.635>um,

441
00:23:23.055 --> 00:23:24.125
<00:23:23.055>which <00:23:23.376>kills <00:23:23.697>the <00:23:24.018>session,

442
00:23:24.265 --> 00:23:27.325
<00:23:24.265>but <00:23:24.465>by <00:23:24.665>default <00:23:24.865>there's <00:23:25.065>no <00:23:25.265>real <00:23:25.465>way <00:23:25.665>to,

443
00:23:29.055 --> 00:23:31.315
<00:23:29.055>um, <00:23:29.755>to, <00:23:30.455>to

444
00:23:31.825 --> 00:23:34.155
<00:23:31.825>exit <00:23:32.025>the <00:23:32.225>debugging <00:23:32.425>session <00:23:32.625>without <00:23:32.825>killing <00:23:33.025>the <00:23:33.225>chav.

445
00:23:34.815 --> 00:23:38.075
<00:23:34.815>So, <00:23:35.015>but <00:23:35.215>when <00:23:35.415>you <00:23:35.615>close <00:23:35.815>this <00:23:36.015>debugging <00:23:36.215>tab,

446
00:23:38.785 --> 00:23:41.235
<00:23:38.785>then <00:23:38.960>it <00:23:39.135>asks <00:23:39.310>you <00:23:39.485>like, <00:23:39.660>Hey, <00:23:39.835>um, <00:23:40.010>the <00:23:40.185>process

447
00:23:42.055 --> 00:23:43.395
<00:23:42.055>remote <00:23:42.356>here <00:23:42.658>in <00:23:42.959>this <00:23:43.261>example,

448
00:23:43.395 --> 00:23:46.165
<00:23:43.395>because <00:23:43.628>it's <00:23:43.861>remote <00:23:44.095>debugging, <00:23:44.328>run <00:23:44.561>is <00:23:44.795>running.

449
00:23:46.865 --> 00:23:48.125
<00:23:46.865>Do <00:23:47.091>you <00:23:47.318>want <00:23:47.545>to <00:23:47.772>terminate <00:23:47.999>it?

450
00:23:48.305 --> 00:23:51.965
<00:23:48.305>If <00:23:48.538>you <00:23:48.771>click <00:23:49.005>disconnect, <00:23:49.238>disconnect, <00:23:49.471>terminate, <00:23:49.705>enroll,

451
00:23:51.965 --> 00:23:55.245
<00:23:51.965>terminates, <00:23:52.105>uh, <00:23:52.245>that's <00:23:52.385>one <00:23:52.524>of <00:23:52.665>the <00:23:52.804>few <00:23:52.945>places <00:23:53.084>where <00:23:53.225>I <00:23:53.365>found

452
00:23:55.245 --> 00:23:58.685
<00:23:55.245>that <00:23:55.400>Eclipse <00:23:55.556>has <00:23:55.711>now <00:23:55.867>your <00:23:56.022>I <00:23:56.178>then <00:23:56.333>tell <00:23:56.489>j <00:23:56.645>um,

453
00:23:59.185 --> 00:24:02.685
<00:23:59.185>so <00:23:59.325>if <00:23:59.465>you <00:23:59.605>click <00:23:59.745>once <00:23:59.885>in <00:24:00.024>a <00:24:00.165>while, <00:24:00.304>don't <00:24:00.445>ask <00:24:00.585>again

454
00:24:03.625 --> 00:24:06.685
<00:24:03.625>and <00:24:03.858>just <00:24:04.091>click <00:24:04.325>on <00:24:04.558>on <00:24:04.791>terminate <00:24:05.025>disconnect.

455
00:24:06.915 --> 00:24:10.905
<00:24:06.915>Yeah, <00:24:07.148>you <00:24:07.381>might <00:24:07.615>not <00:24:07.848>wanna <00:24:08.081>do <00:24:08.315>this

456
00:24:10.905 --> 00:24:13.465
<00:24:10.905>because <00:24:11.371>this <00:24:11.838>makes <00:24:12.305>terminating

457
00:24:13.465 --> 00:24:15.185
<00:24:13.465>and <00:24:13.931>disconnecting <00:24:14.398>your, <00:24:14.865>um,

458
00:24:15.425 --> 00:24:19.095
<00:24:15.425>JVM <00:24:15.774>application <00:24:16.125>slightly, <00:24:16.475>slightly <00:24:16.825>hard.

459
00:24:20.035 --> 00:24:21.255
<00:24:20.035>Um, <00:24:21.133>so

460
00:24:21.255 --> 00:24:24.415
<00:24:21.255>after <00:24:21.410>I've <00:24:21.566>shown <00:24:21.721>you <00:24:21.877>like <00:24:22.032>the <00:24:22.188>concept <00:24:22.343>of, <00:24:22.499>um, <00:24:22.655>of

461
00:24:24.525 --> 00:24:25.815
<00:24:24.525>what <00:24:25.105>remotely <00:24:25.686>is,

462
00:24:25.835 --> 00:24:29.975
<00:24:25.835>and <00:24:25.990>also <00:24:26.146>omni <00:24:26.301>now, <00:24:26.457>now <00:24:26.612>onto <00:24:26.768>a <00:24:26.923>feature <00:24:27.079>that <00:24:27.235>many

463
00:24:29.995 --> 00:24:32.135
<00:24:29.995>of <00:24:30.274>you <00:24:30.554>probably <00:24:30.834>use <00:24:31.114>every <00:24:31.395>day,

464
00:24:32.155 --> 00:24:34.495
<00:24:32.155>and <00:24:32.435>that's, <00:24:32.715>uh, <00:24:32.995>break <00:24:33.274>points, <00:24:33.555>um,

465
00:24:34.795 --> 00:24:36.415
<00:24:34.795>and <00:24:35.145>especially <00:24:35.495>conditional <00:24:35.845>break <00:24:36.195>points

466
00:24:36.415 --> 00:24:40.815
<00:24:36.415>because <00:24:36.555>the <00:24:36.695>idea <00:24:36.835>is <00:24:36.975>here, <00:24:37.115>um, <00:24:37.254>maybe <00:24:37.395>our <00:24:37.534>application <00:24:37.675>has <00:24:37.815>a

467
00:24:41.115 --> 00:24:45.655
<00:24:41.115>and <00:24:41.242>we <00:24:41.369>wanna <00:24:41.496>see <00:24:41.624>in <00:24:41.751>the, <00:24:41.878>in <00:24:42.005>the <00:24:42.133>way <00:24:42.260>it <00:24:42.387>counts <00:24:42.515>lines,

468
00:24:46.355 --> 00:24:47.935
<00:24:46.355>um, <00:24:46.635>and <00:24:46.915>then <00:24:47.195>we <00:24:47.475>click <00:24:47.755>somewhere

469
00:24:47.935 --> 00:24:51.855
<00:24:47.935>and <00:24:48.062>be <00:24:48.189>like, <00:24:48.316>oh, <00:24:48.444>I <00:24:48.571>wanna <00:24:48.698>go <00:24:48.825>into <00:24:48.953>this <00:24:49.080>loop <00:24:49.207>here, <00:24:49.335>um,

470
00:24:51.915 --> 00:24:56.295
<00:24:51.915>and <00:24:52.090>break <00:24:52.264>whenever <00:24:52.440>a <00:24:52.615>line <00:24:52.790>contains, <00:24:52.965>um, <00:24:53.139>a <00:24:53.315>comment.

471
00:24:56.875 --> 00:25:01.055
<00:24:56.875>And <00:24:56.975>so <00:24:57.075>we <00:24:57.175>can <00:24:57.275>do <00:24:57.375>it <00:24:57.475>here <00:24:57.575>in <00:24:57.675>the, <00:24:57.775>we <00:24:57.875>just <00:24:57.975>right <00:24:58.075>click <00:24:58.175>on <00:24:58.275>the,

472
00:25:02.605 --> 00:25:05.385
<00:25:02.605>uh, <00:25:02.780>on, <00:25:02.955>on <00:25:03.130>the, <00:25:03.305>on <00:25:03.480>the <00:25:03.655>break <00:25:03.830>point <00:25:04.005>line,

473
00:25:05.525 --> 00:25:07.985
<00:25:05.525>and <00:25:05.700>then <00:25:05.875>we <00:25:06.050>can <00:25:06.225>tell <00:25:06.400>please <00:25:06.575>execute <00:25:06.750>this <00:25:06.925>condition

474
00:25:08.045 --> 00:25:11.745
<00:25:08.045>and <00:25:08.200>only <00:25:08.356>hold, <00:25:08.511>only <00:25:08.667>break <00:25:08.822>when <00:25:08.978>this <00:25:09.133>condition <00:25:09.289>is <00:25:09.445>met.

475
00:25:13.165 --> 00:25:16.705
<00:25:13.165>So, <00:25:13.320>um, <00:25:13.476>the <00:25:13.631>Christmas <00:25:13.787>then <00:25:13.942>are <00:25:14.098>there <00:25:14.253>any <00:25:14.409>performance <00:25:14.565>bonds?

476
00:25:16.965 --> 00:25:19.985
<00:25:16.965>And <00:25:17.120>of <00:25:17.276>course, <00:25:17.431>if <00:25:17.587>I'm <00:25:17.742>asking <00:25:17.898>this, <00:25:18.053>that's <00:25:18.209>why <00:25:18.365>Yeah,

477
00:25:19.985 --> 00:25:21.145
<00:25:19.985>they, <00:25:20.245>they, <00:25:20.506>they, <00:25:20.768>they <00:25:21.029>are.

478
00:25:21.525 --> 00:25:24.665
<00:25:21.525>So <00:25:21.725>the <00:25:21.925>problem <00:25:22.125>is <00:25:22.325>the <00:25:22.525>JBM <00:25:22.725>doesn't <00:25:22.925>have

479
00:25:24.665 --> 00:25:26.385
<00:25:24.665>conditional <00:25:25.365>break <00:25:26.065>points.

480
00:25:26.565 --> 00:25:28.465
<00:25:26.565>Uh, <00:25:26.915>it <00:25:27.265>doesn't <00:25:27.615>have <00:25:27.965>support

481
00:25:28.525 --> 00:25:31.385
<00:25:28.525>for <00:25:28.805>conditional <00:25:29.085>break <00:25:29.365>points <00:25:29.645>kind <00:25:29.925>of.

482
00:25:31.445 --> 00:25:35.825
<00:25:31.445>So <00:25:31.600>the <00:25:31.756>the <00:25:31.911>thing <00:25:32.067>is, <00:25:32.222>um, <00:25:32.378>from, <00:25:32.533>from <00:25:32.689>early <00:25:32.845>on,

483
00:25:36.405 --> 00:25:39.025
<00:25:36.405>um, <00:25:36.545>with <00:25:36.685>the <00:25:36.825>break <00:25:36.965>preference, <00:25:37.105>when <00:25:37.245>you <00:25:37.385>set <00:25:37.524>a <00:25:37.665>drag <00:25:37.805>point,

484
00:25:39.125 --> 00:25:43.905
<00:25:39.125>you <00:25:39.280>can <00:25:39.436>also <00:25:39.591>give <00:25:39.747>JWP, <00:25:39.902>um, <00:25:40.058>an, <00:25:40.213>an <00:25:40.369>expression <00:25:40.525>id,

485
00:25:44.765 --> 00:25:47.065
<00:25:44.765>and <00:25:45.115>that's <00:25:45.465>like <00:25:45.815>your <00:25:46.165>condition.

486
00:25:47.085 --> 00:25:51.225
<00:25:47.085>But <00:25:47.225>the <00:25:47.365>problem <00:25:47.505>is <00:25:47.645>it <00:25:47.785>since <00:25:47.925>like <00:25:48.065>the <00:25:48.205>nineties <00:25:48.345>declared <00:25:48.485>as

487
00:25:51.405 --> 00:25:54.945
<00:25:51.405>for <00:25:51.580>the <00:25:51.754>future <00:25:51.930>and <00:25:52.105>the <00:25:52.280>expression <00:25:52.455>ID <00:25:52.629>type <00:25:52.805>is

488
00:25:55.005 --> 00:25:56.025
<00:25:55.005>not <00:25:55.311>where <00:25:55.617>defined <00:25:55.923>it.

489
00:25:56.045 --> 00:25:58.065
<00:25:56.045>So <00:25:56.325>you <00:25:56.605>cannot <00:25:56.885>actually <00:25:57.165>create <00:25:57.445>an

490
00:25:58.065 --> 00:25:59.905
<00:25:58.065>expression <00:25:58.531>that's <00:25:58.998>quite <00:25:59.465>pretty.

491
00:26:00.165 --> 00:26:04.955
<00:26:00.165>So <00:26:00.514>how <00:26:00.865>do, <00:26:01.215>um, <00:26:01.565>so

492
00:26:05.015 --> 00:26:07.195
<00:26:05.015>so <00:26:05.248>how <00:26:05.481>do <00:26:05.715>JVMs <00:26:05.948>then <00:26:06.181>support <00:26:06.415>it?

493
00:26:07.255 --> 00:26:11.515
<00:26:07.255>So, <00:26:07.488>um, <00:26:07.721>breakpoint <00:26:07.955>are <00:26:08.188>emulated <00:26:08.421>using <00:26:08.655>breakpoint

494
00:26:11.615 --> 00:26:14.835
<00:26:11.615>and <00:26:11.790>then <00:26:11.965>evaluation <00:26:12.140>on <00:26:12.315>the <00:26:12.490>client <00:26:12.665>side <00:26:12.840>on <00:26:13.015>on

495
00:26:14.835 --> 00:26:15.875
<00:26:14.835>your <00:26:15.303>debugger <00:26:15.771>side.

496
00:26:15.975 --> 00:26:18.875
<00:26:15.975>So <00:26:16.175>how <00:26:16.375>essentially <00:26:16.574>works <00:26:16.774>where <00:26:16.975>we're <00:26:17.175>going, <00:26:17.375>again,

497
00:26:18.885 --> 00:26:20.755
<00:26:18.885>we're <00:26:19.118>starting <00:26:19.351>our <00:26:19.585>debugging <00:26:19.818>session <00:26:20.051>with <00:26:20.285>the,

498
00:26:21.065 --> 00:26:22.195
<00:26:21.065>with <00:26:21.404>I <00:26:21.743>think <00:26:22.081>before.

499
00:26:22.855 --> 00:26:26.675
<00:26:22.855>Um, <00:26:23.135>and <00:26:23.415>um, <00:26:23.695>I <00:26:23.975>assume <00:26:24.255>here

500
00:26:26.675 --> 00:26:29.675
<00:26:26.675>that <00:26:26.802>we <00:26:26.929>have <00:26:27.056>set <00:26:27.184>a <00:26:27.311>break <00:26:27.438>point <00:26:27.565>with <00:26:27.693>a <00:26:27.820>condition <00:26:27.947>called <00:26:28.075>line

501
00:26:29.675 --> 00:26:33.195
<00:26:29.675>that <00:26:29.850>contains <00:26:30.024>slash <00:26:30.200>slash <00:26:30.375>And <00:26:30.550>so <00:26:30.725>what <00:26:30.899>debugger <00:26:31.075>does,

502
00:26:33.305 --> 00:26:34.995
<00:26:33.305>it's <00:26:33.505>also <00:26:33.705>a <00:26:33.905>break <00:26:34.105>point <00:26:34.305>at <00:26:34.505>the <00:26:34.705>slide

503
00:26:35.095 --> 00:26:39.605
<00:26:35.095>and <00:26:35.222>tells <00:26:35.349>the <00:26:35.476>JVM, <00:26:35.604>hey <00:26:35.731>on <00:26:35.858>these <00:26:35.985>two <00:26:36.113>and <00:26:36.240>then <00:26:36.367>the <00:26:36.495>break,

504
00:26:39.905 --> 00:26:43.005
<00:26:39.905>and <00:26:40.105>then <00:26:40.305>it <00:26:40.504>tells <00:26:40.705>the <00:26:40.905>JVM <00:26:41.105>to <00:26:41.305>resume.

505
00:26:43.185 --> 00:26:47.485
<00:26:43.185>And <00:26:43.340>the <00:26:43.496>JVM <00:26:43.651>then <00:26:43.807>hits <00:26:43.962>the <00:26:44.118>break <00:26:44.273>point <00:26:44.429>first <00:26:44.585>time

506
00:26:47.485 --> 00:26:50.605
<00:26:47.485>and <00:26:47.625>is <00:26:47.764>like, <00:26:47.905>Hey, <00:26:48.044>uh, <00:26:48.185>I <00:26:48.324>suspend, <00:26:48.465>hey, <00:26:48.604>debugger <00:26:48.745>take <00:26:48.885>over.

507
00:26:51.065 --> 00:26:53.485
<00:26:51.065>The <00:26:51.240>debugger <00:26:51.415>then <00:26:51.590>gets <00:26:51.765>the <00:26:51.940>volume <00:26:52.115>of <00:26:52.290>the <00:26:52.465>line.

508
00:26:53.825 --> 00:26:56.605
<00:26:53.825>For <00:26:54.000>example <00:26:54.175>here, <00:26:54.350>the, <00:26:54.525>the <00:26:54.700>first <00:26:54.875>line <00:26:55.050>of <00:26:55.225>our,

509
00:26:56.625 --> 00:27:00.365
<00:26:56.625>of <00:26:56.905>our <00:26:57.185>file <00:26:57.465>import, <00:26:57.745>um, <00:26:58.025>Java,

510
00:27:00.365 --> 00:27:01.765
<00:27:00.365>that <00:27:00.680>I <00:27:00.995>owe <00:27:01.310>that <00:27:01.625>exception.

511
00:27:03.265 --> 00:27:06.245
<00:27:03.265>And <00:27:03.440>then <00:27:03.615>the <00:27:03.790>debug <00:27:03.965>tells <00:27:04.140>the <00:27:04.315>JV <00:27:04.490>m <00:27:04.665>Hey,

512
00:27:06.245 --> 00:27:11.045
<00:27:06.245>please <00:27:06.385>create <00:27:06.524>a <00:27:06.665>string <00:27:06.804>object <00:27:06.945>of <00:27:07.084>this <00:27:07.225>last <00:27:07.364>and <00:27:07.504>JVM <00:27:07.645>responds,

513
00:27:11.625 --> 00:27:14.045
<00:27:11.625>and <00:27:11.975>then <00:27:12.325>the <00:27:12.675>debugger <00:27:13.025>wants

514
00:27:14.105 --> 00:27:15.885
<00:27:14.105>to <00:27:14.385>call <00:27:14.665>this <00:27:14.945>DOT <00:27:15.225>contains <00:27:15.505>method,

515
00:27:15.905 --> 00:27:18.005
<00:27:15.905>but <00:27:16.080>it <00:27:16.254>doesn't <00:27:16.430>know <00:27:16.605>all <00:27:16.780>the <00:27:16.955>methods <00:27:17.129>of <00:27:17.305>strings.

516
00:27:18.005 --> 00:27:21.725
<00:27:18.005>So <00:27:18.132>it <00:27:18.259>has <00:27:18.386>to <00:27:18.514>ask <00:27:18.641>the <00:27:18.768>JVMA <00:27:18.895>please <00:27:19.023>what <00:27:19.150>are <00:27:19.277>the <00:27:19.405>methods

517
00:27:21.945 --> 00:27:26.205
<00:27:21.945>of <00:27:22.085>string <00:27:22.225>again, <00:27:22.365>and <00:27:22.504>what <00:27:22.645>are <00:27:22.784>the <00:27:22.925>specific <00:27:23.064>method <00:27:23.205>that <00:27:23.345>is,

518
00:27:26.205 --> 00:27:29.095
<00:27:26.205>because <00:27:26.405>of <00:27:26.605>course <00:27:26.804>we <00:27:27.004>know <00:27:27.205>what <00:27:27.405>a <00:27:27.605>me

519
00:27:29.165 --> 00:27:30.895
<00:27:29.165>that <00:27:29.514>the <00:27:29.865>method <00:27:30.215>contains <00:27:30.565>exists,

520
00:27:30.955 --> 00:27:34.455
<00:27:30.955>but <00:27:31.110>we <00:27:31.266>don't <00:27:31.421>know <00:27:31.577>what <00:27:31.732>the <00:27:31.888>current <00:27:32.043>method <00:27:32.199>that <00:27:32.355>is.

521
00:27:34.475 --> 00:27:37.375
<00:27:34.475>So, <00:27:34.602>uh, <00:27:34.729>the <00:27:34.856>deeper <00:27:34.984>ask <00:27:35.111>the <00:27:35.238>JVMA, <00:27:35.365>please <00:27:35.493>give <00:27:35.620>it <00:27:35.747>to <00:27:35.875>me,

522
00:27:37.555 --> 00:27:39.775
<00:27:37.555>and <00:27:37.835>then <00:27:38.115>it <00:27:38.395>has <00:27:38.675>the <00:27:38.955>JVM,

523
00:27:39.775 --> 00:27:43.095
<00:27:39.775>please <00:27:39.950>invoke <00:27:40.125>the <00:27:40.300>contains <00:27:40.475>method <00:27:40.650>using <00:27:40.825>like <00:27:41.000>the <00:27:41.175>line

524
00:27:43.795 --> 00:27:46.055
<00:27:43.795>and <00:27:44.075>the <00:27:44.355>the <00:27:44.635>other <00:27:44.915>string <00:27:45.195>object.

525
00:27:46.555 --> 00:27:49.255
<00:27:46.555>And <00:27:46.788>then <00:27:47.021>it's <00:27:47.255>like, <00:27:47.488>yeah, <00:27:47.721>uh, <00:27:47.955>the,

526
00:27:49.435 --> 00:27:50.895
<00:27:49.435>the <00:27:49.763>line <00:27:50.091>doesn't <00:27:50.420>contain <00:27:50.749>it.

527
00:27:50.895 --> 00:27:52.215
<00:27:50.895>It's <00:27:51.132>the <00:27:51.370>first <00:27:51.607>line <00:27:51.845>with <00:27:52.082>import.

528
00:27:52.215 --> 00:27:55.215
<00:27:52.215>It <00:27:52.370>doesn't <00:27:52.526>ha <00:27:52.681>name <00:27:52.837>the <00:27:52.992>flash <00:27:53.148>slide, <00:27:53.303>so <00:27:53.459>not <00:27:53.615>great.

529
00:27:55.795 --> 00:27:57.535
<00:27:55.795>Um, <00:27:56.261>but <00:27:56.728>hey, <00:27:57.195>resume.

530
00:27:59.375 --> 00:28:03.355
<00:27:59.375>And <00:27:59.515>then <00:27:59.655>we're <00:27:59.795>at <00:27:59.935>another <00:28:00.075>time, <00:28:00.215>uh, <00:28:00.355>we, <00:28:00.495>we, <00:28:00.635>uh, <00:28:00.775>yeah,

531
00:28:03.355 --> 00:28:05.155
<00:28:03.355>the <00:28:03.705>involved <00:28:04.055>contentment <00:28:04.405>returns <00:28:04.755>fault.

532
00:28:05.295 --> 00:28:09.105
<00:28:05.295>And, <00:28:05.995>um, <00:28:06.695>um,

533
00:28:09.975 --> 00:28:12.545
<00:28:09.975>then <00:28:10.208>again <00:28:10.441>we <00:28:10.675>get <00:28:10.908>the <00:28:11.141>suspend <00:28:11.375>event

534
00:28:12.565 --> 00:28:16.665
<00:28:12.565>and <00:28:12.705>the <00:28:12.845>next <00:28:12.985>time, <00:28:13.125>um, <00:28:13.265>the <00:28:13.405>JBM <00:28:13.545>hits <00:28:13.685>a <00:28:13.825>drag <00:28:13.965>point,

535
00:28:17.745 --> 00:28:21.335
<00:28:17.745>which <00:28:17.978>we <00:28:18.211>check <00:28:18.445>it <00:28:18.678>again, <00:28:18.911>we <00:28:19.145>resume,

536
00:28:21.875 --> 00:28:23.495
<00:28:21.875>we <00:28:22.155>check <00:28:22.435>it <00:28:22.715>again, <00:28:22.995>we <00:28:23.275>resume,

537
00:28:23.515 --> 00:28:27.135
<00:28:23.515>and <00:28:23.655>then <00:28:23.795>we <00:28:23.935>are <00:28:24.075>getting <00:28:24.215>to <00:28:24.355>a <00:28:24.495>line <00:28:24.635>eventually <00:28:24.775>that's, <00:28:24.915>uh,

538
00:28:27.395 --> 00:28:29.215
<00:28:27.395>that's, <00:28:27.675>that <00:28:27.955>contains <00:28:28.235>the <00:28:28.514>slash <00:28:28.795>slash

539
00:28:30.105 --> 00:28:32.415
<00:28:30.105>we're <00:28:30.280>also <00:28:30.455>creating <00:28:30.630>the <00:28:30.805>slash <00:28:30.980>thing <00:28:31.155>and <00:28:31.330>then <00:28:31.505>everything

540
00:28:32.435 --> 00:28:35.055
<00:28:32.435>and <00:28:32.635>we <00:28:32.835>invoking <00:28:33.034>the <00:28:33.235>contains <00:28:33.435>method <00:28:33.635>returns <00:28:33.835>through,

541
00:28:35.055 --> 00:28:39.375
<00:28:35.055>and <00:28:35.230>we <00:28:35.405>like, <00:28:35.580>yay, <00:28:35.755>we, <00:28:35.930>we <00:28:36.105>can <00:28:36.280>finally <00:28:36.455>like,

542
00:28:39.995 --> 00:28:42.375
<00:28:39.995>um, <00:28:40.228>get <00:28:40.461>all <00:28:40.695>the <00:28:40.928>proper <00:28:41.161>information <00:28:41.395>to,

543
00:28:42.675 --> 00:28:45.295
<00:28:42.675>to <00:28:42.908>show <00:28:43.141>this <00:28:43.375>small <00:28:43.608>debug <00:28:43.841>information <00:28:44.075>vendor

544
00:28:45.435 --> 00:28:46.935
<00:28:45.435>and <00:28:45.705>then <00:28:45.975>to <00:28:46.245>probably <00:28:46.514>hold, <00:28:46.784>so

545
00:28:47.605 --> 00:28:49.855
<00:28:47.605>conditional <00:28:47.885>break <00:28:48.165>points <00:28:48.445>are <00:28:48.725>quite <00:28:49.005>expensive

546
00:28:49.855 --> 00:28:54.175
<00:28:49.855>because <00:28:50.088>they <00:28:50.321>like, <00:28:50.555>um, <00:28:50.788>this <00:28:51.021>also <00:28:51.255>kind

547
00:28:54.175 --> 00:28:56.935
<00:28:54.175>of <00:28:54.455>explain <00:28:54.735>the <00:28:55.014>many <00:28:55.294>breakpoint <00:28:55.575>options

548
00:28:56.935 --> 00:29:01.055
<00:28:56.935>that <00:28:57.062>you <00:28:57.189>have <00:28:57.316>in <00:28:57.444>IDs <00:28:57.571>like <00:28:57.698>Intel <00:28:57.825>J <00:28:57.953>um, <00:28:58.080>that <00:28:58.207>you <00:28:58.335>can,

549
00:29:01.165 --> 00:29:02.295
<00:29:01.165>what <00:29:01.504>you <00:29:01.843>can <00:29:02.182>suspend.

550
00:29:02.435 --> 00:29:06.255
<00:29:02.435>So, <00:29:02.635>um, <00:29:02.835>do <00:29:03.034>you <00:29:03.235>want <00:29:03.435>suspend, <00:29:03.635>um, <00:29:03.835>the,

551
00:29:06.475 --> 00:29:07.495
<00:29:06.475>the, <00:29:06.781>the <00:29:07.087>break <00:29:07.392>point?

552
00:29:07.795 --> 00:29:10.375
<00:29:07.795>Uh, <00:29:07.935>do <00:29:08.075>you <00:29:08.215>want <00:29:08.355>to <00:29:08.495>suspend <00:29:08.635>the <00:29:08.775>whole <00:29:08.915>application <00:29:09.055>on <00:29:09.195>the

553
00:29:10.375 --> 00:29:13.575
<00:29:10.375>threats <00:29:10.530>because <00:29:10.686>that's <00:29:10.841>like <00:29:10.997>modeled <00:29:11.152>with <00:29:11.308>the, <00:29:11.463>with, <00:29:11.619>uh, <00:29:11.775>on,

554
00:29:13.635 --> 00:29:18.335
<00:29:13.635>on <00:29:13.810>JWP, <00:29:13.985>but <00:29:14.160>also, <00:29:14.335>um, <00:29:14.510>um, <00:29:14.685>whether <00:29:14.860>it's <00:29:15.035>enable

555
00:29:18.395 --> 00:29:22.055
<00:29:18.395>or <00:29:18.570>not, <00:29:18.745>so <00:29:18.920>should <00:29:19.095>it, <00:29:19.270>uh, <00:29:19.445>be <00:29:19.620>really <00:29:19.795>evaluated

556
00:29:22.155 --> 00:29:24.095
<00:29:22.155>and <00:29:22.435>whether <00:29:22.715>to <00:29:22.995>suspend <00:29:23.274>it <00:29:23.555>all.

557
00:29:24.795 --> 00:29:28.385
<00:29:24.795>Um, <00:29:25.028>and <00:29:25.261>there <00:29:25.495>are <00:29:25.728>many <00:29:25.961>more <00:29:26.195>options

558
00:29:28.445 --> 00:29:30.145
<00:29:28.445>and <00:29:28.911>these, <00:29:29.378>these <00:29:29.845>work,

559
00:29:30.145 --> 00:29:34.225
<00:29:30.145>because <00:29:30.320>the <00:29:30.495>JVM <00:29:30.670>at <00:29:30.845>every <00:29:31.020>break <00:29:31.195>point <00:29:31.370>is <00:29:31.545>suspended

560
00:29:34.245 --> 00:29:37.825
<00:29:34.245>and <00:29:34.419>the <00:29:34.594>debugs <00:29:34.770>full <00:29:34.945>controller <00:29:35.120>can <00:29:35.294>execute <00:29:35.469>like <00:29:35.645>arbitrary

561
00:29:37.935 --> 00:29:39.145
<00:29:37.935>code <00:29:38.298>in <00:29:38.661>your <00:29:39.024>JBM.

562
00:29:39.445 --> 00:29:42.445
<00:29:39.445>And <00:29:39.600>so <00:29:39.756>none <00:29:39.911>of <00:29:40.067>this <00:29:40.222>has <00:29:40.378>to <00:29:40.533>be <00:29:40.689>supported <00:29:40.845>directly,

563
00:29:42.865 --> 00:29:44.725
<00:29:42.865>um, <00:29:43.331>by <00:29:43.798>your <00:29:44.265>JVM.

564
00:29:45.025 --> 00:29:47.725
<00:29:45.025>So <00:29:45.152>it <00:29:45.279>can <00:29:45.406>be <00:29:45.534>done <00:29:45.661>in <00:29:45.788>eBay, <00:29:45.915>which <00:29:46.043>is <00:29:46.170>pretty <00:29:46.297>cool <00:29:46.425>for,

565
00:29:47.865 --> 00:29:49.085
<00:29:47.865>for <00:29:48.231>our <00:29:48.597>e <00:29:48.963>developers

566
00:29:49.085 --> 00:29:52.325
<00:29:49.085>because <00:29:49.285>they <00:29:49.485>connect <00:29:49.685>new <00:29:49.885>features <00:29:50.085>without <00:29:50.285>modifying <00:29:50.485>JVM.

567
00:29:52.665 --> 00:29:54.965
<00:29:52.665>But <00:29:52.898>of <00:29:53.131>course, <00:29:53.365>it's, <00:29:53.598>it's <00:29:53.831>largely <00:29:54.065>slower.

568
00:29:55.145 --> 00:29:57.685
<00:29:55.145>Of <00:29:55.320>course, <00:29:55.495>you <00:29:55.670>have <00:29:55.845>these <00:29:56.020>things <00:29:56.195>also <00:29:56.370>in <00:29:56.545>Eclipse.

569
00:30:00.625 --> 00:30:05.465
<00:30:00.625>Um, <00:30:00.825>so <00:30:01.025>probably, <00:30:01.225>um, <00:30:01.425>the <00:30:01.625>next <00:30:01.825>question <00:30:02.025>is

570
00:30:05.465 --> 00:30:08.105
<00:30:05.465>how <00:30:05.698>are <00:30:05.931>watches <00:30:06.165>and <00:30:06.398>evil <00:30:06.631>expression <00:30:06.865>implemented

571
00:30:08.105 --> 00:30:09.465
<00:30:08.105>and <00:30:08.411>they <00:30:08.716>implement <00:30:09.023>the <00:30:09.329>same.

572
00:30:09.655 --> 00:30:11.065
<00:30:09.655>It's, <00:30:09.972>it's <00:30:10.289>the <00:30:10.606>same <00:30:10.924>thing

573
00:30:12.765 --> 00:30:15.135
<00:30:12.765>when <00:30:12.998>you're <00:30:13.231>evaluate <00:30:13.465>an <00:30:13.698>expression, <00:30:13.931>you, <00:30:14.165>you're

574
00:30:15.745 --> 00:30:17.855
<00:30:15.745>evaluating <00:30:16.211>essentially <00:30:16.678>on <00:30:17.145>your,

575
00:30:18.155 --> 00:30:20.775
<00:30:18.155>you're <00:30:18.388>executing <00:30:18.621>the <00:30:18.855>program <00:30:19.088>essentially <00:30:19.321>in <00:30:19.555>your,

576
00:30:21.435 --> 00:30:24.015
<00:30:21.435>in <00:30:21.610>your <00:30:21.784>IDE, <00:30:21.960>but <00:30:22.135>calling <00:30:22.310>back <00:30:22.485>for <00:30:22.659>every <00:30:22.835>method

577
00:30:24.115 --> 00:30:26.175
<00:30:24.115>for <00:30:24.315>every <00:30:24.515>while <00:30:24.715>you <00:30:24.915>access <00:30:25.115>to <00:30:25.315>the <00:30:25.515>JV.

578
00:30:27.075 --> 00:30:29.535
<00:30:27.075>Um, <00:30:27.275>and <00:30:27.475>the <00:30:27.675>reason <00:30:27.875>for <00:30:28.075>this <00:30:28.275>is, <00:30:28.475>um,

579
00:30:30.205 --> 00:30:32.415
<00:30:30.205>that <00:30:30.485>it's <00:30:30.764>all <00:30:31.044>terrible <00:30:31.324>and <00:30:31.605>old.

580
00:30:32.475 --> 00:30:36.815
<00:30:32.475>So, <00:30:32.675>um, <00:30:32.875>to <00:30:33.074>quote <00:30:33.274>an <00:30:33.475>anonymous <00:30:33.675>Java <00:30:33.875>architect,

581
00:30:36.975 --> 00:30:40.095
<00:30:36.975>J-V-M-T-I, <00:30:37.175>so <00:30:37.375>the <00:30:37.574>API <00:30:37.774>is <00:30:37.975>wrapped <00:30:38.175>by <00:30:38.375>JWP,

582
00:30:40.405 --> 00:30:42.815
<00:30:40.405>it's <00:30:40.560>a <00:30:40.716>terrible <00:30:40.871>API, <00:30:41.027>we <00:30:41.182>should <00:30:41.338>get <00:30:41.493>rid <00:30:41.649>of <00:30:41.805>it

583
00:30:42.915 --> 00:30:44.095
<00:30:42.915>as <00:30:43.269>much <00:30:43.623>as <00:30:43.977>possible.

584
00:30:44.595 --> 00:30:49.385
<00:30:44.595>And <00:30:45.295>um, <00:30:45.995>that's,

585
00:30:49.385 --> 00:30:50.505
<00:30:49.385>that's <00:30:49.889>one <00:30:50.393>thing.

586
00:30:50.575 --> 00:30:53.505
<00:30:50.575>It's <00:30:50.775>an <00:30:50.975>all <00:30:51.175>protocol. <00:30:51.375>Yeah, <00:30:51.575>it, <00:30:51.775>it <00:30:51.975>works.

587
00:30:53.575 --> 00:30:56.265
<00:30:53.575>It's <00:30:53.730>good <00:30:53.886>enough, <00:30:54.041>but <00:30:54.197>it <00:30:54.352>has <00:30:54.508>this <00:30:54.663>problem <00:30:54.819>then, <00:30:54.975>um,

588
00:30:56.375 --> 00:30:58.585
<00:30:56.375>conditional <00:30:56.725>price <00:30:57.075>points <00:30:57.425>are <00:30:57.775>complex.

589
00:30:59.325 --> 00:31:02.945
<00:30:59.325>Uh, <00:30:59.525>he <00:30:59.725>especially <00:30:59.925>slow <00:31:00.125>with, <00:31:00.325>with <00:31:00.525>large <00:31:00.725>conditions

590
00:31:02.945 --> 00:31:05.345
<00:31:02.945>because <00:31:03.120>of <00:31:03.294>this, <00:31:03.470>because <00:31:03.645>we <00:31:03.820>don't <00:31:03.995>have <00:31:04.169>proper <00:31:04.345>support.

591
00:31:06.085 --> 00:31:10.775
<00:31:06.085>So <00:31:06.201>of <00:31:06.318>course <00:31:06.435>I <00:31:06.551>asked <00:31:06.668>myself, <00:31:06.785>so <00:31:06.901>how, <00:31:07.018>how <00:31:07.135>could <00:31:07.251>I <00:31:07.368>improve <00:31:07.485>it?

592
00:31:11.475 --> 00:31:14.615
<00:31:11.475>How, <00:31:11.630>or <00:31:11.786>how? <00:31:11.941>Uh, <00:31:12.097>so <00:31:12.252>I <00:31:12.408>came <00:31:12.563>up <00:31:12.719>with <00:31:12.875>one

593
00:31:14.635 --> 00:31:16.975
<00:31:14.635>and <00:31:14.915>that's <00:31:15.195>the, <00:31:15.475>the <00:31:15.754>tunnel <00:31:16.035>that,

594
00:31:16.975 --> 00:31:18.535
<00:31:16.975>that <00:31:17.208>you <00:31:17.441>saw <00:31:17.675>before <00:31:17.908>in <00:31:18.141>my <00:31:18.375>demo.

595
00:31:18.955 --> 00:31:20.255
<00:31:18.955>So <00:31:19.247>my <00:31:19.540>idea <00:31:19.832>was, <00:31:20.125>um,

596
00:31:20.365 --> 00:31:23.895
<00:31:20.365>currently <00:31:20.520>the <00:31:20.676>debugger <00:31:20.831>is <00:31:20.987>asking <00:31:21.142>like <00:31:21.298>all <00:31:21.453>the <00:31:21.609>time, <00:31:21.765>like,

597
00:31:23.915 --> 00:31:25.575
<00:31:23.915>Hey, <00:31:24.148>please <00:31:24.381>get <00:31:24.615>the <00:31:24.848>volume <00:31:25.081>of <00:31:25.315>X.

598
00:31:25.635 --> 00:31:29.615
<00:31:25.635>And <00:31:25.835>then <00:31:26.035>it's <00:31:26.235>asking <00:31:26.435>for <00:31:26.635>JWP, <00:31:26.835>your <00:31:27.035>application,

599
00:31:30.235 --> 00:31:32.935
<00:31:30.235>please <00:31:30.468>get <00:31:30.701>your, <00:31:30.935>your <00:31:31.168>JVM <00:31:31.401>get <00:31:31.635>X

600
00:31:33.035 --> 00:31:34.435
<00:31:33.035>and <00:31:33.287>returns <00:31:33.539>and, <00:31:33.791>and <00:31:34.043>we're <00:31:34.295>trying.

601
00:31:34.435 --> 00:31:37.615
<00:31:34.435>And <00:31:34.575>then <00:31:34.715>debug <00:31:34.855>wants <00:31:34.995>to <00:31:35.135>know <00:31:35.274>y <00:31:35.415>So <00:31:35.554>for <00:31:35.695>example, <00:31:35.835>the

602
00:31:38.145 --> 00:31:42.295
<00:31:38.145>debug <00:31:38.252>is <00:31:38.360>computing <00:31:38.468>X <00:31:38.575>plus <00:31:38.683>Y, <00:31:38.791>and <00:31:38.898>it <00:31:39.006>ask <00:31:39.114>y <00:31:39.221>and <00:31:39.329>it <00:31:39.437>goes <00:31:39.545>back

603
00:31:42.295 --> 00:31:44.575
<00:31:42.295>and <00:31:42.495>forth <00:31:42.695>and <00:31:42.895>you <00:31:43.095>have <00:31:43.295>licensing <00:31:43.495>everything <00:31:43.695>around,

604
00:31:44.595 --> 00:31:45.815
<00:31:44.595>and <00:31:44.869>that's <00:31:45.144>not <00:31:45.418>that <00:31:45.693>great.

605
00:31:46.275 --> 00:31:48.495
<00:31:46.275>But <00:31:46.475>so <00:31:46.675>I, <00:31:46.875>I <00:31:47.075>tried <00:31:47.275>with <00:31:47.475>a <00:31:47.675>approach

606
00:31:48.495 --> 00:31:50.415
<00:31:48.495>to <00:31:48.844>implement <00:31:49.195>a <00:31:49.544>pre-reading <00:31:49.895>tunnel.

607
00:31:50.515 --> 00:31:53.575
<00:31:50.515>So <00:31:50.715>essentially <00:31:50.915>your <00:31:51.115>debug <00:31:51.315>talks <00:31:51.515>with <00:31:51.715>like <00:31:51.915>a,

608
00:31:54.405 --> 00:31:56.655
<00:31:54.405>with <00:31:54.605>like <00:31:54.805>one <00:31:55.004>hand <00:31:55.205>of <00:31:55.405>my <00:31:55.605>prefetching <00:31:55.805>tunnel

609
00:31:56.715 --> 00:31:58.095
<00:31:56.715>and <00:31:56.963>then <00:31:57.211>ask, <00:31:57.460>like, <00:31:57.708>get <00:31:57.957>X,

610
00:31:58.315 --> 00:32:00.775
<00:31:58.315>and <00:31:58.548>then <00:31:58.781>the, <00:31:59.015>the <00:31:59.248>tunnel <00:31:59.481>knows, <00:31:59.715>oh,

611
00:32:00.775 --> 00:32:04.455
<00:32:00.775>every <00:32:00.975>time <00:32:01.175>the <00:32:01.375>the <00:32:01.575>debugger <00:32:01.775>asks <00:32:01.975>for <00:32:02.175>x,

612
00:32:04.955 --> 00:32:07.735
<00:32:04.955>it <00:32:05.110>also <00:32:05.266>asks <00:32:05.421>for <00:32:05.577>y <00:32:05.732>this <00:32:05.888>side <00:32:06.043>of <00:32:06.199>effect <00:32:06.355>trees.

613
00:32:07.795 --> 00:32:09.495
<00:32:07.795>So <00:32:08.075>I <00:32:08.355>can <00:32:08.635>ask <00:32:08.915>just <00:32:09.195>y

614
00:32:09.955 --> 00:32:13.815
<00:32:09.955>and <00:32:10.129>it <00:32:10.304>usually <00:32:10.480>don't <00:32:10.655>changes <00:32:10.830>anything <00:32:11.004>in <00:32:11.179>my <00:32:11.355>JBM.

615
00:32:13.835 --> 00:32:15.935
<00:32:13.835>So <00:32:14.115>I <00:32:14.395>ask <00:32:14.675>both, <00:32:14.955>get <00:32:15.235>both

616
00:32:16.835 --> 00:32:19.775
<00:32:16.835>and <00:32:16.990>the <00:32:17.146>tunnel <00:32:17.301>ask <00:32:17.457>the <00:32:17.612>JBM <00:32:17.768>both <00:32:17.923>on <00:32:18.079>this <00:32:18.235>side.

617
00:32:19.795 --> 00:32:22.095
<00:32:19.795>And <00:32:20.075>so <00:32:20.355>we've <00:32:20.635>reduced <00:32:20.915>essentially <00:32:21.195>latency.

618
00:32:22.475 --> 00:32:25.365
<00:32:22.475>The <00:32:22.824>problem <00:32:23.175>is, <00:32:23.524>in <00:32:23.875>reality,

619
00:32:25.915 --> 00:32:27.965
<00:32:25.915>it's <00:32:26.148>much <00:32:26.381>more <00:32:26.615>complicated <00:32:26.848>than <00:32:27.081>I <00:32:27.315>thought.

620
00:32:28.025 --> 00:32:31.325
<00:32:28.025>So, <00:32:28.152>um, <00:32:28.279>this <00:32:28.406>is <00:32:28.534>like <00:32:28.661>a <00:32:28.788>small <00:32:28.915>research <00:32:29.043>project <00:32:29.170>that <00:32:29.297>I <00:32:29.425>did.

621
00:32:31.345 --> 00:32:35.085
<00:32:31.345>If <00:32:31.520>you're <00:32:31.695>interested <00:32:31.870>in, <00:32:32.045>in <00:32:32.220>you, <00:32:32.395>in, <00:32:32.570>in <00:32:32.745>seeing

622
00:32:35.105 --> 00:32:36.405
<00:32:35.105>how <00:32:35.339>such <00:32:35.573>a <00:32:35.807>talent <00:32:36.041>would <00:32:36.275>work.

623
00:32:36.755 --> 00:32:40.005
<00:32:36.755>Also <00:32:36.988>just <00:32:37.221>talent <00:32:37.455>synthesize <00:32:37.688>essentially <00:32:37.921>debugging <00:32:38.155>programs

624
00:32:40.585 --> 00:32:43.605
<00:32:40.585>to <00:32:40.760>have <00:32:40.935>licensee, <00:32:41.110>uh, <00:32:41.285>you <00:32:41.460>can <00:32:41.635>take <00:32:41.810>a <00:32:41.985>look.

625
00:32:43.825 --> 00:32:47.285
<00:32:43.825>Um, <00:32:44.000>it's, <00:32:44.175>it's <00:32:44.350>on <00:32:44.525>GitHub, <00:32:44.700>their <00:32:44.875>Theater <00:32:45.050>Q <00:32:45.225>code.

626
00:32:47.825 --> 00:32:52.045
<00:32:47.825>Um, <00:32:47.952>but <00:32:48.079>you <00:32:48.206>can <00:32:48.334>find <00:32:48.461>it <00:32:48.588>when <00:32:48.715>you're <00:32:48.843>searching, <00:32:48.970>um, <00:32:49.097>uh, <00:32:49.225>on,

627
00:32:52.105 --> 00:32:54.445
<00:32:52.105>on <00:32:52.385>GitHub <00:32:52.665>for <00:32:52.945>the <00:32:53.225>JWP <00:32:53.505>tunnel.

628
00:32:54.745 --> 00:32:56.285
<00:32:54.745>So <00:32:54.976>that <00:32:55.206>was <00:32:55.437>one <00:32:55.669>of <00:32:55.900>the <00:32:56.131>ideas,

629
00:32:56.385 --> 00:32:59.645
<00:32:56.385>but <00:32:56.618>doesn't <00:32:56.851>really <00:32:57.085>work <00:32:57.318>in <00:32:57.551>the <00:32:57.785>end.

630
00:32:59.675 --> 00:33:01.285
<00:32:59.675>It's, <00:33:00.024>it's <00:33:00.375>slightly <00:33:00.725>more <00:33:01.075>complex.

631
00:33:01.385 --> 00:33:06.205
<00:33:01.385>So, <00:33:01.512>um, <00:33:01.639>then <00:33:01.766>I <00:33:01.894>looked <00:33:02.021>into <00:33:02.148>how <00:33:02.275>VS <00:33:02.403>code <00:33:02.530>is <00:33:02.657>doing <00:33:02.785>it,

632
00:33:06.345 --> 00:33:08.445
<00:33:06.345>and <00:33:06.578>they <00:33:06.811>use <00:33:07.045>the <00:33:07.278>debug <00:33:07.511>adapter <00:33:07.745>protocol.

633
00:33:08.785 --> 00:33:11.045
<00:33:08.785>And <00:33:08.940>the <00:33:09.096>whole <00:33:09.251>thing <00:33:09.407>is <00:33:09.562>with <00:33:09.718>the <00:33:09.873>debug <00:33:10.029>adapter <00:33:10.185>protocol,

634
00:33:11.355 --> 00:33:12.645
<00:33:11.355>this <00:33:11.935>supports <00:33:12.516>connections.

635
00:33:13.265 --> 00:33:14.965
<00:33:13.265>And <00:33:13.731>that's <00:33:14.198>pretty <00:33:14.665>neat

636
00:33:14.965 --> 00:33:19.645
<00:33:14.965>because <00:33:15.165>you <00:33:15.365>can <00:33:15.564>train <00:33:15.764>the <00:33:15.965>condition <00:33:16.165>evaluation <00:33:16.365>far

637
00:33:19.645 --> 00:33:21.005
<00:33:19.645>closer <00:33:20.053>to <00:33:20.461>the <00:33:20.869>JBM

638
00:33:21.005 --> 00:33:24.805
<00:33:21.005>because <00:33:21.180>this <00:33:21.355>is <00:33:21.530>evaluated <00:33:21.705>in, <00:33:21.880>in <00:33:22.055>the <00:33:22.230>endpoint, <00:33:22.405>sadly,

639
00:33:24.805 --> 00:33:28.725
<00:33:24.805>the <00:33:24.960>JBM <00:33:25.116>so <00:33:25.271>showed <00:33:25.427>in <00:33:25.582>the <00:33:25.738>doesn't <00:33:25.893>have <00:33:26.049>DP <00:33:26.205>support.

640
00:33:29.425 --> 00:33:33.045
<00:33:29.425>Um, <00:33:29.600>so <00:33:29.774>you <00:33:29.950>need <00:33:30.125>to <00:33:30.300>use <00:33:30.475>an <00:33:30.649>eclipse <00:33:30.825>space

641
00:33:35.155 --> 00:33:39.725
<00:33:35.155>adapter <00:33:35.355>that <00:33:35.555>transforms <00:33:35.754>DEP <00:33:35.955>request <00:33:36.155>into <00:33:36.355>the <00:33:36.555>equivalent

642
00:33:40.085 --> 00:33:41.325
<00:33:40.085>JWP <00:33:41.201>requests.

643
00:33:41.745 --> 00:33:44.685
<00:33:41.745>Um, <00:33:41.919>but <00:33:42.094>this <00:33:42.270>adapter <00:33:42.445>can <00:33:42.620>replace <00:33:42.794>close <00:33:42.969>to <00:33:43.145>JBM,

644
00:33:44.705 --> 00:33:47.205
<00:33:44.705>so <00:33:44.845>you <00:33:44.985>don't <00:33:45.125>have <00:33:45.264>lightency <00:33:45.405>when <00:33:45.544>you <00:33:45.685>are <00:33:45.824>running <00:33:45.965>in <00:33:46.105>the

645
00:33:47.205 --> 00:33:50.205
<00:33:47.205>cloud <00:33:47.379>with <00:33:47.554>like, <00:33:47.730>uh, <00:33:47.905>with, <00:33:48.080>with <00:33:48.254>being <00:33:48.429>a <00:33:48.605>couple

646
00:33:50.205 --> 00:33:53.325
<00:33:50.205>of <00:33:50.405>hundred <00:33:50.605>kilometers <00:33:50.804>away <00:33:51.004>from, <00:33:51.205>from <00:33:51.405>your <00:33:51.605>JBM.

647
00:33:53.945 --> 00:33:58.645
<00:33:53.945>Um, <00:33:54.645>and <00:33:55.345>so,

648
00:33:59.065 --> 00:34:02.125
<00:33:59.065>uh, <00:33:59.240>there, <00:33:59.415>there <00:33:59.590>are <00:33:59.765>other <00:33:59.940>ways, <00:34:00.115>of <00:34:00.290>course, <00:34:00.465>um,

649
00:34:02.455 --> 00:34:06.085
<00:34:02.455>especially <00:34:02.655>if <00:34:02.855>we <00:34:03.054>wanna <00:34:03.254>prevent <00:34:03.455>all <00:34:03.655>these <00:34:03.855>JWP

650
00:34:06.085 --> 00:34:07.125
<00:34:06.085>workers <00:34:06.553>coming <00:34:07.021>around.

651
00:34:07.905 --> 00:34:12.525
<00:34:07.905>Um, <00:34:08.080>and <00:34:08.255>one <00:34:08.429>of <00:34:08.605>them <00:34:08.779>is <00:34:08.955>to <00:34:09.130>just, <00:34:09.304>um,

652
00:34:13.905 --> 00:34:17.445
<00:34:13.905>put <00:34:14.080>the <00:34:14.255>whole <00:34:14.430>condition, <00:34:14.605>the <00:34:14.780>more <00:34:14.955>complex <00:34:15.130>condition <00:34:15.305>into

653
00:34:18.045 --> 00:34:19.125
<00:34:18.045>a <00:34:18.288>method, <00:34:18.531>and <00:34:18.774>that's <00:34:19.016>called,

654
00:34:19.145 --> 00:34:21.685
<00:34:19.145>and <00:34:19.344>then <00:34:19.545>this <00:34:19.745>method <00:34:19.945>can <00:34:20.145>be <00:34:20.344>called <00:34:20.545>in

655
00:34:21.755 --> 00:34:22.885
<00:34:21.755>like <00:34:22.094>the <00:34:22.433>condition <00:34:22.772>place.

656
00:34:23.025 --> 00:34:26.485
<00:34:23.025>That's <00:34:23.180>pretty <00:34:23.336>handy <00:34:23.491>because <00:34:23.647>then <00:34:23.802>you <00:34:23.958>can <00:34:24.113>use <00:34:24.269>hot <00:34:24.425>swap

657
00:34:27.025 --> 00:34:31.325
<00:34:27.025>to <00:34:27.225>change <00:34:27.425>this <00:34:27.625>condition <00:34:27.825>on <00:34:28.025>the <00:34:28.225>flight, <00:34:28.425>um,

658
00:34:32.005 --> 00:34:33.205
<00:34:32.005>reloaded <00:34:32.365>and <00:34:32.725>then <00:34:33.085>works.

659
00:34:35.385 --> 00:34:38.405
<00:34:35.385>Um, <00:34:35.618>but <00:34:35.851>you <00:34:36.085>can <00:34:36.318>also <00:34:36.551>do, <00:34:36.785>um,

660
00:34:38.755 --> 00:34:42.605
<00:34:38.755>just <00:34:38.988>embed <00:34:39.221>your <00:34:39.455>condition <00:34:39.688>in <00:34:39.921>the <00:34:40.155>code.

661
00:34:42.905 --> 00:34:44.645
<00:34:42.905>So <00:34:43.371>for <00:34:43.838>example, <00:34:44.305>here

662
00:34:45.305 --> 00:34:48.365
<00:34:45.304>you <00:34:45.480>create <00:34:45.654>your <00:34:45.830>EC <00:34:46.004>if <00:34:46.179>line <00:34:46.355>on <00:34:46.529>flash <00:34:46.705>there,

663
00:34:48.365 --> 00:34:49.765
<00:34:48.364>and <00:34:48.574>then <00:34:48.784>you <00:34:48.995>put <00:34:49.205>there <00:34:49.415>a <00:34:49.625>line

664
00:34:49.765 --> 00:34:51.805
<00:34:49.764>that <00:34:50.114>doesn't <00:34:50.464>execute <00:34:50.815>anything <00:34:51.165>really.

665
00:34:51.865 --> 00:34:53.565
<00:34:51.864>For <00:34:52.214>example, <00:34:52.564>creating <00:34:52.915>a <00:34:53.264>string

666
00:34:53.625 --> 00:34:57.805
<00:34:53.625>or <00:34:53.764>doing <00:34:53.905>them, <00:34:54.045>doing <00:34:54.185>some <00:34:54.324>statements <00:34:54.465>just <00:34:54.605>so <00:34:54.745>you <00:34:54.885>have <00:34:55.025>some

667
00:34:57.825 --> 00:34:59.925
<00:34:57.825>by <00:34:58.174>coursework, <00:34:58.524>set <00:34:58.875>the <00:34:59.225>on

668
00:35:00.145 --> 00:35:02.845
<00:35:00.145>and <00:35:00.378>this <00:35:00.611>works, <00:35:00.845>that's, <00:35:01.078>that's <00:35:01.311>faster, <00:35:01.545>um,

669
00:35:03.235 --> 00:35:06.165
<00:35:03.235>because, <00:35:03.435>uh, <00:35:03.635>there's <00:35:03.835>no <00:35:04.035>back <00:35:04.235>and <00:35:04.435>two, <00:35:04.635>two

670
00:35:06.165 --> 00:35:10.085
<00:35:06.165>and <00:35:06.365>from <00:35:06.565>between <00:35:06.765>the <00:35:06.965>JVM <00:35:07.165>and <00:35:07.365>your <00:35:07.565>debugger.

671
00:35:10.865 --> 00:35:14.405
<00:35:10.865>Um, <00:35:11.040>now <00:35:11.214>the <00:35:11.390>question <00:35:11.564>is <00:35:11.740>of <00:35:11.915>course, <00:35:12.089>is <00:35:12.265>this,

672
00:35:15.635 --> 00:35:18.725
<00:35:15.635>what, <00:35:15.790>what <00:35:15.946>are <00:35:16.101>the <00:35:16.257>implications <00:35:16.412>of <00:35:16.568>setting <00:35:16.723>a <00:35:16.879>prep <00:35:17.035>point

673
00:35:18.785 --> 00:35:20.165
<00:35:18.785>and <00:35:19.033>show <00:35:19.281>to <00:35:19.530>how <00:35:19.778>to <00:35:20.027>like,

674
00:35:20.195 --> 00:35:21.965
<00:35:20.195>make <00:35:20.428>conditional <00:35:20.661>back <00:35:20.895>points <00:35:21.128>a <00:35:21.361>bit <00:35:21.595>faster?

675
00:35:22.025 --> 00:35:23.285
<00:35:22.025>But <00:35:22.308>what <00:35:22.592>are <00:35:22.875>the <00:35:23.158>implications

676
00:35:23.355 --> 00:35:24.605
<00:35:23.355>when <00:35:23.580>you <00:35:23.805>set <00:35:24.030>break <00:35:24.255>point <00:35:24.480>there?

677
00:35:24.625 --> 00:35:27.085
<00:35:24.625>And <00:35:24.800>question <00:35:24.975>is, <00:35:25.150>you, <00:35:25.325>you <00:35:25.500>probably <00:35:25.675>know <00:35:25.850>that <00:35:26.025>in,

678
00:35:27.265 --> 00:35:29.965
<00:35:27.265>in <00:35:27.464>Java <00:35:27.665>you <00:35:27.865>have <00:35:28.065>just <00:35:28.265>in <00:35:28.464>time <00:35:28.665>compiler,

679
00:35:29.965 --> 00:35:34.955
<00:35:29.965>and <00:35:30.120>the <00:35:30.276>idea <00:35:30.431>is <00:35:30.587>that, <00:35:30.742>um, <00:35:30.898>the <00:35:31.053>code <00:35:31.209>is <00:35:31.365>optimized

680
00:35:34.975 --> 00:35:36.715
<00:35:34.975>and <00:35:35.325>then <00:35:35.674>compiled <00:35:36.025>to <00:35:36.375>something

681
00:35:36.715 --> 00:35:38.965
<00:35:36.715>that's <00:35:36.948>far <00:35:37.181>faster <00:35:37.415>than <00:35:37.648>just <00:35:37.881>integrating <00:35:38.115>it.

682
00:35:39.345 --> 00:35:41.445
<00:35:39.345>The <00:35:39.500>question <00:35:39.656>is, <00:35:39.811>when <00:35:39.967>you <00:35:40.122>set <00:35:40.278>the <00:35:40.433>break <00:35:40.589>point <00:35:40.745>somewhere,

683
00:35:41.745 --> 00:35:43.285
<00:35:41.745>are <00:35:42.091>these <00:35:42.438>methods <00:35:42.784>than <00:35:43.131>integrate?

684
00:35:43.345 --> 00:35:46.105
<00:35:43.345>And, <00:35:43.625>uh, <00:35:43.904>that <00:35:44.185>thing <00:35:44.464>is <00:35:44.745>yes,

685
00:35:46.105 --> 00:35:47.585
<00:35:46.105>when <00:35:46.327>you <00:35:46.549>put <00:35:46.771>the <00:35:46.993>break <00:35:47.215>point <00:35:47.437>somewhere,

686
00:35:47.725 --> 00:35:49.585
<00:35:47.725>the <00:35:48.075>method <00:35:48.424>is <00:35:48.775>de <00:35:49.125>optimized.

687
00:35:49.845 --> 00:35:54.225
<00:35:49.845>Um, <00:35:49.984>if <00:35:50.125>you <00:35:50.265>don't <00:35:50.404>trust <00:35:50.544>me, <00:35:50.685>I <00:35:50.825>put <00:35:50.964>the, <00:35:51.105>uh, <00:35:51.245>put,

688
00:35:54.685 --> 00:35:57.585
<00:35:54.685>uh, <00:35:54.860>the <00:35:55.035>GitHub <00:35:55.210>link <00:35:55.384>here <00:35:55.560>on <00:35:55.735>on <00:35:55.910>the <00:35:56.085>slide.

689
00:35:57.925 --> 00:36:02.105
<00:35:57.925>You <00:35:58.052>can <00:35:58.179>look <00:35:58.306>into <00:35:58.434>the <00:35:58.561>code <00:35:58.688>cache <00:35:58.815>dot <00:35:58.943>cpp <00:35:59.070>headline <00:35:59.197>two <00:35:59.325>1000,

690
00:36:02.105 --> 00:36:06.665
<00:36:02.105>font <00:36:02.232>25, <00:36:02.359>um, <00:36:02.486>that <00:36:02.614>tell <00:36:02.741>you <00:36:02.868>that <00:36:02.995>like <00:36:03.123>when <00:36:03.250>the <00:36:03.377>break <00:36:03.505>point

691
00:36:07.245 --> 00:36:09.465
<00:36:07.245>or <00:36:07.711>the <00:36:08.178>optimized, <00:36:08.645>um,

692
00:36:11.165 --> 00:36:13.645
<00:36:11.165>and <00:36:11.865>scooping <00:36:12.565>these.

693
00:36:13.985 --> 00:36:16.965
<00:36:13.985>Um, <00:36:14.218>so <00:36:14.451>when <00:36:14.685>you're <00:36:14.918>doing <00:36:15.151>single <00:36:15.385>stepping,

694
00:36:17.065 --> 00:36:19.525
<00:36:17.065>of <00:36:17.345>course <00:36:17.625>that's <00:36:17.905>the <00:36:18.185>same <00:36:18.465>thing.

695
00:36:19.545 --> 00:36:24.125
<00:36:19.545>Single <00:36:19.685>stepping <00:36:19.825>is <00:36:19.965>implemented, <00:36:20.105>um, <00:36:20.245>in <00:36:20.385>a <00:36:20.525>way <00:36:20.665>that <00:36:20.805>works <00:36:20.945>only

696
00:36:24.155 --> 00:36:25.285
<00:36:24.155>with <00:36:24.663>integrated <00:36:25.172>methods.

697
00:36:25.505 --> 00:36:29.565
<00:36:25.505>So <00:36:25.632>be <00:36:25.759>aware <00:36:25.886>that <00:36:26.014>when <00:36:26.141>you <00:36:26.268>set <00:36:26.395>break <00:36:26.523>point <00:36:26.650>in <00:36:26.777>a <00:36:26.905>method

698
00:36:29.565 --> 00:36:30.845
<00:36:29.565>that <00:36:29.853>takes <00:36:30.141>a <00:36:30.429>long <00:36:30.716>time,

699
00:36:30.985 --> 00:36:34.005
<00:36:30.985>or <00:36:31.125>that's <00:36:31.265>laly <00:36:31.405>more <00:36:31.545>complex, <00:36:31.685>takes <00:36:31.825>a <00:36:31.965>lot <00:36:32.105>of <00:36:32.245>front <00:36:32.385>time,

700
00:36:35.065 --> 00:36:36.485
<00:36:35.065>you <00:36:35.704>wanna, <00:36:36.343>um,

701
00:36:38.205 --> 00:36:40.375
<00:36:38.205>pull <00:36:38.485>center <00:36:38.765>break <00:36:39.045>point <00:36:39.325>in <00:36:39.605>there

702
00:36:40.375 --> 00:36:42.295
<00:36:40.375>because <00:36:40.841>it <00:36:41.308>prevents <00:36:41.775>optimization

703
00:36:42.315 --> 00:36:44.295
<00:36:42.315>and <00:36:42.595>can <00:36:42.875>slow, <00:36:43.155>slow <00:36:43.435>things <00:36:43.715>down.

704
00:36:44.915 --> 00:36:49.055
<00:36:44.915>Um, <00:36:45.055>and <00:36:45.195>the, <00:36:45.335>the <00:36:45.475>question <00:36:45.615>of <00:36:45.755>course <00:36:45.895>for <00:36:46.035>me <00:36:46.175>is <00:36:46.315>like,

705
00:36:49.395 --> 00:36:51.295
<00:36:49.395>are <00:36:49.628>there <00:36:49.861>any <00:36:50.095>resources <00:36:50.328>on <00:36:50.561>this <00:36:50.795>topic?

706
00:36:51.525 --> 00:36:54.935
<00:36:51.525>Like, <00:36:51.725>uh, <00:36:51.925>but <00:36:52.125>no, <00:36:52.325>they, <00:36:52.525>they <00:36:52.725>are, <00:36:52.925>that's,

707
00:36:54.935 --> 00:36:56.215
<00:36:54.935>that's <00:36:55.319>sadly <00:36:55.703>the <00:36:56.087>truth.

708
00:36:56.355 --> 00:37:00.935
<00:36:56.355>So, <00:36:56.530>um, <00:36:56.705>there's <00:36:56.880>this <00:36:57.055>whole <00:36:57.230>area <00:36:57.405>for <00:36:57.580>breakpoint <00:36:57.755>implemented,

709
00:37:01.555 --> 00:37:05.975
<00:37:01.555>um, <00:37:01.671>is <00:37:01.788>is <00:37:01.904>a <00:37:02.021>field <00:37:02.138>that <00:37:02.254>that <00:37:02.371>is <00:37:02.488>of <00:37:02.605>important <00:37:02.721>I <00:37:02.838>think <00:37:02.955>for,

710
00:37:05.995 --> 00:37:09.695
<00:37:05.995>for <00:37:06.170>users, <00:37:06.345>but <00:37:06.520>sadly <00:37:06.694>then <00:37:06.870>not <00:37:07.045>that <00:37:07.220>main <00:37:07.395>resources,

711
00:37:09.695 --> 00:37:12.935
<00:37:09.695>the <00:37:09.870>only <00:37:10.045>resource <00:37:10.220>that <00:37:10.395>I <00:37:10.570>found <00:37:10.745>is, <00:37:10.920>um, <00:37:11.095>uh,

712
00:37:13.475 --> 00:37:17.055
<00:37:13.475>the <00:37:13.630>resource <00:37:13.786>from <00:37:13.941>two, <00:37:14.097>the <00:37:14.252>nine <00:37:14.408>from <00:37:14.563>Apache <00:37:14.719>Harmony, <00:37:14.875>um,

713
00:37:17.275 --> 00:37:18.575
<00:37:17.275>but <00:37:17.665>it's <00:37:18.055>slowly <00:37:18.444>outdated.

714
00:37:20.475 --> 00:37:23.295
<00:37:20.475>So, <00:37:20.708>um, <00:37:20.941>still <00:37:21.174>a <00:37:21.408>few <00:37:21.641>minutes <00:37:21.875>left.

715
00:37:23.395 --> 00:37:26.095
<00:37:23.395>So, <00:37:23.535>uh, <00:37:23.675>I <00:37:23.815>can <00:37:23.955>show <00:37:24.095>you <00:37:24.235>how <00:37:24.375>other <00:37:24.515>features <00:37:24.655>are <00:37:24.795>implemented,

716
00:37:26.315 --> 00:37:29.415
<00:37:26.315>um, <00:37:26.665>on <00:37:27.015>the <00:37:27.365>JWP <00:37:27.715>level.

717
00:37:29.955 --> 00:37:33.175
<00:37:29.955>For <00:37:30.130>example, <00:37:30.305>hot <00:37:30.480>Swap, <00:37:30.654>how, <00:37:30.830>how <00:37:31.005>the <00:37:31.180>Verge, <00:37:31.355>um,

718
00:37:33.645 --> 00:37:36.375
<00:37:33.645>essentially <00:37:33.995>your <00:37:34.345>debugger, <00:37:34.695>um, <00:37:35.045>when,

719
00:37:36.405 --> 00:37:39.815
<00:37:36.405>when <00:37:36.545>you <00:37:36.685>click <00:37:36.825>this <00:37:36.965>reload <00:37:37.105>button <00:37:37.245>there, <00:37:37.385>um, <00:37:37.525>in <00:37:37.665>your <00:37:37.805>ID

720
00:37:39.835 --> 00:37:41.895
<00:37:39.835>and <00:37:40.115>your <00:37:40.395>id <00:37:40.675>recompile <00:37:40.955>your <00:37:41.235>glasses

721
00:37:42.155 --> 00:37:45.295
<00:37:42.155>and <00:37:42.330>tells <00:37:42.505>reload, <00:37:42.680>essentially <00:37:42.855>your <00:37:43.030>debugger <00:37:43.205>tells <00:37:43.380>the <00:37:43.555>J

722
00:37:45.315 --> 00:37:49.015
<00:37:45.315>and <00:37:45.455>hey, <00:37:45.595>please <00:37:45.735>redefine <00:37:45.875>these <00:37:46.015>glasses <00:37:46.155>and <00:37:46.295>here <00:37:46.435>is <00:37:46.575>class <00:37:46.715>ID

723
00:37:49.015 --> 00:37:51.615
<00:37:49.015>and <00:37:49.190>the <00:37:49.365>new <00:37:49.540>bike <00:37:49.714>codes <00:37:49.890>and <00:37:50.065>the <00:37:50.240>JV <00:37:50.415>L

724
00:37:52.195 --> 00:37:54.975
<00:37:52.195>and <00:37:52.428>then <00:37:52.661>your <00:37:52.895>debug <00:37:53.128>has <00:37:53.361>of <00:37:53.595>course

725
00:37:55.035 --> 00:37:56.535
<00:37:55.035>to <00:37:55.372>update <00:37:55.710>its <00:37:56.047>internal <00:37:56.384>state

726
00:37:56.535 --> 00:37:57.855
<00:37:56.535>and <00:37:56.732>ask <00:37:56.931>it <00:37:57.129>for <00:37:57.327>like <00:37:57.525>two <00:37:57.723>methods.

727
00:37:57.955 --> 00:37:59.135
<00:37:57.955>In <00:37:58.167>the <00:37:58.379>field <00:37:58.592>of <00:37:58.804>these <00:37:59.017>classes,

728
00:38:00.475 --> 00:38:02.775
<00:38:00.475>you <00:38:00.708>can <00:38:00.941>also <00:38:01.174>use <00:38:01.408>that <00:38:01.641>specific <00:38:01.875>value.

729
00:38:02.915 --> 00:38:06.175
<00:38:02.915>So <00:38:03.042>the <00:38:03.169>idea <00:38:03.296>is <00:38:03.424>that, <00:38:03.551>um, <00:38:03.678>when <00:38:03.805>we <00:38:03.933>here <00:38:04.060>in <00:38:04.187>this <00:38:04.315>example

730
00:38:06.435 --> 00:38:07.935
<00:38:06.435>and <00:38:06.884>from <00:38:07.335>the <00:38:07.785>beginning

731
00:38:08.075 --> 00:38:11.935
<00:38:08.075>and <00:38:08.202>we <00:38:08.329>know <00:38:08.456>here <00:38:08.584>file <00:38:08.711>should <00:38:08.838>be <00:38:08.965>a <00:38:09.093>different <00:38:09.220>value, <00:38:09.347>it <00:38:09.475>should

732
00:38:12.855 --> 00:38:17.015
<00:38:12.855>actually <00:38:12.995>be <00:38:13.135>like <00:38:13.275>path <00:38:13.415>of <00:38:13.555>arcs <00:38:13.695>one, <00:38:13.835>um, <00:38:13.975>we <00:38:14.115>can <00:38:14.255>ask

733
00:38:17.795 --> 00:38:20.615
<00:38:17.795>to, <00:38:17.995>Hey, <00:38:18.195>please <00:38:18.395>let <00:38:18.595>me <00:38:18.795>set <00:38:18.995>this <00:38:19.195>volume.

734
00:38:21.075 --> 00:38:24.575
<00:38:21.075>And <00:38:21.214>you <00:38:21.355>can <00:38:21.495>typically <00:38:21.634>give <00:38:21.774>you <00:38:21.915>here <00:38:22.055>expression <00:38:22.194>next <00:38:22.335>ion <00:38:22.475>is

735
00:38:25.015 --> 00:38:27.175
<00:38:25.015>elevated <00:38:25.365>as <00:38:25.714>before, <00:38:26.065>like, <00:38:26.415>um,

736
00:38:28.395 --> 00:38:29.855
<00:38:28.395>you <00:38:28.657>wanna <00:38:28.920>get <00:38:29.183>the <00:38:29.446>visible <00:38:29.709>glasses,

737
00:38:29.995 --> 00:38:31.575
<00:38:29.995>that's <00:38:30.461>an <00:38:30.928>important <00:38:31.395>thing.

738
00:38:31.575 --> 00:38:34.175
<00:38:31.575>And <00:38:31.774>also <00:38:31.975>for <00:38:32.174>like <00:38:32.375>condition <00:38:32.575>V, <00:38:32.774>you <00:38:32.975>want

739
00:38:34.175 --> 00:38:35.925
<00:38:34.175>to <00:38:34.375>know <00:38:34.575>which <00:38:34.775>glasses <00:38:34.975>can <00:38:35.175>be <00:38:35.375>used <00:38:35.575>here.

740
00:38:36.385 --> 00:38:39.445
<00:38:36.385>Um, <00:38:36.735>and <00:38:37.085>then <00:38:37.435>it's <00:38:37.785>like

741
00:38:39.445 --> 00:38:42.245
<00:38:39.445>before <00:38:39.600>with <00:38:39.756>the <00:38:39.911>elevation, <00:38:40.067>you <00:38:40.222>get <00:38:40.378>the <00:38:40.533>values <00:38:40.689>of <00:38:40.845>a,

742
00:38:42.865 --> 00:38:44.485
<00:38:42.865>you <00:38:43.098>get <00:38:43.331>the <00:38:43.564>value <00:38:43.798>of <00:38:44.031>R <00:38:44.265>one.

743
00:38:45.105 --> 00:38:48.405
<00:38:45.105>Um, <00:38:45.280>when <00:38:45.455>you <00:38:45.630>wanna <00:38:45.805>execute <00:38:45.980>path <00:38:46.155>of <00:38:46.330>R <00:38:46.505>one,

744
00:38:48.465 --> 00:38:52.525
<00:38:48.465>you <00:38:48.592>get <00:38:48.719>the <00:38:48.846>methods <00:38:48.974>of <00:38:49.101>path, <00:38:49.228>you <00:38:49.355>book <00:38:49.483>off <00:38:49.610>method, <00:38:49.737>uh, <00:38:49.865>then

745
00:38:53.115 --> 00:38:57.005
<00:38:53.115>there's <00:38:53.290>a <00:38:53.464>specific, <00:38:53.640>that's <00:38:53.814>the <00:38:53.990>set <00:38:54.165>stack <00:38:54.339>frame <00:38:54.515>volume

746
00:38:57.985 --> 00:39:00.525
<00:38:57.985>one <00:38:58.335>that <00:38:58.685>enables <00:38:59.035>the <00:38:59.385>RDE

747
00:39:00.525 --> 00:39:03.165
<00:39:00.525>to <00:39:00.758>set <00:39:00.991>a <00:39:01.225>specific, <00:39:01.458>um, <00:39:01.691>locker <00:39:01.925>barrier.

748
00:39:03.945 --> 00:39:06.005
<00:39:03.945>That's <00:39:04.225>pretty <00:39:04.505>cool. <00:39:04.785>And <00:39:05.065>especially <00:39:05.345>everything

749
00:39:06.005 --> 00:39:08.285
<00:39:06.005>that's <00:39:06.238>like <00:39:06.471>directly <00:39:06.705>implemented <00:39:06.938>in <00:39:07.171>the <00:39:07.405>JVM

750
00:39:08.285 --> 00:39:11.925
<00:39:08.285>and <00:39:08.565>not <00:39:08.845>mainly, <00:39:09.125>um, <00:39:09.404>uh, <00:39:09.685>emulated

751
00:39:13.025 --> 00:39:16.485
<00:39:13.025>is <00:39:13.200>faster, <00:39:13.375>um, <00:39:13.550>than <00:39:13.725>things <00:39:13.900>that <00:39:14.075>the <00:39:14.250>A <00:39:14.425>has.

752
00:39:16.485 --> 00:39:18.845
<00:39:16.485>So <00:39:17.185>emulate, <00:39:17.885>emulate.

753
00:39:19.225 --> 00:39:21.965
<00:39:19.225>Um, <00:39:19.365>then <00:39:19.505>there's <00:39:19.645>of <00:39:19.785>course <00:39:19.924>the, <00:39:20.065>the <00:39:20.205>feature <00:39:20.345>of <00:39:20.485>false <00:39:20.625>return.

754
00:39:22.145 --> 00:39:24.285
<00:39:22.145>Um, <00:39:22.345>that's <00:39:22.545>the <00:39:22.745>feature <00:39:22.945>that <00:39:23.145>I <00:39:23.345>didn't <00:39:23.545>use

755
00:39:24.285 --> 00:39:27.165
<00:39:24.285>before <00:39:24.460>started <00:39:24.634>this, <00:39:24.810>this <00:39:24.984>whole, <00:39:25.160>uh, <00:39:25.335>whole <00:39:25.509>work <00:39:25.685>is

756
00:39:27.165 --> 00:39:28.965
<00:39:27.165>that <00:39:27.445>you <00:39:27.725>can <00:39:28.005>tell <00:39:28.285>JVM <00:39:28.565>please

757
00:39:29.935 --> 00:39:31.925
<00:39:29.935>force <00:39:30.215>return <00:39:30.495>at <00:39:30.775>a <00:39:31.055>certain <00:39:31.335>point.

758
00:39:32.025 --> 00:39:35.325
<00:39:32.025>So <00:39:32.141>here <00:39:32.258>in <00:39:32.375>the <00:39:32.491>IDE, <00:39:32.608>you <00:39:32.725>can <00:39:32.841>click <00:39:32.958>on <00:39:33.075>the <00:39:33.191>frame <00:39:33.308>on <00:39:33.425>how

759
00:39:35.325 --> 00:39:38.165
<00:39:35.325>to <00:39:35.524>first <00:39:35.725>return, <00:39:35.924>and <00:39:36.125>then <00:39:36.325>you <00:39:36.524>also <00:39:36.725>have

760
00:39:38.165 --> 00:39:42.035
<00:39:38.165>to <00:39:38.445>give <00:39:38.725>it <00:39:39.005>a <00:39:39.285>return <00:39:39.565>expression.

761
00:39:43.055 --> 00:39:46.035
<00:39:43.055>And <00:39:43.254>how <00:39:43.455>this <00:39:43.654>implemented <00:39:43.855>is, <00:39:44.055>is <00:39:44.254>quite <00:39:44.455>simply

762
00:39:47.705 --> 00:39:50.275
<00:39:47.705>address <00:39:47.985>user <00:39:48.265>force <00:39:48.545>early <00:39:48.825>return <00:39:49.105>request

763
00:39:50.275 --> 00:39:51.995
<00:39:50.275>because <00:39:50.625>the <00:39:50.975>JBM <00:39:51.325>supports <00:39:51.675>it

764
00:39:52.335 --> 00:39:54.115
<00:39:52.335>and <00:39:52.510>you <00:39:52.685>just <00:39:52.860>give <00:39:53.035>it <00:39:53.210>like <00:39:53.385>the <00:39:53.560>return <00:39:53.735>value.

765
00:39:54.215 --> 00:39:56.595
<00:39:54.215>Of <00:39:54.390>course, <00:39:54.565>you <00:39:54.740>have <00:39:54.915>to <00:39:55.090>evaluate <00:39:55.265>return <00:39:55.440>value, <00:39:55.615>yes,

766
00:39:56.595 --> 00:40:00.235
<00:39:56.595>before, <00:39:56.794>um, <00:39:56.995>an <00:39:57.194>interesting <00:39:57.395>question <00:39:57.595>is <00:39:57.794>now, <00:39:57.995>um,

767
00:40:01.305 --> 00:40:04.115
<00:40:01.305>what <00:40:01.480>do <00:40:01.654>you <00:40:01.830>do <00:40:02.004>when <00:40:02.180>you <00:40:02.355>are <00:40:02.529>in, <00:40:02.705>um,

768
00:40:05.405 --> 00:40:08.055
<00:40:05.405>when <00:40:05.580>you <00:40:05.755>are <00:40:05.930>in <00:40:06.105>like <00:40:06.280>at <00:40:06.455>an <00:40:06.630>exception, <00:40:06.805>uh,

769
00:40:08.055 --> 00:40:10.095
<00:40:08.055>like <00:40:08.404>the <00:40:08.754>strong <00:40:09.105>exception <00:40:09.455>and,

770
00:40:11.205 --> 00:40:13.945
<00:40:11.205>and <00:40:11.404>then <00:40:11.605>force <00:40:11.805>return <00:40:12.005>is <00:40:12.205>the <00:40:12.404>finalized <00:40:12.605>block,

771
00:40:14.085 --> 00:40:15.705
<00:40:14.085>are <00:40:14.435>the <00:40:14.785>finalized <00:40:15.135>blocks <00:40:15.485>executed?

772
00:40:15.845 --> 00:40:18.465
<00:40:15.845>And <00:40:16.078>the <00:40:16.311>answer <00:40:16.544>is <00:40:16.778>no, <00:40:17.011>they <00:40:17.245>aren't.

773
00:40:19.285 --> 00:40:21.065
<00:40:19.285>And <00:40:19.565>that <00:40:19.845>might <00:40:20.125>be <00:40:20.404>a <00:40:20.685>problem.

774
00:40:21.285 --> 00:40:25.295
<00:40:21.285>And <00:40:21.565>um, <00:40:21.845>here <00:40:22.125>for <00:40:22.404>specifics, <00:40:22.685>uh,

775
00:40:25.295 --> 00:40:28.655
<00:40:25.295>the <00:40:25.470>JWP <00:40:25.645>documentation <00:40:25.820>tells <00:40:25.995>you <00:40:26.170>no <00:40:26.345>further <00:40:26.520>instructions <00:40:26.695>are

776
00:40:28.895 --> 00:40:30.015
<00:40:28.895>executed <00:40:29.147>in <00:40:29.399>the <00:40:29.651>call <00:40:29.903>method.

777
00:40:30.775 --> 00:40:32.935
<00:40:30.775>Specifically, <00:40:31.055>file <00:40:31.335>blocks <00:40:31.615>are <00:40:31.895>not <00:40:32.175>executed.

778
00:40:33.035 --> 00:40:36.455
<00:40:33.035>So <00:40:33.210>whenever <00:40:33.384>you're <00:40:33.560>doing <00:40:33.734>a <00:40:33.910>first <00:40:34.085>return, <00:40:34.259>be <00:40:34.435>sure

779
00:40:36.485 --> 00:40:39.295
<00:40:36.485>that <00:40:36.612>you <00:40:36.739>don't <00:40:36.866>have <00:40:36.994>things <00:40:37.121>in <00:40:37.248>the <00:40:37.375>file <00:40:37.503>loss <00:40:37.630>blocks <00:40:37.757>that <00:40:37.885>have

780
00:40:39.295 --> 00:40:40.895
<00:40:39.295>to <00:40:39.761>be <00:40:40.228>executed, <00:40:40.695>um,

781
00:40:41.445 --> 00:40:44.895
<00:40:41.445>therefore <00:40:41.678>don't <00:40:41.911>use <00:40:42.145>first <00:40:42.378>return <00:40:42.611>that <00:40:42.845>often.

782
00:40:45.915 --> 00:40:48.495
<00:40:45.915>Um, <00:40:46.265>it <00:40:46.615>might <00:40:46.965>be <00:40:47.315>problematic.

783
00:40:48.675 --> 00:40:53.535
<00:40:48.675>So, <00:40:48.830>um, <00:40:48.986>another <00:40:49.141>way <00:40:49.297>to <00:40:49.452>to <00:40:49.608>to, <00:40:49.763>to <00:40:49.919>go, <00:40:50.075>um,

784
00:40:53.835 --> 00:40:57.055
<00:40:53.835>to, <00:40:53.951>to <00:40:54.068>like <00:40:54.185>go <00:40:54.301>out <00:40:54.418>of <00:40:54.535>frame <00:40:54.651>is <00:40:54.768>you <00:40:54.885>can <00:40:55.001>reset <00:40:55.118>the <00:40:55.235>frame.

785
00:40:57.155 --> 00:41:00.695
<00:40:57.155>So <00:40:57.310>you <00:40:57.466>can <00:40:57.621>drop <00:40:57.777>the <00:40:57.932>frame <00:40:58.088>so <00:40:58.243>it <00:40:58.399>restarts, <00:40:58.555>um,

786
00:41:00.695 --> 00:41:02.055
<00:41:00.695>this <00:41:01.103>method <00:41:01.511>calls, <00:41:01.919>um,

787
00:41:02.155 --> 00:41:06.135
<00:41:02.155>and <00:41:02.355>here, <00:41:02.555>uh, <00:41:02.755>it's <00:41:02.955>a <00:41:03.155>pop <00:41:03.355>strain <00:41:03.555>request.

788
00:41:06.155 --> 00:41:08.215
<00:41:06.155>Of <00:41:06.355>course <00:41:06.555>it <00:41:06.755>doesn't <00:41:06.955>reset <00:41:07.155>the <00:41:07.355>global <00:41:07.555>state,

789
00:41:08.215 --> 00:41:09.855
<00:41:08.215>it <00:41:08.495>just <00:41:08.775>resets <00:41:09.055>the <00:41:09.335>local <00:41:09.615>state

790
00:41:09.855 --> 00:41:13.515
<00:41:09.855>and <00:41:10.088>calls <00:41:10.321>method <00:41:10.555>again, <00:41:10.788>then <00:41:11.021>you <00:41:11.255>can,

791
00:41:14.295 --> 00:41:15.355
<00:41:14.295>you <00:41:14.613>can <00:41:14.931>force <00:41:15.249>return,

792
00:41:15.375 --> 00:41:18.585
<00:41:15.375>but <00:41:15.550>you <00:41:15.725>can <00:41:15.900>also <00:41:16.075>of <00:41:16.250>course, <00:41:16.425>throw <00:41:16.600>an <00:41:16.775>exception.

793
00:41:18.585 --> 00:41:21.065
<00:41:18.585>At <00:41:18.725>a <00:41:18.865>certain <00:41:19.005>point, <00:41:19.145>the <00:41:19.285>test <00:41:19.425>advantage <00:41:19.565>of <00:41:19.705>a <00:41:19.845>first <00:41:19.985>return,

794
00:41:21.065 --> 00:41:23.385
<00:41:21.065>it, <00:41:21.298>when <00:41:21.531>you <00:41:21.765>throw <00:41:21.998>a <00:41:22.231>specific <00:41:22.465>exception,

795
00:41:23.885 --> 00:41:26.865
<00:41:23.885>the <00:41:24.165>finally <00:41:24.445>blocks <00:41:24.725>are, <00:41:25.005>uh, <00:41:25.285>captured,

796
00:41:27.285 --> 00:41:29.665
<00:41:27.285>the <00:41:27.634>finally <00:41:27.984>blocks <00:41:28.335>are <00:41:28.685>executed.

797
00:41:30.045 --> 00:41:31.265
<00:41:30.045>The <00:41:30.228>problem <00:41:30.411>is, <00:41:30.594>of <00:41:30.777>course, <00:41:30.960>you <00:41:31.143>have

798
00:41:31.265 --> 00:41:33.645
<00:41:31.265>to <00:41:31.498>catch <00:41:31.731>this <00:41:31.964>exception <00:41:32.198>somewhere, <00:41:32.431>somewhere <00:41:32.665>top

799
00:41:34.345 --> 00:41:38.025
<00:41:34.345>and <00:41:34.520>you <00:41:34.694>can <00:41:34.870>create <00:41:35.044>a <00:41:35.220>runtime <00:41:35.395>instance, <00:41:35.569>for <00:41:35.745>example,

800
00:41:38.105 --> 00:41:41.785
<00:41:38.105>a <00:41:38.245>runtime <00:41:38.385>exception <00:41:38.525>instance <00:41:38.665>when <00:41:38.805>you, <00:41:38.945>um, <00:41:39.085>want <00:41:39.225>to <00:41:39.365>show <00:41:39.505>it,

801
00:41:42.645 --> 00:41:46.465
<00:41:42.645>do <00:41:42.800>it <00:41:42.956>as <00:41:43.111>before, <00:41:43.267>and <00:41:43.422>then <00:41:43.578>you <00:41:43.733>tell <00:41:43.889>the <00:41:44.045>JVM,

802
00:41:46.465 --> 00:41:47.545
<00:41:46.465>Hey, <00:41:46.951>please <00:41:47.437>stop.

803
00:41:48.085 --> 00:41:51.545
<00:41:48.085>And <00:41:48.260>hey, <00:41:48.435>um, <00:41:48.610>I'm <00:41:48.785>giving <00:41:48.960>you <00:41:49.135>this, <00:41:49.310>this <00:41:49.485>reference

804
00:41:51.685 --> 00:41:55.145
<00:41:51.685>to <00:41:51.825>a <00:41:51.965>flowable <00:41:52.105>object, <00:41:52.245>to <00:41:52.384>my <00:41:52.525>exception <00:41:52.665>with <00:41:52.805>which <00:41:52.945>to <00:41:53.085>stop.

805
00:41:55.765 --> 00:41:59.025
<00:41:55.765>That's <00:41:55.940>pretty <00:41:56.115>neat. <00:41:56.290>Um, <00:41:56.464>so <00:41:56.640>to <00:41:56.815>to <00:41:56.990>to <00:41:57.165>conclude

806
00:41:59.025 --> 00:42:01.625
<00:41:59.025>with <00:41:59.180>this <00:41:59.336>protocol, <00:41:59.491>you <00:41:59.647>saw <00:41:59.802>that <00:41:59.958>this <00:42:00.113>protocol <00:42:00.269>has <00:42:00.425>many,

807
00:42:01.625 --> 00:42:03.305
<00:42:01.625>many <00:42:01.905>features <00:42:02.185>and <00:42:02.465>it's <00:42:02.745>pretty <00:42:03.025>cool,

808
00:42:03.725 --> 00:42:05.065
<00:42:03.725>but <00:42:03.966>of <00:42:04.207>course <00:42:04.448>it's <00:42:04.689>a <00:42:04.931>cane.

809
00:42:05.325 --> 00:42:09.345
<00:42:05.325>The <00:42:05.464>thing <00:42:05.605>is, <00:42:05.745>it's, <00:42:05.884>it's, <00:42:06.024>uh, <00:42:06.165>I <00:42:06.305>looked <00:42:06.444>into <00:42:06.585>the <00:42:06.725>Python

810
00:42:10.645 --> 00:42:15.545
<00:42:10.645>ing <00:42:10.772>support <00:42:10.899>and <00:42:11.026>I <00:42:11.154>have <00:42:11.281>to <00:42:11.408>say <00:42:11.535>it's <00:42:11.663>far <00:42:11.790>better <00:42:11.917>and <00:42:12.045>it's,

811
00:42:15.565 --> 00:42:18.425
<00:42:15.565>and <00:42:15.798>the <00:42:16.031>protocol, <00:42:16.265>even <00:42:16.498>protocol <00:42:16.731>is <00:42:16.965>fast

812
00:42:18.565 --> 00:42:20.305
<00:42:18.565>and <00:42:19.031>usually <00:42:19.498>fast <00:42:19.965>enough.

813
00:42:20.805 --> 00:42:24.145
<00:42:20.805>So <00:42:20.960>yes, <00:42:21.116>it's <00:42:21.271>not <00:42:21.427>a <00:42:21.582>created <00:42:21.738>conditional <00:42:21.893>break <00:42:22.049>points <00:42:22.205>aren't

814
00:42:24.305 --> 00:42:25.745
<00:42:24.305>directly <00:42:24.629>influenced <00:42:24.953>by <00:42:25.277>the <00:42:25.600>JBM,

815
00:42:26.125 --> 00:42:30.865
<00:42:26.125>but <00:42:26.280>the <00:42:26.436>advantage <00:42:26.591>is <00:42:26.747>that <00:42:26.902>your <00:42:27.058>debugger <00:42:27.213>can <00:42:27.369>evolve, <00:42:27.525>um,

816
00:42:31.295 --> 00:42:33.945
<00:42:31.295>without <00:42:31.495>having <00:42:31.695>to <00:42:31.895>modify <00:42:32.095>the <00:42:32.295>JVM, <00:42:32.495>for <00:42:32.695>example,

817
00:42:33.975 --> 00:42:36.025
<00:42:33.975>when <00:42:34.255>Colan <00:42:34.535>came <00:42:34.815>onto <00:42:35.095>the <00:42:35.375>scene.

818
00:42:36.815 --> 00:42:37.905
<00:42:36.815>Your <00:42:37.305>debugger <00:42:37.796>can,

819
00:42:38.045 --> 00:42:41.985
<00:42:38.045>can <00:42:38.245>directly <00:42:38.445>support <00:42:38.645>Colan <00:42:38.845>expressions <00:42:39.045>without <00:42:39.245>the <00:42:39.445>JVM

820
00:42:41.985 --> 00:42:43.385
<00:42:41.985>knowing <00:42:42.405>what <00:42:42.825>Colan <00:42:43.245>is.

821
00:42:43.965 --> 00:42:45.225
<00:42:43.965>Um, <00:42:44.248>that's, <00:42:44.532>that's <00:42:44.815>very <00:42:45.099>cool.

822
00:42:45.245 --> 00:42:49.425
<00:42:45.245>If <00:42:45.384>you <00:42:45.525>wanna <00:42:45.665>know <00:42:45.805>more <00:42:45.944>about <00:42:46.085>Python <00:42:46.225>Bank, <00:42:46.365>um, <00:42:46.505>you <00:42:46.645>can

823
00:42:50.375 --> 00:42:55.025
<00:42:50.375>look <00:42:50.491>into <00:42:50.608>my <00:42:50.725>talk <00:42:50.841>on <00:42:50.958>Python <00:42:51.075>bank <00:42:51.191>that <00:42:51.308>I <00:42:51.425>gave <00:42:51.541>out <00:42:51.658>the, <00:42:51.775>um,

824
00:42:55.565 --> 00:42:57.705
<00:42:55.565>at <00:42:55.765>the <00:42:55.965>PI <00:42:56.165>data <00:42:56.365>user <00:42:56.565>group <00:42:56.765>in <00:42:56.965>November.

825
00:42:58.045 --> 00:43:01.785
<00:42:58.045>Um, <00:42:58.220>and <00:42:58.395>I've <00:42:58.570>also <00:42:58.745>written <00:42:58.920>a <00:42:59.095>blog <00:42:59.270>series <00:42:59.445>on

826
00:43:01.785 --> 00:43:02.865
<00:43:01.785>this <00:43:02.109>because <00:43:02.433>it's <00:43:02.756>interesting.

827
00:43:02.865 --> 00:43:06.745
<00:43:02.865>There <00:43:03.020>are <00:43:03.176>a <00:43:03.331>lot <00:43:03.487>of <00:43:03.642>similarities <00:43:03.798>between <00:43:03.953>Python <00:43:04.109>and <00:43:04.265>Java

828
00:43:06.805 --> 00:43:08.345
<00:43:06.805>and <00:43:07.082>a <00:43:07.359>lot <00:43:07.636>of <00:43:07.913>the <00:43:08.191>similarities.

829
00:43:08.525 --> 00:43:09.945
<00:43:08.525>And <00:43:08.844>that's <00:43:09.164>interesting <00:43:09.483>to <00:43:09.803>see

830
00:43:10.045 --> 00:43:12.705
<00:43:10.045>how <00:43:10.395>different <00:43:10.745>languages <00:43:11.095>implemented <00:43:11.445>differently.

831
00:43:14.685 --> 00:43:17.865
<00:43:14.685>Um, <00:43:14.812>and <00:43:14.939>the <00:43:15.066>cool <00:43:15.194>thing <00:43:15.321>also <00:43:15.448>with <00:43:15.575>like <00:43:15.703>the <00:43:15.830>Java <00:43:15.957>version <00:43:16.085>is

832
00:43:18.975 --> 00:43:23.315
<00:43:18.975>it <00:43:19.130>allows <00:43:19.286>so, <00:43:19.441>so <00:43:19.597>many <00:43:19.752>things <00:43:19.908>directly <00:43:20.063>in <00:43:20.219>the <00:43:20.375>JBM.

833
00:43:23.375 --> 00:43:25.155
<00:43:23.375>So <00:43:23.575>I <00:43:23.775>think <00:43:23.975>it's, <00:43:24.175>it's <00:43:24.375>great <00:43:24.575>that <00:43:24.775>wherever,

834
00:43:25.455 --> 00:43:28.715
<00:43:25.455>and <00:43:25.595>it's <00:43:25.735>one <00:43:25.875>of <00:43:26.015>the <00:43:26.154>cool <00:43:26.295>things <00:43:26.435>of <00:43:26.575>the <00:43:26.715>Java <00:43:26.855>community

835
00:43:28.785 --> 00:43:30.915
<00:43:28.785>that <00:43:28.984>yes, <00:43:29.185>some <00:43:29.384>of <00:43:29.585>the <00:43:29.785>tools <00:43:29.984>are <00:43:30.185>old,

836
00:43:30.975 --> 00:43:32.915
<00:43:30.975>but <00:43:31.255>still <00:43:31.535>there, <00:43:31.815>there <00:43:32.095>are <00:43:32.375>many,

837
00:43:33.185 --> 00:43:34.795
<00:43:33.185>many <00:43:33.465>cool <00:43:33.745>people <00:43:34.025>working <00:43:34.305>on <00:43:34.585>them

838
00:43:34.865 --> 00:43:36.635
<00:43:34.865>that <00:43:35.145>really <00:43:35.424>know <00:43:35.705>what <00:43:35.984>they're <00:43:36.265>doing.

839
00:43:37.135 --> 00:43:41.915
<00:43:37.135>Um, <00:43:37.262>and <00:43:37.389>to, <00:43:37.516>to <00:43:37.644>finish <00:43:37.771>here, <00:43:37.898>I <00:43:38.025>wanna <00:43:38.153>say <00:43:38.280>that <00:43:38.407>like <00:43:38.535>debugging

840
00:43:43.335 --> 00:43:45.035
<00:43:43.335>should <00:43:43.685>belong <00:43:44.035>to <00:43:44.385>your <00:43:44.735>toolbox.

841
00:43:45.095 --> 00:43:47.675
<00:43:45.095>You <00:43:45.270>should <00:43:45.444>log <00:43:45.620>into <00:43:45.794>debugging, <00:43:45.970>maybe <00:43:46.145>look <00:43:46.319>also <00:43:46.495>into

842
00:43:48.875 --> 00:43:51.035
<00:43:48.875>debugging <00:43:49.225>into <00:43:49.575>the <00:43:49.925>different <00:43:50.275>features

843
00:43:51.035 --> 00:43:52.595
<00:43:51.035>that <00:43:51.384>your <00:43:51.734>debugger <00:43:52.085>already <00:43:52.435>has

844
00:43:53.135 --> 00:43:56.635
<00:43:53.135>and <00:43:53.262>learn <00:43:53.389>how <00:43:53.516>to <00:43:53.644>use <00:43:53.771>it <00:43:53.898>as <00:43:54.025>well <00:43:54.153>as <00:43:54.280>you <00:43:54.407>should <00:43:54.535>learn

845
00:43:57.215 --> 00:43:59.035
<00:43:57.215>the <00:43:57.448>ability <00:43:57.681>to <00:43:57.915>write <00:43:58.148>proper <00:43:58.381>unit <00:43:58.615>test

846
00:43:59.095 --> 00:44:00.435
<00:43:59.095>or <00:43:59.396>to <00:43:59.698>do <00:43:59.999>some <00:44:00.301>profiling.

847
00:44:01.455 --> 00:44:05.515
<00:44:01.455>Um, <00:44:01.595>and <00:44:01.735>keep <00:44:01.875>in <00:44:02.015>mind, <00:44:02.154>say <00:44:02.295>no <00:44:02.435>to <00:44:02.575>complex <00:44:02.715>break <00:44:02.855>points

848
00:44:05.535 --> 00:44:07.395
<00:44:05.535>and <00:44:05.815>keep <00:44:06.095>away <00:44:06.375>from <00:44:06.654>accessing, <00:44:06.935>stepping

849
00:44:07.535 --> 00:44:11.315
<00:44:07.535>and <00:44:07.710>re <00:44:07.884>remote <00:44:08.060>Deb <00:44:08.234>Bank <00:44:08.410>might, <00:44:08.585>might <00:44:08.759>hurt <00:44:08.935>you.

850
00:44:12.055 --> 00:44:16.635
<00:44:12.055>Um, <00:44:12.182>so <00:44:12.309>that <00:44:12.436>was <00:44:12.564>my <00:44:12.691>talk. <00:44:12.818>I'm <00:44:12.945>at <00:44:13.073>part-time <00:44:13.200>note <00:44:13.327>on <00:44:13.455>Twitter.

851
00:44:17.135 --> 00:44:20.435
<00:44:17.135>You <00:44:17.290>find <00:44:17.446>me <00:44:17.601>on <00:44:17.757>GitHub <00:44:17.912>and <00:44:18.068>Master <00:44:18.223>Donors <00:44:18.379>Paradigm <00:44:18.535>note.

852
00:44:20.575 --> 00:44:24.035
<00:44:20.575>Um, <00:44:20.750>I <00:44:20.924>write <00:44:21.100>a <00:44:21.274>blog <00:44:21.450>post <00:44:21.625>every <00:44:21.799>two <00:44:21.975>weeks

853
00:44:24.055 --> 00:44:25.555
<00:44:24.055>or <00:44:24.325>so <00:44:24.595>in <00:44:24.865>mostly <00:44:25.134>network <00:44:25.404>study,

854
00:44:25.805 --> 00:44:28.155
<00:44:25.805>fight <00:44:26.038>my <00:44:26.271>team <00:44:26.504>at <00:44:26.738>Sub <00:44:26.971>Machine <00:44:27.205>Oho.

855
00:44:28.375 --> 00:44:32.805
<00:44:28.375>Um, <00:44:28.491>and <00:44:28.608>when <00:44:28.725>you <00:44:28.841>wanna <00:44:28.958>hear <00:44:29.075>more <00:44:29.191>of <00:44:29.308>me, <00:44:29.425>you <00:44:29.541>can, <00:44:29.658>um, <00:44:29.775>uh,

856
00:44:32.875 --> 00:44:34.485
<00:44:32.875>come <00:44:33.155>for <00:44:33.435>example <00:44:33.715>to <00:44:33.995>Java <00:44:34.275>Land.

857
00:44:34.665 --> 00:44:38.565
<00:44:34.665>Um, <00:44:34.805>we'll <00:44:34.945>be <00:44:35.085>giving <00:44:35.225>an <00:44:35.365>extended <00:44:35.505>version <00:44:35.645>of <00:44:35.785>this <00:44:35.925>talk, <00:44:36.065>um,

858
00:44:39.385 --> 00:44:42.765
<00:44:39.385>or <00:44:39.525>go <00:44:39.665>to <00:44:39.805>Canada <00:44:39.945>and <00:44:40.085>get <00:44:40.225>a <00:44:40.365>version <00:44:40.505>of <00:44:40.645>this <00:44:40.785>talk.

859
00:44:43.225 --> 00:44:46.465
<00:44:43.225>Uh, <00:44:43.365>but <00:44:43.505>uh, <00:44:43.645>yeah, <00:44:43.785>so <00:44:43.924>if <00:44:44.065>you <00:44:44.205>want <00:44:44.345>to <00:44:44.485>travel <00:44:44.625>this,

860
00:44:46.465 --> 00:44:48.425
<00:44:46.465>that's <00:44:46.698>a <00:44:46.931>nice <00:44:47.165>conference <00:44:47.398>con <00:44:47.631>country <00:44:47.865>in

861
00:44:48.425 --> 00:44:49.465
<00:44:48.425>Canada, <00:44:48.893>but <00:44:49.361>whatever.

862
00:44:49.685 --> 00:44:51.745
<00:44:49.685>So, <00:44:49.884>uh, <00:44:50.085>thanks <00:44:50.285>for <00:44:50.485>being <00:44:50.685>at <00:44:50.884>my <00:44:51.085>talk

863
00:44:51.925 --> 00:44:54.705
<00:44:51.925>and <00:44:52.052>I'll <00:44:52.179>hope <00:44:52.306>to <00:44:52.434>see <00:44:52.561>you <00:44:52.688>at <00:44:52.815>some <00:44:52.943>of <00:44:53.070>the <00:44:53.197>next <00:44:53.325>conferences.

864
00:44:58.065 --> 00:45:00.575
<00:44:58.065>Hello <00:44:58.345>again, <00:44:58.625>Johannes. <00:44:58.905>Thanks <00:44:59.185>so <00:44:59.465>much.

865
00:45:00.575 --> 00:45:01.735
<00:45:00.575>Thanks <00:45:00.783>so <00:45:00.992>much <00:45:01.201>for <00:45:01.410>the <00:45:01.619>talk.

866
00:45:02.885 --> 00:45:05.735
<00:45:02.885>Alright, <00:45:03.118>and <00:45:03.351>we <00:45:03.585>got <00:45:03.818>some <00:45:04.051>questions <00:45:04.285>in,

867
00:45:05.835 --> 00:45:08.895
<00:45:05.835>and <00:45:06.035>let's <00:45:06.235>start <00:45:06.435>right <00:45:06.635>away <00:45:06.835>with <00:45:07.035>the <00:45:07.235>QA.

868
00:45:08.935 --> 00:45:13.125
<00:45:08.935>I <00:45:09.062>would <00:45:09.189>say <00:45:09.316>yeah, <00:45:09.444>take, <00:45:09.571>take, <00:45:09.698>take <00:45:09.825>a <00:45:09.953>big <00:45:10.080>sip <00:45:10.207>before <00:45:10.335>that.

869
00:45:13.475 --> 00:45:15.325
<00:45:13.475>Alright, <00:45:14.174>first <00:45:14.875>question

870
00:45:15.865 --> 00:45:20.245
<00:45:15.865>on <00:45:16.020>which <00:45:16.176>site <00:45:16.331>condition <00:45:16.487>line <00:45:16.642>do <00:45:16.798>contains <00:45:16.953>will <00:45:17.109>be <00:45:17.265>executed

871
00:45:20.245 --> 00:45:24.525
<00:45:20.245>during <00:45:20.384>remote <00:45:20.525>debug <00:45:20.665>on <00:45:20.805>your <00:45:20.944>debug <00:45:21.085>client <00:45:21.225>or <00:45:21.365>cha <00:45:21.505>GVM <00:45:21.645>site?

872
00:45:25.505 --> 00:45:29.275
<00:45:25.505>Um, <00:45:25.705>on <00:45:25.905>the, <00:45:26.105>the, <00:45:26.305>the <00:45:26.505>condition <00:45:26.705>is <00:45:26.905>exit.

873
00:45:29.495 --> 00:45:31.595
<00:45:29.495>So <00:45:29.694>the, <00:45:29.895>the, <00:45:30.095>so <00:45:30.295>as <00:45:30.495>I <00:45:30.694>showed <00:45:30.895>you

874
00:45:31.595 --> 00:45:35.395
<00:45:31.595>before, <00:45:31.770>I <00:45:31.944>think, <00:45:32.120>uh, <00:45:32.294>I <00:45:32.470>can, <00:45:32.645>can <00:45:32.819>probably, <00:45:32.995>yeah,

875
00:45:35.395 --> 00:45:38.715
<00:45:35.395>we <00:45:35.570>can <00:45:35.745>probably, <00:45:35.920>yeah, <00:45:36.095>ah, <00:45:36.270>I <00:45:36.445>can <00:45:36.620>probably <00:45:36.795>go

876
00:45:38.805 --> 00:45:40.475
<00:45:38.805>there <00:45:39.504>back <00:45:40.205>again.

877
00:45:42.295 --> 00:45:44.995
<00:45:42.295>Um, <00:45:42.645>so <00:45:42.995>the <00:45:43.345>idea <00:45:43.695>is

878
00:45:48.265 --> 00:45:51.925
<00:45:48.265>too <00:45:48.392>many <00:45:48.519>slides, <00:45:48.646>so <00:45:48.774>like <00:45:48.901>190 <00:45:49.028>slides <00:45:49.155>in <00:45:49.283>this, <00:45:49.410>in <00:45:49.537>this <00:45:49.665>thing.

879
00:45:52.505 --> 00:45:57.165
<00:45:52.505>Uh, <00:45:52.660>um, <00:45:52.816>so <00:45:52.971>the <00:45:53.127>idea <00:45:53.282>is <00:45:53.438>that <00:45:53.593>these <00:45:53.749>conditions <00:45:53.905>are

880
00:45:58.485 --> 00:46:00.365
<00:45:58.485>actually <00:45:58.718>implemented <00:45:58.951>when <00:45:59.185>we <00:45:59.418>see <00:45:59.651>it <00:45:59.885>here.

881
00:46:00.425 --> 00:46:03.925
<00:46:00.425>The <00:46:00.775>conditions <00:46:01.125>are, <00:46:01.475>so <00:46:01.825>the,

882
00:46:04.185 --> 00:46:07.045
<00:46:04.185>the <00:46:04.384>methods <00:46:04.585>are <00:46:04.785>invoked <00:46:04.985>on <00:46:05.185>your <00:46:05.384>JVM <00:46:05.585>side

883
00:46:07.045 --> 00:46:10.845
<00:46:07.045>because <00:46:07.200>like <00:46:07.356>the <00:46:07.511>debug <00:46:07.667>can't <00:46:07.822>invoke <00:46:07.978>methods <00:46:08.133>on <00:46:08.289>the <00:46:08.445>code

884
00:46:10.845 --> 00:46:14.565
<00:46:10.845>because <00:46:10.984>it <00:46:11.125>doesn't, <00:46:11.265>it <00:46:11.404>has <00:46:11.544>the, <00:46:11.685>it, <00:46:11.825>it, <00:46:11.964>it <00:46:12.105>knows <00:46:12.245>enough

885
00:46:14.565 --> 00:46:17.325
<00:46:14.565>for <00:46:14.720>example <00:46:14.876>here, <00:46:15.031>but <00:46:15.187>string <00:46:15.342>contains <00:46:15.498>it <00:46:15.653>has <00:46:15.809>the <00:46:15.965>same

886
00:46:17.325 --> 00:46:20.205
<00:46:17.325>implementation <00:46:17.480>probably <00:46:17.636>on <00:46:17.791>the <00:46:17.947>debug <00:46:18.102>side <00:46:18.258>as <00:46:18.413>on <00:46:18.569>the <00:46:18.725>JVM,

887
00:46:20.465 --> 00:46:25.445
<00:46:20.465>but <00:46:20.605>it <00:46:20.745>usually <00:46:20.885>ask <00:46:21.025>the <00:46:21.165>JVM, <00:46:21.305>Hey, <00:46:21.445>please <00:46:21.585>invoked <00:46:21.725>the <00:46:21.865>method,

888
00:46:25.985 --> 00:46:29.285
<00:46:25.985>but, <00:46:26.140>um, <00:46:26.296>it <00:46:26.451>can't <00:46:26.607>ask <00:46:26.762>the <00:46:26.918>JVM <00:46:27.073>more <00:46:27.229>complex <00:46:27.385>thing.

889
00:46:29.345 --> 00:46:32.405
<00:46:29.345>So <00:46:29.578>essentially <00:46:29.811>you <00:46:30.044>have <00:46:30.278>a <00:46:30.511>local <00:46:30.745>interpreter

890
00:46:32.835 --> 00:46:35.805
<00:46:32.835>that <00:46:33.068>can <00:46:33.301>only <00:46:33.535>look <00:46:33.768>um, <00:46:34.001>at <00:46:34.235>variables

891
00:46:35.985 --> 00:46:40.325
<00:46:35.985>and <00:46:36.125>for <00:46:36.265>every <00:46:36.405>thing <00:46:36.545>more <00:46:36.685>complex <00:46:36.825>has <00:46:36.965>start <00:46:37.105>like <00:46:37.245>the <00:46:37.385>JVM

892
00:46:40.325 --> 00:46:42.365
<00:46:40.325>follow <00:46:40.524>for <00:46:40.725>things <00:46:40.924>like, <00:46:41.125>hey, <00:46:41.325>call <00:46:41.524>a <00:46:41.725>method,

893
00:46:42.505 --> 00:46:45.565
<00:46:42.505>get <00:46:42.705>me <00:46:42.905>this <00:46:43.105>local <00:46:43.305>variable, <00:46:43.505>this <00:46:43.705>local <00:46:43.905>variable.

894
00:46:45.625 --> 00:46:47.605
<00:46:45.625>So, <00:46:45.905>um, <00:46:46.185>to <00:46:46.465>answer <00:46:46.745>your <00:46:47.025>question,

895
00:46:48.595 --> 00:46:51.205
<00:46:48.595>it's <00:46:48.875>partly <00:46:49.154>validated <00:46:49.435>on <00:46:49.714>both <00:46:49.995>sides.

896
00:46:51.545 --> 00:46:55.005
<00:46:51.545>The <00:46:51.685>cool <00:46:51.825>thing <00:46:51.965>is <00:46:52.105>with <00:46:52.245>JVM <00:46:52.385>related <00:46:52.525>with, <00:46:52.665>with <00:46:52.805>Java <00:46:52.945>compared

897
00:46:55.005 --> 00:46:58.765
<00:46:55.005>to <00:46:55.180>other <00:46:55.355>runtimes <00:46:55.530>is <00:46:55.705>that, <00:46:55.880>um, <00:46:56.055>Java <00:46:56.230>platform <00:46:56.405>independence.

898
00:46:58.765 --> 00:47:02.365
<00:46:58.765>So <00:46:58.904>when <00:46:59.045>your <00:46:59.185>debugger <00:46:59.325>does <00:46:59.464>a <00:46:59.605>simple <00:46:59.745>computation <00:46:59.884>like <00:47:00.025>a <00:47:00.165>plus,

899
00:47:02.475 --> 00:47:06.285
<00:47:02.475>like <00:47:02.630>one <00:47:02.786>plus <00:47:02.941>two, <00:47:03.097>it <00:47:03.252>has <00:47:03.408>the <00:47:03.563>same <00:47:03.719>semantics <00:47:03.875>as

900
00:47:06.425 --> 00:47:08.885
<00:47:06.425>as <00:47:06.705>your <00:47:06.985>JVM <00:47:07.265>and <00:47:07.545>that's <00:47:07.825>cool.

901
00:47:08.985 --> 00:47:12.845
<00:47:08.985>So <00:47:09.185>you <00:47:09.385>can <00:47:09.585>use <00:47:09.785>this <00:47:09.985>to, <00:47:10.185>to <00:47:10.385>um,

902
00:47:13.225 --> 00:47:14.485
<00:47:13.225>do <00:47:13.603>some <00:47:13.981>low <00:47:14.359>computations,

903
00:47:14.505 --> 00:47:17.365
<00:47:14.505>but <00:47:14.645>mostly <00:47:14.785>most <00:47:14.925>of <00:47:15.065>the <00:47:15.205>computations <00:47:15.345>are <00:47:15.485>done <00:47:15.625>on <00:47:15.765>the <00:47:15.905>JVM.

904
00:47:18.395 --> 00:47:19.835
<00:47:18.395>I <00:47:18.654>hope <00:47:18.913>this <00:47:19.172>answers <00:47:19.431>your <00:47:19.691>question.

905
00:47:23.365 --> 00:47:26.785
<00:47:23.365>I'm <00:47:23.504>sure <00:47:23.645>it <00:47:23.785>will. <00:47:23.924>Thank <00:47:24.064>you <00:47:24.205>for <00:47:24.345>that. <00:47:24.484>Um, <00:47:24.625>next <00:47:24.765>question.

906
00:47:26.865 --> 00:47:29.065
<00:47:26.865>I <00:47:27.040>would <00:47:27.214>say <00:47:27.390>we <00:47:27.564>just <00:47:27.740>leave <00:47:27.915>your <00:47:28.089>screen <00:47:28.265>there

907
00:47:29.190 --> 00:47:31.045
<00:47:29.190>because <00:47:29.423>maybe <00:47:29.656>you, <00:47:29.890>you <00:47:30.123>need <00:47:30.356>it <00:47:30.590>again.

908
00:47:31.745 --> 00:47:33.085
<00:47:31.745>Uh, <00:47:32.046>next <00:47:32.348>question <00:47:32.649>would <00:47:32.951>be

909
00:47:33.345 --> 00:47:36.325
<00:47:33.345>how <00:47:33.578>do <00:47:33.811>do <00:47:34.044>debuggers <00:47:34.278>handle <00:47:34.511>memory <00:47:34.745>inspection

910
00:47:36.625 --> 00:47:38.645
<00:47:36.625>and <00:47:37.091>modification <00:47:37.558>during <00:47:38.025>runtime?

911
00:47:39.185 --> 00:47:40.645
<00:47:39.185>How <00:47:39.513>do <00:47:39.842>you <00:47:40.170>ensure <00:47:40.499>safety

912
00:47:40.905 --> 00:47:43.725
<00:47:40.905>and <00:47:41.185>correctness <00:47:41.465>when <00:47:41.745>modifying <00:47:42.025>the <00:47:42.305>variables?

913
00:47:45.125 --> 00:47:48.185
<00:47:45.125>So <00:47:45.300>the <00:47:45.475>idea <00:47:45.650>here, <00:47:45.825>um, <00:47:46.000>with <00:47:46.175>memory <00:47:46.350>inspection, <00:47:46.525>um,

914
00:47:48.405 --> 00:47:50.385
<00:47:48.405>you <00:47:48.605>can <00:47:48.805>ask <00:47:49.005>the <00:47:49.205>JVM <00:47:49.405>for <00:47:49.605>like, <00:47:49.805>Hey,

915
00:47:50.385 --> 00:47:53.905
<00:47:50.385>please <00:47:50.540>give <00:47:50.696>me <00:47:50.851>all <00:47:51.007>instances <00:47:51.162>of, <00:47:51.318>of <00:47:51.473>a <00:47:51.629>certain <00:47:51.785>type

916
00:47:54.205 --> 00:47:56.585
<00:47:54.205>and <00:47:54.485>like <00:47:54.765>inspect <00:47:55.045>the <00:47:55.325>local <00:47:55.605>s

917
00:47:56.645 --> 00:47:59.305
<00:47:56.645>and <00:47:56.800>also <00:47:56.956>like <00:47:57.111>the, <00:47:57.267>the <00:47:57.422>instance <00:47:57.578>for <00:47:57.733>others <00:47:57.889>and <00:47:58.045>everything.

918
00:47:59.365 --> 00:48:02.545
<00:47:59.365>And, <00:47:59.598>uh, <00:47:59.831>the <00:48:00.064>JVM <00:48:00.298>takes <00:48:00.531>care <00:48:00.765>that

919
00:48:03.325 --> 00:48:04.545
<00:48:03.325>the <00:48:03.691>types <00:48:04.057>are <00:48:04.423>correct.

920
00:48:04.765 --> 00:48:08.065
<00:48:04.765>So <00:48:04.940>you, <00:48:05.115>you <00:48:05.290>getting <00:48:05.464>objects, <00:48:05.640>you're <00:48:05.815>creating <00:48:05.990>objects <00:48:06.165>to,

921
00:48:08.085 --> 00:48:11.705
<00:48:08.085>to <00:48:08.260>take <00:48:08.435>secure <00:48:08.610>that <00:48:08.785>the <00:48:08.960>types <00:48:09.135>are <00:48:09.310>the <00:48:09.485>types

922
00:48:11.735 --> 00:48:13.065
<00:48:11.735>that <00:48:12.134>are <00:48:12.533>statically <00:48:12.932>defined.

923
00:48:13.765 --> 00:48:16.985
<00:48:13.765>But <00:48:13.940>of <00:48:14.115>course <00:48:14.290>when <00:48:14.464>you, <00:48:14.640>for <00:48:14.815>example, <00:48:14.990>have <00:48:15.165>generics

924
00:48:16.985 --> 00:48:18.745
<00:48:16.985>and <00:48:17.265>the <00:48:17.545>JVM <00:48:17.825>doesn't <00:48:18.105>know <00:48:18.385>about

925
00:48:18.745 --> 00:48:21.505
<00:48:18.745>because <00:48:18.944>it <00:48:19.145>like <00:48:19.345>removes <00:48:19.545>the <00:48:19.745>generic <00:48:19.944>information, <00:48:20.145>um,

926
00:48:22.015 --> 00:48:25.385
<00:48:22.015>doesn't <00:48:22.154>know <00:48:22.295>that <00:48:22.435>this <00:48:22.575>like <00:48:22.714>list <00:48:22.855>is <00:48:22.995>a <00:48:23.134>list <00:48:23.275>of <00:48:23.415>string,

927
00:48:25.445 --> 00:48:30.065
<00:48:25.445>you <00:48:25.600>can <00:48:25.756>probably, <00:48:25.911>um, <00:48:26.067>uh, <00:48:26.222>in <00:48:26.378>your <00:48:26.533>debugger <00:48:26.689>as <00:48:26.845>easily

928
00:48:31.435 --> 00:48:32.785
<00:48:31.435>place <00:48:31.840>not <00:48:32.245>an <00:48:32.649>end,

929
00:48:32.785 --> 00:48:35.705
<00:48:32.785>but <00:48:32.924>like, <00:48:33.065>uh, <00:48:33.205>place <00:48:33.345>an <00:48:33.484>end <00:48:33.625>in <00:48:33.765>the <00:48:33.904>list <00:48:34.045>of <00:48:34.185>strengths.

930
00:48:35.725 --> 00:48:39.425
<00:48:35.725>And <00:48:35.841>so <00:48:35.958>you <00:48:36.075>have <00:48:36.191>to <00:48:36.308>be <00:48:36.424>careful <00:48:36.541>what <00:48:36.658>you <00:48:36.775>do <00:48:36.891>in <00:48:37.008>the <00:48:37.125>debugger.

931
00:48:39.445 --> 00:48:42.585
<00:48:39.445>So <00:48:39.620>especially <00:48:39.795>with, <00:48:39.970>with <00:48:40.145>some <00:48:40.320>of <00:48:40.495>these <00:48:40.670>features, <00:48:40.845>um,

932
00:48:44.575 --> 00:48:45.795
<00:48:44.575>you, <00:48:44.794>you <00:48:45.014>have <00:48:45.233>to <00:48:45.453>be <00:48:45.673>careful

933
00:48:45.795 --> 00:48:49.155
<00:48:45.795>because <00:48:45.970>sometimes <00:48:46.145>you <00:48:46.320>have <00:48:46.495>side <00:48:46.670>effects, <00:48:46.845>um, <00:48:47.020>when <00:48:47.195>you,

934
00:48:49.735 --> 00:48:51.155
<00:48:49.735>um, <00:48:50.161>creating <00:48:50.587>new <00:48:51.013>values.

935
00:48:52.525 --> 00:48:54.625
<00:48:52.525>And <00:48:52.875>also, <00:48:53.225>um, <00:48:53.575>when <00:48:53.925>you,

936
00:48:54.735 --> 00:48:57.705
<00:48:54.735>when <00:48:54.935>you're <00:48:55.135>doing <00:48:55.335>memory <00:48:55.535>computations, <00:48:55.735>you <00:48:55.935>might <00:48:56.135>in,

937
00:48:57.845 --> 00:49:00.665
<00:48:57.845>in <00:48:58.078>memory <00:48:58.311>modifications, <00:48:58.544>you <00:48:58.778>might <00:48:59.011>invalidate <00:48:59.245>some

938
00:49:00.665 --> 00:49:03.545
<00:49:00.665>of <00:49:00.840>the <00:49:01.015>in <00:49:01.190>variance <00:49:01.365>that <00:49:01.540>JVM <00:49:01.715>doesn't <00:49:01.890>know <00:49:02.065>about.

939
00:49:03.685 --> 00:49:05.945
<00:49:03.685>So <00:49:04.035>yes, <00:49:04.384>uh, <00:49:04.735>take <00:49:05.085>care,

940
00:49:06.045 --> 00:49:09.065
<00:49:06.045>but <00:49:06.278>regarding <00:49:06.511>types <00:49:06.745>of <00:49:06.978>JVM <00:49:07.211>usually, <00:49:07.445>um,

941
00:49:09.725 --> 00:49:11.505
<00:49:09.725>uh, <00:49:10.191>uh, <00:49:10.658>checks <00:49:11.125>us.

942
00:49:13.435 --> 00:49:15.325
<00:49:13.435>Alright, <00:49:13.901>thanks <00:49:14.368>for <00:49:14.835>client.

943
00:49:15.745 --> 00:49:17.725
<00:49:15.745>Um, <00:49:16.211>clarifying <00:49:16.678>this <00:49:17.145>Johannes,

944
00:49:17.785 --> 00:49:19.845
<00:49:17.785>and <00:49:18.018>we <00:49:18.251>jump <00:49:18.484>to <00:49:18.718>our <00:49:18.951>next <00:49:19.185>question.

945
00:49:21.025 --> 00:49:25.165
<00:49:21.025>How <00:49:21.258>are <00:49:21.491>conditional <00:49:21.725>breakpoints <00:49:21.958>implemented <00:49:22.191>in <00:49:22.425>debuggers?

946
00:49:25.665 --> 00:49:28.205
<00:49:25.665>Are <00:49:25.898>there <00:49:26.131>mechanics <00:49:26.365>in <00:49:26.598>place <00:49:26.831>to <00:49:27.065>evaluate

947
00:49:28.225 --> 00:49:29.845
<00:49:28.225>and <00:49:28.691>execute <00:49:29.158>the <00:49:29.625>conditions?

948
00:49:30.785 --> 00:49:32.045
<00:49:30.785>Yes. <00:49:31.163>So <00:49:31.541>typically <00:49:31.919>how,

949
00:49:32.145 --> 00:49:35.485
<00:49:32.145>how <00:49:32.285>this <00:49:32.425>is <00:49:32.565>implemented <00:49:32.705>in <00:49:32.845>like <00:49:32.985>the <00:49:33.125>debug <00:49:33.265>frontend <00:49:33.405>is <00:49:33.545>does

950
00:49:35.485 --> 00:49:39.565
<00:49:35.485>the <00:49:35.718>debugger <00:49:35.951>frontend, <00:49:36.185>um, <00:49:36.418>does, <00:49:36.651>does <00:49:36.885>exactly.

951
00:49:39.705 --> 00:49:41.285
<00:49:39.705>That's <00:49:39.938>what, <00:49:40.171>what <00:49:40.404>I <00:49:40.638>showed <00:49:40.871>you <00:49:41.105>here.

952
00:49:41.505 --> 00:49:46.325
<00:49:41.505>So, <00:49:41.645>um, <00:49:41.785>when, <00:49:41.925>uh, <00:49:42.065>the <00:49:42.205>debug <00:49:42.345>breakpoint <00:49:42.485>is <00:49:42.625>said <00:49:42.765>that <00:49:42.905>JVM

953
00:49:46.425 --> 00:49:49.285
<00:49:46.425>and <00:49:46.625>your <00:49:46.825>debugger <00:49:47.025>id, <00:49:47.225>uh, <00:49:47.425>looks <00:49:47.625>into, <00:49:47.825>hey,

954
00:49:49.305 --> 00:49:50.125
<00:49:49.305>is <00:49:49.551>there <00:49:49.797>a <00:49:50.043>conditional

955
00:49:50.125 --> 00:49:51.565
<00:49:50.125>breakpoint <00:49:50.341>that <00:49:50.557>I <00:49:50.773>have <00:49:50.989>to <00:49:51.205>check <00:49:51.421>first?

956
00:49:51.625 --> 00:49:54.165
<00:49:51.625>And <00:49:51.858>then <00:49:52.091>it <00:49:52.325>calls <00:49:52.558>this <00:49:52.791>small <00:49:53.025>interpreter.

957
00:49:54.165 --> 00:49:57.485
<00:49:54.165>There's <00:49:54.365>even <00:49:54.565>like <00:49:54.765>really <00:49:54.965>small <00:49:55.165>interpreter <00:49:55.365>directly <00:49:55.565>in

958
00:49:57.645 --> 00:50:00.005
<00:49:57.645>teltra, <00:49:57.800>you <00:49:57.956>can <00:49:58.111>look <00:49:58.267>it <00:49:58.422>up, <00:49:58.578>it's <00:49:58.733>quite <00:49:58.889>quite <00:49:59.045>nice.

959
00:50:00.005 --> 00:50:03.365
<00:50:00.005>They <00:50:00.160>have <00:50:00.316>a <00:50:00.471>small <00:50:00.627>Java <00:50:00.782>power <00:50:00.938>that <00:50:01.093>powers <00:50:01.249>your, <00:50:01.405>uh,

960
00:50:03.555 --> 00:50:06.725
<00:50:03.555>conditional <00:50:03.835>expression <00:50:04.115>and <00:50:04.395>then <00:50:04.674>evaluate <00:50:04.955>it.

961
00:50:07.145 --> 00:50:10.005
<00:50:07.145>Um, <00:50:07.611>and <00:50:08.078>yeah, <00:50:08.545>uh,

962
00:50:10.155 --> 00:50:12.725
<00:50:10.155>when <00:50:10.355>you <00:50:10.555>wanna <00:50:10.755>place <00:50:10.955>a <00:50:11.155>conditional <00:50:11.355>background <00:50:11.555>that's,

963
00:50:12.725 --> 00:50:17.645
<00:50:12.725>that's <00:50:12.880>easier, <00:50:13.036>I <00:50:13.191>showed <00:50:13.347>it, <00:50:13.502>uh, <00:50:13.658>I <00:50:13.813>showed <00:50:13.969>you <00:50:14.125>here,

964
00:50:17.745 --> 00:50:19.525
<00:50:17.745>you <00:50:17.944>can <00:50:18.145>just <00:50:18.345>place <00:50:18.545>it <00:50:18.745>there <00:50:18.944>and <00:50:19.145>the,

965
00:50:19.825 --> 00:50:24.485
<00:50:19.825>and <00:50:19.952>your <00:50:20.079>RDE <00:50:20.206>tells, <00:50:20.334>tells, <00:50:20.461>um, <00:50:20.588>works <00:50:20.715>with <00:50:20.843>this, <00:50:20.970>keep <00:50:21.097>in <00:50:21.225>mind

966
00:50:24.485 --> 00:50:28.285
<00:50:24.485>that <00:50:24.640>every <00:50:24.796>IDE <00:50:24.951>has <00:50:25.107>to <00:50:25.262>implement <00:50:25.418>their <00:50:25.573>own, <00:50:25.729>um, <00:50:25.885>evaluation.

967
00:50:28.345 --> 00:50:32.605
<00:50:28.345>So, <00:50:28.472>um, <00:50:28.599>it <00:50:28.726>might <00:50:28.854>differ <00:50:28.981>from <00:50:29.108>ID <00:50:29.235>to <00:50:29.363>ID <00:50:29.490>how, <00:50:29.617>how <00:50:29.745>also

968
00:50:32.605 --> 00:50:34.685
<00:50:32.605>how <00:50:32.838>many <00:50:33.071>features <00:50:33.305>they <00:50:33.538>support <00:50:33.771>in <00:50:34.005>there.

969
00:50:35.425 --> 00:50:38.845
<00:50:35.425>Mm-Hmm. <00:50:35.705>Makes <00:50:35.985>sense. <00:50:36.265>Thank <00:50:36.545>you <00:50:36.825>Hans.

970
00:50:39.505 --> 00:50:41.285
<00:50:39.505>And <00:50:39.705>we <00:50:39.905>jump <00:50:40.105>right <00:50:40.305>to <00:50:40.505>the <00:50:40.705>next <00:50:40.905>question.

971
00:50:42.025 --> 00:50:43.245
<00:50:42.025>Uh, <00:50:42.299>maybe <00:50:42.574>a <00:50:42.848>silly <00:50:43.123>question.

972
00:50:43.265 --> 00:50:44.805
<00:50:43.265>No, <00:50:43.542>there <00:50:43.819>are <00:50:44.096>no <00:50:44.373>silly <00:50:44.651>questions.

973
00:50:45.115 --> 00:50:47.405
<00:50:45.115>When <00:50:45.581>debugging <00:50:46.048>Java <00:50:46.515>applications,

974
00:50:47.865 --> 00:50:50.805
<00:50:47.865>how <00:50:48.064>does <00:50:48.265>the <00:50:48.464>debugger <00:50:48.665>interact <00:50:48.865>with <00:50:49.064>the <00:50:49.265>jvm?

975
00:50:51.575 --> 00:50:53.325
<00:50:51.575>There, <00:50:51.808>there, <00:50:52.041>there <00:50:52.274>are <00:50:52.508>no <00:50:52.741>silly <00:50:52.975>questions.

976
00:50:53.325 --> 00:50:57.125
<00:50:53.325>They're <00:50:53.500>only <00:50:53.674>silly. <00:50:53.850>Uh, <00:50:54.024>they, <00:50:54.200>they're <00:50:54.375>only <00:50:54.549>silly <00:50:54.725>answers.

977
00:50:57.545 --> 00:51:02.205
<00:50:57.545>Um, <00:50:57.685>so <00:50:57.825>the, <00:50:57.965>the, <00:50:58.105>the <00:50:58.245>idea <00:50:58.385>is, <00:50:58.525>um, <00:50:58.665>actually <00:50:58.805>here, <00:50:58.945>um,

978
00:51:04.265 --> 00:51:06.685
<00:51:04.265>the, <00:51:04.615>the <00:51:04.964>IDE <00:51:05.315>itself <00:51:05.665>interacts

979
00:51:06.685 --> 00:51:09.285
<00:51:06.685>with <00:51:06.918>like <00:51:07.151>the <00:51:07.384>java <00:51:07.618>debug <00:51:07.851>interface, <00:51:08.085>um,

980
00:51:09.395 --> 00:51:12.005
<00:51:09.395>that <00:51:09.745>racks <00:51:10.095>the <00:51:10.445>JWP <00:51:10.795>generation.

981
00:51:12.545 --> 00:51:17.285
<00:51:12.545>Um, <00:51:12.700>and <00:51:12.856>then <00:51:13.011>JWP <00:51:13.167>messages <00:51:13.322>are <00:51:13.478>sent <00:51:13.633>over <00:51:13.789>the <00:51:13.945>buy

982
00:51:17.285 --> 00:51:18.805
<00:51:17.285>usually <00:51:17.741>so <00:51:18.196>over <00:51:18.653>socket.

983
00:51:18.825 --> 00:51:22.125
<00:51:18.825>So <00:51:18.952>when <00:51:19.079>you <00:51:19.206>do <00:51:19.334>remote <00:51:19.461>debug, <00:51:19.588>you <00:51:19.715>see <00:51:19.843>clearly, <00:51:19.970>you <00:51:20.097>see <00:51:20.225>that

984
00:51:23.385 --> 00:51:24.805
<00:51:23.385>you <00:51:23.704>open <00:51:24.024>socket, <00:51:24.343>you <00:51:24.663>said

985
00:51:25.385 --> 00:51:28.405
<00:51:25.385>and <00:51:25.618>communicate <00:51:25.851>essentially <00:51:26.085>why <00:51:26.318>it's <00:51:26.551>a <00:51:26.785>PP.

986
00:51:29.185 --> 00:51:32.845
<00:51:29.185>And <00:51:29.325>then <00:51:29.465>of <00:51:29.605>course <00:51:29.745>there's <00:51:29.884>this <00:51:30.025>agent, <00:51:30.165>you <00:51:30.305>can <00:51:30.445>even <00:51:30.585>like

987
00:51:33.535 --> 00:51:36.045
<00:51:33.535>write <00:51:33.734>your <00:51:33.935>own <00:51:34.134>debugging <00:51:34.335>agent <00:51:34.535>if <00:51:34.734>you <00:51:34.935>want

988
00:51:36.045 --> 00:51:38.525
<00:51:36.045>and <00:51:36.220>implement <00:51:36.395>your <00:51:36.570>own <00:51:36.745>custom <00:51:36.920>protocol, <00:51:37.095>maybe <00:51:37.270>even <00:51:37.445>the

989
00:51:39.165 --> 00:51:41.045
<00:51:39.165>protocol <00:51:39.445>that <00:51:39.725>vs <00:51:40.005>code <00:51:40.285>users <00:51:40.565>directly.

990
00:51:41.145 --> 00:51:44.085
<00:51:41.145>But <00:51:41.300>nobody <00:51:41.456>has <00:51:41.611>done <00:51:41.767>it <00:51:41.922>as <00:51:42.078>far <00:51:42.233>as <00:51:42.389>I <00:51:42.545>know.

991
00:51:44.545 --> 00:51:48.485
<00:51:44.545>Um, <00:51:44.661>so <00:51:44.778>it's <00:51:44.895>just <00:51:45.011>a <00:51:45.128>normal <00:51:45.245>agent <00:51:45.361>that <00:51:45.478>you <00:51:45.595>attach <00:51:45.711>to <00:51:45.828>your <00:51:45.945>JVM.

992
00:51:48.485 --> 00:51:49.485
<00:51:48.485>The <00:51:48.785>only <00:51:49.085>difference <00:51:49.385>is

993
00:51:49.485 --> 00:51:51.685
<00:51:49.485>that <00:51:49.685>this <00:51:49.885>agent <00:51:50.085>is <00:51:50.285>like <00:51:50.485>shipped <00:51:50.685>by <00:51:50.885>default.

994
00:51:53.535 --> 00:51:56.705
<00:51:53.535>Alright, <00:51:53.690>thank <00:51:53.846>you <00:51:54.001>Johans. <00:51:54.157>Your <00:51:54.312>answer <00:51:54.468>was <00:51:54.623>also <00:51:54.779>not <00:51:54.935>silly.

995
00:51:59.125 --> 00:52:01.265
<00:51:59.125>So <00:51:59.825>next <00:52:00.525>question.

996
00:52:01.805 --> 00:52:05.345
<00:52:01.805>How <00:52:02.038>do <00:52:02.271>debuggers <00:52:02.504>handle <00:52:02.738>exceptions <00:52:02.971>during <00:52:03.205>debugging?

997
00:52:06.525 --> 00:52:08.225
<00:52:06.525>Um, <00:52:06.991>some <00:52:07.458>just <00:52:07.925>break.

998
00:52:08.365 --> 00:52:12.145
<00:52:08.365>So, <00:52:08.481>um, <00:52:08.598>I <00:52:08.714>showed <00:52:08.831>you <00:52:08.948>in, <00:52:09.064>in, <00:52:09.181>in <00:52:09.298>the <00:52:09.415>beginning <00:52:09.531>of <00:52:09.648>my <00:52:09.765>talk,

999
00:52:12.185 --> 00:52:14.345
<00:52:12.185>I <00:52:12.418>showed <00:52:12.651>you <00:52:12.884>this, <00:52:13.118>this, <00:52:13.351>uh, <00:52:13.585>problem

1000
00:52:14.355 --> 00:52:17.545
<00:52:14.355>where <00:52:14.495>like <00:52:14.635>you <00:52:14.775>had <00:52:14.915>the <00:52:15.055>null <00:52:15.195>part <00:52:15.335>exception <00:52:15.475>occurring <00:52:15.615>in <00:52:15.755>on

1001
00:52:17.545 --> 00:52:20.065
<00:52:17.545>like <00:52:17.825>the <00:52:18.105>JDI <00:52:18.385>level <00:52:18.665>where <00:52:18.945>the,

1002
00:52:20.835 --> 00:52:24.985
<00:52:20.835>where <00:52:20.975>the <00:52:21.115>JBM <00:52:21.255>sent <00:52:21.395>an <00:52:21.535>involved <00:52:21.675>message, <00:52:21.815>um, <00:52:21.955>back <00:52:22.095>to <00:52:22.235>JBM

1003
00:52:25.125 --> 00:52:29.025
<00:52:25.125>and <00:52:25.475>DBAs <00:52:25.825>just <00:52:26.175>like <00:52:26.525>crash

1004
00:52:29.205 --> 00:52:30.585
<00:52:29.205>and <00:52:29.826>go <00:52:30.447>dark.

1005
00:52:30.585 --> 00:52:33.745
<00:52:30.585>They, <00:52:30.740>they <00:52:30.896>just <00:52:31.051>your <00:52:31.207>until <00:52:31.362>day <00:52:31.518>just <00:52:31.673>is <00:52:31.829>like, <00:52:31.985>oh,

1006
00:52:33.775 --> 00:52:35.905
<00:52:33.775>there's <00:52:34.008>something <00:52:34.241>happened <00:52:34.475>that <00:52:34.708>I <00:52:34.941>didn't <00:52:35.175>know,

1007
00:52:36.665 --> 00:52:38.665
<00:52:36.665>I <00:52:36.945>locked <00:52:37.225>this <00:52:37.505>error <00:52:37.785>somewhere <00:52:38.065>away,

1008
00:52:38.765 --> 00:52:41.225
<00:52:38.765>but <00:52:38.998>I <00:52:39.231>just <00:52:39.464>stopped <00:52:39.698>the <00:52:39.931>debugging <00:52:40.165>session.

1009
00:52:41.685 --> 00:52:44.385
<00:52:41.685>Um, <00:52:41.918>there's <00:52:42.151>JDB, <00:52:42.384>the <00:52:42.618>command <00:52:42.851>line <00:52:43.085>debugger

1010
00:52:44.385 --> 00:52:45.945
<00:52:44.385>that <00:52:44.735>prints <00:52:45.085>you <00:52:45.435>these <00:52:45.785>exceptions,

1011
00:52:46.045 --> 00:52:50.825
<00:52:46.045>but <00:52:46.278>usually, <00:52:46.511>uh, <00:52:46.745>debuggers <00:52:46.978>wanna <00:52:47.211>tackle <00:52:47.445>all

1012
00:52:51.905 --> 00:52:54.665
<00:52:51.905>expected <00:52:52.105>exceptions <00:52:52.305>or <00:52:52.505>everything <00:52:52.705>that <00:52:52.905>might <00:52:53.105>be <00:52:53.305>happening.

1013
00:52:54.665 --> 00:52:59.305
<00:52:54.665>For <00:52:54.898>example, <00:52:55.131>when <00:52:55.365>you, <00:52:55.598>um, <00:52:55.831>evaluating, <00:52:56.065>uh,

1014
00:52:59.375 --> 00:53:02.065
<00:52:59.375>some, <00:52:59.575>some <00:52:59.775>code <00:52:59.975>and <00:53:00.175>these <00:53:00.375>throw <00:53:00.575>some <00:53:00.775>exceptions,

1015
00:53:02.645 --> 00:53:03.945
<00:53:02.645>the <00:53:03.035>JBM <00:53:03.425>handles <00:53:03.815>these

1016
00:53:03.965 --> 00:53:05.545
<00:53:03.965>and <00:53:04.315>shows <00:53:04.665>usually <00:53:05.015>a <00:53:05.365>popup

1017
00:53:06.705 --> 00:53:08.365
<00:53:06.705>one <00:53:06.985>when <00:53:07.265>there's <00:53:07.545>more <00:53:07.825>complex <00:53:08.105>things

1018
00:53:08.365 --> 00:53:11.645
<00:53:08.365>that <00:53:08.520>the <00:53:08.676>JBM <00:53:08.831>didn't <00:53:08.987>expect <00:53:09.142>just <00:53:09.298>usually <00:53:09.453>ends <00:53:09.609>the <00:53:09.765>bank

1019
00:53:11.645 --> 00:53:14.525
<00:53:11.645>session <00:53:11.800>because <00:53:11.956>it <00:53:12.111>doesn't <00:53:12.267>make <00:53:12.422>sense <00:53:12.578>to <00:53:12.733>like <00:53:12.889>restart <00:53:13.045>it

1020
00:53:14.655 --> 00:53:15.965
<00:53:14.655>after <00:53:15.834>this,

1021
00:53:16.255 --> 00:53:18.925
<00:53:16.255>after <00:53:16.535>you're <00:53:16.815>in <00:53:17.095>an <00:53:17.375>invalid <00:53:17.655>state,

1022
00:53:18.925 --> 00:53:21.325
<00:53:18.925>potentially <00:53:19.158>invalid <00:53:19.391>state <00:53:19.625>on <00:53:19.858>the <00:53:20.091>JBM <00:53:20.325>side.

1023
00:53:24.045 --> 00:53:26.525
<00:53:24.045>All <00:53:24.220>right, <00:53:24.395>thank <00:53:24.570>you <00:53:24.745>for <00:53:24.920>clarifying <00:53:25.095>this <00:53:25.270>as <00:53:25.445>well.

1024
00:53:27.305 --> 00:53:28.565
<00:53:27.305>We <00:53:27.683>got <00:53:28.061>another <00:53:28.439>question.

1025
00:53:29.425 --> 00:53:32.845
<00:53:29.425>In <00:53:29.658>projects <00:53:29.891>with <00:53:30.125>multiple <00:53:30.358>languages <00:53:30.591>like <00:53:30.825>Java

1026
00:53:32.845 --> 00:53:34.005
<00:53:32.845>and <00:53:33.192>some <00:53:33.541>native <00:53:33.889>code,

1027
00:53:34.465 --> 00:53:37.725
<00:53:34.465>how <00:53:34.698>do <00:53:34.931>debuggers <00:53:35.165>handle <00:53:35.398>cross <00:53:35.631>language <00:53:35.865>debugging?

1028
00:53:39.175 --> 00:53:40.715
<00:53:39.175>That's, <00:53:39.521>that's <00:53:39.868>an <00:53:40.214>interesting <00:53:40.561>question.

1029
00:53:40.735 --> 00:53:43.795
<00:53:40.735>So, <00:53:40.890>um, <00:53:41.046>if <00:53:41.201>I'm <00:53:41.357>honest, <00:53:41.512>uh, <00:53:41.668>I've, <00:53:41.823>I've <00:53:41.979>never <00:53:42.135>dealt

1030
00:53:44.035 --> 00:53:46.435
<00:53:44.035>with <00:53:44.315>like <00:53:44.595>real <00:53:44.875>cross <00:53:45.154>platform <00:53:45.435>code.

1031
00:53:46.435 --> 00:53:48.875
<00:53:46.435>They <00:53:46.610>usually <00:53:46.785>know, <00:53:46.960>okay, <00:53:47.134>this <00:53:47.310>is <00:53:47.485>back <00:53:47.660>in <00:53:47.835>the,

1032
00:53:49.295 --> 00:53:50.315
<00:53:49.295>in <00:53:49.601>the <00:53:49.907>native <00:53:50.213>side

1033
00:53:50.415 --> 00:53:51.995
<00:53:50.415>or <00:53:50.615>this <00:53:50.815>is <00:53:51.015>back <00:53:51.215>in <00:53:51.415>the <00:53:51.615>Java <00:53:51.815>side,

1034
00:53:52.015 --> 00:53:53.915
<00:53:52.015>so <00:53:52.295>usually <00:53:52.575>just <00:53:52.855>use <00:53:53.134>2D <00:53:53.415>iger.

1035
00:53:54.415 --> 00:53:56.835
<00:53:54.415>Um, <00:53:54.570>but <00:53:54.726>of <00:53:54.881>course <00:53:55.037>d <00:53:55.192>iger <00:53:55.348>can <00:53:55.503>work <00:53:55.659>with <00:53:55.815>them.

1036
00:53:56.985 --> 00:54:00.675
<00:53:56.985>They, <00:53:57.185>they <00:53:57.385>can, <00:53:57.585>for <00:53:57.785>example, <00:53:57.985>um, <00:53:58.185>ask <00:53:58.385>JDI

1037
00:54:00.675 --> 00:54:01.715
<00:54:00.675>for <00:54:00.909>like <00:54:01.143>the <00:54:01.377>java <00:54:01.611>part

1038
00:54:01.775 --> 00:54:06.155
<00:54:01.775>and <00:54:01.915>then <00:54:02.055>use <00:54:02.195>GDP <00:54:02.335>to, <00:54:02.475>to <00:54:02.615>interact <00:54:02.755>with <00:54:02.895>the <00:54:03.035>native <00:54:03.175>part.

1039
00:54:07.135 --> 00:54:10.755
<00:54:07.135>But <00:54:07.335>then <00:54:07.535>you <00:54:07.735>having <00:54:07.935>two <00:54:08.135>debuggers <00:54:08.335>like <00:54:08.535>interacting

1040
00:54:10.755 --> 00:54:14.795
<00:54:10.755>because <00:54:10.930>when <00:54:11.105>JDP <00:54:11.280>when <00:54:11.455>when <00:54:11.630>new <00:54:11.805>debugger <00:54:11.980>stops <00:54:12.155>your

1041
00:54:15.415 --> 00:54:16.955
<00:54:15.415>native <00:54:16.108>JVM <00:54:16.801>running

1042
00:54:17.855 --> 00:54:21.995
<00:54:17.855>and <00:54:18.010>then <00:54:18.166>you <00:54:18.321>have <00:54:18.477>the <00:54:18.632>travel <00:54:18.788>debugger <00:54:18.943>not <00:54:19.099>like <00:54:19.255>answering

1043
00:54:21.995 --> 00:54:24.475
<00:54:21.995>anymore <00:54:22.170>because <00:54:22.345>you <00:54:22.520>stopped <00:54:22.694>the <00:54:22.870>application <00:54:23.045>on <00:54:23.220>like <00:54:23.395>the

1044
00:54:24.475 --> 00:54:26.155
<00:54:24.475>native <00:54:24.755>level, <00:54:25.035>it <00:54:25.315>might <00:54:25.595>get <00:54:25.875>interesting.

1045
00:54:26.215 --> 00:54:27.795
<00:54:26.215>So <00:54:26.565>I <00:54:26.915>think <00:54:27.265>it's <00:54:27.615>doable.

1046
00:54:28.015 --> 00:54:31.475
<00:54:28.015>Um, <00:54:28.248>but <00:54:28.481>maybe <00:54:28.714>vs <00:54:28.948>code <00:54:29.181>support <00:54:29.415>is,

1047
00:54:31.475 --> 00:54:35.475
<00:54:31.475>but <00:54:31.708>usually, <00:54:31.941>um, <00:54:32.174>uh, <00:54:32.408>debuggers <00:54:32.641>only <00:54:32.875>support

1048
00:54:36.495 --> 00:54:40.635
<00:54:36.495>run <00:54:36.694>language <00:54:36.895>runtime <00:54:37.095>be <00:54:37.295>not, <00:54:37.495>not <00:54:37.694>one <00:54:37.895>language

1049
00:54:40.635 --> 00:54:43.475
<00:54:40.635>because <00:54:40.751>you <00:54:40.868>can <00:54:40.985>have <00:54:41.101>code <00:54:41.218>in <00:54:41.335>and <00:54:41.451>java <00:54:41.568>code <00:54:41.685>at <00:54:41.801>the <00:54:41.918>same <00:54:42.035>time,

1050
00:54:43.615 --> 00:54:45.475
<00:54:43.615>but <00:54:43.964>like <00:54:44.314>one <00:54:44.665>language <00:54:45.015>runtime

1051
00:54:45.475 --> 00:54:49.115
<00:54:45.475>where <00:54:45.674>they <00:54:45.875>support <00:54:46.075>either <00:54:46.275>native <00:54:46.475>or <00:54:46.674>uh, <00:54:46.875>Java.

1052
00:54:49.215 --> 00:54:51.195
<00:54:49.215>So <00:54:49.448>maybe <00:54:49.681>there's <00:54:49.915>in <00:54:50.148>the <00:54:50.381>future <00:54:50.615>some,

1053
00:54:51.195 --> 00:54:53.755
<00:54:51.195>some <00:54:51.350>debug <00:54:51.506>coming <00:54:51.661>in <00:54:51.817>when <00:54:51.972>you <00:54:52.128>know, <00:54:52.283>such <00:54:52.439>a <00:54:52.595>debugger

1054
00:54:53.755 --> 00:54:55.915
<00:54:53.755>that <00:54:53.930>it <00:54:54.105>supports <00:54:54.280>this, <00:54:54.455>please <00:54:54.630>set <00:54:54.805>me <00:54:54.980>a <00:54:55.155>mail.

1055
00:54:56.015 --> 00:54:58.555
<00:54:56.015>It, <00:54:56.295>it <00:54:56.575>sounds <00:54:56.855>like <00:54:57.134>interesting <00:54:57.415>project.

1056
00:55:00.585 --> 00:55:02.195
<00:55:00.585>Alright, <00:55:01.051>yeah, <00:55:01.518>thank <00:55:01.985>you.

1057
00:55:02.335 --> 00:55:04.115
<00:55:02.335>And <00:55:02.615>we <00:55:02.895>got <00:55:03.175>one <00:55:03.455>more <00:55:03.735>question

1058
00:55:04.375 --> 00:55:07.955
<00:55:04.375>and <00:55:04.550>a <00:55:04.725>real <00:55:04.900>fitting <00:55:05.075>last <00:55:05.250>question <00:55:05.425>I <00:55:05.600>would <00:55:05.775>say

1059
00:55:07.955 --> 00:55:10.155
<00:55:07.955>because <00:55:08.421>what <00:55:08.888>future <00:55:09.355>trends

1060
00:55:10.215 --> 00:55:13.515
<00:55:10.215>or <00:55:10.415>features <00:55:10.615>do <00:55:10.815>you <00:55:11.015>expect <00:55:11.215>in <00:55:11.415>debugging <00:55:11.615>tools?

1061
00:55:14.665 --> 00:55:17.165
<00:55:14.665>So <00:55:14.805>I <00:55:14.945>think, <00:55:15.085>uh, <00:55:15.225>one, <00:55:15.365>one <00:55:15.505>of <00:55:15.645>the <00:55:15.785>main <00:55:15.925>issues <00:55:16.065>currently

1062
00:55:17.365 --> 00:55:20.765
<00:55:17.365>with <00:55:17.520>debugging <00:55:17.676>and <00:55:17.831>also <00:55:17.987>with <00:55:18.142>the <00:55:18.298>whole <00:55:18.453>space <00:55:18.609>of <00:55:18.765>profiling

1063
00:55:21.225 --> 00:55:25.165
<00:55:21.225>and, <00:55:21.400>uh, <00:55:21.575>so <00:55:21.750>portability <00:55:21.924>is <00:55:22.100>that <00:55:22.275>project <00:55:22.450>gloom <00:55:22.625>is

1064
00:55:26.225 --> 00:55:27.565
<00:55:26.225>slowly <00:55:26.828>dooming <00:55:27.431>over.

1065
00:55:27.825 --> 00:55:31.965
<00:55:27.825>So, <00:55:27.964>um, <00:55:28.105>the, <00:55:28.245>the <00:55:28.384>problem <00:55:28.524>is <00:55:28.665>that <00:55:28.805>with <00:55:28.944>many, <00:55:29.085>many <00:55:29.225>new

1066
00:55:32.725 --> 00:55:34.445
<00:55:32.725>brochure <00:55:32.958>threats <00:55:33.191>where <00:55:33.424>you <00:55:33.658>can <00:55:33.891>have <00:55:34.125>applications

1067
00:55:34.475 --> 00:55:36.925
<00:55:34.475>that <00:55:34.708>have <00:55:34.941>thousands <00:55:35.174>of <00:55:35.408>threats, <00:55:35.641>you <00:55:35.875>have

1068
00:55:36.925 --> 00:55:40.805
<00:55:36.925>to <00:55:37.065>somehow <00:55:37.205>let <00:55:37.345>the <00:55:37.485>user <00:55:37.625>be <00:55:37.765>able <00:55:37.905>to, <00:55:38.045>to <00:55:38.185>debug <00:55:38.325>them

1069
00:55:41.065 --> 00:55:44.485
<00:55:41.065>and <00:55:41.345>to <00:55:41.625>also <00:55:41.905>visualize <00:55:42.185>them, <00:55:42.465>uh,

1070
00:55:44.485 --> 00:55:47.325
<00:55:44.485>because <00:55:44.660>they <00:55:44.835>can <00:55:45.010>be <00:55:45.185>quite <00:55:45.360>overwhelming <00:55:45.535>when <00:55:45.710>you <00:55:45.885>have

1071
00:55:47.385 --> 00:55:50.725
<00:55:47.385>so <00:55:47.512>many <00:55:47.639>threats <00:55:47.766>and <00:55:47.894>um, <00:55:48.021>you <00:55:48.148>have <00:55:48.275>to <00:55:48.403>get <00:55:48.530>the <00:55:48.657>right <00:55:48.785>one.

1072
00:55:51.225 --> 00:55:54.245
<00:55:51.225>Um, <00:55:51.424>I <00:55:51.625>think <00:55:51.825>there, <00:55:52.025>there, <00:55:52.225>there's <00:55:52.424>some, <00:55:52.625>um,

1073
00:55:54.245 --> 00:55:57.925
<00:55:54.245>developments <00:55:54.384>there <00:55:54.525>where <00:55:54.665>in <00:55:54.805>a <00:55:54.944>couple <00:55:55.085>of, <00:55:55.225>in <00:55:55.365>the <00:55:55.505>next <00:55:55.645>couple

1074
00:55:57.925 --> 00:56:01.725
<00:55:57.925>of <00:55:58.080>years <00:55:58.236>people <00:55:58.391>will <00:55:58.547>find <00:55:58.702>ways <00:55:58.858>to <00:55:59.013>visualize <00:55:59.169>and <00:55:59.325>um,

1075
00:56:03.065 --> 00:56:06.165
<00:56:03.065>and <00:56:03.298>also <00:56:03.531>of <00:56:03.765>course <00:56:03.998>debugging <00:56:04.231>never <00:56:04.465>stops.

1076
00:56:06.185 --> 00:56:09.405
<00:56:06.185>So <00:56:06.418>now, <00:56:06.651>now <00:56:06.884>new <00:56:07.118>companies <00:56:07.351>that <00:56:07.585>couple

1077
00:56:09.405 --> 00:56:13.645
<00:56:09.405>of <00:56:09.580>them <00:56:09.755>out <00:56:09.930>there <00:56:10.105>start <00:56:10.280>with, <00:56:10.455>uh, <00:56:10.630>proper <00:56:10.805>time

1078
00:56:14.365 --> 00:56:15.405
<00:56:14.365>reversal <00:56:14.833>even <00:56:15.301>so

1079
00:56:15.405 --> 00:56:18.005
<00:56:15.405>that <00:56:15.560>you <00:56:15.716>can <00:56:15.871>go <00:56:16.027>back <00:56:16.182>in <00:56:16.338>time <00:56:16.493>you <00:56:16.649>use <00:56:16.805>Snapchatting

1080
00:56:18.145 --> 00:56:21.885
<00:56:18.145>to <00:56:18.345>say <00:56:18.545>like, <00:56:18.745>oh, <00:56:18.945>I <00:56:19.145>can <00:56:19.345>reply, <00:56:19.545>um,

1081
00:56:22.465 --> 00:56:24.085
<00:56:22.465>on <00:56:22.931>a <00:56:23.398>program <00:56:23.865>execution

1082
00:56:24.345 --> 00:56:27.845
<00:56:24.345>and <00:56:24.500>also <00:56:24.656>to <00:56:24.811>do <00:56:24.967>some <00:56:25.122>kind <00:56:25.278>of <00:56:25.433>in <00:56:25.589>production <00:56:25.745>buying.

1083
00:56:28.345 --> 00:56:31.685
<00:56:28.345>But <00:56:28.500>I <00:56:28.656>think <00:56:28.811>it's, <00:56:28.967>it's <00:56:29.122>a <00:56:29.278>field <00:56:29.433>that's <00:56:29.589>quite <00:56:29.745>interesting

1084
00:56:32.025 --> 00:56:34.925
<00:56:32.025>and <00:56:32.200>maybe <00:56:32.375>we'll <00:56:32.550>see <00:56:32.725>in <00:56:32.900>the <00:56:33.075>next <00:56:33.250>five <00:56:33.425>years

1085
00:56:34.925 --> 00:56:36.645
<00:56:34.925>where <00:56:35.275>these <00:56:35.625>approaches <00:56:35.975>are <00:56:36.325>currently,

1086
00:56:36.645 --> 00:56:41.205
<00:56:36.645>like <00:56:36.785>in <00:56:36.925>small <00:56:37.065>startups, <00:56:37.205>um, <00:56:37.345>are <00:56:37.485>coming <00:56:37.625>to <00:56:37.765>be <00:56:37.905>in <00:56:38.045>the,

1087
00:56:41.425 --> 00:56:43.205
<00:56:41.425>um, <00:56:41.658>in <00:56:41.891>the <00:56:42.125>c <00:56:42.358>plus <00:56:42.591>plus <00:56:42.825>world.

1088
00:56:43.265 --> 00:56:46.885
<00:56:43.265>We <00:56:43.440>also <00:56:43.615>have, <00:56:43.790>we <00:56:43.964>already <00:56:44.140>have <00:56:44.315>the <00:56:44.490>reverse <00:56:44.665>debugging.

1089
00:56:46.885 --> 00:56:49.725
<00:56:46.885>There <00:56:47.085>are <00:56:47.285>are <00:56:47.485>debugging <00:56:47.685>that's, <00:56:47.885>that's <00:56:48.085>open <00:56:48.285>source,

1090
00:56:49.865 --> 00:56:53.845
<00:56:49.865>but <00:56:50.020>in <00:56:50.176>the <00:56:50.331>open <00:56:50.487>source <00:56:50.642>world, <00:56:50.798>um, <00:56:50.953>there <00:56:51.109>are <00:56:51.265>not

1091
00:56:53.845 --> 00:56:56.605
<00:56:53.845>that <00:56:54.078>many <00:56:54.311>large <00:56:54.544>development <00:56:54.778>in <00:56:55.011>developments <00:56:55.245>in,

1092
00:56:56.605 --> 00:56:58.485
<00:56:56.605>in <00:56:56.885>the <00:56:57.165>de <00:56:57.445>bank <00:56:57.725>space <00:56:58.005>just

1093
00:56:58.485 --> 00:57:03.085
<00:56:58.485>because <00:56:58.660>the <00:56:58.835>current <00:56:59.010>way <00:56:59.185>debug <00:56:59.360>work <00:56:59.535>is <00:56:59.710>good <00:56:59.885>enough.

1094
00:57:03.465 --> 00:57:05.605
<00:57:03.465>So, <00:57:03.745>um, <00:57:04.025>I <00:57:04.305>think <00:57:04.585>there <00:57:04.865>aren't

1095
00:57:05.605 --> 00:57:09.605
<00:57:05.605>that <00:57:05.780>many <00:57:05.955>pain <00:57:06.130>point <00:57:06.305>except <00:57:06.480>like <00:57:06.655>virtual <00:57:06.830>threats, <00:57:07.005>um,

1096
00:57:09.715 --> 00:57:10.885
<00:57:09.715>that <00:57:09.978>people <00:57:10.241>want <00:57:10.504>to <00:57:10.768>tackle.

1097
00:57:12.525 --> 00:57:14.495
<00:57:12.525>Alright, <00:57:12.805>thank <00:57:13.085>you <00:57:13.365>also <00:57:13.645>for <00:57:13.925>that.

1098
00:57:14.675 --> 00:57:17.055
<00:57:14.675>Um, <00:57:14.875>Johannes, <00:57:15.075>we <00:57:15.275>still <00:57:15.475>have <00:57:15.675>some <00:57:15.875>time <00:57:16.075>left,

1099
00:57:17.235 --> 00:57:18.615
<00:57:17.235>but <00:57:17.483>we <00:57:17.731>ran <00:57:17.980>out <00:57:18.228>of <00:57:18.477>questions,

1100
00:57:18.755 --> 00:57:21.375
<00:57:18.755>so <00:57:18.910>maybe <00:57:19.066>is <00:57:19.221>there <00:57:19.377>anything <00:57:19.532>else <00:57:19.688>you <00:57:19.843>want <00:57:19.999>to <00:57:20.155>share

1101
00:57:21.405 --> 00:57:23.855
<00:57:21.405>regarding <00:57:21.685>the <00:57:21.965>topic <00:57:22.245>with <00:57:22.525>the <00:57:22.805>audience?

1102
00:57:23.855 --> 00:57:26.735
<00:57:23.855>So, <00:57:24.010>um, <00:57:24.166>uh, <00:57:24.321>um, <00:57:24.477>it <00:57:24.632>it <00:57:24.788>it's <00:57:24.943>great <00:57:25.099>that, <00:57:25.255>that

1103
00:57:26.735 --> 00:57:29.255
<00:57:26.735>so <00:57:26.890>many <00:57:27.046>people <00:57:27.201>here <00:57:27.357>here <00:57:27.512>listen <00:57:27.668>on <00:57:27.823>this <00:57:27.979>topic, <00:57:28.135>on,

1104
00:57:29.275 --> 00:57:31.055
<00:57:29.275>on <00:57:29.555>debugging <00:57:29.835>because <00:57:30.115>I <00:57:30.395>think <00:57:30.675>like

1105
00:57:32.005 --> 00:57:35.295
<00:57:32.005>many <00:57:32.132>people <00:57:32.259>in <00:57:32.386>the <00:57:32.514>Java <00:57:32.641>will <00:57:32.768>focus <00:57:32.895>on <00:57:33.023>like <00:57:33.150>this <00:57:33.277>flashy <00:57:33.405>like

1106
00:57:35.295 --> 00:57:37.495
<00:57:35.295>this <00:57:35.528>machine <00:57:35.761>learning <00:57:35.995>and <00:57:36.228>Java <00:57:36.461>and <00:57:36.695>everything

1107
00:57:37.635 --> 00:57:39.175
<00:57:37.635>and <00:57:37.866>virtual <00:57:38.097>threads <00:57:38.328>and <00:57:38.559>this <00:57:38.790>and <00:57:39.021>there,

1108
00:57:39.235 --> 00:57:42.335
<00:57:39.235>but <00:57:39.362>um, <00:57:39.489>I <00:57:39.616>think <00:57:39.744>it's, <00:57:39.871>it's <00:57:39.998>really <00:57:40.125>important <00:57:40.253>to <00:57:40.380>keep <00:57:40.507>in <00:57:40.635>mind

1109
00:57:42.335 --> 00:57:44.855
<00:57:42.335>that <00:57:42.510>in <00:57:42.685>your <00:57:42.860>daily <00:57:43.035>work <00:57:43.210>you're <00:57:43.385>doing <00:57:43.560>debugging <00:57:43.735>it,

1110
00:57:44.855 --> 00:57:46.775
<00:57:44.855>maybe <00:57:45.135>sometimes <00:57:45.415>a <00:57:45.695>bit <00:57:45.975>of <00:57:46.255>profiling

1111
00:57:46.775 --> 00:57:50.855
<00:57:46.775>and <00:57:46.950>you <00:57:47.125>wanna, <00:57:47.300>um, <00:57:47.475>keep <00:57:47.650>your <00:57:47.825>skill <00:57:48.000>level <00:57:48.175>there

1112
00:57:51.075 --> 00:57:55.375
<00:57:51.075>and <00:57:51.214>just <00:57:51.355>look <00:57:51.495>into <00:57:51.634>what <00:57:51.774>your <00:57:51.915>RDE <00:57:52.055>supports, <00:57:52.194>um, <00:57:52.335>tested <00:57:52.475>out

1113
00:57:55.375 --> 00:57:56.815
<00:57:55.375>with <00:57:55.699>a <00:57:56.023>small <00:57:56.347>sample <00:57:56.671>projects.

1114
00:57:56.875 --> 00:57:59.335
<00:57:56.875>Um, <00:57:57.050>don't <00:57:57.225>be <00:57:57.400>afraid <00:57:57.575>to <00:57:57.750>dig <00:57:57.925>a <00:57:58.100>bit <00:57:58.275>deeper

1115
00:57:59.435 --> 00:58:02.295
<00:57:59.435>and <00:57:59.590>to <00:57:59.746>learn <00:57:59.901>to <00:58:00.057>understand <00:58:00.212>how <00:58:00.368>these <00:58:00.523>things <00:58:00.679>work <00:58:00.835>to,

1116
00:58:02.355 --> 00:58:04.135
<00:58:02.355>to <00:58:02.635>make <00:58:02.915>yourself <00:58:03.195>a <00:58:03.475>better <00:58:03.755>debugger,

1117
00:58:05.595 --> 00:58:07.215
<00:58:05.595>To <00:58:05.875>make <00:58:06.154>yourself <00:58:06.435>a <00:58:06.714>better <00:58:06.995>developer.

1118
00:58:07.325 --> 00:58:09.255
<00:58:07.325>What <00:58:07.791>good <00:58:08.258>closing <00:58:08.725>words.

1119
00:58:09.615 --> 00:58:11.815
<00:58:09.615>Johannes, <00:58:09.814>thank <00:58:10.015>you <00:58:10.214>so <00:58:10.415>much <00:58:10.615>for <00:58:10.814>the <00:58:11.015>talk

1120
00:58:11.815 --> 00:58:13.015
<00:58:11.815>and <00:58:11.995>also <00:58:12.175>for <00:58:12.355>the <00:58:12.535>q <00:58:12.715>and <00:58:12.895>a.

1121
00:58:13.095 --> 00:58:16.135
<00:58:13.095>I <00:58:13.234>think <00:58:13.375>you <00:58:13.515>shed <00:58:13.654>some <00:58:13.794>light <00:58:13.935>on <00:58:14.075>some <00:58:14.214>very <00:58:14.355>cool <00:58:14.495>topics

1122
00:58:16.675 --> 00:58:19.015
<00:58:16.675>and <00:58:16.875>yeah, <00:58:17.075>many <00:58:17.275>greetings <00:58:17.475>to <00:58:17.675>Cars <00:58:17.875>Who <00:58:18.075>End.

1123
00:58:19.235 --> 00:58:20.695
<00:58:19.235>See <00:58:19.454>you <00:58:19.673>soon <00:58:19.892>on <00:58:20.111>another <00:58:20.330>live <00:58:20.549>day.

1124
00:58:20.915 --> 00:58:22.695
<00:58:20.915>Thanks <00:58:21.195>for <00:58:21.475>having <00:58:21.755>me. <00:58:22.035>See <00:58:22.315>you.