WEBVTT

1
00:00:06.985 --> 00:00:09.935
<00:00:06.985>Hello <00:00:07.685>me <00:00:08.385>here

2
00:00:10.595 --> 00:00:12.735
<00:00:10.595>and <00:00:10.828>thanks <00:00:11.061>to <00:00:11.295>Tony <00:00:11.528>for <00:00:11.761>introducing <00:00:11.995>me.

3
00:00:14.375 --> 00:00:17.075
<00:00:14.375>So <00:00:15.075>Jfa <00:00:15.775>25,

4
00:00:19.625 --> 00:00:21.475
<00:00:19.625>when <00:00:19.858>you <00:00:20.091>were <00:00:20.325>here <00:00:20.558>a <00:00:20.791>year <00:00:21.025>ago,

5
00:00:21.695 --> 00:00:24.915
<00:00:21.695>you <00:00:21.870>could <00:00:22.045>actually <00:00:22.220>hear <00:00:22.395>me <00:00:22.570>talk <00:00:22.745>about <00:00:22.920>Java <00:00:23.095>24,

6
00:00:25.725 --> 00:00:29.475
<00:00:25.725>where <00:00:25.900>I <00:00:26.075>claim <00:00:26.250>Java <00:00:26.425>was <00:00:26.600>faster, <00:00:26.775>it <00:00:26.950>was <00:00:27.125>better

7
00:00:29.935 --> 00:00:31.595
<00:00:29.935>and <00:00:30.215>it <00:00:30.494>was <00:00:30.775>easier <00:00:31.055>to <00:00:31.334>use.

8
00:00:33.215 --> 00:00:37.915
<00:00:33.215>But <00:00:33.342>all <00:00:33.469>of <00:00:33.596>this <00:00:33.724>just <00:00:33.851>focused <00:00:33.978>on <00:00:34.105>the <00:00:34.233>changes <00:00:34.360>that <00:00:34.487>we <00:00:34.615>made

9
00:00:37.975 --> 00:00:39.315
<00:00:37.975>to <00:00:38.377>the <00:00:38.779>Java <00:00:39.181>language

10
00:00:39.465 --> 00:00:42.395
<00:00:39.465>because <00:00:39.665>we <00:00:39.865>are <00:00:40.065>interested <00:00:40.265>in <00:00:40.465>the <00:00:40.665>language, <00:00:40.865>right?

11
00:00:42.395 --> 00:00:45.155
<00:00:42.395>Because <00:00:42.675>we <00:00:42.955>are <00:00:43.235>developers, <00:00:43.515>even <00:00:43.795>better,

12
00:00:45.575 --> 00:00:46.995
<00:00:45.575>we <00:00:46.001>are <00:00:46.427>Java <00:00:46.852>developers,

13
00:00:48.575 --> 00:00:52.675
<00:00:48.575>but <00:00:48.775>with <00:00:48.975>every <00:00:49.175>new <00:00:49.375>Java <00:00:49.575>release <00:00:49.775>there <00:00:49.975>is

14
00:00:52.855 --> 00:00:56.795
<00:00:52.855>so <00:00:53.010>much <00:00:53.166>more <00:00:53.321>coming <00:00:53.477>than <00:00:53.632>just <00:00:53.788>changes <00:00:53.943>in <00:00:54.099>the <00:00:54.254>language.

15
00:00:57.625 --> 00:01:01.795
<00:00:57.625>There's <00:00:57.825>changes <00:00:58.025>in <00:00:58.225>libraries, <00:00:58.425>changes <00:00:58.625>in <00:00:58.825>the <00:00:59.025>API,

16
00:01:02.945 --> 00:01:07.515
<00:01:02.945>changes <00:01:03.100>in <00:01:03.256>the <00:01:03.411>garbage <00:01:03.567>collection <00:01:03.722>and <00:01:03.878>changes <00:01:04.033>in <00:01:04.189>the <00:01:04.345>JVM.

17
00:01:08.295 --> 00:01:13.075
<00:01:08.295>And <00:01:08.435>sometimes <00:01:08.575>we <00:01:08.715>are <00:01:08.855>just <00:01:08.995>so <00:01:09.135>focused <00:01:09.275>on <00:01:09.415>optimizing <00:01:09.555>our <00:01:09.695>code

18
00:01:13.075 --> 00:01:16.315
<00:01:13.075>and <00:01:13.308>squeezing <00:01:13.541>out <00:01:13.775>the <00:01:14.008>last <00:01:14.241>GPU <00:01:14.475>cycles

19
00:01:16.585 --> 00:01:17.995
<00:01:16.585>that <00:01:16.902>we <00:01:17.219>tend <00:01:17.536>to <00:01:17.854>forget.

20
00:01:18.425 --> 00:01:20.595
<00:01:18.425>There's <00:01:18.658>different <00:01:18.891>ways <00:01:19.125>in <00:01:19.358>which <00:01:19.591>we <00:01:19.825>can

21
00:01:20.955 --> 00:01:22.035
<00:01:20.955>optimize <00:01:21.441>our <00:01:21.926>application.

22
00:01:22.895 --> 00:01:23.995
<00:01:22.895>So <00:01:23.390>for <00:01:23.885>today,

23
00:01:25.215 --> 00:01:27.115
<00:01:25.215>we <00:01:25.370>are <00:01:25.526>not <00:01:25.681>just <00:01:25.837>gonna <00:01:25.992>look <00:01:26.148>at <00:01:26.303>the <00:01:26.459>language <00:01:26.615>changes,

24
00:01:27.455 --> 00:01:29.275
<00:01:27.455>but <00:01:27.688>we <00:01:27.921>can <00:01:28.155>use <00:01:28.388>these <00:01:28.621>30 <00:01:28.855>minutes

25
00:01:30.975 --> 00:01:35.115
<00:01:30.975>to <00:01:31.130>look <00:01:31.286>at <00:01:31.441>every <00:01:31.597>change <00:01:31.752>there <00:01:31.908>is <00:01:32.063>in <00:01:32.219>Java <00:01:32.375>25.

26
00:01:35.735 --> 00:01:38.835
<00:01:35.735>Now <00:01:35.910>all <00:01:36.085>these <00:01:36.260>changes <00:01:36.435>are <00:01:36.610>made <00:01:36.785>up <00:01:36.960>of <00:01:37.135>js,

27
00:01:39.265 --> 00:01:41.315
<00:01:39.265>Java <00:01:39.965>enhancement <00:01:40.665>proposals

28
00:01:42.335 --> 00:01:46.315
<00:01:42.335>and <00:01:42.510>actually <00:01:42.685>also <00:01:42.860>Java <00:01:43.035>25 <00:01:43.210>itself <00:01:43.385>is <00:01:43.560>a <00:01:43.735>Jeb.

29
00:01:47.295 --> 00:01:50.355
<00:01:47.295>And <00:01:47.470>these <00:01:47.645>js, <00:01:47.820>they <00:01:47.995>they, <00:01:48.170>they're <00:01:48.345>not <00:01:48.520>nothing <00:01:48.695>secret.

30
00:01:50.535 --> 00:01:53.795
<00:01:50.535>You <00:01:50.690>can <00:01:50.846>actually <00:01:51.001>find <00:01:51.157>them <00:01:51.312>online <00:01:51.468>on <00:01:51.623>the <00:01:51.779>Java <00:01:51.935>website

31
00:01:53.855 --> 00:01:56.675
<00:01:53.854>so <00:01:54.010>you <00:01:54.166>can <00:01:54.321>see <00:01:54.477>what <00:01:54.632>is <00:01:54.788>coming <00:01:54.943>for <00:01:55.099>new <00:01:55.255>releases.

32
00:01:56.735 --> 00:01:59.955
<00:01:56.735>And <00:01:56.935>there's <00:01:57.135>a <00:01:57.335>very <00:01:57.535>detailed <00:01:57.735>description <00:01:57.935>from <00:01:58.135>them

33
00:02:00.855 --> 00:02:04.235
<00:02:00.855>in <00:02:01.135>Java <00:02:01.415>25, <00:02:01.695>there's <00:02:01.975>18 <00:02:02.255>jeps.

34
00:02:05.075 --> 00:02:07.755
<00:02:05.075>I <00:02:05.202>thought <00:02:05.329>it <00:02:05.456>should <00:02:05.584>be <00:02:05.711>19, <00:02:05.838>but <00:02:05.965>somehow <00:02:06.093>I <00:02:06.220>only <00:02:06.347>counted <00:02:06.475>18.

35
00:02:08.495 --> 00:02:12.905
<00:02:08.495>Um, <00:02:08.670>and <00:02:08.845>these <00:02:09.020>changes, <00:02:09.195>we <00:02:09.370>are <00:02:09.545>gonna <00:02:09.720>bulk <00:02:09.895>them.

36
00:02:12.935 --> 00:02:14.385
<00:02:12.935>They're <00:02:13.261>made <00:02:13.587>to <00:02:13.913>the <00:02:14.239>language

37
00:02:14.385 --> 00:02:16.665
<00:02:14.385>because <00:02:14.618>we <00:02:14.851>still <00:02:15.084>interested <00:02:15.318>in <00:02:15.551>language, <00:02:15.785>right?

38
00:02:17.245 --> 00:02:19.985
<00:02:17.245>Um, <00:02:17.478>there's <00:02:17.711>changes <00:02:17.945>to <00:02:18.178>libraries <00:02:18.411>and <00:02:18.645>APIs

39
00:02:20.005 --> 00:02:22.105
<00:02:20.005>and <00:02:20.285>there's <00:02:20.565>changes <00:02:20.845>to <00:02:21.125>the <00:02:21.405>JVM

40
00:02:22.365 --> 00:02:24.905
<00:02:22.365>and <00:02:22.565>some <00:02:22.765>of <00:02:22.965>them <00:02:23.165>are <00:02:23.365>really, <00:02:23.565>really <00:02:23.765>interesting.

41
00:02:25.565 --> 00:02:29.145
<00:02:25.565>So <00:02:25.798>let's <00:02:26.031>start <00:02:26.265>with <00:02:26.498>language <00:02:26.731>changes <00:02:26.965>first.

42
00:02:30.245 --> 00:02:33.705
<00:02:30.245>Um, <00:02:30.420>for <00:02:30.595>every <00:02:30.770>change <00:02:30.945>there's <00:02:31.120>gonna <00:02:31.295>be <00:02:31.470>this <00:02:31.645>little

43
00:02:34.495 --> 00:02:37.385
<00:02:34.495>sign <00:02:34.635>at <00:02:34.775>the <00:02:34.915>top <00:02:35.055>saying, <00:02:35.195>what <00:02:35.335>type <00:02:35.475>of <00:02:35.615>change <00:02:35.755>is <00:02:35.895>it?

44
00:02:37.485 --> 00:02:39.065
<00:02:37.485>And <00:02:37.835>basically <00:02:38.185>we're <00:02:38.535>seeing <00:02:38.885>preview,

45
00:02:40.115 --> 00:02:42.505
<00:02:40.115>final <00:02:40.581>incubator <00:02:41.048>and <00:02:41.515>experimental.

46
00:02:42.895 --> 00:02:45.905
<00:02:42.895>Well <00:02:43.128>preview <00:02:43.361>finally <00:02:43.595>means, <00:02:43.828>actually <00:02:44.061>means <00:02:44.295>um,

47
00:02:46.685 --> 00:02:48.905
<00:02:46.685>we <00:02:46.885>have <00:02:47.085>every <00:02:47.285>six <00:02:47.485>months <00:02:47.685>a <00:02:47.885>Java <00:02:48.085>release.

48
00:02:49.045 --> 00:02:51.185
<00:02:49.045>So <00:02:49.325>new <00:02:49.605>features <00:02:49.885>are <00:02:50.165>being <00:02:50.445>introduced

49
00:02:51.685 --> 00:02:54.505
<00:02:51.685>and <00:02:51.825>being <00:02:51.965>put <00:02:52.105>out <00:02:52.245>there <00:02:52.385>for <00:02:52.525>us <00:02:52.665>to <00:02:52.805>try <00:02:52.945>them <00:02:53.085>out

50
00:02:54.765 --> 00:02:58.665
<00:02:54.765>and <00:02:54.920>actually <00:02:55.076>comment <00:02:55.231>to <00:02:55.387>the <00:02:55.542>creators <00:02:55.698>of <00:02:55.853>Java <00:02:56.009>saying, <00:02:56.165>well,

51
00:02:58.665 --> 00:03:01.125
<00:02:58.665>maybe <00:02:58.792>we <00:02:58.919>should <00:02:59.046>change <00:02:59.174>it <00:02:59.301>like <00:02:59.428>this, <00:02:59.555>or <00:02:59.683>we <00:02:59.810>don't <00:02:59.937>like <00:03:00.065>that,

52
00:03:01.225 --> 00:03:02.765
<00:03:01.225>or <00:03:01.456>could <00:03:01.686>we <00:03:01.917>do <00:03:02.149>it <00:03:02.380>like <00:03:02.611>this?

53
00:03:03.785 --> 00:03:07.925
<00:03:03.785>So <00:03:03.984>normally <00:03:04.185>every <00:03:04.385>change <00:03:04.585>goes <00:03:04.785>through <00:03:04.984>a <00:03:05.185>number

54
00:03:07.985 --> 00:03:10.805
<00:03:07.985>of <00:03:08.185>FUS <00:03:08.385>until <00:03:08.585>it <00:03:08.785>becomes <00:03:08.985>a <00:03:09.185>final <00:03:09.385>version,

55
00:03:10.815 --> 00:03:12.405
<00:03:10.815>which <00:03:11.165>means <00:03:11.515>API <00:03:11.865>is <00:03:12.215>stable

56
00:03:12.405 --> 00:03:16.685
<00:03:12.405>and <00:03:12.560>it's <00:03:12.716>gonna <00:03:12.871>be <00:03:13.027>completely <00:03:13.182>now <00:03:13.338>into <00:03:13.493>the <00:03:13.649>core <00:03:13.805>language

57
00:03:17.465 --> 00:03:19.085
<00:03:17.465>that's <00:03:18.165>incubator <00:03:18.865>functions.

58
00:03:19.385 --> 00:03:21.925
<00:03:19.385>And <00:03:19.734>these <00:03:20.084>incubators, <00:03:20.435>well <00:03:20.785>they're,

59
00:03:21.925 --> 00:03:23.285
<00:03:21.925>they're <00:03:22.333>not <00:03:22.741>quite <00:03:23.149>stable.

60
00:03:23.645 --> 00:03:26.245
<00:03:23.645>API <00:03:23.800>wise, <00:03:23.956>there <00:03:24.111>could <00:03:24.267>be <00:03:24.422>a <00:03:24.578>lot <00:03:24.733>of <00:03:24.889>changes <00:03:25.045>there.

61
00:03:26.825 --> 00:03:29.405
<00:03:26.825>So <00:03:27.058>you <00:03:27.291>know, <00:03:27.524>it's <00:03:27.758>prone <00:03:27.991>to <00:03:28.225>change.

62
00:03:29.465 --> 00:03:31.245
<00:03:29.465>So <00:03:29.665>be <00:03:29.865>careful <00:03:30.065>when <00:03:30.265>you <00:03:30.465>use <00:03:30.665>them <00:03:30.865>that

63
00:03:31.245 --> 00:03:33.005
<00:03:31.245>with <00:03:31.478>new <00:03:31.711>versions <00:03:31.945>you <00:03:32.178>actually <00:03:32.411>might <00:03:32.645>have

64
00:03:33.005 --> 00:03:34.325
<00:03:33.005>to <00:03:33.400>change <00:03:33.797>your <00:03:34.192>code.

65
00:03:34.985 --> 00:03:36.485
<00:03:34.985>And <00:03:35.435>finally <00:03:35.885>there's <00:03:36.335>experimental.

66
00:03:36.645 --> 00:03:38.645
<00:03:36.645>I <00:03:36.845>think <00:03:37.045>there's <00:03:37.245>one <00:03:37.445>experimental <00:03:37.645>one <00:03:37.845>in <00:03:38.045>here

67
00:03:39.075 --> 00:03:42.085
<00:03:39.075>that <00:03:39.250>basically <00:03:39.424>means <00:03:39.600>it <00:03:39.774>has <00:03:39.950>like <00:03:40.125>a <00:03:40.299>separate <00:03:40.475>status

