File size: 38,359 Bytes
07c2d26 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 | 1
00:00:06,000 --> 00:00:11,000
Hello, distance in Prius lesson, we have learned what modules are in decay?
2
00:00:11,000 --> 00:00:14,000
We also created our first modular application.
3
00:00:14,000 --> 00:00:21,000
In case you skipped the previous lesson, please make sure you watched it because in this lesson, we'll
4
00:00:21,000 --> 00:00:23,000
keep talking about modules.
5
00:00:24,000 --> 00:00:28,000
But this time will not create our module application from scratch.
6
00:00:28,000 --> 00:00:35,000
But instead, we'll focus our attention on the questions of migration of Nano Modular Java application
7
00:00:35,000 --> 00:00:37,000
to modular Java application.
8
00:00:37,000 --> 00:00:44,000
Also, this lesson will be interesting for architects who are in charge of Java migration and responsible
9
00:00:44,000 --> 00:00:47,000
for making decisions and planning next migration steps.
10
00:00:48,000 --> 00:00:53,000
You need to be aware about issues and solutions that we are going to discuss in this lesson.
11
00:00:54,000 --> 00:01:00,000
This is a super important topic, especially if your organization made a decision to migrate from Java
12
00:01:00,000 --> 00:01:07,000
eight to NAS, a long term support version like Java Plans that includes support of modules.
13
00:01:07,000 --> 00:01:14,000
And also, this is super important in case you decide to pass Oracle Java certifications, because some
14
00:01:14,000 --> 00:01:22,000
of the Oracle certifications include questions about migration to modular application, including top
15
00:01:22,000 --> 00:01:29,000
down and bottom up migration, and Split Ajala Agile Associates application into modules for migration.
16
00:01:30,000 --> 00:01:36,000
We'll start our lesson from learning and understanding of general algorithm for migration of our court
17
00:01:36,000 --> 00:01:41,000
to the new environment, including migration to the new version of Dedicate.
18
00:01:41,000 --> 00:01:47,000
Special focus today will be the migration of application to modular architecture.
19
00:01:47,000 --> 00:01:54,000
I will explain in one Java Class Dependency Analyzer tool is and what Java deprecated API is.
20
00:01:54,000 --> 00:01:57,000
Current tool is also we're going to learn today.
21
00:01:57,000 --> 00:02:04,000
Different migration strategies will review Bottom-Up and top-down migration strategies that start our
22
00:02:04,000 --> 00:02:05,000
lesson.
23
00:02:06,000 --> 00:02:13,000
And before I start diving in details, let's come up with steps and migration algorithm first, the
24
00:02:13,000 --> 00:02:15,000
step number zero and super important one.
25
00:02:16,000 --> 00:02:21,000
If you great internet, not sure that you would find this advice anywhere, but exactly as you said,
26
00:02:21,000 --> 00:02:23,000
was help make them a great deal.
27
00:02:23,000 --> 00:02:29,000
Worse software products two different versions and environments before any movements were scored that
28
00:02:29,000 --> 00:02:36,000
potentially may impact the way our program works, no matter whether this is refactoring or migrating
29
00:02:36,000 --> 00:02:41,000
and in what may impact or change code and the way how it is executed.
30
00:02:42,000 --> 00:02:45,000
Make sure that you have for libel suit of tests on different levels.
31
00:02:46,000 --> 00:02:51,000
The general recommendation here would be to automate as much as possible.
32
00:02:51,000 --> 00:02:57,000
Some of my clients say to me that this automation is a huge investments and they have dedicated manual
33
00:02:57,000 --> 00:03:04,000
regression time and cost wise, easy to understand the point you were talking about short periods of
34
00:03:04,000 --> 00:03:07,000
time and a not complex project.
35
00:03:07,000 --> 00:03:11,000
But I also saw projects where regression takes months.
36
00:03:11,000 --> 00:03:13,000
Nowadays, probably it is crazy.
37
00:03:13,000 --> 00:03:19,000
Amount of times it will add this software product to survive in the current environment, where your
38
00:03:19,000 --> 00:03:26,000
competitors are releasing new features each week or two weeks and your product only has regression for
39
00:03:26,000 --> 00:03:26,000
one months.
40
00:03:27,000 --> 00:03:27,000
Definitely.
41
00:03:27,000 --> 00:03:30,000
Is there a different areas and domains?
42
00:03:30,000 --> 00:03:31,000
Some of them more competitive?
43
00:03:32,000 --> 00:03:33,000
Some of them less.
44
00:03:33,000 --> 00:03:35,000
But I am sure you understood my point.
45
00:03:36,000 --> 00:03:42,000
So when my clients send me about not having enough resources on the creation of automation test and
46
00:03:42,000 --> 00:03:48,000
framework that includes small tests, use regression tests, etc., I'm asking a simple question.
47
00:03:49,000 --> 00:03:55,000
I am sure that in this case, you have enough resources and needs to halt any migrations.
48
00:03:56,000 --> 00:04:02,000
Probably it is better to put resources into product development, marketing to the market, find investments
49
00:04:02,000 --> 00:04:09,000
and come to the point where we have enough resources to scale and grow because otherwise we are not
50
00:04:09,000 --> 00:04:12,000
doing any migration just to do migration.
51
00:04:12,000 --> 00:04:20,000
We need to identify purposes of the migration and be sure that our migration brings some value and it
52
00:04:20,000 --> 00:04:21,000
is needed.
53
00:04:21,000 --> 00:04:27,000
And if it is needed, we're happy to accept all imports and provide everything what is necessary to
54
00:04:27,000 --> 00:04:28,000
make this happen.
55
00:04:29,000 --> 00:04:31,000
Here's where the first principle comes from.
56
00:04:32,000 --> 00:04:39,000
We need to identify goals of our migration and measures to stay specific and objective.
57
00:04:39,000 --> 00:04:46,000
What we are trying to achieve by performance, better security, better code design in order to be able
58
00:04:46,000 --> 00:04:48,000
to scale application faster.
59
00:04:49,000 --> 00:04:53,000
This is super important and once goal is defined.
60
00:04:53,000 --> 00:04:56,000
Make measurements of the current system.
61
00:04:56,000 --> 00:04:58,000
You need to have something and other.
62
00:04:58,000 --> 00:05:00,000
You can say communication has been successful.
63
00:05:00,000 --> 00:05:06,000
Often, migration trends are the goals were achieved because at the end of the day, we never the a
64
00:05:06,000 --> 00:05:09,000
factor on migration just for fun.
65
00:05:09,000 --> 00:05:12,000
We do it to get advantage of measurable benefits.
66
00:05:13,000 --> 00:05:14,000
Never forget about this.
67
00:05:15,000 --> 00:05:21,000
Let's agree it's within the scope of this particular demo will hold migration to another long term support
68
00:05:21,000 --> 00:05:28,000
Java release in order to achieve better structure in order to simplify introducing of new features,
69
00:05:29,000 --> 00:05:35,000
improving court architecture to make each release predictable and reduce impact of introducing new changes
70
00:05:35,000 --> 00:05:37,000
on already released codes.
71
00:05:38,000 --> 00:05:39,000
Improved security.
72
00:05:39,000 --> 00:05:46,000
We are achieving better encapsulation of components, greater platform integrity, improved performance.
73
00:05:47,000 --> 00:05:52,000
These are goals of Java platform Model S system and in case you missed the previous lesson.
74
00:05:52,000 --> 00:06:00,000
Please watch it because we discussed goals and benefits of modules in detail in previous lesson, and
75
00:06:00,000 --> 00:06:03,000
we agreed to migrate our app to the modular architecture.
76
00:06:04,000 --> 00:06:06,000
Let's review the following steps for this.
77
00:06:07,000 --> 00:06:14,000
The next thing that we need to do is to download the updated JDK version Java Platform Modular System
78
00:06:14,000 --> 00:06:17,000
finally was introduced in Java version nine.
79
00:06:18,000 --> 00:06:25,000
But as we discussed in the first lesson about JDK, I would recommend you to use long term support Java
80
00:06:25,000 --> 00:06:25,000
versions.
81
00:06:26,000 --> 00:06:28,000
Nowadays, we have two long term support versions.
82
00:06:29,000 --> 00:06:35,000
They are eight and 11 considering that we want to migrate our app to have modular application.
83
00:06:36,000 --> 00:06:39,000
Most likely, we would opt for Java version 11.
84
00:06:39,000 --> 00:06:43,000
But you also can opt for Java version nine if you wish.
85
00:06:44,000 --> 00:06:46,000
Wrong application was near adjudicate.
86
00:06:46,000 --> 00:06:48,000
This is also important step.
87
00:06:48,000 --> 00:06:54,000
Java ensures backwards compatibility, but still, there might be some changes.
88
00:06:55,000 --> 00:07:02,000
For example, if you used some options for garbage collector, pay attention that, for example, indicate,
89
00:07:02,000 --> 00:07:04,000
well, some of them removed.
90
00:07:05,000 --> 00:07:11,000
That's why, even despite Java guarantees backwards compatibility, it is never redundant to compile
91
00:07:12,000 --> 00:07:14,000
and run your app with new adjudication.
92
00:07:15,000 --> 00:07:20,000
Also, this might be important to ensure compatibility was a by your libraries.
93
00:07:20,000 --> 00:07:26,000
So the main goal is to run your app on the use adjudicate mission and to deal with this task.
94
00:07:26,000 --> 00:07:32,000
You need to be aware about new features in Japanese that you want to use for immigration.
95
00:07:32,000 --> 00:07:35,000
This can be easily found on the official websites.
96
00:07:36,000 --> 00:07:40,000
The first step would be to update third party dependencies if needed.
97
00:07:40,000 --> 00:07:47,000
So we need to make sure that your app was all external dependencies may be compiled, built and started
98
00:07:47,000 --> 00:07:51,000
successfully Ranji DApps against your project.
99
00:07:52,000 --> 00:07:53,000
Enthusiasm for familiar with J.
100
00:07:53,000 --> 00:07:55,000
DApps and don't know what it is.
101
00:07:56,000 --> 00:07:57,000
Let me quickly explain.
102
00:07:58,000 --> 00:08:05,000
Basically, this is a tool that is present in JDK to identify dependencies between classes, modules,
103
00:08:05,000 --> 00:08:07,000
packages in your app.
104
00:08:07,000 --> 00:08:12,000
It is a common line to runs a Java Class Dependency Analyzer tool.
105
00:08:13,000 --> 00:08:20,000
It processes Java bytecode, meaning the class files all the jars that contains them and analyzes the
106
00:08:20,000 --> 00:08:23,000
statically declared dependencies between the classes.
107
00:08:23,000 --> 00:08:30,000
The results can be filtered in various ways and can be aggregated to package or jar level.
108
00:08:31,000 --> 00:08:34,000
Knapp's is also fully aware of the module system.
109
00:08:34,000 --> 00:08:41,000
This is super important and useful for you to understand before you plan and immigration, and before
110
00:08:41,000 --> 00:08:47,000
you make any final decision about your modules and packages structured a little bit later.
111
00:08:47,000 --> 00:08:54,000
In this lesson, I am going to show you how to work with Jade DApps program Ramji that are scrum against
112
00:08:54,000 --> 00:08:55,000
your project.
113
00:08:55,000 --> 00:08:59,000
If you're not familiar with this, though, let me quickly explain what it is.
114
00:09:00,000 --> 00:09:07,000
This tool is a static analysis tools its concept jar file or some other aggregation of class files for
115
00:09:07,000 --> 00:09:10,000
usages of deprecated API elements.
116
00:09:10,000 --> 00:09:18,000
When you upgrade to the new version, you might be interested in this information to to update your
117
00:09:18,000 --> 00:09:19,000
code accordingly.
118
00:09:19,000 --> 00:09:26,000
Do not accumulate dependencies on deprecated classes and masses a little bit later today on the real
119
00:09:26,000 --> 00:09:30,000
example, I'm going to show you how to apply this to now.
120
00:09:30,000 --> 00:09:36,000
After all these steps, we're safe to proceed with the next steps on this stage.
121
00:09:36,000 --> 00:09:43,000
Having all necessary input information, we are ready to make a decision and plan the duration we need
122
00:09:43,000 --> 00:09:45,000
to select the migration strategy.
123
00:09:45,000 --> 00:09:47,000
Today, we'll discuss a few of them.
124
00:09:48,000 --> 00:09:53,000
Once you select migration strategy and plan migration steps, we're going to proceed with migration
125
00:09:53,000 --> 00:09:54,000
execution.
126
00:09:55,000 --> 00:10:02,000
Usually, Oracle and community release migration guides for each new version that contains important
127
00:10:02,000 --> 00:10:06,000
information that you need to consider during the migration of your app.
128
00:10:06,000 --> 00:10:10,000
One of such goods, I will leave in attachments to the lesson.
129
00:10:10,000 --> 00:10:17,000
But you can easily find similar guides for other versions, and each migration should be followed by
130
00:10:17,000 --> 00:10:18,000
regression testing.
131
00:10:18,000 --> 00:10:25,000
We already discussed that even before starting doing steps like this, we need to make sure that we
132
00:10:25,000 --> 00:10:32,000
have reliable sort of tests that will allow us to confirm that at least nothing is broken and migration
133
00:10:32,000 --> 00:10:33,000
goals are achieved.
134
00:10:34,000 --> 00:10:39,000
After that, we are ready to proceed with a step where you can apply measurements that you did before
135
00:10:39,000 --> 00:10:42,000
migration to verify region of migration goals.
136
00:10:43,000 --> 00:10:49,000
For example, if the goal was to improve performance, measure performance of your app after migration
137
00:10:49,000 --> 00:10:52,000
and if performance become even worse.
138
00:10:52,000 --> 00:10:55,000
The question is was immigration was successful?
139
00:10:55,000 --> 00:10:57,000
I don't think so.
140
00:10:57,000 --> 00:11:02,000
That means is that some steps still need to be done and planned.
141
00:11:02,000 --> 00:11:08,000
This migration should be adjusted to include additional steps to reach the goal of migration.
142
00:11:08,000 --> 00:11:09,000
Does it make sense?
143
00:11:10,000 --> 00:11:14,000
So now, like the reviews it, I'll Google one more time.
144
00:11:15,000 --> 00:11:16,000
Press pause if needed.
145
00:11:17,000 --> 00:11:24,000
And once you are sure about each step and the sequence of actions we are glad to proceed is a step number
146
00:11:24,000 --> 00:11:25,000
zero.
147
00:11:25,000 --> 00:11:26,000
I have separate course for that.
148
00:11:27,000 --> 00:11:30,000
You can check my course got and test during development.
149
00:11:30,000 --> 00:11:33,000
I elaborated a lot on this topic.
150
00:11:33,000 --> 00:11:36,000
Step number one is up to you and your organization.
151
00:11:37,000 --> 00:11:42,000
You should identify goals of migration internally, and I wouldn't be able to help you with that.
152
00:11:43,000 --> 00:11:45,000
Do not forget to perform any measurements.
153
00:11:45,000 --> 00:11:51,000
How long was a goal to compare these before immigration and after migration?
154
00:11:52,000 --> 00:11:57,000
Regarding the loading of the latest duplicate version, I believe if you already watching this lesson,
155
00:11:58,000 --> 00:12:03,000
you are smart and mature enough to download Oracle JDK or open JDK.
156
00:12:04,000 --> 00:12:07,000
After that, you need to run your project with new JDK.
157
00:12:07,000 --> 00:12:13,000
I'm sure you will be able to those that want the same as updates and third party dependencies too,
158
00:12:14,000 --> 00:12:18,000
and with the next step, probably let me help you with that one.
159
00:12:19,000 --> 00:12:26,000
Let me explain to you more about the app's program, how to use it and show this on live demo.
160
00:12:27,000 --> 00:12:33,000
So as we have discussed, GDP is a Java dependency analysis tool, probably the first questions that
161
00:12:33,000 --> 00:12:39,000
students ask me is where they can get the depth and the words they should download.
162
00:12:39,000 --> 00:12:45,000
I want to say that you don't need to worry about that if you have dedicated, download it on your PC.
163
00:12:46,000 --> 00:12:47,000
This program is already is.
164
00:12:47,000 --> 00:12:55,000
They're waiting for you in bin folder since Java version eight will work with this tool directly from
165
00:12:55,000 --> 00:12:56,000
Command Prompt.
166
00:12:57,000 --> 00:13:03,000
So make sure that you JDK pass configure it properly and that Jane Daps Version Command returns your
167
00:13:04,000 --> 00:13:05,000
result in command line.
168
00:13:06,000 --> 00:13:11,000
Let me show you a quick them in order you could understand how to work with this still.
169
00:13:12,000 --> 00:13:15,000
This told me on the last group of classes.
170
00:13:15,000 --> 00:13:21,000
Let me show you two examples now in the first example, I will show you how to analyze old fashioned
171
00:13:21,000 --> 00:13:25,000
clean Java project as a simple project we are going to use.
172
00:13:25,000 --> 00:13:32,000
My Java project was examples, the ones that are used to demonstrate different topics to students of
173
00:13:32,000 --> 00:13:32,000
mine.
174
00:13:33,000 --> 00:13:40,000
And then the second example will analyze more single modular project that doesn't have too much dependencies
175
00:13:40,000 --> 00:13:44,000
between different packages and modules in case you have a general project.
176
00:13:44,000 --> 00:13:51,000
The first thing that you need to do is to aggregate all components resources in one folder miserably
177
00:13:51,000 --> 00:14:01,000
Jr. Archive in separate lessons were learned such build tools and maven granule, et cetera, that those
178
00:14:01,000 --> 00:14:08,000
in charge of building your project, creating some deployable pieces like jars or walls, and now a
179
00:14:08,000 --> 00:14:14,000
specific case would need to generate just by our cells in the clips.
180
00:14:14,000 --> 00:14:21,000
I can easily do this by mouse, right click on the project, find them experts option and select the
181
00:14:21,000 --> 00:14:21,000
jar.
182
00:14:21,000 --> 00:14:23,000
File some options here.
183
00:14:23,000 --> 00:14:32,000
Now we need to specify jar pots and place where archive will be located and generated zen numerous of
184
00:14:32,000 --> 00:14:32,000
other options.
185
00:14:33,000 --> 00:14:37,000
Majority of them are so describing I want a stop on those.
186
00:14:37,000 --> 00:14:44,000
But even in case you have some questions, let me know in comments below this video and I will be happy
187
00:14:44,000 --> 00:14:44,000
to answer.
188
00:14:45,000 --> 00:14:47,000
Now one, we have jar file.
189
00:14:47,000 --> 00:14:49,000
We are ready to analyze it.
190
00:14:49,000 --> 00:14:56,000
I open it bush terminal in this folder and now executes my script in this directory.
191
00:14:57,000 --> 00:15:02,000
Commands that I'm going to execute is stored in a common dirt file.
192
00:15:03,000 --> 00:15:08,000
I store the script on the Zagat index so that you could investigate it later.
193
00:15:08,000 --> 00:15:12,000
Let me open this script and I will explain what is the reason here.
194
00:15:13,000 --> 00:15:16,000
This is actually to invoke Java dependency analysis.
195
00:15:17,000 --> 00:15:25,000
That output is a command line option to specify a destination directory for the file output, not file
196
00:15:25,000 --> 00:15:32,000
content is simple tags that can be copied and pasted into the online editor, for example, or other
197
00:15:32,000 --> 00:15:39,000
editors to generate graphs that visualizes dependencies will generate one in the middle.
198
00:15:40,000 --> 00:15:44,000
You can see that they use Dot after dot output option.
199
00:15:44,000 --> 00:15:51,000
If you are familiar with this character, then you already know that Daughtery first is a current directory.
200
00:15:52,000 --> 00:15:59,000
So this means is a dirt file will be generated in the current directory, whereas this command will
201
00:15:59,000 --> 00:16:00,000
be executed.
202
00:16:01,000 --> 00:16:03,000
The next option is recursive.
203
00:16:03,000 --> 00:16:11,000
This option recursive the traverses or runtime dependencies plus force option specifies directory was
204
00:16:11,000 --> 00:16:19,000
ClassPass, including external dependencies in our particular cases, with few external dependencies
205
00:16:19,000 --> 00:16:20,000
on different lessons.
206
00:16:20,000 --> 00:16:24,000
And I don't know that these jurors into my downloads folder.
207
00:16:25,000 --> 00:16:32,000
That's why I also included those here, and the last program argument is just to analyze.
208
00:16:33,000 --> 00:16:35,000
Basically, that is the ones that we built.
209
00:16:36,000 --> 00:16:42,000
It contains all classes from all packages of my training project that's executed the script.
210
00:16:43,000 --> 00:16:48,000
I wrote the name of the script to console and press enter.
211
00:16:49,000 --> 00:16:56,000
It takes some time to analyze dependencies, but finally, not file is generated in the current directory.
212
00:16:57,000 --> 00:17:02,000
Let's open it, and you can see that the content of this file is just text.
213
00:17:03,000 --> 00:17:05,000
It contains some specific structure.
214
00:17:06,000 --> 00:17:13,000
You can see dependency of each package on another package, probably when you have session load of packages.
215
00:17:14,000 --> 00:17:21,000
It is even better to use this text representation to analyze this data and think about structuring new
216
00:17:21,000 --> 00:17:21,000
modules.
217
00:17:22,000 --> 00:17:27,000
But still, if you want to visualize it, let's use special tools for that.
218
00:17:27,000 --> 00:17:31,000
We can find online tools to visualize our dependencies.
219
00:17:32,000 --> 00:17:36,000
For example, we can use just one of those I'm talking about.
220
00:17:36,000 --> 00:17:45,000
Map Graph is just Scorpion's based content of the file based here and press generate graphs button.
221
00:17:45,000 --> 00:17:50,000
That was easy, but you can see how much gross dependencies we are.
222
00:17:51,000 --> 00:17:51,000
Definitely.
223
00:17:51,000 --> 00:17:57,000
There is a lot of work here, considering this is a project and a lot of different topics.
224
00:17:57,000 --> 00:18:04,000
Some of them very often reuses some common glosses or packages, and that's why we have something like
225
00:18:04,000 --> 00:18:04,000
this.
226
00:18:05,000 --> 00:18:08,000
You can spend time after the lesson and used to get this.
227
00:18:09,000 --> 00:18:11,000
I added these files in to get this.
228
00:18:12,000 --> 00:18:16,000
So you will be able to find those in the directory of the project.
229
00:18:17,000 --> 00:18:23,000
Most likely, if you would, any great all project that doesn't have more destruction, you would see
230
00:18:23,000 --> 00:18:24,000
something like this.
231
00:18:25,000 --> 00:18:26,000
Or even worse.
232
00:18:26,000 --> 00:18:29,000
Well, most likely you will see worse.
233
00:18:30,000 --> 00:18:31,000
Sorry, but this is true.
234
00:18:32,000 --> 00:18:39,000
OK, let's move on, and now I'd like to show you how to work with this, though, if you would like
235
00:18:39,000 --> 00:18:41,000
to analyze modular application.
236
00:18:41,000 --> 00:18:46,000
And you remember, is it a previous lesson of the creative modular application?
237
00:18:46,000 --> 00:18:49,000
Let's analyze dependencies for that app.
238
00:18:50,000 --> 00:18:56,000
The idea is similar, but instead of Java, you can pass a reference to the director with your modules
239
00:18:56,000 --> 00:18:59,000
so you already can make a conclusion.
240
00:18:59,000 --> 00:19:06,000
ZG Depths Program has separate group of command line options for modular and non modular applications.
241
00:19:07,000 --> 00:19:12,000
These are common ones that they want to execute is also stored in shell script.
242
00:19:12,000 --> 00:19:16,000
Let me open the file and we'll discuss what is written here.
243
00:19:17,000 --> 00:19:22,000
Also to execute shell script in the other directory, I open terminal.
244
00:19:23,000 --> 00:19:30,000
As you can see, I use Module First Command Line option and pauses a reference to the directory where
245
00:19:30,000 --> 00:19:32,000
all my module is located.
246
00:19:33,000 --> 00:19:39,000
Another option is that modules to add modules to zero set for analysis.
247
00:19:39,000 --> 00:19:46,000
I use custom to add all modules in the directory as the last option here is the list is pretty familiar
248
00:19:46,000 --> 00:19:47,000
to you.
249
00:19:47,000 --> 00:19:49,000
This is for the output.
250
00:19:49,000 --> 00:19:55,000
Let's execute this script in the terminal and we have generated summary file.
251
00:19:55,000 --> 00:20:02,000
Let's copy content from here and let me paste this content on the website to generate the graph.
252
00:20:03,000 --> 00:20:09,000
As you can see, code I think moves at depends on coal.
253
00:20:09,000 --> 00:20:16,000
I think moves greetings module and Moses and the pass on Java based module.
254
00:20:16,000 --> 00:20:18,000
Is it clear for you?
255
00:20:18,000 --> 00:20:23,000
Press a pause for a minute and sync one more time about this live demo.
256
00:20:24,000 --> 00:20:24,000
Thank you.
257
00:20:24,000 --> 00:20:26,000
Samsung is still not clear for you.
258
00:20:27,000 --> 00:20:32,000
Please do not hesitate to pose your question below this video, and I will be happy to answer.
259
00:20:34,000 --> 00:20:40,000
On the screen, you can find common long options that you may use with great depths on the slide, you
260
00:20:40,000 --> 00:20:42,000
can find possible options.
261
00:20:43,000 --> 00:20:45,000
Module dependency analysis options.
262
00:20:46,000 --> 00:20:48,000
Options to filter dependencies.
263
00:20:48,000 --> 00:20:51,000
Options to filter closest to be analyzed.
264
00:20:51,000 --> 00:20:54,000
And as you can see, there are a lot of them.
265
00:20:54,000 --> 00:20:58,000
Probably it doesn't make any sense to me holding them off each option.
266
00:20:58,000 --> 00:21:03,000
I believe you understood the main principle, and so I would demo was few options.
267
00:21:03,000 --> 00:21:06,000
You can just play with other options if you want.
268
00:21:07,000 --> 00:21:11,000
Feel free to pause the Ouija if you want to read all comments on the slide.
269
00:21:12,000 --> 00:21:14,000
OK, let's proceed.
270
00:21:15,000 --> 00:21:21,000
The next thing that I am going to demo you is depressed, can't program, you have a deprecated API
271
00:21:21,000 --> 00:21:25,000
kind of tool is a common line tool to scan for users.
272
00:21:25,000 --> 00:21:29,000
So deprecated API elements of given Java class files.
273
00:21:29,000 --> 00:21:38,000
Input glosses can be given as a bosnich to a class file and directory or jar file, the same as G Deps
274
00:21:38,000 --> 00:21:44,000
G Deeper Scan also has been included in genica installation since adjudicate.
275
00:21:44,000 --> 00:21:48,000
That means you can find that in bin folder of Dedicate.
276
00:21:48,000 --> 00:21:54,000
And if you configure Java POS properly, you can access it from command line.
277
00:21:55,000 --> 00:22:01,000
I'm going to show you example, Wisconsin, of my learning project, I put Judy Proskauer in Shell script.
278
00:22:02,000 --> 00:22:08,000
The simplest way how to use this command is to invoke it and pass journal names that we would like to
279
00:22:08,000 --> 00:22:09,000
scan.
280
00:22:09,000 --> 00:22:12,000
I want to execute this script and get the bus.
281
00:22:12,000 --> 00:22:21,000
And again, it takes some time because Project has a lot of files and it is done on the top.
282
00:22:21,000 --> 00:22:24,000
You can see notifications in which classes are used.
283
00:22:24,000 --> 00:22:32,000
Deprecated masses Knowing this information, you can just check deprecated masses, usually in documentation
284
00:22:32,000 --> 00:22:38,000
is deprecated mass that it is specified which other mass that you should use instead.
285
00:22:38,000 --> 00:22:39,000
That is simple.
286
00:22:40,000 --> 00:22:40,000
I agree.
287
00:22:41,000 --> 00:22:45,000
And this command also has few important command line options.
288
00:22:45,000 --> 00:22:47,000
Definitely Zionism's MS engine.
289
00:22:47,000 --> 00:22:55,000
That program has but still something for you, at least to be aware of response if you want to explore
290
00:22:55,000 --> 00:22:56,000
all these in details.
291
00:22:57,000 --> 00:22:59,000
And if you're OK, I will continue.
292
00:23:00,000 --> 00:23:03,000
Now, let's review immigration strategies.
293
00:23:03,000 --> 00:23:09,000
We will cover case when a regional application is based on gender versions that is less than juvenile
294
00:23:10,000 --> 00:23:17,000
or it is Java nine or higher, but the modular approach wasn't originally implemented since the use
295
00:23:17,000 --> 00:23:19,000
of this mechanism is fully optional.
296
00:23:20,000 --> 00:23:26,000
M. relearned tools and went through the step where we did the line, which modules draft files are present
297
00:23:26,000 --> 00:23:30,000
in application and what dependencies exist between them.
298
00:23:30,000 --> 00:23:37,000
Also, another way to do that besides such automated tools of static code analysis as DApps is through
299
00:23:37,000 --> 00:23:42,000
an Iraqi eagle diagram, whereas these dependencies are represented in their way.
300
00:23:43,000 --> 00:23:49,000
This will help give an overview of the components of the application and of each of them, and in which
301
00:23:49,000 --> 00:23:51,000
orders it can be migrated.
302
00:23:51,000 --> 00:23:57,000
Identifying those who will not be able to adopt temporally or definitively.
303
00:23:58,000 --> 00:24:04,000
The later case can be given, for example, insert various libraries that have stopped offering support,
304
00:24:04,000 --> 00:24:06,000
and that will hardly become modules.
305
00:24:07,000 --> 00:24:12,000
There are two different migration mechanisms that responds to different initial situations.
306
00:24:13,000 --> 00:24:20,000
To illustrate the process in each of them, let's imagine the next scenario we plan to migrate an application
307
00:24:20,000 --> 00:24:25,000
that consists of three jars representing the different layers of the application.
308
00:24:26,000 --> 00:24:32,000
They are application services and utilize the diagrams that you can see on the screen.
309
00:24:32,000 --> 00:24:35,000
Now shows the dependencies between these lists.
310
00:24:36,000 --> 00:24:42,000
Where application depends on services and the tiers and services depends on the utils only.
311
00:24:42,000 --> 00:24:45,000
Let's review Bottom-Up migration first.
312
00:24:45,000 --> 00:24:52,000
In this strategy, initially, all jar files that are part of the application will be located at its
313
00:24:52,000 --> 00:24:53,000
ClassPass.
314
00:24:54,000 --> 00:24:56,000
All of them can be migrated one by one.
315
00:24:56,000 --> 00:24:58,000
Does the module POS?
316
00:24:58,000 --> 00:25:01,000
To do this, we need to follow describes steps.
317
00:25:02,000 --> 00:25:08,000
The first thing that we need to do is to choose a project package or layer was the lowest position in
318
00:25:08,000 --> 00:25:09,000
dependencies.
319
00:25:09,000 --> 00:25:12,000
Iraqi yet has not yet been migrated to module.
320
00:25:13,000 --> 00:25:17,000
That means to select the project that has less dependencies.
321
00:25:17,000 --> 00:25:20,000
In our case, this is your deals there.
322
00:25:20,000 --> 00:25:26,000
After that and the module info Java file to the project, it will be needed to.
323
00:25:26,000 --> 00:25:33,000
Ads are quite explicit statements to make current module packages available to Iraqi Higher Level Modules
324
00:25:33,000 --> 00:25:41,000
Moves Integrated Project as a named module from application's class bus to its module bus ensure that
325
00:25:41,000 --> 00:25:43,000
all not yet migrated.
326
00:25:43,000 --> 00:25:48,000
The modules remain as unnamed modules in application's class bus.
327
00:25:48,000 --> 00:25:52,000
What is unnamed modules were discussed in previous lesson.
328
00:25:52,000 --> 00:26:00,000
One of the learned modules types please refer to the previous lesson through use that, if needed after
329
00:26:00,000 --> 00:26:07,000
we did all this is this seems it remains to do is to repeat this process was the next lowest level packages
330
00:26:08,000 --> 00:26:10,000
list of projects in the Iraqi.
331
00:26:10,000 --> 00:26:15,000
That is not migrated yet, and we are progressing in the bottom direction.
332
00:26:15,000 --> 00:26:23,000
Can you understand now why this strategy is called bottom up when this approach works the best and when
333
00:26:23,000 --> 00:26:24,000
we need to apply?
334
00:26:24,000 --> 00:26:27,000
The bottom up migration strategy was the best one.
335
00:26:27,000 --> 00:26:33,000
We have the ability to modify any jar that has not yet been converted to module.
336
00:26:33,000 --> 00:26:41,000
It makes easier as a migration of the project's packages was a whole layers that are at the top of the
337
00:26:41,000 --> 00:26:47,000
dependency diagram and encourages care in what is exposed to other modules.
338
00:26:48,000 --> 00:26:54,000
The modules of the lower levels of the Iraqi will be found in the module costs without access to the
339
00:26:54,000 --> 00:26:56,000
packages of unnamed modules.
340
00:26:57,000 --> 00:27:03,000
While these unnamed modules that have not been migrated and allocated in the class, ClassPass will
341
00:27:03,000 --> 00:27:09,000
be able to access zip packages located in both class and module bus.
342
00:27:10,000 --> 00:27:11,000
Does it make sense so far?
343
00:27:13,000 --> 00:27:19,000
And now is immigration strategy would be top down in this strategy, initially, all jar files that
344
00:27:19,000 --> 00:27:25,000
are part of the application will be located at its model bus, so all non-immigrant its projects are
345
00:27:25,000 --> 00:27:27,000
treated as automatic modules.
346
00:27:28,000 --> 00:27:31,000
Greatest lesson I current or what automatic modules are.
347
00:27:32,000 --> 00:27:36,000
So please make sure you watch the previous lesson about modules.
348
00:27:36,000 --> 00:27:44,000
If you forget, this is example when I didn't use modular approach since it is optional in this case,
349
00:27:44,000 --> 00:27:47,000
it is recommended to frozen next steps.
350
00:27:47,000 --> 00:27:54,000
The first thing to do is to choose a high level project and the dependencies Iraqi that has not yet
351
00:27:54,000 --> 00:27:56,000
been integrated the module.
352
00:27:56,000 --> 00:28:03,000
After that, we need to add some module info gel file to the project to transform it from an automatic
353
00:28:03,000 --> 00:28:05,000
module to a named module.
354
00:28:06,000 --> 00:28:12,000
Also, we shouldn't forget to add necessary expert statements to make current module packages available
355
00:28:12,000 --> 00:28:20,000
to other modules and the necessary require statements that makes available OSM modules expose packages
356
00:28:20,000 --> 00:28:25,000
to the current one in case of the reference to a module not yet migrated.
357
00:28:26,000 --> 00:28:29,000
It should be done through its automatic module name.
358
00:28:29,000 --> 00:28:36,000
Once these have been migrated, these references should be changed to Z definitive module names.
359
00:28:37,000 --> 00:28:41,000
Repeat this process was the next high level component.
360
00:28:41,000 --> 00:28:44,000
Is Iraqi citizens not migrated yet?
361
00:28:44,000 --> 00:28:49,000
Then the stunt in which case is top down strategy needs to be applied and robust at best.
362
00:28:50,000 --> 00:28:55,000
This strategy is the best when you don't have the possibility of one day on the horizon.
363
00:28:55,000 --> 00:29:00,000
All the dependencies of the application was a temporarily or definitively.
364
00:29:01,000 --> 00:29:06,000
Also, the lower dependencies of the application have not yet been modularized.
365
00:29:06,000 --> 00:29:10,000
The application itself can be converted into morning.
366
00:29:10,000 --> 00:29:15,000
Named modules that have already been integrated will be found in the module.
367
00:29:15,000 --> 00:29:22,000
Boss was access to the entire code contained in the automatic modules that are also found in module
368
00:29:22,000 --> 00:29:22,000
path.
369
00:29:23,000 --> 00:29:23,000
Is that clear?
370
00:29:24,000 --> 00:29:26,000
And remember another important sync?
371
00:29:27,000 --> 00:29:31,000
In all cases, we have to avoid circle of dependencies between modules.
372
00:29:32,000 --> 00:29:34,000
That's all what I wanted to share with you in this lesson.
373
00:29:35,000 --> 00:29:37,000
Let's recap what we have learned today.
374
00:29:38,000 --> 00:29:44,000
After this lesson, you know, general algorithm to follow during the platform, migration to the new
375
00:29:44,000 --> 00:29:48,000
environment or in US adjudicate version in particular.
376
00:29:48,000 --> 00:29:57,000
I showed you how to use in practice Java Class Dependency Analyzer to also we used how to use Java deprecated
377
00:29:57,000 --> 00:30:05,000
API second to review of different migration strategies, namely, we bottom up and top down migration
378
00:30:05,000 --> 00:30:05,000
strategies.
379
00:30:06,000 --> 00:30:11,000
I hope you'll love this lesson and learned a lot of new useful sinks.
380
00:30:12,000 --> 00:30:13,000
Thanks a lot for your attention.
381
00:30:14,000 --> 00:30:17,000
Have a great day and see you in the next lesson.
|