68
00:03:43.295 --> 00:03:46.805
<00:03:43.295>where <00:03:43.435>it <00:03:43.575>says, <00:03:43.715>well <00:03:43.855>you <00:03:43.995>know, <00:03:44.135>we <00:03:44.275>are <00:03:44.415>not <00:03:44.555>really <00:03:44.695>sure

69
00:03:46.945 --> 00:03:49.885
<00:03:46.945>how <00:03:47.084>it's <00:03:47.225>gonna <00:03:47.364>work <00:03:47.505>out <00:03:47.644>and <00:03:47.785>it's <00:03:47.924>not <00:03:48.065>gonna <00:03:48.204>be <00:03:48.345>supported

70
00:03:49.905 --> 00:03:51.365
<00:03:49.905>or <00:03:50.343>maybe <00:03:50.781>every <00:03:51.219>platform.

71
00:03:53.025 --> 00:03:55.285
<00:03:53.025>So <00:03:53.225>that's <00:03:53.425>what <00:03:53.625>it <00:03:53.825>is. <00:03:54.025>Well <00:03:54.225>let's <00:03:54.425>start

72
00:03:55.285 --> 00:03:59.965
<00:03:55.285>with <00:03:55.484>J <00:03:55.685>4 <00:03:55.885>55 <00:03:56.085>primitive <00:03:56.285>types <00:03:56.484>in <00:03:56.685>patterns.

73
00:04:00.785 --> 00:04:05.725
<00:04:00.785>Um, <00:04:01.251>Java <00:04:01.718>had <00:04:02.185>this

74
00:04:06.065 --> 00:04:07.685
<00:04:06.065>new <00:04:06.415>construct <00:04:06.765>some <00:04:07.115>time <00:04:07.465>ago

75
00:04:07.685 --> 00:04:09.925
<00:04:07.685>where <00:04:07.918>we <00:04:08.151>could <00:04:08.385>actually <00:04:08.618>switch <00:04:08.851>over <00:04:09.085>types.

76
00:04:10.305 --> 00:04:13.805
<00:04:10.305>So <00:04:10.432>suddenly <00:04:10.559>you <00:04:10.686>could <00:04:10.814>say, <00:04:10.941>oh <00:04:11.068>well <00:04:11.195>if <00:04:11.323>this <00:04:11.450>type <00:04:11.577>of <00:04:11.705>object,

77
00:04:13.825 --> 00:04:15.165
<00:04:13.825>please <00:04:14.226>do <00:04:14.629>those <00:04:15.031>things.

78
00:04:15.835 --> 00:04:19.005
<00:04:15.835>That <00:04:16.010>worked <00:04:16.185>very <00:04:16.360>well <00:04:16.535>for <00:04:16.710>records, <00:04:16.885>uh, <00:04:17.060>for <00:04:17.235>objects,

79
00:04:19.105 --> 00:04:23.485
<00:04:19.105>all <00:04:19.280>these <00:04:19.455>things, <00:04:19.630>but <00:04:19.805>it <00:04:19.980>didn't <00:04:20.155>support <00:04:20.330>primitive <00:04:20.505>types.

80
00:04:23.985 --> 00:04:28.285
<00:04:23.985>So <00:04:24.101>you <00:04:24.218>couldn't <00:04:24.335>say <00:04:24.451>things <00:04:24.568>like <00:04:24.685>we <00:04:24.801>can <00:04:24.918>say <00:04:25.035>now <00:04:25.151>in <00:04:25.268>this <00:04:25.385>case

81
00:04:28.505 --> 00:04:29.805
<00:04:28.505>it <00:04:28.797>can <00:04:29.090>now <00:04:29.382>switch <00:04:29.675>over

82
00:04:30.105 --> 00:04:31.325
<00:04:30.105>and <00:04:30.324>it <00:04:30.544>can <00:04:30.763>actually <00:04:30.983>say, <00:04:31.203>oh,

83
00:04:31.345 --> 00:04:33.365
<00:04:31.345>if <00:04:31.578>I'm <00:04:31.811>an <00:04:32.045>integer, <00:04:32.278>please <00:04:32.511>do <00:04:32.745>this.

84
00:04:34.065 --> 00:04:36.965
<00:04:34.065>So <00:04:34.205>it <00:04:34.344>actually <00:04:34.485>means <00:04:34.625>it <00:04:34.765>done <00:04:34.905>some <00:04:35.045>casting <00:04:35.185>there <00:04:35.325>for <00:04:35.465>you

85
00:04:36.965 --> 00:04:38.925
<00:04:36.965>because <00:04:37.198>typically <00:04:37.431>O <00:04:37.665>would <00:04:37.898>be <00:04:38.131>an <00:04:38.365>object.

86
00:04:42.305 --> 00:04:45.925
<00:04:42.305>So <00:04:42.460>you <00:04:42.616>could <00:04:42.771>mix <00:04:42.927>primitive <00:04:43.082>types <00:04:43.238>and <00:04:43.393>objects <00:04:43.549>in <00:04:43.705>between.

87
00:04:46.065 --> 00:04:50.685
<00:04:46.065>And <00:04:46.192>you <00:04:46.319>can <00:04:46.446>still <00:04:46.574>use <00:04:46.701>this <00:04:46.828>when, <00:04:46.955>which <00:04:47.083>is <00:04:47.210>a <00:04:47.337>guarded <00:04:47.465>pattern

88
00:04:50.735 --> 00:04:53.125
<00:04:50.735>where <00:04:50.910>you <00:04:51.085>say, <00:04:51.260>well <00:04:51.435>it <00:04:51.610>might <00:04:51.785>be <00:04:51.960>a <00:04:52.135>string,

89
00:04:53.185 --> 00:04:57.565
<00:04:53.185>but <00:04:53.360>only <00:04:53.535>do <00:04:53.710>um, <00:04:53.885>if <00:04:54.060>this <00:04:54.235>condition <00:04:54.410>is <00:04:54.585>met.

90
00:04:58.505 --> 00:05:02.845
<00:04:58.505>So <00:04:58.705>primitive <00:04:58.905>types <00:04:59.105>are <00:04:59.305>now <00:04:59.505>supported <00:04:59.705>in <00:04:59.905>patterns

91
00:05:02.845 --> 00:05:04.845
<00:05:02.845>as <00:05:03.045>it <00:05:03.245>says <00:05:03.445>it's <00:05:03.645>a <00:05:03.845>preview <00:05:04.045>function <00:05:04.245>still.

92
00:05:05.185 --> 00:05:06.725
<00:05:05.185>So <00:05:05.647>try <00:05:06.109>it <00:05:06.571>out

93
00:05:07.545 --> 00:05:11.645
<00:05:07.545>and <00:05:07.700>su <00:05:07.856>give <00:05:08.011>feedback <00:05:08.167>to <00:05:08.322>the <00:05:08.478>Java <00:05:08.633>team <00:05:08.789>at <00:05:08.945>Oracle.

94
00:05:13.385 --> 00:05:15.005
<00:05:13.385>And <00:05:13.735>of <00:05:14.085>course <00:05:14.435>the <00:05:14.784>instance

95
00:05:15.025 --> 00:05:19.085
<00:05:15.025>of <00:05:15.152>which <00:05:15.279>was <00:05:15.406>actually <00:05:15.534>the <00:05:15.661>first <00:05:15.788>pattern <00:05:15.915>in <00:05:16.043>Java, <00:05:16.170>in <00:05:16.297>Java <00:05:16.424>17

96
00:05:19.845 --> 00:05:21.805
<00:05:19.845>actually <00:05:20.125>all <00:05:20.405>supports <00:05:20.685>these <00:05:20.965>primitive <00:05:21.245>types.

97
00:05:21.945 --> 00:05:26.405
<00:05:21.945>Now <00:05:22.224>A <00:05:22.505>complete <00:05:22.784>new <00:05:23.065>API <00:05:23.344>is

98
00:05:26.665 --> 00:05:27.845
<00:05:26.665>stable <00:05:27.727>values.

99
00:05:29.225 --> 00:05:33.925
<00:05:29.225>Now <00:05:29.458>very <00:05:29.691>often <00:05:29.925>you <00:05:30.158>define <00:05:30.391>some <00:05:30.625>final

100
00:05:35.285 --> 00:05:36.805
<00:05:35.284>variables <00:05:35.626>somewhere <00:05:35.969>in <00:05:36.311>your <00:05:36.653>code

101
00:05:37.665 --> 00:05:41.085
<00:05:37.665>and <00:05:37.840>you <00:05:38.015>would <00:05:38.190>say, <00:05:38.365>I'm <00:05:38.540>going <00:05:38.715>to <00:05:38.890>initialize <00:05:39.065>it

102
00:05:42.105 --> 00:05:44.685
<00:05:42.105>and <00:05:42.245>maybe <00:05:42.385>I'm <00:05:42.525>gonna <00:05:42.665>use <00:05:42.805>some <00:05:42.945>kind <00:05:43.085>of <00:05:43.225>pattern <00:05:43.365>over <00:05:43.505>it,

103
00:05:44.865 --> 00:05:46.125
<00:05:44.865>or <00:05:45.091>I'm <00:05:45.318>gonna <00:05:45.545>say <00:05:45.772>it's <00:05:45.999>static

104
00:05:46.785 --> 00:05:49.005
<00:05:46.784>and <00:05:47.018>if <00:05:47.251>there's <00:05:47.484>no <00:05:47.718>value, <00:05:47.951>I'm <00:05:48.184>going

105
00:05:49.005 --> 00:05:51.125
<00:05:49.005>to <00:05:49.238>create <00:05:49.471>a <00:05:49.705>value <00:05:49.938>for <00:05:50.171>it, <00:05:50.405>right?

106
00:05:51.265 --> 00:05:52.765
<00:05:51.265>So <00:05:51.602>you <00:05:51.940>have <00:05:52.277>this <00:05:52.615>logger

107
00:05:53.065 --> 00:05:54.805
<00:05:53.065>and <00:05:53.220>the <00:05:53.376>first <00:05:53.531>time <00:05:53.687>you <00:05:53.842>wanna <00:05:53.998>log, <00:05:54.153>you <00:05:54.309>say, <00:05:54.465>oh,

108
00:05:54.805 --> 00:05:58.085
<00:05:54.805>if <00:05:54.921>I <00:05:55.038>don't <00:05:55.155>have <00:05:55.271>a <00:05:55.388>logger <00:05:55.505>yet, <00:05:55.621>I'll <00:05:55.738>create <00:05:55.855>an <00:05:55.971>object <00:05:56.088>for <00:05:56.205>it.

109
00:05:58.675 --> 00:06:01.845
<00:05:58.675>Well <00:05:58.850>that <00:05:59.025>does <00:05:59.200>work, <00:05:59.375>but <00:05:59.550>there's <00:05:59.725>a <00:05:59.900>few <00:06:00.075>things.

110
00:06:02.175 --> 00:06:03.885
<00:06:02.175>Final <00:06:02.525>doesn't <00:06:02.875>really <00:06:03.225>mean <00:06:03.575>final

111
00:06:03.885 --> 00:06:06.325
<00:06:03.885>because <00:06:04.085>with <00:06:04.284>reflection <00:06:04.485>you <00:06:04.685>can <00:06:04.885>actually <00:06:05.085>change <00:06:05.284>these

112
00:06:06.605 --> 00:06:09.805
<00:06:06.605>variables <00:06:06.760>and <00:06:06.916>you <00:06:07.071>take <00:06:07.227>away <00:06:07.382>the <00:06:07.538>possibility <00:06:07.693>of <00:06:07.849>the <00:06:08.005>JVM

113
00:06:10.145 --> 00:06:12.205
<00:06:10.145>to <00:06:10.378>optimize <00:06:10.611>the <00:06:10.844>code <00:06:11.078>at <00:06:11.311>the <00:06:11.544>runtime.

114
00:06:13.025 --> 00:06:15.925
<00:06:13.025>So <00:06:13.258>for <00:06:13.491>this, <00:06:13.724>we <00:06:13.958>have <00:06:14.191>now <00:06:14.424>introduced

115
00:06:17.215 --> 00:06:18.435
<00:06:17.215>stable <00:06:18.313>values

116
00:06:19.935 --> 00:06:22.515
<00:06:19.935>and <00:06:20.090>as <00:06:20.246>you <00:06:20.401>can <00:06:20.557>see <00:06:20.712>it <00:06:20.868>works <00:06:21.023>a <00:06:21.179>bit <00:06:21.335>differently.

117
00:06:23.425 --> 00:06:25.755
<00:06:23.425>Basically <00:06:23.625>you <00:06:23.825>still <00:06:24.025>have <00:06:24.225>to <00:06:24.425>get <00:06:24.625>logger <00:06:24.825>method

118
00:06:26.175 --> 00:06:28.995
<00:06:26.175>and <00:06:26.330>there <00:06:26.486>you <00:06:26.641>actually <00:06:26.797>say, <00:06:26.952>well <00:06:27.108>if <00:06:27.263>it <00:06:27.419>isn't <00:06:27.575>there,

119
00:06:29.095 --> 00:06:30.355
<00:06:29.095>here's <00:06:29.473>a <00:06:29.851>supplier <00:06:30.229>method

120
00:06:30.415 --> 00:06:34.435
<00:06:30.415>and <00:06:30.590>that <00:06:30.765>will <00:06:30.940>create <00:06:31.115>this <00:06:31.290>logger <00:06:31.465>object <00:06:31.640>for <00:06:31.815>me.

121
00:06:34.895 --> 00:06:36.235
<00:06:34.895>Now <00:06:35.067>why <00:06:35.239>would <00:06:35.411>you <00:06:35.584>want <00:06:35.756>to <00:06:35.928>do <00:06:36.101>that?

122
00:06:36.705 --> 00:06:39.715
<00:06:36.705>Well, <00:06:36.984>it <00:06:37.265>gives <00:06:37.544>us <00:06:37.825>divert <00:06:38.104>immutability.

123
00:06:40.025 --> 00:06:42.795
<00:06:40.025>Basically <00:06:40.258>it <00:06:40.491>means <00:06:40.724>the <00:06:40.958>object <00:06:41.191>isn't <00:06:41.424>created

124
00:06:43.285 --> 00:06:44.835
<00:06:43.284>until <00:06:43.633>you <00:06:43.982>really <00:06:44.331>need <00:06:44.679>it,

125
00:06:45.005 --> 00:06:47.195
<00:06:45.005>which <00:06:45.284>actually <00:06:45.565>can <00:06:45.844>improve <00:06:46.125>startup <00:06:46.405>times,

126
00:06:47.195 --> 00:06:49.995
<00:06:47.195>especially <00:06:47.370>if <00:06:47.545>it's <00:06:47.719>an <00:06:47.895>expensive <00:06:48.070>operation <00:06:48.245>to <00:06:48.420>start <00:06:48.594>with.

127
00:06:51.195 --> 00:06:54.315
<00:06:51.195>Secondly, <00:06:51.474>the <00:06:51.755>JVM <00:06:52.034>can <00:06:52.315>optimize <00:06:52.594>it

128
00:06:54.385 --> 00:06:58.235
<00:06:54.385>because <00:06:54.512>it <00:06:54.639>is <00:06:54.766>now <00:06:54.894>in <00:06:55.021>control <00:06:55.148>of <00:06:55.275>when <00:06:55.403>this <00:06:55.530>object <00:06:55.657>is <00:06:55.784>created.

129
00:06:58.415 --> 00:07:02.115
<00:06:58.415>So <00:06:58.615>it <00:06:58.815>can <00:06:59.015>actually <00:06:59.215>optimize <00:06:59.415>it <00:06:59.615>at <00:06:59.815>runtime

130
00:07:03.455 --> 00:07:04.635
<00:07:03.455>and <00:07:03.667>it's <00:07:03.879>always <00:07:04.092>good <00:07:04.304>to <00:07:04.517>know

131
00:07:04.635 --> 00:07:07.315
<00:07:04.635>that <00:07:04.868>the <00:07:05.101>initialization <00:07:05.335>will <00:07:05.568>be <00:07:05.801>threat <00:07:06.034>safe.

132
00:07:07.315 --> 00:07:09.275
<00:07:07.315>So <00:07:07.515>there's <00:07:07.715>nothing <00:07:07.915>you <00:07:08.115>need <00:07:08.315>to <00:07:08.515>worry <00:07:08.715>about.

133
00:07:11.735 --> 00:07:15.395
<00:07:11.735>So <00:07:11.910>next <00:07:12.085>up, <00:07:12.260>Jeb <00:07:12.435>5, <00:07:12.610>4 <00:07:12.785>5 <00:07:12.960>structured <00:07:13.135>concurrency.

134
00:07:16.425 --> 00:07:17.755
<00:07:16.425>This <00:07:16.664>isn't <00:07:16.903>a <00:07:17.143>new <00:07:17.382>one, <00:07:17.622>right?

135
00:07:17.995 --> 00:07:22.195
<00:07:17.995>I <00:07:18.111>think <00:07:18.228>this <00:07:18.345>is, <00:07:18.461>I <00:07:18.578>think <00:07:18.695>since <00:07:18.811>Java <00:07:18.928>21 <00:07:19.045>it <00:07:19.161>has <00:07:19.278>been <00:07:19.395>there.

136
00:07:22.215 --> 00:07:24.155
<00:07:22.215>So <00:07:22.414>it's <00:07:22.614>been <00:07:22.815>there <00:07:23.015>a <00:07:23.215>number <00:07:23.414>of <00:07:23.614>time.

137
00:07:24.855 --> 00:07:27.075
<00:07:24.855>And <00:07:25.088>what's <00:07:25.321>the <00:07:25.555>idea <00:07:25.788>about <00:07:26.021>structured <00:07:26.255>concurrency?

138
00:07:27.615 --> 00:07:29.595
<00:07:27.615>We <00:07:27.895>all <00:07:28.175>know <00:07:28.455>structured <00:07:28.735>programming <00:07:29.015>like

139
00:07:29.715 --> 00:07:30.875
<00:07:29.715>these <00:07:30.236>constructs, <00:07:30.759>right?

140
00:07:30.875 --> 00:07:33.835
<00:07:30.875>They're <00:07:31.155>hopefully <00:07:31.435>they're <00:07:31.715>nothing <00:07:31.995>new <00:07:32.275>sequences.

141
00:07:34.185 --> 00:07:35.635
<00:07:34.185>There's <00:07:34.837>conditional <00:07:35.490>things

142
00:07:35.935 --> 00:07:37.755
<00:07:35.935>and <00:07:36.215>there's <00:07:36.495>repetition <00:07:36.775>in <00:07:37.055>the <00:07:37.335>loops.

143
00:07:38.215 --> 00:07:42.795
<00:07:38.215>So <00:07:38.448>this <00:07:38.681>is <00:07:38.915>structured <00:07:39.148>programming, <00:07:39.381>structured <00:07:39.615>concurrency

144
00:07:43.615 --> 00:07:47.315
<00:07:43.615>on <00:07:43.790>the <00:07:43.965>other <00:07:44.140>hand <00:07:44.315>tries <00:07:44.490>to <00:07:44.665>achieve <00:07:44.840>the <00:07:45.015>same

145
00:07:48.295 --> 00:07:51.675
<00:07:48.295>but <00:07:48.495>for <00:07:48.695>your <00:07:48.895>concurrent <00:07:49.095>task, <00:07:49.295>for <00:07:49.495>your <00:07:49.695>threats.

146
00:07:52.175 --> 00:07:55.195
<00:07:52.175>So <00:07:52.408>basically <00:07:52.641>you <00:07:52.875>start <00:07:53.108>with <00:07:53.341>apparent <00:07:53.575>task

147
00:07:55.375 --> 00:07:59.395
<00:07:55.375>or <00:07:55.502>a <00:07:55.629>context <00:07:55.756>from <00:07:55.884>which <00:07:56.011>you <00:07:56.138>can <00:07:56.265>fork <00:07:56.393>a <00:07:56.520>number <00:07:56.647>of <00:07:56.775>threats

148
00:08:00.935 --> 00:08:02.915
<00:08:00.935>and <00:08:01.135>in <00:08:01.335>the <00:08:01.535>end <00:08:01.735>they <00:08:01.935>all <00:08:02.135>wait <00:08:02.335>until

149
00:08:04.275 --> 00:08:06.235
<00:08:04.275>a <00:08:04.741>result <00:08:05.208>is <00:08:05.674>returned.

150
00:08:07.255 --> 00:08:09.235
<00:08:07.255>Now <00:08:07.430>the <00:08:07.605>good <00:08:07.780>thing <00:08:07.955>about <00:08:08.130>all <00:08:08.305>of <00:08:08.480>this <00:08:08.655>is

151
00:08:11.115 --> 00:08:15.285
<00:08:11.115>when <00:08:11.315>something <00:08:11.515>crashes, <00:08:11.715>it <00:08:11.915>will <00:08:12.115>actually <00:08:12.315>shut <00:08:12.515>down

152
00:08:15.905 --> 00:08:17.285
<00:08:15.905>the <00:08:16.215>other <00:08:16.526>threats <00:08:16.836>as <00:08:17.147>well.

153
00:08:17.465 --> 00:08:21.125
<00:08:17.465>So <00:08:17.640>all <00:08:17.815>these <00:08:17.989>child <00:08:18.164>tasks, <00:08:18.340>they're <00:08:18.515>being <00:08:18.690>maintained <00:08:18.864>together

154
00:08:21.465 --> 00:08:23.285
<00:08:21.465>and <00:08:21.698>they're <00:08:21.931>gonna <00:08:22.164>be <00:08:22.398>shut <00:08:22.631>down <00:08:22.864>together.

155
00:08:23.785 --> 00:08:27.645
<00:08:23.785>So <00:08:23.912>you <00:08:24.039>don't <00:08:24.166>really <00:08:24.294>have <00:08:24.421>to <00:08:24.548>do <00:08:24.675>the <00:08:24.803>low <00:08:24.930>level <00:08:25.057>work <00:08:25.185>anymore.

156
00:08:28.025 --> 00:08:30.685
<00:08:28.025>It <00:08:28.258>is <00:08:28.491>done <00:08:28.724>now <00:08:28.958>by <00:08:29.191>this <00:08:29.424>API.

157
00:08:31.785 --> 00:08:33.725
<00:08:31.785>Now <00:08:32.135>in <00:08:32.485>the <00:08:32.835>latest <00:08:33.185>version

158
00:08:34.485 --> 00:08:36.525
<00:08:34.485>actually <00:08:34.718>the <00:08:34.951>API <00:08:35.185>has <00:08:35.418>changed <00:08:35.651>a <00:08:35.885>lot.

159
00:08:37.005 --> 00:08:40.485
<00:08:37.005>I <00:08:37.121>think <00:08:37.238>this <00:08:37.355>is <00:08:37.471>a <00:08:37.588>great <00:08:37.705>example <00:08:37.821>of <00:08:37.938>why <00:08:38.054>we <00:08:38.171>have <00:08:38.288>preview <00:08:38.405>APIs

160
00:08:40.595 --> 00:08:43.605
<00:08:40.595>because <00:08:40.795>it <00:08:40.995>has <00:08:41.195>been <00:08:41.395>like <00:08:41.595>this <00:08:41.795>for <00:08:41.995>like

161
00:08:44.315 --> 00:08:45.645
<00:08:44.315>four <00:08:45.512>incarnations

162
00:08:45.985 --> 00:08:48.485
<00:08:45.985>and <00:08:46.265>then <00:08:46.545>suddenly <00:08:46.825>they <00:08:47.105>decided <00:08:47.385>no,

163
00:08:48.515 --> 00:08:50.965
<00:08:48.515>this <00:08:48.715>structured <00:08:48.915>task <00:08:49.115>scope, <00:08:49.314>we <00:08:49.515>are <00:08:49.715>gonna <00:08:49.915>do

164
00:08:50.965 --> 00:08:52.565
<00:08:50.965>that <00:08:51.245>in <00:08:51.525>a <00:08:51.805>complete <00:08:52.085>different <00:08:52.365>way.

165
00:08:52.665 --> 00:08:55.445
<00:08:52.665>We <00:08:52.820>now <00:08:52.976>have <00:08:53.131>this <00:08:53.287>static <00:08:53.442>method <00:08:53.598>open <00:08:53.753>to <00:08:53.909>use <00:08:54.064>it.

166
00:08:55.785 --> 00:08:57.725
<00:08:55.785>But <00:08:55.985>basically <00:08:56.185>this <00:08:56.385>is <00:08:56.584>how <00:08:56.785>we <00:08:56.985>use <00:08:57.185>it.

167
00:08:58.265 --> 00:09:01.765
<00:08:58.265>We <00:08:58.545>open <00:08:58.824>this <00:08:59.105>structured <00:08:59.385>task <00:08:59.665>scope,

168
00:09:03.515 --> 00:09:05.885
<00:09:03.515>then <00:09:03.748>we <00:09:03.981>can <00:09:04.215>give <00:09:04.448>it <00:09:04.681>some <00:09:04.915>configurations.

169
00:09:06.115 --> 00:09:09.445
<00:09:06.115>There's <00:09:06.255>these <00:09:06.395>default <00:09:06.535>things <00:09:06.675>where <00:09:06.815>it <00:09:06.955>says, <00:09:07.095>I <00:09:07.235>fire <00:09:07.375>a <00:09:07.515>number

170
00:09:09.445 --> 00:09:11.245
<00:09:09.445>of <00:09:09.678>tasks <00:09:09.911>and <00:09:10.145>it <00:09:10.378>should <00:09:10.611>all <00:09:10.845>complete

171
00:09:11.305 --> 00:09:12.685
<00:09:11.305>and <00:09:11.512>if <00:09:11.718>not, <00:09:11.925>then <00:09:12.132>shut <00:09:12.339>it <00:09:12.546>down.

172
00:09:13.065 --> 00:09:15.485
<00:09:13.065>Or <00:09:13.220>you <00:09:13.376>could <00:09:13.531>say, <00:09:13.687>I <00:09:13.842>fire <00:09:13.998>a <00:09:14.153>number <00:09:14.309>of <00:09:14.465>tasks

173
00:09:15.865 --> 00:09:18.885
<00:09:15.865>and <00:09:16.005>the <00:09:16.145>first <00:09:16.285>one <00:09:16.425>that <00:09:16.565>returns <00:09:16.705>a <00:09:16.845>result, <00:09:16.985>that's <00:09:17.125>the <00:09:17.265>winner.

174
00:09:19.425 --> 00:09:21.045
<00:09:19.425>That's <00:09:19.704>what <00:09:19.984>you <00:09:20.265>could <00:09:20.545>specify <00:09:20.824>here

175
00:09:21.555 --> 00:09:23.245
<00:09:21.555>with <00:09:21.905>other <00:09:22.255>things <00:09:22.604>like <00:09:22.954>timeouts.

176
00:09:23.755 --> 00:09:26.925
<00:09:23.755>Then <00:09:23.910>you <00:09:24.066>actually <00:09:24.221>do <00:09:24.377>your <00:09:24.532>calls, <00:09:24.688>you <00:09:24.843>fork <00:09:24.999>your <00:09:25.155>API

177
00:09:27.665 --> 00:09:30.405
<00:09:27.665>and <00:09:27.805>that's <00:09:27.944>basically <00:09:28.084>just <00:09:28.224>waiting <00:09:28.365>for <00:09:28.505>the <00:09:28.645>result <00:09:28.785>to <00:09:28.925>come <00:09:29.064>in.

178
00:09:31.425 --> 00:09:32.725
<00:09:31.425>And <00:09:31.814>in <00:09:32.205>this <00:09:32.595>situation,

179
00:09:33.355 --> 00:09:36.365
<00:09:33.355>because <00:09:33.555>we <00:09:33.755>say <00:09:33.955>anyone <00:09:34.155>should <00:09:34.355>return <00:09:34.555>a <00:09:34.755>success,

180
00:09:37.265 --> 00:09:39.285
<00:09:37.265>if <00:09:37.439>weather <00:09:37.615>A <00:09:37.790>is <00:09:37.965>the <00:09:38.140>first <00:09:38.314>one <00:09:38.490>to <00:09:38.665>return,

181
00:09:39.345 --> 00:09:42.525
<00:09:39.345>the <00:09:39.545>system <00:09:39.745>will <00:09:39.945>automatically <00:09:40.145>cancel <00:09:40.345>the <00:09:40.545>other <00:09:40.745>threat,

182
00:09:42.755 --> 00:09:44.325
<00:09:42.755>nothing <00:09:43.035>we <00:09:43.314>need <00:09:43.595>to <00:09:43.875>do <00:09:44.155>anymore.

183
00:09:44.785 --> 00:09:48.285
<00:09:44.785>So <00:09:45.251>very, <00:09:45.718>very <00:09:46.185>easy

184
00:09:49.385 --> 00:09:53.415
<00:09:49.385>and <00:09:49.735>safe <00:09:50.085>threat <00:09:50.435>management, <00:09:50.785>right?

185
00:09:53.935 --> 00:09:54.975
<00:09:53.935>Together <00:09:54.247>with <00:09:54.559>threat <00:09:54.871>management,

186
00:09:54.975 --> 00:09:58.375
<00:09:54.975>especially <00:09:55.208>virtual <00:09:55.441>threat <00:09:55.675>comes <00:09:55.908>scope <00:09:56.141>values, <00:09:56.375>right?

187
00:09:58.705 --> 00:10:02.055
<00:09:58.705>Scope <00:09:58.938>values. <00:09:59.171>They're <00:09:59.405>kind <00:09:59.638>of <00:09:59.871>a <00:10:00.105>replacement

188
00:10:02.115 --> 00:10:03.175
<00:10:02.115>for <00:10:02.592>threat <00:10:03.069>locals

189
00:10:03.175 --> 00:10:04.375
<00:10:03.175>because <00:10:03.714>threat <00:10:04.255>locals,

190
00:10:04.805 --> 00:10:06.455
<00:10:04.805>well <00:10:05.005>they <00:10:05.204>tend <00:10:05.405>to <00:10:05.604>have <00:10:05.805>a <00:10:06.005>few <00:10:06.204>problems.

191
00:10:06.525 --> 00:10:10.855
<00:10:06.525>They <00:10:06.699>weren't <00:10:06.875>threat <00:10:07.050>safe, <00:10:07.225>there <00:10:07.400>was <00:10:07.574>mutable <00:10:07.750>state, <00:10:07.925>um,

192
00:10:13.215 --> 00:10:16.795
<00:10:13.215>and <00:10:13.415>they <00:10:13.615>just <00:10:13.815>took <00:10:14.015>up <00:10:14.215>quite <00:10:14.415>some <00:10:14.615>memory.

193
00:10:17.185 --> 00:10:19.275
<00:10:17.185>Well <00:10:17.359>that <00:10:17.535>was <00:10:17.709>okay <00:10:17.885>when <00:10:18.060>we <00:10:18.234>had <00:10:18.410>classical <00:10:18.584>threats

194
00:10:19.275 --> 00:10:20.755
<00:10:19.275>where <00:10:19.541>we <00:10:19.807>could <00:10:20.074>have <00:10:20.340>10,000 <00:10:20.607>threats,

195
00:10:20.775 --> 00:10:23.395
<00:10:20.775>but <00:10:20.915>now <00:10:21.055>with <00:10:21.194>virtual <00:10:21.334>threats <00:10:21.475>we <00:10:21.615>can <00:10:21.755>easily <00:10:21.895>have <00:10:22.035>a <00:10:22.175>million

196
00:10:23.395 --> 00:10:25.555
<00:10:23.395>threats <00:10:23.675>and <00:10:23.954>suddenly <00:10:24.235>memory <00:10:24.515>usages <00:10:24.795>could

197
00:10:25.555 --> 00:10:27.035
<00:10:25.555>become <00:10:25.887>quite <00:10:26.221>a <00:10:26.554>lot <00:10:26.887>more.

198
00:10:27.295 --> 00:10:30.275
<00:10:27.295>So <00:10:27.528>that's <00:10:27.761>why <00:10:27.995>scoped <00:10:28.228>values <00:10:28.461>came <00:10:28.694>in

199
00:10:30.655 --> 00:10:34.395
<00:10:30.655>and <00:10:30.810>scoped <00:10:30.966>values <00:10:31.121>basically <00:10:31.277>say <00:10:31.432>okay, <00:10:31.588>I <00:10:31.743>have <00:10:31.899>some <00:10:32.055>data.

200
00:10:34.645 --> 00:10:36.835
<00:10:34.645>Let's <00:10:34.878>say <00:10:35.111>you <00:10:35.345>have <00:10:35.578>an <00:10:35.811>API <00:10:36.045>key,

201
00:10:37.135 --> 00:10:39.235
<00:10:37.135>you <00:10:37.335>are <00:10:37.535>getting <00:10:37.735>this <00:10:37.935>somewhere <00:10:38.135>at <00:10:38.335>the <00:10:38.535>front,

202
00:10:39.385 --> 00:10:40.915
<00:10:39.385>it's <00:10:39.660>read <00:10:39.935>in <00:10:40.211>from <00:10:40.486>your <00:10:40.762>application,

203
00:10:41.135 --> 00:10:43.675
<00:10:41.135>but <00:10:41.290>you <00:10:41.446>need <00:10:41.601>to <00:10:41.757>pass <00:10:41.912>it <00:10:42.068>to <00:10:42.223>a <00:10:42.379>service <00:10:42.535>way,

204
00:10:43.695 --> 00:10:45.235
<00:10:43.695>way <00:10:43.972>back <00:10:44.249>in <00:10:44.526>your <00:10:44.803>call <00:10:45.081>stack.

205
00:10:45.695 --> 00:10:49.515
<00:10:45.695>Now <00:10:45.822>you <00:10:45.949>could <00:10:46.076>pass <00:10:46.204>it <00:10:46.331>on <00:10:46.458>every <00:10:46.585>time <00:10:46.713>or <00:10:46.840>maybe <00:10:46.967>you <00:10:47.095>couldn't

206
00:10:49.515 --> 00:10:51.475
<00:10:49.515>because <00:10:49.795>you're <00:10:50.074>calling <00:10:50.355>an <00:10:50.635>external <00:10:50.915>library

207
00:10:51.585 --> 00:10:53.755
<00:10:51.585>that <00:10:51.935>doesn't <00:10:52.285>support <00:10:52.635>this <00:10:52.985>function.

208
00:10:54.185 --> 00:10:57.435
<00:10:54.185>Then <00:10:54.340>you <00:10:54.496>could <00:10:54.651>actually <00:10:54.807>say, <00:10:54.962>okay, <00:10:55.118>for <00:10:55.273>this <00:10:55.429>specific <00:10:55.584>threat

209
00:10:58.255 --> 00:11:02.315
<00:10:58.255>I'm <00:10:58.430>creating <00:10:58.605>uh, <00:10:58.780>this <00:10:58.955>scoped <00:10:59.130>value <00:10:59.305>with <00:10:59.480>API <00:10:59.655>key

210
00:11:03.335 --> 00:11:06.515
<00:11:03.335>and <00:11:03.568>then <00:11:03.801>I'm <00:11:04.035>running <00:11:04.268>the <00:11:04.501>code <00:11:04.735>here

211
00:11:07.055 --> 00:11:10.475
<00:11:07.055>and <00:11:07.334>every <00:11:07.614>sub <00:11:07.895>part <00:11:08.175>of <00:11:08.454>here,

212
00:11:10.475 --> 00:11:14.475
<00:11:10.475>every <00:11:10.675>child <00:11:10.875>process <00:11:11.075>here <00:11:11.275>can <00:11:11.475>read <00:11:11.675>this <00:11:11.875>value.

213
00:11:14.855 --> 00:11:17.875
<00:11:14.855>But <00:11:15.010>once <00:11:15.166>it's <00:11:15.321>scored, <00:11:15.477>so <00:11:15.632>we're <00:11:15.788>defining <00:11:15.943>them <00:11:16.099>up <00:11:16.255>here

214
00:11:18.295 --> 00:11:21.355
<00:11:18.295>and <00:11:18.435>here <00:11:18.574>we're <00:11:18.714>saying, <00:11:18.854>okay, <00:11:18.995>put <00:11:19.135>the <00:11:19.275>user <00:11:19.415>ID <00:11:19.555>in <00:11:19.694>here,

215
00:11:21.375 --> 00:11:25.275
<00:11:21.375>put <00:11:21.575>the <00:11:21.775>request <00:11:21.975>IND <00:11:22.175>in <00:11:22.375>there, <00:11:22.575>then <00:11:22.775>actually

216
00:11:26.925 --> 00:11:29.935
<00:11:26.925>call <00:11:27.204>this <00:11:27.484>run <00:11:27.765>business <00:11:28.045>logic <00:11:28.324>method.

217
00:11:30.075 --> 00:11:34.175
<00:11:30.075>And <00:11:30.230>every <00:11:30.386>child <00:11:30.541>method <00:11:30.697>from <00:11:30.852>there <00:11:31.008>can <00:11:31.163>access <00:11:31.319>the <00:11:31.475>values.

218
00:11:34.595 --> 00:11:37.455
<00:11:34.595>But <00:11:34.735>once <00:11:34.875>we <00:11:35.015>are <00:11:35.155>completed <00:11:35.295>here, <00:11:35.435>memory <00:11:35.575>is <00:11:35.715>being <00:11:35.855>cleaned <00:11:35.995>up,

219
00:11:37.635 --> 00:11:38.655
<00:11:37.635>the <00:11:37.941>value <00:11:38.247>is <00:11:38.553>gone.

220
00:11:39.115 --> 00:11:41.695
<00:11:39.115>So <00:11:39.395>scope <00:11:39.675>values, <00:11:39.955>they're <00:11:40.235>finally <00:11:40.515>final,

221
00:11:41.705 --> 00:11:44.215
<00:11:41.705>which <00:11:41.905>I <00:11:42.105>think <00:11:42.305>is <00:11:42.505>a <00:11:42.705>very <00:11:42.905>good <00:11:43.105>thing.

222
00:11:45.515 --> 00:11:47.935
<00:11:45.515>Um, <00:11:45.981>module <00:11:46.448>import <00:11:46.915>declarations.

223
00:11:48.235 --> 00:11:52.215
<00:11:48.235>You <00:11:48.375>know, <00:11:48.515>with <00:11:48.655>Java <00:11:48.795>nine <00:11:48.935>we <00:11:49.075>had <00:11:49.215>Project <00:11:49.355>Jigsaw <00:11:49.495>which <00:11:49.635>like

224
00:11:52.645 --> 00:11:54.405
<00:11:52.645>modularized <00:11:53.345>the <00:11:54.045>JVM

225
00:11:54.405 --> 00:11:56.445
<00:11:54.405>because <00:11:54.638>it <00:11:54.871>was <00:11:55.105>this <00:11:55.338>huge <00:11:55.571>monolithic <00:11:55.805>thing

226
00:11:56.665 --> 00:11:58.485
<00:11:56.665>and <00:11:56.898>now <00:11:57.131>we <00:11:57.365>have <00:11:57.598>all <00:11:57.831>these <00:11:58.064>modules.

227
00:11:59.305 --> 00:12:03.685
<00:11:59.305>So <00:11:59.479>there <00:11:59.655>have <00:11:59.829>been <00:12:00.005>a <00:12:00.180>number <00:12:00.354>of <00:12:00.530>modules <00:12:00.704>defined,

228
00:12:04.225 --> 00:12:07.085
<00:12:04.225>but <00:12:04.380>still, <00:12:04.536>if <00:12:04.691>you <00:12:04.847>are <00:12:05.002>new <00:12:05.158>to <00:12:05.313>the <00:12:05.469>Java <00:12:05.625>language

229
00:12:07.085 --> 00:12:08.605
<00:12:07.085>and <00:12:07.313>you <00:12:07.541>need <00:12:07.769>to <00:12:07.997>do <00:12:08.225>some <00:12:08.453>imports,

230
00:12:09.515 --> 00:12:12.325
<00:12:09.515>then <00:12:09.748>things <00:12:09.981>can <00:12:10.215>still <00:12:10.448>get <00:12:10.681>complicated, <00:12:10.915>right?

231
00:12:12.395 --> 00:12:15.525
<00:12:12.395>Because <00:12:12.535>if <00:12:12.675>you <00:12:12.814>wanna <00:12:12.954>use <00:12:13.095>the <00:12:13.235>print <00:12:13.375>line, <00:12:13.515>if <00:12:13.655>you <00:12:13.795>want

232
00:12:15.525 --> 00:12:17.645
<00:12:15.525>to <00:12:15.680>use <00:12:15.836>a <00:12:15.991>list, <00:12:16.147>you <00:12:16.302>need <00:12:16.458>to <00:12:16.613>know <00:12:16.769>list <00:12:16.925>what's

233
00:12:17.645 --> 00:12:19.525
<00:12:17.645>that <00:12:17.878>in <00:12:18.111>yfa <00:12:18.345>util <00:12:18.578>where <00:12:18.811>is <00:12:19.045>it?

234
00:12:20.575 --> 00:12:22.765
<00:12:20.575>Maybe <00:12:20.808>that's <00:12:21.041>not <00:12:21.275>so <00:12:21.508>clear <00:12:21.741>for <00:12:21.975>everyone.

235
00:12:23.195 --> 00:12:27.125
<00:12:23.195>What <00:12:23.350>we <00:12:23.506>now <00:12:23.661>actually <00:12:23.817>can <00:12:23.972>do, <00:12:24.128>we <00:12:24.283>can <00:12:24.439>import <00:12:24.595>modules

236
00:12:27.345 --> 00:12:31.205
<00:12:27.345>and <00:12:27.472>what <00:12:27.599>we're <00:12:27.726>saying <00:12:27.854>here <00:12:27.981>is, <00:12:28.108>okay, <00:12:28.235>I <00:12:28.363>don't <00:12:28.490>want <00:12:28.617>to <00:12:28.745>import

237
00:12:33.205 --> 00:12:34.685
<00:12:33.205>specific <00:12:34.536>classes,

238
00:12:34.985 --> 00:12:38.405
<00:12:34.985>but <00:12:35.112>I <00:12:35.239>want <00:12:35.366>to <00:12:35.494>import <00:12:35.621>all <00:12:35.748>classes <00:12:35.875>that <00:12:36.003>make <00:12:36.130>up <00:12:36.257>this <00:12:36.385>module.

239
00:12:39.945 --> 00:12:42.645
<00:12:39.945>If <00:12:40.100>you <00:12:40.256>look <00:12:40.411>here, <00:12:40.567>you <00:12:40.722>see <00:12:40.878>I'm, <00:12:41.033>I'm, <00:12:41.189>I'm <00:12:41.345>referring

240
00:12:42.645 --> 00:12:45.965
<00:12:42.645>to <00:12:42.800>a <00:12:42.956>list <00:12:43.111>even <00:12:43.267>though <00:12:43.422>I'm <00:12:43.578>not <00:12:43.733>importing <00:12:43.889>it <00:12:44.045>anywhere.

241
00:12:47.065 --> 00:12:49.725
<00:12:47.065>And <00:12:47.240>actually <00:12:47.415>I'm <00:12:47.590>also <00:12:47.765>using <00:12:47.940>this <00:12:48.115>print <00:12:48.290>line <00:12:48.465>method,

242
00:12:49.735 --> 00:12:53.845
<00:12:49.735>which <00:12:49.875>is <00:12:50.015>bit <00:12:50.155>of <00:12:50.295>new, <00:12:50.435>which <00:12:50.575>comes <00:12:50.715>from <00:12:50.855>this <00:12:50.995>package <00:12:51.135>here.

243
00:12:53.865 --> 00:12:56.885
<00:12:53.865>So <00:12:54.005>it's <00:12:54.145>not <00:12:54.285>a <00:12:54.425>print <00:12:54.565>line <00:12:54.705>form <00:12:54.845>system <00:12:54.985>out <00:12:55.125>print <00:12:55.265>line.

244
00:12:57.785 --> 00:13:02.645
<00:12:57.785>Now <00:12:57.925>with <00:12:58.064>the <00:12:58.204>import <00:12:58.344>I <00:12:58.485>just <00:12:58.625>said <00:12:58.765>did <00:12:58.905>from <00:12:59.045>Java <00:12:59.185>YouTube

245
00:13:02.645 --> 00:13:06.205
<00:13:02.645>base, <00:13:02.925>I'm <00:13:03.204>importing <00:13:03.485>all <00:13:03.765>these <00:13:04.045>packages.

246
00:13:06.315 --> 00:13:07.845
<00:13:06.315>That <00:13:06.774>means <00:13:07.233>suddenly, <00:13:07.692>um,

247
00:13:07.955 --> 00:13:10.285
<00:13:07.955>well <00:13:08.188>everything <00:13:08.421>from <00:13:08.655>Java <00:13:08.888>is <00:13:09.121>in <00:13:09.355>there.

248
00:13:10.305 --> 00:13:12.325
<00:13:10.305>So <00:13:10.505>all <00:13:10.704>my <00:13:10.905>collection <00:13:11.104>classes <00:13:11.305>are <00:13:11.505>in <00:13:11.704>there.

249
00:13:12.335 --> 00:13:15.045
<00:13:12.335>Everything <00:13:12.568>from <00:13:12.801>Java <00:13:13.035>date <00:13:13.268>is <00:13:13.501>in <00:13:13.735>there.

250
00:13:15.865 --> 00:13:20.245
<00:13:15.865>So <00:13:16.020>it <00:13:16.176>really <00:13:16.331>makes <00:13:16.487>your <00:13:16.642>code <00:13:16.798>much <00:13:16.953>easier <00:13:17.109>to <00:13:17.265>read

251
00:13:20.465 --> 00:13:22.525
<00:13:20.465>and <00:13:20.665>especially <00:13:20.865>for <00:13:21.065>people <00:13:21.265>new <00:13:21.465>to <00:13:21.665>the <00:13:21.865>language,

252
00:13:22.715 --> 00:13:25.525
<00:13:22.715>this <00:13:22.995>makes <00:13:23.275>it <00:13:23.555>much <00:13:23.835>more <00:13:24.115>accessible.

253
00:13:27.595 --> 00:13:30.745
<00:13:27.595>Great, <00:13:27.795>um, <00:13:27.995>should <00:13:28.195>hurry <00:13:28.395>up <00:13:28.595>complex <00:13:28.795>source <00:13:28.995>files.

254
00:13:31.045 --> 00:13:33.265
<00:13:31.045>We <00:13:31.200>all <00:13:31.356>know <00:13:31.511>this <00:13:31.667>part <00:13:31.822>and <00:13:31.978>this <00:13:32.133>is <00:13:32.289>final <00:13:32.444>two.

255
00:13:33.705 --> 00:13:36.425
<00:13:33.705>Everyone <00:13:33.905>has <00:13:34.105>learned <00:13:34.305>Java, <00:13:34.505>public <00:13:34.705>static, <00:13:34.905>void, <00:13:35.105>main.

256
00:13:36.445 --> 00:13:38.865
<00:13:36.445>That's <00:13:36.645>the <00:13:36.845>entry <00:13:37.045>point <00:13:37.245>to <00:13:37.445>our <00:13:37.645>application, <00:13:37.845>right?

257
00:13:39.375 --> 00:13:43.095
<00:13:39.375>Well <00:13:39.550>sometimes <00:13:39.725>they <00:13:39.900>think <00:13:40.075>what's <00:13:40.250>the <00:13:40.425>public <00:13:40.600>and <00:13:40.775>static?

258
00:13:43.115 --> 00:13:44.775
<00:13:43.115>That's <00:13:43.465>quite <00:13:43.815>confusing, <00:13:44.165>isn't <00:13:44.515>it?

259
00:13:44.875 --> 00:13:46.575
<00:13:44.875>You <00:13:45.075>know <00:13:45.275>what, <00:13:45.475>we'll <00:13:45.675>leave <00:13:45.875>the <00:13:46.075>static <00:13:46.275>out,

260
00:13:46.745 --> 00:13:48.535
<00:13:46.745>especially <00:13:47.025>people <00:13:47.305>new <00:13:47.585>to <00:13:47.865>the <00:13:48.145>language.

261
00:13:48.795 --> 00:13:51.055
<00:13:48.795>We <00:13:48.995>are <00:13:49.194>feeling <00:13:49.395>the <00:13:49.594>heat <00:13:49.795>of <00:13:49.995>Python, <00:13:50.194>right?

262
00:13:51.245 --> 00:13:54.175
<00:13:51.245>With <00:13:51.525>um, <00:13:51.805>AI <00:13:52.085>large <00:13:52.365>language <00:13:52.645>models.

263
00:13:54.315 --> 00:13:57.255
<00:13:54.315>So <00:13:54.455>you <00:13:54.595>know, <00:13:54.735>we, <00:13:54.875>we <00:13:55.015>should <00:13:55.155>be <00:13:55.295>a <00:13:55.435>bit <00:13:55.575>more <00:13:55.715>friendly

264
00:13:57.435 --> 00:13:59.495
<00:13:57.435>to <00:13:57.668>people <00:13:57.901>new <00:13:58.135>to <00:13:58.368>the <00:13:58.601>language <00:13:58.834>so

265
00:14:00.315 --> 00:14:01.615
<00:14:00.315>we <00:14:00.549>can <00:14:00.783>leave <00:14:01.017>the <00:14:01.251>static <00:14:01.485>out.

266
00:14:01.755 --> 00:14:05.005
<00:14:01.755>Ill <00:14:01.910>come <00:14:02.066>later, <00:14:02.221>we <00:14:02.377>could <00:14:02.532>even <00:14:02.688>leave <00:14:02.843>the <00:14:02.999>public <00:14:03.155>out

267
00:14:05.005 --> 00:14:06.805
<00:14:05.005>because <00:14:05.285>when <00:14:05.564>you're <00:14:05.845>new <00:14:06.125>to <00:14:06.405>Java,

268
00:14:07.065 --> 00:14:08.365
<00:14:07.065>why <00:14:07.299>would <00:14:07.533>you <00:14:07.767>care <00:14:08.001>about <00:14:08.235>public?

269
00:14:08.545 --> 00:14:09.925
<00:14:08.545>Why <00:14:08.752>would <00:14:08.959>you <00:14:09.165>care <00:14:09.372>about, <00:14:09.579>you <00:14:09.786>know,

270
00:14:10.105 --> 00:14:11.365
<00:14:10.105>you <00:14:10.331>don't <00:14:10.558>know <00:14:10.785>these <00:14:11.012>things <00:14:11.239>yet,

271
00:14:11.545 --> 00:14:12.885
<00:14:11.545>so <00:14:11.786>we'll <00:14:12.027>leave <00:14:12.268>that <00:14:12.509>out <00:14:12.751>too.

272
00:14:13.465 --> 00:14:15.765
<00:14:13.465>And <00:14:13.620>while <00:14:13.776>we're <00:14:13.931>at <00:14:14.087>it, <00:14:14.242>we're <00:14:14.398>not <00:14:14.553>using <00:14:14.709>command <00:14:14.865>line

273
00:14:15.765 --> 00:14:18.365
<00:14:15.765>applications <00:14:16.115>or <00:14:16.465>command <00:14:16.814>line <00:14:17.165>arguments.

274
00:14:18.625 --> 00:14:20.285
<00:14:18.625>So <00:14:18.975>actually <00:14:19.325>we <00:14:19.675>could <00:14:20.025>start

275
00:14:20.845 --> 00:14:23.285
<00:14:20.845>a <00:14:21.045>Java <00:14:21.245>program <00:14:21.445>like <00:14:21.645>this <00:14:21.845>just <00:14:22.045>void <00:14:22.245>main,

276
00:14:23.285 --> 00:14:24.925
<00:14:23.285>that's <00:14:23.518>your <00:14:23.751>entry <00:14:23.985>point <00:14:24.218>and <00:14:24.451>we'll <00:14:24.685>run

277
00:14:25.305 --> 00:14:26.445
<00:14:25.305>and <00:14:25.510>you <00:14:25.715>can <00:14:25.920>see <00:14:26.125>it <00:14:26.331>works

278
00:14:26.445 --> 00:14:29.725
<00:14:26.445>because <00:14:26.620>IntelliJ <00:14:26.795>says <00:14:26.970>I <00:14:27.145>can <00:14:27.320>start <00:14:27.495>your <00:14:27.670>application <00:14:27.845>from

279
00:14:29.755 --> 00:14:33.525
<00:14:29.755>here, <00:14:29.955>but <00:14:30.155>it <00:14:30.355>even <00:14:30.555>goes <00:14:30.755>a <00:14:30.955>step <00:14:31.155>further.

280
00:14:35.075 --> 00:14:38.525
<00:14:35.075>This <00:14:35.355>is <00:14:35.635>your <00:14:35.915>smallest <00:14:36.195>Java <00:14:36.475>program

281
00:14:39.465 --> 00:14:41.965
<00:14:39.465>within <00:14:39.698>the <00:14:39.931>old <00:14:40.165>way <00:14:40.398>of <00:14:40.631>writing, <00:14:40.865>right?

282
00:14:41.985 --> 00:14:43.205
<00:14:41.985>You <00:14:42.259>have <00:14:42.534>a <00:14:42.808>public <00:14:43.083>class

283
00:14:43.545 --> 00:14:45.605
<00:14:43.545>and <00:14:43.719>then <00:14:43.895>you <00:14:44.069>have <00:14:44.245>your <00:14:44.420>main <00:14:44.594>method <00:14:44.770>in <00:14:44.944>there.

284
00:14:46.305 --> 00:14:50.795
<00:14:46.305>But <00:14:46.538>that's <00:14:46.771>not <00:14:47.005>what <00:14:47.238>we <00:14:47.471>need <00:14:47.704>anymore.

285
00:14:51.185 --> 00:14:53.645
<00:14:51.185>We <00:14:51.385>don't <00:14:51.584>need <00:14:51.785>a <00:14:51.984>class <00:14:52.185>around <00:14:52.385>it <00:14:52.584>anymore.

286
00:14:53.985 --> 00:14:58.125
<00:14:53.985>We <00:14:54.112>can <00:14:54.239>just <00:14:54.366>say <00:14:54.494>in <00:14:54.621>a <00:14:54.748>source <00:14:54.875>file <00:14:55.003>void, <00:14:55.130>main <00:14:55.257>string <00:14:55.385>arcs

287
00:14:58.125 --> 00:14:59.805
<00:14:58.125>or <00:14:58.300>we <00:14:58.475>can <00:14:58.650>even <00:14:58.825>leave <00:14:59.000>the <00:14:59.175>string <00:14:59.350>arcs <00:14:59.525>out.

288
00:14:59.985 --> 00:15:01.765
<00:14:59.985>So <00:15:00.265>void <00:15:00.545>main <00:15:00.825>and <00:15:01.105>it'll <00:15:01.385>run

289
00:15:02.185 --> 00:15:05.125
<00:15:02.185>and <00:15:02.312>it'll <00:15:02.439>run <00:15:02.566>with <00:15:02.694>the <00:15:02.821>name <00:15:02.948>of <00:15:03.075>whatever <00:15:03.203>you <00:15:03.330>name <00:15:03.457>that <00:15:03.584>file.

290
00:15:05.585 --> 00:15:09.365
<00:15:05.585>So <00:15:05.785>this <00:15:05.985>makes <00:15:06.185>Java <00:15:06.385>again <00:15:06.585>more <00:15:06.785>accessible, <00:15:06.985>accessible

291
00:15:09.545 --> 00:15:11.085
<00:15:09.545>to <00:15:09.891>newbies <00:15:10.238>in <00:15:10.584>the <00:15:10.931>language.

292
00:15:13.155 --> 00:15:15.205
<00:15:13.155>There's <00:15:13.621>flexible, <00:15:14.088>constructive <00:15:14.555>bodies.

293
00:15:16.225 --> 00:15:18.965
<00:15:16.225>So <00:15:16.425>we <00:15:16.625>know <00:15:16.825>we <00:15:17.025>have <00:15:17.225>some <00:15:17.425>child <00:15:17.625>class

294
00:15:19.105 --> 00:15:22.405
<00:15:19.105>and <00:15:19.221>at <00:15:19.338>some <00:15:19.455>point <00:15:19.571>it <00:15:19.688>needs <00:15:19.805>to <00:15:19.921>call <00:15:20.038>super <00:15:20.155>well <00:15:20.271>when <00:15:20.388>it <00:15:20.505>goes

295
00:15:22.405 --> 00:15:26.525
<00:15:22.405>to <00:15:22.579>its <00:15:22.755>parent <00:15:22.930>and <00:15:23.105>the <00:15:23.280>parent <00:15:23.454>probably <00:15:23.630>has <00:15:23.805>object

296
00:15:27.185 --> 00:15:31.245
<00:15:27.185>as <00:15:27.324>a <00:15:27.464>it's <00:15:27.604>base <00:15:27.744>class, <00:15:27.885>so <00:15:28.025>it <00:15:28.165>needs <00:15:28.305>to <00:15:28.444>call <00:15:28.584>super

297
00:15:31.505 --> 00:15:33.365
<00:15:31.505>as <00:15:31.785>well, <00:15:32.064>which <00:15:32.345>could <00:15:32.625>be <00:15:32.905>handy.

298
00:15:34.185 --> 00:15:37.165
<00:15:34.185>But <00:15:34.340>it <00:15:34.496>is <00:15:34.651>way <00:15:34.807>more <00:15:34.962>handy <00:15:35.118>if <00:15:35.273>you <00:15:35.429>don't <00:15:35.584>have

299
00:15:37.165 --> 00:15:39.965
<00:15:37.165>to <00:15:37.339>call <00:15:37.515>this <00:15:37.689>super <00:15:37.865>if <00:15:38.040>you <00:15:38.214>can <00:15:38.390>divert <00:15:38.564>it.

300
00:15:40.345 --> 00:15:43.885
<00:15:40.345>So <00:15:40.500>take <00:15:40.656>this <00:15:40.811>example <00:15:40.967>where <00:15:41.122>we <00:15:41.278>have <00:15:41.433>a <00:15:41.589>constructor <00:15:41.745>here

301
00:15:44.305 --> 00:15:45.965
<00:15:44.305>and <00:15:44.505>it <00:15:44.704>gets <00:15:44.905>a <00:15:45.104>string <00:15:45.305>as <00:15:45.505>an <00:15:45.704>input.

302
00:15:46.825 --> 00:15:49.685
<00:15:46.825>Now <00:15:47.058>why <00:15:47.291>would <00:15:47.525>it <00:15:47.758>call <00:15:47.991>super <00:15:48.225>first

303
00:15:49.825 --> 00:15:52.725
<00:15:49.825>or <00:15:50.058>super <00:15:50.291>input <00:15:50.525>then <00:15:50.758>validate <00:15:50.991>the <00:15:51.225>data

304
00:15:53.385 --> 00:15:57.565
<00:15:53.385>and <00:15:53.560>then <00:15:53.735>maybe <00:15:53.910>it <00:15:54.085>determines <00:15:54.260>this <00:15:54.435>really <00:15:54.610>is <00:15:54.785>not

305
00:15:57.565 --> 00:16:01.645
<00:15:57.565>what <00:15:57.692>I <00:15:57.819>wanted <00:15:57.946>to <00:15:58.074>do <00:15:58.201>and <00:15:58.328>I <00:15:58.455>can <00:15:58.583>save <00:15:58.710>myself <00:15:58.837>some <00:15:58.965>expensive

306
00:16:01.645 --> 00:16:04.325
<00:16:01.645>calculations <00:16:01.878>by <00:16:02.111>just <00:16:02.345>saying <00:16:02.578>this <00:16:02.811>is <00:16:03.045>wrong.

307
00:16:04.945 --> 00:16:07.565
<00:16:04.945>So <00:16:05.072>what <00:16:05.199>we <00:16:05.326>can <00:16:05.454>now <00:16:05.581>do, <00:16:05.708>we <00:16:05.835>can <00:16:05.963>have <00:16:06.090>some <00:16:06.217>code <00:16:06.345>here,

308
00:16:07.945 --> 00:16:09.965
<00:16:07.945>we <00:16:08.178>can <00:16:08.411>even <00:16:08.645>do <00:16:08.878>some <00:16:09.111>calculations <00:16:09.345>here

309
00:16:10.465 --> 00:16:13.885
<00:16:10.465>and <00:16:10.605>when <00:16:10.745>we're <00:16:10.885>finally <00:16:11.025>happy <00:16:11.165>we <00:16:11.305>can <00:16:11.445>actually <00:16:11.585>call <00:16:11.725>the <00:16:11.865>super.

310
00:16:14.305 --> 00:16:16.165
<00:16:14.305>So <00:16:14.584>that <00:16:14.864>means <00:16:15.145>super <00:16:15.425>doesn't <00:16:15.704>have

311
00:16:16.165 --> 00:16:20.165
<00:16:16.165>to <00:16:16.339>be <00:16:16.515>your <00:16:16.689>first <00:16:16.865>statement <00:16:17.040>anymore <00:16:17.214>in <00:16:17.390>a <00:16:17.564>constructor.

312
00:16:22.755 --> 00:16:26.815
<00:16:22.755>And <00:16:22.882>that <00:16:23.009>was <00:16:23.136>all <00:16:23.264>the <00:16:23.391>language <00:16:23.518>changes <00:16:23.645>we <00:16:23.773>have <00:16:23.900>in <00:16:24.027>Java <00:16:24.155>25.

313
00:16:27.435 --> 00:16:30.935
<00:16:27.435>So <00:16:27.551>now <00:16:27.668>we <00:16:27.785>get <00:16:27.901>to <00:16:28.018>the <00:16:28.135>part <00:16:28.251>that <00:16:28.368>we <00:16:28.484>tend <00:16:28.601>to <00:16:28.718>overlook <00:16:28.834>easily.

314
00:16:32.235 --> 00:16:36.535
<00:16:32.235>So <00:16:32.375>there's <00:16:32.515>the <00:16:32.655>factor <00:16:32.795>API <00:16:32.935>which <00:16:33.075>has <00:16:33.215>been <00:16:33.355>an <00:16:33.495>incubator <00:16:33.635>for

315
00:16:37.175 --> 00:16:38.175
<00:16:37.175>I <00:16:37.354>don't <00:16:37.535>know <00:16:37.714>how <00:16:37.895>many <00:16:38.074>times.

316
00:16:39.325 --> 00:16:44.185
<00:16:39.325>Basically <00:16:39.500>it <00:16:39.675>allows <00:16:39.850>you <00:16:40.025>to <00:16:40.200>express <00:16:40.375>felt <00:16:40.550>factor <00:16:40.725>calculations

317
00:16:44.215 --> 00:16:48.785
<00:16:44.215>that <00:16:44.448>compile <00:16:44.681>optimal <00:16:44.915>to <00:16:45.148>factor <00:16:45.381>hardware <00:16:45.615>instructions.

318
00:16:49.085 --> 00:16:52.265
<00:16:49.085>It <00:16:49.285>has <00:16:49.485>this <00:16:49.685>SIMD, <00:16:49.885>single <00:16:50.085>instruction, <00:16:50.285>multiple <00:16:50.485>data.

319
00:16:52.925 --> 00:16:56.185
<00:16:52.925>Um, <00:16:53.080>the <00:16:53.236>idea <00:16:53.391>is <00:16:53.547>that <00:16:53.702>it's <00:16:53.858>gonna <00:16:54.013>be <00:16:54.169>platform <00:16:54.324>agnostic

320
00:16:56.185 --> 00:16:57.745
<00:16:56.185>so <00:16:56.418>it's <00:16:56.651>gonna <00:16:56.885>support <00:16:57.118>all <00:16:57.351>the <00:16:57.584>platforms

321
00:16:58.045 --> 00:17:01.985
<00:16:58.045>and <00:16:58.200>it <00:16:58.356>really <00:16:58.511>is <00:16:58.667>gonna <00:16:58.822>help <00:16:58.978>Java <00:16:59.133>running <00:16:59.289>AI <00:16:59.444>operations

322
00:17:02.125 --> 00:17:05.465
<00:17:02.125>and <00:17:02.475>calculations <00:17:02.825>much <00:17:03.175>more <00:17:03.525>efficient.

323
00:17:08.635 --> 00:17:12.525
<00:17:08.635>Then <00:17:08.868>there's <00:17:09.101>depending <00:17:09.335>coding <00:17:09.568>of <00:17:09.801>cryptographic <00:17:10.035>objects.

324
00:17:12.905 --> 00:17:15.325
<00:17:12.905>So <00:17:13.254>applications <00:17:13.605>they <00:17:13.954>often <00:17:14.305>send

325
00:17:15.325 --> 00:17:16.525
<00:17:15.325>and <00:17:15.865>receive <00:17:16.405>representation

326
00:17:16.585 --> 00:17:20.325
<00:17:16.585>of <00:17:16.760>cryptographic <00:17:16.935>objects <00:17:17.110>via <00:17:17.285>user <00:17:17.460>interfaces <00:17:17.635>or <00:17:17.810>the <00:17:17.985>network.

327
00:17:20.585 --> 00:17:25.045
<00:17:20.585>And <00:17:20.740>this <00:17:20.896>is <00:17:21.051>privacy <00:17:21.207>enhanced <00:17:21.362>mail <00:17:21.518>format, <00:17:21.673>the <00:17:21.829>PEM <00:17:21.985>format

328
00:17:25.355 --> 00:17:26.365
<00:17:25.355>that <00:17:25.582>used <00:17:25.809>to <00:17:26.036>be <00:17:26.264>used.

329
00:17:26.565 --> 00:17:29.085
<00:17:26.565>I <00:17:26.705>mean <00:17:26.845>now <00:17:26.985>it's <00:17:27.125>not <00:17:27.265>used <00:17:27.405>so <00:17:27.545>much <00:17:27.685>for <00:17:27.825>mail <00:17:27.965>anymore,

330
00:17:29.185 --> 00:17:32.645
<00:17:29.185>but <00:17:29.312>it's <00:17:29.439>used <00:17:29.566>for <00:17:29.694>a <00:17:29.821>lot <00:17:29.948>of <00:17:30.075>other <00:17:30.203>things <00:17:30.330>like <00:17:30.457>your <00:17:30.585>public

331
00:17:33.065 --> 00:17:34.525
<00:17:33.065>and <00:17:33.503>your <00:17:33.941>private <00:17:34.379>key.

332
00:17:35.705 --> 00:17:39.405
<00:17:35.705>The <00:17:35.860>good <00:17:36.016>thing <00:17:36.171>about <00:17:36.327>this <00:17:36.482>change <00:17:36.638>is <00:17:36.793>that <00:17:36.949>it <00:17:37.105>standardizes

333
00:17:39.405 --> 00:17:43.385
<00:17:39.405>because <00:17:39.685>now <00:17:39.965>you <00:17:40.245>have <00:17:40.524>consisted <00:17:40.805>handling

334
00:17:44.815 --> 00:17:46.995
<00:17:44.815>across <00:17:45.281>all <00:17:45.748>Java <00:17:46.215>applications

335
00:17:46.995 --> 00:17:49.525
<00:17:46.995>because <00:17:47.169>one <00:17:47.344>uses <00:17:47.520>this <00:17:47.695>library, <00:17:47.870>the <00:17:48.044>other <00:17:48.219>one <00:17:48.395>used

336
00:17:49.525 --> 00:17:52.085
<00:17:49.525>that <00:17:49.758>library <00:17:49.991>that <00:17:50.225>isn't <00:17:50.458>like <00:17:50.691>that <00:17:50.925>anymore.

337
00:17:52.905 --> 00:17:56.245
<00:17:52.905>Um, <00:17:53.138>which <00:17:53.371>gives <00:17:53.605>us <00:17:53.838>also <00:17:54.071>better <00:17:54.305>interoperability

338
00:17:57.825 --> 00:17:59.325
<00:17:57.825>And <00:17:58.500>more <00:17:59.175>security

339
00:17:59.325 --> 00:18:02.285
<00:17:59.325>because <00:17:59.525>you're <00:17:59.725>now <00:17:59.925>relying <00:18:00.125>on <00:18:00.325>the <00:18:00.525>standard <00:18:00.725>library

340
00:18:02.505 --> 00:18:04.685
<00:18:02.505>and <00:18:02.785>not <00:18:03.065>some <00:18:03.345>external <00:18:03.625>library <00:18:03.905>anymore.

341
00:18:07.225 --> 00:18:09.685
<00:18:07.225>And <00:18:07.399>as <00:18:07.574>it <00:18:07.750>is <00:18:07.925>part <00:18:08.100>of <00:18:08.274>the <00:18:08.449>standard <00:18:08.625>library,

342
00:18:09.985 --> 00:18:12.165
<00:18:09.985>it <00:18:10.264>can <00:18:10.544>be <00:18:10.824>optimized <00:18:11.104>way <00:18:11.385>easier

343
00:18:13.105 --> 00:18:15.805
<00:18:13.105>and <00:18:13.385>it <00:18:13.665>is <00:18:13.945>standard <00:18:14.225>in <00:18:14.505>Java.

344
00:18:15.985 --> 00:18:18.365
<00:18:15.985>You <00:18:16.185>don't <00:18:16.385>have <00:18:16.584>to <00:18:16.784>rely <00:18:16.985>on <00:18:17.185>new <00:18:17.385>version

345
00:18:18.505 --> 00:18:20.525
<00:18:18.505>of <00:18:19.205>extended <00:18:19.905>dependencies.

346
00:18:22.425 --> 00:18:26.965
<00:18:22.425>So <00:18:22.658>there's <00:18:22.891>the <00:18:23.125>key <00:18:23.358>derivative <00:18:23.591>derivation <00:18:23.825>function,

347
00:18:27.205 --> 00:18:31.605
<00:18:27.205>API, <00:18:27.379>this <00:18:27.554>has <00:18:27.730>to <00:18:27.905>do <00:18:28.080>with <00:18:28.254>an <00:18:28.429>API <00:18:28.605>for

348
00:18:32.555 --> 00:18:34.365
<00:18:32.555>cryptographic <00:18:33.955>algorithms

349
00:18:34.365 --> 00:18:36.365
<00:18:34.365>where <00:18:34.645>you <00:18:34.925>can <00:18:35.205>retrieve <00:18:35.485>additional <00:18:35.765>keys.

350
00:18:38.885 --> 00:18:42.005
<00:18:38.885>Chem <00:18:39.085>was <00:18:39.285>already <00:18:39.485>introduced <00:18:39.685>a <00:18:39.885>few <00:18:40.085>versions <00:18:40.285>ago

351
00:18:42.225 --> 00:18:44.245
<00:18:42.225>to <00:18:42.691>key <00:18:43.158>encapsulation <00:18:43.625>mechanism,

352
00:18:44.745 --> 00:18:47.485
<00:18:44.745>but <00:18:44.978>this <00:18:45.211>one <00:18:45.445>provides <00:18:45.678>now <00:18:45.911>an <00:18:46.145>API

353
00:18:49.055 --> 00:18:53.035
<00:18:49.055>and <00:18:49.210>basically <00:18:49.366>it <00:18:49.521>protects <00:18:49.677>our <00:18:49.832>data <00:18:49.988>better <00:18:50.143>for <00:18:50.299>the <00:18:50.455>future

354
00:18:53.465 --> 00:18:57.035
<00:18:53.465>because <00:18:53.698>right <00:18:53.931>now <00:18:54.165>your <00:18:54.398>data <00:18:54.631>may <00:18:54.865>be

355
00:18:57.035 --> 00:19:00.195
<00:18:57.035>because <00:18:57.235>it's <00:18:57.435>encrypted <00:18:57.635>can't <00:18:57.835>be <00:18:58.035>decrypted <00:18:58.235>so <00:18:58.435>easily,

356
00:19:00.655 --> 00:19:03.355
<00:19:00.655>but <00:19:00.830>once <00:19:01.004>we <00:19:01.180>enter <00:19:01.355>the <00:19:01.530>age <00:19:01.705>of <00:19:01.879>quantum <00:19:02.055>computing,

357
00:19:04.315 --> 00:19:07.635
<00:19:04.315>actually <00:19:04.470>it'll <00:19:04.626>be <00:19:04.781>a <00:19:04.937>no <00:19:05.092>brainer <00:19:05.248>to <00:19:05.403>decrypt <00:19:05.559>this <00:19:05.715>data.

358
00:19:10.785 --> 00:19:13.565
<00:19:10.785>So <00:19:10.985>your <00:19:11.185>data, <00:19:11.385>even <00:19:11.585>though <00:19:11.785>it's <00:19:11.985>now <00:19:12.185>safe,

359
00:19:13.655 --> 00:19:17.565
<00:19:13.655>might <00:19:13.795>the <00:19:13.935>same <00:19:14.075>data <00:19:14.215>might <00:19:14.355>be <00:19:14.495>listened <00:19:14.635>and <00:19:14.774>spied <00:19:14.915>and <00:19:15.055>and

360
00:19:17.565 --> 00:19:20.645
<00:19:17.565>and <00:19:17.705>registered <00:19:17.845>upon <00:19:17.985>and <00:19:18.125>it <00:19:18.265>can <00:19:18.405>be <00:19:18.545>used <00:19:18.685>in <00:19:18.825>the <00:19:18.965>future.

361
00:19:21.025 --> 00:19:24.485
<00:19:21.025>So <00:19:21.258>this <00:19:21.491>is <00:19:21.725>really <00:19:21.958>quite <00:19:22.191>a <00:19:22.425>thing.

362
00:19:24.925 --> 00:19:27.405
<00:19:24.925>I <00:19:25.065>actually, <00:19:25.205>and <00:19:25.345>I <00:19:25.485>I <00:19:25.625>I <00:19:25.764>think <00:19:25.905>he <00:19:26.044>was <00:19:26.185>right <00:19:26.325>there.

363
00:19:27.725 --> 00:19:32.165
<00:19:27.725>I <00:19:27.899>currently, <00:19:28.074>my <00:19:28.250>contractor <00:19:28.425>is <00:19:28.600>the <00:19:28.774>Dutch <00:19:28.949>tax <00:19:29.125>office

364
00:19:32.345 --> 00:19:35.165
<00:19:32.345>and <00:19:32.500>we <00:19:32.656>are <00:19:32.811>really <00:19:32.967>looking <00:19:33.122>into <00:19:33.278>this <00:19:33.433>problem <00:19:33.589>right <00:19:33.745>now

365
00:19:35.275 --> 00:19:37.965
<00:19:35.275>because <00:19:35.625>there's <00:19:35.975>very <00:19:36.325>sensitive <00:19:36.675>information

366
00:19:38.155 --> 00:19:41.845
<00:19:38.155>that <00:19:38.310>is <00:19:38.466>protected <00:19:38.621>right <00:19:38.777>now, <00:19:38.932>but <00:19:39.088>if <00:19:39.243>it <00:19:39.399>is <00:19:39.555>stored

367
00:19:42.065 --> 00:19:44.765
<00:19:42.065>and <00:19:42.345>somewhere <00:19:42.625>it'll <00:19:42.905>be <00:19:43.185>very <00:19:43.465>vulnerable

368
00:19:45.425 --> 00:19:46.805
<00:19:45.425>in <00:19:45.735>the <00:19:46.046>very <00:19:46.356>near <00:19:46.667>future.

369
00:19:47.265 --> 00:19:51.375
<00:19:47.265>And <00:19:47.545>chem <00:19:47.825>and <00:19:48.105>KDF <00:19:48.385>provide <00:19:48.665>algorithms

370
00:19:51.375 --> 00:19:55.095
<00:19:51.375>that <00:19:51.530>keeps <00:19:51.686>your <00:19:51.841>data <00:19:51.997>safe <00:19:52.152>even <00:19:52.308>in <00:19:52.463>the <00:19:52.619>quantum <00:19:52.775>age.

371
00:19:56.775 --> 00:20:00.345
<00:19:56.775>Well <00:19:56.930>the <00:19:57.086>final <00:19:57.241>part <00:19:57.397>is <00:19:57.552>the <00:19:57.708>JVM <00:19:57.863>and <00:19:58.019>the <00:19:58.175>tooling.

372
00:20:01.485 --> 00:20:05.505
<00:20:01.485>So <00:20:01.718>ahead <00:20:01.951>of <00:20:02.185>time <00:20:02.418>command <00:20:02.651>line <00:20:02.885>economics.

373
00:20:05.725 --> 00:20:07.425
<00:20:05.725>Who <00:20:06.004>has <00:20:06.284>heard <00:20:06.564>of <00:20:06.844>Project <00:20:07.125>Leiden?

374
00:20:09.445 --> 00:20:11.065
<00:20:09.445>Oh <00:20:09.678>I <00:20:09.911>see <00:20:10.145>one <00:20:10.378>hand <00:20:10.611>up <00:20:10.845>there.

375
00:20:11.235 --> 00:20:12.585
<00:20:11.235>There <00:20:11.437>should <00:20:11.639>be <00:20:11.842>one <00:20:12.045>hand <00:20:12.247>up <00:20:12.450>there.

376
00:20:13.125 --> 00:20:15.345
<00:20:13.125>Um, <00:20:13.405>project <00:20:13.685>Leiden <00:20:13.965>was <00:20:14.245>actually <00:20:14.525>made,

377
00:20:15.505 --> 00:20:17.105
<00:20:15.505>I <00:20:15.738>guess <00:20:15.971>we <00:20:16.205>all <00:20:16.438>know <00:20:16.671>gr <00:20:16.905>right?

378
00:20:18.555 --> 00:20:22.065
<00:20:18.555>Right <00:20:18.730>now <00:20:18.905>see <00:20:19.080>nuts <00:20:19.255>we <00:20:19.430>are <00:20:19.605>compiling <00:20:19.780>Java <00:20:19.955>to

379
00:20:22.575 --> 00:20:27.495
<00:20:22.575>yeah <00:20:22.775>native <00:20:22.975>images <00:20:23.175>so <00:20:23.375>to <00:20:23.575>to <00:20:23.775>really <00:20:23.975>uh,

380
00:20:27.495 --> 00:20:28.815
<00:20:27.495>instructions, <00:20:28.683>but

381
00:20:28.965 --> 00:20:32.775
<00:20:28.965>that <00:20:29.139>goes <00:20:29.314>against <00:20:29.490>our <00:20:29.665>right <00:20:29.840>ones <00:20:30.014>run <00:20:30.189>anywhere <00:20:30.365>applica

382
00:20:33.325 --> 00:20:34.375
<00:20:33.325>idea <00:20:33.797>of <00:20:34.270>Java.

383
00:20:34.755 --> 00:20:39.415
<00:20:34.755>So <00:20:35.035>Project <00:20:35.315>Lighten <00:20:35.595>was <00:20:35.875>set <00:20:36.155>up

384
00:20:39.595 --> 00:20:43.935
<00:20:39.595>to <00:20:39.750>actually <00:20:39.906>improve <00:20:40.061>how <00:20:40.217>the <00:20:40.372>startup <00:20:40.528>times <00:20:40.683>of <00:20:40.839>the <00:20:40.995>JVM

385
00:20:43.995 --> 00:20:46.695
<00:20:43.995>and <00:20:44.228>the <00:20:44.461>memory <00:20:44.695>runtime <00:20:44.928>of <00:20:45.161>the <00:20:45.395>JVM.

386
00:20:47.065 --> 00:20:49.125
<00:20:47.065>So <00:20:47.298>one <00:20:47.531>of <00:20:47.765>the <00:20:47.998>first <00:20:48.231>times, <00:20:48.465>one

387
00:20:49.125 --> 00:20:51.565
<00:20:49.125>of <00:20:49.300>the <00:20:49.475>first <00:20:49.650>things <00:20:49.825>delivered <00:20:50.000>in <00:20:50.175>the <00:20:50.350>previous <00:20:50.525>release

388
00:20:53.385 --> 00:20:55.405
<00:20:53.385>was <00:20:53.851>improved <00:20:54.318>startup <00:20:54.785>time.

389
00:20:56.475 --> 00:20:58.175
<00:20:56.475>Now <00:20:56.824>how <00:20:57.175>was <00:20:57.524>this <00:20:57.875>achieved?

390
00:20:58.605 --> 00:21:02.935
<00:20:58.605>Basically, <00:20:58.780>well <00:20:58.955>imagine <00:20:59.130>you're <00:20:59.305>waking <00:20:59.480>up <00:20:59.655>in <00:20:59.830>the <00:21:00.005>morning,

391
00:21:03.475 --> 00:21:06.535
<00:21:03.475>you <00:21:03.602>take <00:21:03.729>a <00:21:03.856>shower, <00:21:03.984>you <00:21:04.111>drink <00:21:04.238>a <00:21:04.365>coffee, <00:21:04.493>you <00:21:04.620>go <00:21:04.747>to <00:21:04.875>work

392
00:21:07.075 --> 00:21:10.375
<00:21:07.075>and <00:21:07.250>then <00:21:07.425>you <00:21:07.600>sit <00:21:07.775>at <00:21:07.950>your <00:21:08.125>desk <00:21:08.300>right <00:21:08.475>now

393
00:21:10.405 --> 00:21:12.855
<00:21:10.405>what <00:21:10.580>if <00:21:10.754>you <00:21:10.930>could <00:21:11.105>just <00:21:11.280>say, <00:21:11.455>well <00:21:11.629>I'm <00:21:11.805>snapping

394
00:21:12.855 --> 00:21:14.815
<00:21:12.855>and <00:21:13.030>I'm <00:21:13.205>sitting <00:21:13.380>at <00:21:13.555>my <00:21:13.730>desk <00:21:13.905>from <00:21:14.080>getting <00:21:14.255>up.

395
00:21:15.005 --> 00:21:16.615
<00:21:15.005>This <00:21:15.285>is <00:21:15.565>basically <00:21:15.845>what <00:21:16.125>this <00:21:16.405>was.

396
00:21:17.555 --> 00:21:20.535
<00:21:17.555>You <00:21:17.710>can <00:21:17.866>do <00:21:18.021>a <00:21:18.177>training <00:21:18.332>run, <00:21:18.488>look <00:21:18.643>at <00:21:18.799>the <00:21:18.955>application,

397
00:21:20.745 --> 00:21:22.575
<00:21:20.745>which <00:21:21.211>classes <00:21:21.678>are <00:21:22.145>started

398
00:21:25.035 --> 00:21:28.895
<00:21:25.035>and <00:21:25.190>then <00:21:25.346>say <00:21:25.501>I'll <00:21:25.657>take <00:21:25.812>a <00:21:25.968>snapshot <00:21:26.123>of <00:21:26.279>that <00:21:26.435>information.

399
00:21:29.315 --> 00:21:30.695
<00:21:29.315>So <00:21:29.563>this <00:21:29.811>is <00:21:30.060>what's <00:21:30.308>happening <00:21:30.557>here

400
00:21:30.695 --> 00:21:34.215
<00:21:30.695>because <00:21:30.850>ahead <00:21:31.006>of <00:21:31.161>time <00:21:31.317>it <00:21:31.472>builds <00:21:31.628>on <00:21:31.783>this <00:21:31.939>yap <00:21:32.095>ahead

401
00:21:34.215 --> 00:21:36.055
<00:21:34.215>of <00:21:34.495>time <00:21:34.774>class <00:21:35.054>loading <00:21:35.334>and <00:21:35.615>linking.

402
00:21:36.885 --> 00:21:40.375
<00:21:36.885>When <00:21:37.040>your <00:21:37.196>application <00:21:37.351>startups <00:21:37.507>need <00:21:37.662>to <00:21:37.818>scan <00:21:37.973>all <00:21:38.129>these <00:21:38.285>jars

403
00:21:40.375 --> 00:21:41.815
<00:21:40.375>and <00:21:40.634>there's <00:21:40.893>all <00:21:41.152>classes <00:21:41.411>in <00:21:41.671>there

404
00:21:41.815 --> 00:21:45.615
<00:21:41.815>and <00:21:41.942>they <00:21:42.069>have <00:21:42.196>annotations <00:21:42.324>that <00:21:42.451>we <00:21:42.578>need <00:21:42.705>to <00:21:42.833>do <00:21:42.960>even <00:21:43.087>more <00:21:43.215>so,

405
00:21:45.835 --> 00:21:48.615
<00:21:45.835>but <00:21:45.975>what <00:21:46.115>if <00:21:46.255>we <00:21:46.395>could <00:21:46.535>just <00:21:46.675>load <00:21:46.815>that <00:21:46.955>data <00:21:47.095>already <00:21:47.235>upfront

406
00:21:48.795 --> 00:21:50.175
<00:21:48.795>and <00:21:49.043>store <00:21:49.291>it <00:21:49.540>in <00:21:49.788>a <00:21:50.037>cache?

407
00:21:50.475 --> 00:21:53.855
<00:21:50.475>So <00:21:50.630>all <00:21:50.786>these <00:21:50.941>steps, <00:21:51.097>loading <00:21:51.252>class <00:21:51.408>data, <00:21:51.563>verifying <00:21:51.719>by <00:21:51.875>code,

408
00:21:54.095 --> 00:21:55.415
<00:21:54.095>resolving <00:21:54.689>symbolic <00:21:55.283>references

409
00:21:56.635 --> 00:21:59.655
<00:21:56.635>and <00:21:57.101>instantiating <00:21:57.568>lambda <00:21:58.035>expressions.

410
00:22:01.275 --> 00:22:03.655
<00:22:01.275>If <00:22:01.430>we <00:22:01.586>could <00:22:01.741>just <00:22:01.897>say, <00:22:02.052>okay, <00:22:02.208>this <00:22:02.363>is <00:22:02.519>the <00:22:02.675>state

411
00:22:03.655 --> 00:22:07.065
<00:22:03.655>of <00:22:03.830>our <00:22:04.004>application <00:22:04.180>now <00:22:04.355>store <00:22:04.530>it <00:22:04.705>in <00:22:04.879>a <00:22:05.055>cache

412
00:22:07.365 --> 00:22:10.065
<00:22:07.365>and <00:22:07.540>the <00:22:07.715>next <00:22:07.890>time <00:22:08.065>I'm <00:22:08.240>starting <00:22:08.415>my <00:22:08.590>Java <00:22:08.765>application,

413
00:22:10.725 --> 00:22:13.225
<00:22:10.725>I'm <00:22:10.925>just <00:22:11.125>telling <00:22:11.324>it <00:22:11.524>start <00:22:11.725>from <00:22:11.925>this <00:22:12.125>point.

414
00:22:13.405 --> 00:22:16.425
<00:22:13.405>So <00:22:13.532>already <00:22:13.659>has <00:22:13.786>done <00:22:13.914>all <00:22:14.041>these <00:22:14.168>steps <00:22:14.295>that <00:22:14.423>we <00:22:14.550>talk <00:22:14.677>about <00:22:14.805>here.

415
00:22:17.725 --> 00:22:20.385
<00:22:17.725>Now <00:22:17.865>normally <00:22:18.004>we <00:22:18.145>would <00:22:18.284>do <00:22:18.425>something <00:22:18.564>like <00:22:18.705>this <00:22:18.844>where <00:22:18.985>we <00:22:19.125>say,

416
00:22:20.615 --> 00:22:23.785
<00:22:20.615>well <00:22:20.815>we <00:22:21.015>are <00:22:21.215>starting <00:22:21.415>with <00:22:21.615>a <00:22:21.815>training <00:22:22.015>mode,

417
00:22:23.785 --> 00:22:25.905
<00:22:23.785>which <00:22:23.985>here <00:22:24.185>is <00:22:24.385>called <00:22:24.585>a <00:22:24.785>OT <00:22:24.985>mode <00:22:25.185>records.

418
00:22:27.655 --> 00:22:29.985
<00:22:27.655>Then <00:22:27.830>the <00:22:28.004>second <00:22:28.180>step <00:22:28.355>would <00:22:28.530>be <00:22:28.705>that <00:22:28.879>you <00:22:29.055>have

419
00:22:29.985 --> 00:22:33.425
<00:22:29.985>to <00:22:30.159>run <00:22:30.334>the <00:22:30.510>application <00:22:30.685>again <00:22:30.860>with <00:22:31.034>the <00:22:31.209>create <00:22:31.385>parameter

420
00:22:35.885 --> 00:22:39.545
<00:22:35.885>and <00:22:36.040>then <00:22:36.196>the, <00:22:36.351>when <00:22:36.507>you <00:22:36.662>finally <00:22:36.818>run <00:22:36.973>your <00:22:37.129>application <00:22:37.285>in

421
00:22:39.545 --> 00:22:41.785
<00:22:39.545>production <00:22:40.011>you're <00:22:40.478>specifying, <00:22:40.945>oh

422
00:22:41.785 --> 00:22:43.945
<00:22:41.785>by <00:22:41.960>the <00:22:42.135>way <00:22:42.310>I <00:22:42.485>have <00:22:42.660>this <00:22:42.835>A <00:22:43.010>OT <00:22:43.185>cache.

423
00:22:44.085 --> 00:22:45.465
<00:22:44.085>Please <00:22:44.499>start <00:22:44.913>from <00:22:45.327>there.

424
00:22:45.885 --> 00:22:48.385
<00:22:45.885>So <00:22:46.012>the <00:22:46.139>system <00:22:46.266>will <00:22:46.394>actually <00:22:46.521>check <00:22:46.648>and <00:22:46.775>say <00:22:46.903>oh <00:22:47.030>it <00:22:47.157>is <00:22:47.285>there

425
00:22:48.605 --> 00:22:51.025
<00:22:48.605>and <00:22:48.955>it's <00:22:49.305>already <00:22:49.655>initialized <00:22:50.005>JVM.

426
00:22:51.285 --> 00:22:53.625
<00:22:51.285>So <00:22:51.565>this <00:22:51.845>really <00:22:52.125>improves <00:22:52.405>startup <00:22:52.685>time.

427
00:22:55.595 --> 00:22:59.895
<00:22:55.595>Now <00:22:55.750>this <00:22:55.906>change <00:22:56.061>was <00:22:56.217>all <00:22:56.372>about <00:22:56.528>actually <00:22:56.683>ahead <00:22:56.839>of <00:22:56.995>time

428
00:23:00.855 --> 00:23:02.935
<00:23:00.855>ergonomics <00:23:01.055>where <00:23:01.255>you <00:23:01.455>can <00:23:01.655>skip <00:23:01.855>the <00:23:02.055>second <00:23:02.255>stage.

429
00:23:02.955 --> 00:23:05.135
<00:23:02.955>You <00:23:03.155>now <00:23:03.355>you <00:23:03.554>basically <00:23:03.754>have <00:23:03.955>your <00:23:04.155>training <00:23:04.355>run

430
00:23:05.195 --> 00:23:08.935
<00:23:05.195>and <00:23:05.395>your <00:23:05.595>production <00:23:05.794>run <00:23:05.995>well <00:23:06.195>there's <00:23:06.395>also <00:23:06.595>the,

431
00:23:09.285 --> 00:23:13.655
<00:23:09.285>this <00:23:09.440>was <00:23:09.596>startup <00:23:09.751>time, <00:23:09.907>then <00:23:10.062>there's <00:23:10.218>also <00:23:10.373>the <00:23:10.529>warmup <00:23:10.685>time.

432
00:23:13.655 --> 00:23:15.415
<00:23:13.655>And <00:23:13.855>the <00:23:14.055>warmup <00:23:14.254>time <00:23:14.455>is <00:23:14.655>when <00:23:14.855>you're <00:23:15.055>ready

433
00:23:15.535 --> 00:23:17.615
<00:23:15.535>to <00:23:15.768>execute <00:23:16.001>your <00:23:16.235>first <00:23:16.468>piece <00:23:16.701>of <00:23:16.935>Java.

434
00:23:17.755 --> 00:23:21.975
<00:23:17.755>So <00:23:17.988>everything <00:23:18.221>is <00:23:18.455>initialized <00:23:18.688>until <00:23:18.921>the <00:23:19.155>JVM

435
00:23:22.955 --> 00:23:24.455
<00:23:22.955>is <00:23:23.629>completely <00:23:24.304>optimized

436
00:23:24.455 --> 00:23:26.455
<00:23:24.455>because <00:23:24.735>it <00:23:25.014>keeps <00:23:25.294>optimizing <00:23:25.574>your <00:23:25.855>code

437
00:23:26.455 --> 00:23:27.615
<00:23:26.455>because <00:23:26.803>it <00:23:27.151>learns, <00:23:27.499>right?

438
00:23:27.835 --> 00:23:30.135
<00:23:27.835>So <00:23:28.035>basically <00:23:28.235>what <00:23:28.435>it <00:23:28.635>does, <00:23:28.835>it <00:23:29.035>says <00:23:29.235>okay,

439
00:23:30.695 --> 00:23:32.455
<00:23:30.695>I <00:23:30.975>wanna <00:23:31.254>reduce <00:23:31.534>the <00:23:31.814>bottom <00:23:32.095>uptime

440
00:23:32.455 --> 00:23:36.015
<00:23:32.455>because <00:23:32.595>it <00:23:32.735>looks <00:23:32.875>to <00:23:33.014>find <00:23:33.155>these <00:23:33.294>set <00:23:33.435>of <00:23:33.574>hot <00:23:33.715>methods, <00:23:33.855>methods

441
00:23:36.245 --> 00:23:37.695
<00:23:36.245>that <00:23:36.571>I <00:23:36.897>execute <00:23:37.223>very <00:23:37.550>often.

442
00:23:37.915 --> 00:23:41.535
<00:23:37.915>So <00:23:38.090>they <00:23:38.264>are <00:23:38.440>being <00:23:38.615>eagerly <00:23:38.790>compiled <00:23:38.965>into <00:23:39.139>machine <00:23:39.315>code.

443
00:23:43.515 --> 00:23:45.605
<00:23:43.515>And <00:23:43.748>this <00:23:43.981>is <00:23:44.215>basically <00:23:44.448>the <00:23:44.681>same <00:23:44.915>idea.

444
00:23:46.025 --> 00:23:49.485
<00:23:46.025>You <00:23:46.225>collect <00:23:46.425>this <00:23:46.625>information <00:23:46.825>during <00:23:47.025>a <00:23:47.225>training <00:23:47.425>run,

445
00:23:49.515 --> 00:23:51.605
<00:23:49.515>five <00:23:49.670>minutes, <00:23:49.826>we're <00:23:49.981>gonna <00:23:50.137>be <00:23:50.292>so <00:23:50.448>much <00:23:50.603>in <00:23:50.759>time <00:23:50.915>trouble

446
00:23:52.345 --> 00:23:55.645
<00:23:52.345>and <00:23:52.485>then <00:23:52.625>we'll <00:23:52.765>say <00:23:52.905>with <00:23:53.045>the <00:23:53.185>same <00:23:53.325>argument <00:23:53.465>you <00:23:53.605>can <00:23:53.745>say,

447
00:23:55.815 --> 00:23:56.885
<00:23:55.815>let's <00:23:56.136>just <00:23:56.457>start <00:23:56.778>here.

448
00:23:59.105 --> 00:24:02.445
<00:23:59.105>And <00:23:59.280>then <00:23:59.455>you <00:23:59.630>not <00:23:59.805>only <00:23:59.980>have <00:24:00.155>a <00:24:00.330>good <00:24:00.505>start

449
00:24:02.545 --> 00:24:04.005
<00:24:02.545>but <00:24:02.807>also <00:24:03.070>a <00:24:03.333>good <00:24:03.596>warm <00:24:03.859>up.

450
00:24:04.005 --> 00:24:05.965
<00:24:04.005>So <00:24:04.285>education, <00:24:04.565>your <00:24:04.845>application <00:24:05.125>is <00:24:05.405>there

451
00:24:05.965 --> 00:24:07.245
<00:24:05.965>to <00:24:06.349>perform <00:24:06.733>right <00:24:07.117>away.

452
00:24:07.595 --> 00:24:08.885
<00:24:07.595>Compact <00:24:08.175>object <00:24:08.756>headers.

453
00:24:09.075 --> 00:24:12.725
<00:24:09.075>Well <00:24:09.275>as <00:24:09.475>we <00:24:09.675>all <00:24:09.875>know, <00:24:10.075>Java <00:24:10.275>stores <00:24:10.475>objects

454
00:24:12.725 --> 00:24:15.805
<00:24:12.725>and <00:24:12.865>in <00:24:13.004>the <00:24:13.145>heap <00:24:13.284>there's <00:24:13.425>a <00:24:13.564>little <00:24:13.705>metadata <00:24:13.844>for <00:24:13.985>every <00:24:14.125>object

455
00:24:16.025 --> 00:24:17.365
<00:24:16.025>and <00:24:16.266>that <00:24:16.507>can <00:24:16.748>be <00:24:16.989>between <00:24:17.231>12

456
00:24:17.385 --> 00:24:20.645
<00:24:17.385>and <00:24:17.585>60 <00:24:17.785>by <00:24:17.985>depending <00:24:18.185>on <00:24:18.385>JVM <00:24:18.585>conquer <00:24:18.785>configurations.

457
00:24:21.265 --> 00:24:24.965
<00:24:21.265>But <00:24:21.392>the <00:24:21.519>average <00:24:21.646>object <00:24:21.774>size <00:24:21.901>in <00:24:22.028>Java <00:24:22.155>as <00:24:22.283>it <00:24:22.410>was <00:24:22.537>examined <00:24:22.665>is

458
00:24:24.965 --> 00:24:27.285
<00:24:24.965>around <00:24:25.314>32 <00:24:25.665>to <00:24:26.014>64 <00:24:26.365>bytes.

459
00:24:27.395 --> 00:24:30.685
<00:24:27.395>That <00:24:27.535>means <00:24:27.675>this <00:24:27.815>is <00:24:27.955>quite <00:24:28.095>an <00:24:28.235>overhead <00:24:28.375>that <00:24:28.514>we're <00:24:28.655>having <00:24:28.795>here.

460
00:24:31.915 --> 00:24:35.525
<00:24:31.915>Compact <00:24:32.090>object <00:24:32.264>headers <00:24:32.440>actually <00:24:32.615>reduce <00:24:32.790>your <00:24:32.965>header <00:24:33.139>size <00:24:33.315>from

461
00:24:35.525 --> 00:24:36.805
<00:24:35.525>12 <00:24:35.909>to <00:24:36.293>eight <00:24:36.677>bytes.

462
00:24:37.185 --> 00:24:38.725
<00:24:37.185>So <00:24:37.878>in <00:24:38.571>general

463
00:24:39.905 --> 00:24:43.205
<00:24:39.905>it <00:24:40.105>has <00:24:40.305>seen <00:24:40.504>a <00:24:40.705>20% <00:24:40.905>less <00:24:41.105>memory <00:24:41.305>consumption

464
00:24:43.585 --> 00:24:46.805
<00:24:43.585>and <00:24:43.865>eight <00:24:44.145>8% <00:24:44.425>less <00:24:44.705>garbage <00:24:44.985>collection

465
00:24:46.875 --> 00:24:51.245
<00:24:46.875>because <00:24:47.155>there <00:24:47.435>is <00:24:47.715>more <00:24:47.995>condensed <00:24:48.275>memory,

466
00:24:52.665 --> 00:24:55.605
<00:24:52.665>you <00:24:52.805>still <00:24:52.945>have <00:24:53.085>to <00:24:53.225>activate <00:24:53.365>it <00:24:53.504>via <00:24:53.645>this <00:24:53.784>command <00:24:53.925>line <00:24:54.065>option,

467
00:24:55.825 --> 00:25:00.525
<00:24:55.825>but <00:24:56.000>really <00:24:56.175>you <00:24:56.350>could <00:24:56.525>easily <00:24:56.700>get <00:24:56.875>20% <00:24:57.050>extra <00:24:57.225>memory

468
00:25:01.415 --> 00:25:02.745
<00:25:01.415>just <00:25:01.714>by <00:25:02.013>using <00:25:02.312>this <00:25:02.611>option.

469
00:25:02.805 --> 00:25:04.945
<00:25:02.805>So <00:25:03.005>that's <00:25:03.205>a <00:25:03.405>very <00:25:03.605>interesting <00:25:03.805>thing <00:25:04.005>to <00:25:04.205>use.

470
00:25:06.625 --> 00:25:09.435
<00:25:06.625>Well <00:25:06.905>there's <00:25:07.185>the <00:25:07.465>Java <00:25:07.745>flight <00:25:08.025>record,

471
00:25:09.455 --> 00:25:12.835
<00:25:09.455>the <00:25:09.582>CPU <00:25:09.709>profiling <00:25:09.836>time <00:25:09.964>looking <00:25:10.091>at <00:25:10.218>the <00:25:10.345>time <00:25:10.473>we <00:25:10.600>are <00:25:10.727>not <00:25:10.855>gonna

472
00:25:12.835 --> 00:25:16.835
<00:25:12.835>dig <00:25:12.962>into <00:25:13.089>it <00:25:13.216>but <00:25:13.344>basically <00:25:13.471>right <00:25:13.598>now <00:25:13.725>it <00:25:13.853>only <00:25:13.980>works <00:25:14.107>on <00:25:14.235>linears

473
00:25:17.015 --> 00:25:19.475
<00:25:17.015>and <00:25:17.248>it <00:25:17.481>exports <00:25:17.715>a <00:25:17.948>new <00:25:18.181>event, <00:25:18.415>right?

474
00:25:19.495 --> 00:25:21.955
<00:25:19.495>The <00:25:19.774>Java <00:25:20.054>flight <00:25:20.334>recorder <00:25:20.614>allows <00:25:20.895>you

475
00:25:22.575 --> 00:25:25.955
<00:25:22.575>to <00:25:22.750>have <00:25:22.925>events <00:25:23.100>emitted <00:25:23.275>while <00:25:23.450>your <00:25:23.625>application <00:25:23.800>is <00:25:23.975>running

476
00:25:26.055 --> 00:25:28.355
<00:25:26.055>and <00:25:26.255>you <00:25:26.455>can <00:25:26.655>actually <00:25:26.855>act <00:25:27.055>on <00:25:27.255>these <00:25:27.455>events.

477
00:25:29.535 --> 00:25:31.755
<00:25:29.535>So <00:25:29.885>a <00:25:30.235>lot <00:25:30.585>of <00:25:30.935>stuff.

478
00:25:31.945 --> 00:25:33.915
<00:25:31.945>Then <00:25:32.225>there's <00:25:32.504>also <00:25:32.784>the <00:25:33.064>cooperative <00:25:33.345>sampling,

479
00:25:34.215 --> 00:25:35.955
<00:25:34.215>the <00:25:34.564>same <00:25:34.915>Java <00:25:35.264>flight <00:25:35.615>recorder.

480
00:25:36.535 --> 00:25:38.795
<00:25:36.535>It <00:25:36.735>can <00:25:36.935>look <00:25:37.135>at <00:25:37.335>certain <00:25:37.535>pieces <00:25:37.735>of <00:25:37.935>code

481
00:25:39.295 --> 00:25:42.235
<00:25:39.295>but <00:25:39.995>it <00:25:40.695>does

482
00:25:42.575 --> 00:25:44.715
<00:25:42.575>before <00:25:42.808>it <00:25:43.041>only <00:25:43.275>dated <00:25:43.508>at <00:25:43.741>safe <00:25:43.975>points.

483
00:25:44.775 --> 00:25:46.555
<00:25:44.775>And <00:25:45.055>now <00:25:45.335>this <00:25:45.615>is <00:25:45.895>cooperative <00:25:46.175>work,

484
00:25:46.765 --> 00:25:49.835
<00:25:46.765>which <00:25:46.940>means <00:25:47.115>it <00:25:47.290>is <00:25:47.465>no <00:25:47.640>longer <00:25:47.815>safe <00:25:47.990>point <00:25:48.165>biased.

485
00:25:50.745 --> 00:25:51.795
<00:25:50.745>Just <00:25:50.981>gonna <00:25:51.217>skip <00:25:51.453>through <00:25:51.690>it

486
00:25:51.795 --> 00:25:54.635
<00:25:51.795>because <00:25:51.995>there's <00:25:52.195>a <00:25:52.395>few <00:25:52.595>more <00:25:52.795>interesting <00:25:52.995>points <00:25:53.195>coming.

487
00:25:55.315 --> 00:25:57.515
<00:25:55.315>Generational <00:25:56.715>Shenandoah.

488
00:25:57.815 --> 00:26:01.075
<00:25:57.815>So <00:25:58.095>this <00:25:58.375>is <00:25:58.655>another <00:25:58.935>garbage <00:25:59.215>collector

489
00:26:01.455 --> 00:26:03.955
<00:26:01.455>and <00:26:01.655>it <00:26:01.855>is <00:26:02.054>based <00:26:02.254>on <00:26:02.455>a <00:26:02.655>weak <00:26:02.855>hypothesis.

490
00:26:03.955 --> 00:26:07.395
<00:26:03.955>Gener <00:26:04.421>weak <00:26:04.888>generational <00:26:05.355>hypothesis,

491
00:26:07.485 --> 00:26:09.435
<00:26:07.485>which <00:26:07.718>just <00:26:07.951>means <00:26:08.185>we <00:26:08.418>have <00:26:08.651>two <00:26:08.885>structures.

492
00:26:09.455 --> 00:26:12.835
<00:26:09.455>We <00:26:09.595>have <00:26:09.735>a <00:26:09.875>young <00:26:10.014>generation <00:26:10.155>and <00:26:10.294>we <00:26:10.435>have <00:26:10.574>an <00:26:10.715>old <00:26:10.855>generation

493
00:26:13.295 --> 00:26:18.275
<00:26:13.295>and <00:26:13.450>in <00:26:13.606>general <00:26:13.761>it <00:26:13.917>is <00:26:14.072>seen <00:26:14.228>that <00:26:14.383>objects <00:26:14.539>die <00:26:14.695>young.

494
00:26:18.615 --> 00:26:22.485
<00:26:18.615>So <00:26:18.848>objects <00:26:19.081>start <00:26:19.315>in <00:26:19.548>a <00:26:19.781>young <00:26:20.015>generation

495
00:26:22.485 --> 00:26:24.525
<00:26:22.485>and <00:26:22.718>if <00:26:22.951>they <00:26:23.185>received <00:26:23.418>a <00:26:23.651>certain <00:26:23.885>round

496
00:26:24.865 --> 00:26:27.685
<00:26:24.865>of <00:26:25.065>garbage <00:26:25.265>collection <00:26:25.465>cycles, <00:26:25.665>then <00:26:25.865>they're <00:26:26.065>being <00:26:26.265>moved

497
00:26:27.985 --> 00:26:29.045
<00:26:27.985>to <00:26:28.303>the <00:26:28.621>old <00:26:28.939>generation.

498
00:26:29.705 --> 00:26:31.925
<00:26:29.705>Now <00:26:29.985>if <00:26:30.264>you <00:26:30.544>are <00:26:30.824>very <00:26:31.105>actively,

499
00:26:31.945 --> 00:26:33.805
<00:26:31.945>and <00:26:32.178>this <00:26:32.411>is <00:26:32.645>what <00:26:32.878>Shenandoah <00:26:33.111>here <00:26:33.345>does,

500
00:26:34.315 --> 00:26:37.805
<00:26:34.315>scan <00:26:34.455>this <00:26:34.595>young <00:26:34.735>generation, <00:26:34.875>you <00:26:35.015>can <00:26:35.155>actually <00:26:35.295>win <00:26:35.435>back <00:26:35.575>a <00:26:35.715>lot

501
00:26:37.805 --> 00:26:39.725
<00:26:37.805>of <00:26:38.155>memory <00:26:38.505>with <00:26:38.855>less <00:26:39.205>effort.

502
00:26:40.265 --> 00:26:43.405
<00:26:40.265>So <00:26:40.465>the <00:26:40.665>zero <00:26:40.865>garbage <00:26:41.065>collector <00:26:41.265>already <00:26:41.465>had <00:26:41.665>that

503
00:26:43.425 --> 00:26:46.805
<00:26:43.425>and <00:26:43.541>now <00:26:43.658>she <00:26:43.774>DOA <00:26:43.891>has <00:26:44.008>the <00:26:44.125>same <00:26:44.241>if, <00:26:44.358>if <00:26:44.475>you <00:26:44.591>use <00:26:44.708>these <00:26:44.825>options

504
00:26:47.635 --> 00:26:50.645
<00:26:47.635>then <00:26:47.915>um, <00:26:48.195>you <00:26:48.475>can <00:26:48.754>activate <00:26:49.035>it.

505
00:26:51.265 --> 00:26:55.005
<00:26:51.265>And <00:26:51.440>again <00:26:51.615>these <00:26:51.790>are <00:26:51.965>very, <00:26:52.140>very <00:26:52.315>interesting <00:26:52.490>parts, <00:26:52.665>uh,

506
00:26:55.385 --> 00:26:56.645
<00:26:55.385>to <00:26:55.611>look <00:26:55.838>at <00:26:56.065>in <00:26:56.292>the <00:26:56.519>language

507
00:26:56.755 --> 00:26:59.205
<00:26:56.755>because <00:26:56.955>they <00:26:57.155>can <00:26:57.355>optimize <00:26:57.555>a <00:26:57.755>lot <00:26:57.955>of <00:26:58.155>things

508
00:27:00.395 --> 00:27:02.645
<00:27:00.395>more <00:27:00.628>than <00:27:00.861>we <00:27:01.095>can <00:27:01.328>optimize <00:27:01.561>our <00:27:01.795>code.

509
00:27:03.515 --> 00:27:06.405
<00:27:03.515>This <00:27:03.642>one, <00:27:03.769>Jeb <00:27:03.896>5 <00:27:04.024>0 <00:27:04.151>3, <00:27:04.278>I <00:27:04.405>believe <00:27:04.533>it's <00:27:04.660>the <00:27:04.787>final <00:27:04.915>one.

510
00:27:06.545 --> 00:27:10.085
<00:27:06.545>It <00:27:06.745>just <00:27:06.945>basically <00:27:07.145>said <00:27:07.345>the <00:27:07.545>32 <00:27:07.745>bit <00:27:07.945>86

511
00:27:10.795 --> 00:27:12.125
<00:27:10.795>port <00:27:11.194>has <00:27:11.593>been <00:27:11.992>removed.

512
00:27:13.245 --> 00:27:14.765
<00:27:13.245>I <00:27:13.473>guess <00:27:13.701>we <00:27:13.929>weren't <00:27:14.157>using <00:27:14.385>that <00:27:14.613>anymore.

513
00:27:14.825 --> 00:27:16.125
<00:27:14.825>And <00:27:15.117>if <00:27:15.410>you <00:27:15.702>were, <00:27:15.995>well,

514
00:27:16.205 --> 00:27:18.245
<00:27:16.205>I <00:27:16.438>guess <00:27:16.671>your <00:27:16.905>software <00:27:17.138>really <00:27:17.371>needs <00:27:17.605>replacing

515
00:27:18.465 --> 00:27:20.285
<00:27:18.465>and <00:27:18.698>it's <00:27:18.931>really <00:27:19.165>good <00:27:19.398>it's <00:27:19.631>being <00:27:19.865>replaced

516
00:27:20.285 --> 00:27:23.565
<00:27:20.285>because <00:27:20.460>that <00:27:20.635>means <00:27:20.810>that <00:27:20.985>new <00:27:21.160>stuff <00:27:21.335>that <00:27:21.510>comes <00:27:21.685>in,

517
00:27:23.565 --> 00:27:26.365
<00:27:23.565>like <00:27:23.720>virtual <00:27:23.876>threats <00:27:24.031>and <00:27:24.187>stuff <00:27:24.342>doesn't <00:27:24.498>need <00:27:24.653>to <00:27:24.809>backport <00:27:24.965>it,

518
00:27:26.675 --> 00:27:30.125
<00:27:26.675>leaving <00:27:26.908>more <00:27:27.141>time <00:27:27.375>for <00:27:27.608>the <00:27:27.841>Oracle <00:27:28.075>developers

519
00:27:30.265 --> 00:27:34.295
<00:27:30.265>to <00:27:30.545>work <00:27:30.825>on <00:27:31.105>new <00:27:31.385>features, <00:27:31.665>right?

520
00:27:34.525 --> 00:27:36.015
<00:27:34.525>That <00:27:34.860>was <00:27:35.195>it <00:27:35.530>for <00:27:35.866>me.