Last active
June 18, 2022 07:29
-
-
Save quan-nh/b9947cef85a139a56f0280c121e90acb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="3727px" preserveAspectRatio="none" style="width:934px;height:3727px;background:#FFFFFF;" version="1.1" viewBox="0 0 934 3727" width="934px" zoomAndPan="magnify"><defs/><g><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="80" x="10" y="76.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="20" y="99.292">Legends</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="84" x="140" y="20"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="150" y="42.9951">Essential</text><path d="M90,94.4453 L100,94.4453 C115,94.4453 115,38.1484 130,38.1484 L140,38.1484 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="124" x="140" y="76.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="150" y="99.292">Good to know</text><path d="M90,94.4453 L100,94.4453 C115,94.4453 115,94.4453 130,94.4453 L140,94.4453 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="109" x="140" y="132.5938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="150" y="155.5889">Possibilities</text><path d="M90,94.4453 L100,94.4453 C115,94.4453 115,150.7422 130,150.7422 L140,150.7422 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="206" x="10" y="1928.8164"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="186" x="20" y="1951.8115">Java Learning Path @ 2022</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="114" x="266" y="385.9297"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="276" y="408.9248">Prerequisites</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="42" x="430" y="188.8906"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="22" x="440" y="211.8857">Git</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,207.0391 420,207.0391 L430,207.0391 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="57" x="430" y="245.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="37" x="440" y="268.1826">Linux</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,263.3359 420,263.3359 L430,263.3359 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="72" x="430" y="301.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="52" x="440" y="324.4795">Docker</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,319.6328 420,319.6328 L430,319.6328 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="92" x="430" y="357.7813"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="72" x="440" y="380.7764">Algorithm</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,375.9297 420,375.9297 L430,375.9297 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="48" x="430" y="414.0781"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="440" y="437.0732">SQL</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,432.2266 420,432.2266 L430,432.2266 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="100" x="430" y="470.375"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="440" y="493.3701">Http/Https</text><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,488.5234 420,488.5234 L430,488.5234 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="140" x="430" y="526.6719"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="440" y="549.667">OWASP Top Ten</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="294" x="623" y="549.667">https://owasp.org/www-project-top-ten/</text><path d="M570,544.8203 L580,544.8203 C595,544.8203 595,544.8203 610,544.8203 L620,544.8203 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,544.8203 420,544.8203 L430,544.8203 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="162" x="430" y="582.9688"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138" x="440" y="605.9639">The Twelve Factors</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="151" x="645" y="605.9639">https://12factor.net/</text><path d="M592,601.1172 L602,601.1172 C617,601.1172 617,601.1172 632,601.1172 L642,601.1172 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M380,404.0781 L390,404.0781 C405,404.0781 405,601.1172 420,601.1172 L430,601.1172 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,404.0781 256,404.0781 L266,404.0781 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="51" x="266" y="667.4141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="31" x="276" y="690.4092">IDEs</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="65" x="367" y="639.2656"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="377" y="662.2607">IntelliJ</text><path d="M317,685.5625 L327,685.5625 C342,685.5625 342,657.4141 357,657.4141 L367,657.4141 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="149" x="367" y="695.5625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="125" x="377" y="718.5576">Eclipse/NetBeans</text><path d="M317,685.5625 L327,685.5625 C342,685.5625 342,713.7109 357,713.7109 L367,713.7109 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,685.5625 256,685.5625 L266,685.5625 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="97" x="266" y="808.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77" x="276" y="831.1514">Build Tools</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="66" x="413" y="751.8594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="423" y="774.8545">Maven</text><path d="M363,826.3047 L373,826.3047 C388,826.3047 388,770.0078 403,770.0078 L413,770.0078 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="71" x="413" y="808.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="423" y="831.1514">Gradle</text><path d="M363,826.3047 L373,826.3047 C388,826.3047 388,826.3047 403,826.3047 L413,826.3047 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="50" x="413" y="864.4531"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="26" x="423" y="887.4482">Ant</text><path d="M363,826.3047 L373,826.3047 C388,826.3047 388,882.6016 403,882.6016 L413,882.6016 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,826.3047 256,826.3047 L266,826.3047 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="86" x="266" y="1112.5117"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="66" x="276" y="1135.5068">Java Core</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="100" x="402" y="929.1953"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="412" y="952.1904">Collections</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="26" x="555" y="924.7451">List</text><path d="M502,947.3438 L512,947.3438 C527,947.3438 527,919.8984 542,919.8984 L552,919.8984 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="30" x="555" y="943.042">Map</text><path d="M502,947.3438 L512,947.3438 C527,947.3438 527,938.1953 542,938.1953 L552,938.1953 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="25" x="555" y="961.3389">Set</text><path d="M502,947.3438 L512,947.3438 C527,947.3438 527,956.4922 542,956.4922 L552,956.4922 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="555" y="979.6357">Queue</text><path d="M502,947.3438 L512,947.3438 C527,947.3438 527,974.7891 542,974.7891 L552,974.7891 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M352,1130.6602 L362,1130.6602 C377,1130.6602 377,947.3438 392,947.3438 L402,947.3438 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="35" x="402" y="985.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="412" y="1008.4873">IO</text><path d="M352,1130.6602 L362,1130.6602 C377,1130.6602 377,1003.6406 392,1003.6406 L402,1003.6406 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="110" x="402" y="1041.7891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90" x="412" y="1064.7842">Concurrency</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="50" x="565" y="1055.6357">Thread</text><path d="M512,1059.9375 L522,1059.9375 C537,1059.9375 537,1050.7891 552,1050.7891 L562,1050.7891 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="565" y="1073.9326">Thread Pool</text><path d="M512,1059.9375 L522,1059.9375 C537,1059.9375 537,1069.0859 552,1069.0859 L562,1069.0859 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M352,1130.6602 L362,1130.6602 C377,1130.6602 377,1059.9375 392,1059.9375 L402,1059.9375 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="71" x="402" y="1182.5313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="51" x="412" y="1205.5264">Java 8+</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="77" x="523" y="1098.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57" x="533" y="1121.0811">Lambda</text><path d="M473,1200.6797 L483,1200.6797 C498,1200.6797 498,1116.2344 513,1116.2344 L523,1116.2344 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="80" x="523" y="1154.3828"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="533" y="1177.3779">Streams</text><path d="M473,1200.6797 L483,1200.6797 C498,1200.6797 498,1172.5313 513,1172.5313 L523,1172.5313 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="87" x="523" y="1210.6797"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="533" y="1233.6748">java.time</text><path d="M473,1200.6797 L483,1200.6797 C498,1200.6797 498,1228.8281 513,1228.8281 L523,1228.8281 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="177" x="523" y="1266.9766"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="533" y="1289.9717">Other Enhancements</text><path d="M473,1200.6797 L483,1200.6797 C498,1200.6797 498,1285.125 513,1285.125 L523,1285.125 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M352,1130.6602 L362,1130.6602 C377,1130.6602 377,1200.6797 392,1200.6797 L402,1200.6797 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="46" x="402" y="1304.2734"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="26" x="412" y="1327.2686">JVM</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="501" y="1327.2686">GC</text><path d="M448,1322.4219 L458,1322.4219 C473,1322.4219 473,1322.4219 488,1322.4219 L498,1322.4219 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M352,1130.6602 L362,1130.6602 C377,1130.6602 377,1322.4219 392,1322.4219 L402,1322.4219 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,1130.6602 256,1130.6602 L266,1130.6602 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="129" x="266" y="1445.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="276" y="1468.0107">Utility Libraries</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="150" x="445" y="1360.5703"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="130" x="455" y="1383.5654">Apache Commons</text><path d="M395,1463.1641 L405,1463.1641 C420,1463.1641 420,1378.7188 435,1378.7188 L445,1378.7188 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="112" x="445" y="1416.8672"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="92" x="455" y="1439.8623">Jackson JSON</text><path d="M395,1463.1641 L405,1463.1641 C420,1463.1641 420,1435.0156 435,1435.0156 L445,1435.0156 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="158" x="445" y="1473.1641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138" x="455" y="1496.1592">Log4j/Logback/slf4j</text><path d="M395,1463.1641 L405,1463.1641 C420,1463.1641 420,1491.3125 435,1491.3125 L445,1491.3125 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="70" x="445" y="1529.4609"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="455" y="1552.4561">RxJava</text><path d="M395,1463.1641 L405,1463.1641 C420,1463.1641 420,1547.6094 435,1547.6094 L445,1547.6094 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,1463.1641 256,1463.1641 L266,1463.1641 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="53" x="266" y="1754.6484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="33" x="276" y="1777.6436">Web</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="43" x="369" y="1642.0547"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="23" x="379" y="1665.0498">API</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="57" x="462" y="1585.7578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="37" x="472" y="1608.7529">REST</text><path d="M412,1660.2031 L422,1660.2031 C437,1660.2031 437,1603.9063 452,1603.9063 L462,1603.9063 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="63" x="462" y="1642.0547"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="39" x="472" y="1665.0498">SOAP</text><path d="M412,1660.2031 L422,1660.2031 C437,1660.2031 437,1660.2031 452,1660.2031 L462,1660.2031 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="87" x="462" y="1698.3516"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="63" x="472" y="1721.3467">GraphQL</text><path d="M412,1660.2031 L422,1660.2031 C437,1660.2031 437,1716.5 452,1716.5 L462,1716.5 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M319,1772.7969 L329,1772.7969 C344,1772.7969 344,1660.2031 359,1660.2031 L369,1660.2031 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="107" x="369" y="1839.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="87" x="379" y="1862.0889">Frameworks</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="158" x="526" y="1810.9453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138" x="536" y="1833.9404">Spring/Spring Boot</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="105" x="734" y="1754.6484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="744" y="1777.6436">Spring Core</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="892" y="1768.4951">DI</text><path d="M839,1772.7969 L849,1772.7969 C864,1772.7969 864,1763.6484 879,1763.6484 L889,1763.6484 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="30" x="892" y="1786.792">AOP</text><path d="M839,1772.7969 L849,1772.7969 C864,1772.7969 864,1781.9453 879,1781.9453 L889,1781.9453 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M684,1829.0938 L694,1829.0938 C709,1829.0938 709,1772.7969 724,1772.7969 L734,1772.7969 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="108" x="734" y="1810.9453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="744" y="1833.9404">Spring Web</text><path d="M684,1829.0938 L694,1829.0938 C709,1829.0938 709,1829.0938 724,1829.0938 L734,1829.0938 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="142" x="734" y="1867.2422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="122" x="744" y="1890.2373">Spring Securities</text><path d="M684,1829.0938 L694,1829.0938 C709,1829.0938 709,1885.3906 724,1885.3906 L734,1885.3906 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M476,1857.2422 L486,1857.2422 C501,1857.2422 501,1829.0938 516,1829.0938 L526,1829.0938 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="157" x="526" y="1867.2422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133" x="536" y="1890.2373">Micronaut/Quarkus</text><path d="M476,1857.2422 L486,1857.2422 C501,1857.2422 501,1885.3906 516,1885.3906 L526,1885.3906 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="69" x="526" y="1923.5391"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="536" y="1946.5342">Vert.x</text><path d="M476,1857.2422 L486,1857.2422 C501,1857.2422 501,1941.6875 516,1941.6875 L526,1941.6875 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M319,1772.7969 L329,1772.7969 C344,1772.7969 344,1857.2422 359,1857.2422 L369,1857.2422 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,1772.7969 256,1772.7969 L266,1772.7969 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="82" x="266" y="2007.9844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="276" y="2030.9795">Desktop</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="66" x="398" y="1979.8359"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="408" y="2002.8311">JavaFX</text><path d="M348,2026.1328 L358,2026.1328 C373,2026.1328 373,1997.9844 388,1997.9844 L398,1997.9844 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="104" x="398" y="2036.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="408" y="2059.1279">Swing/AWT</text><path d="M348,2026.1328 L358,2026.1328 C373,2026.1328 373,2054.2813 388,2054.2813 L398,2054.2813 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,2026.1328 256,2026.1328 L266,2026.1328 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="95" x="266" y="2261.3203"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75" x="276" y="2284.3154">Databases</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="55" x="411" y="2092.4297"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35" x="421" y="2115.4248">JDBC</text><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2110.5781 401,2110.5781 L411,2110.5781 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="73" x="411" y="2148.7266"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="49" x="421" y="2171.7217">R2DBC</text><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2166.875 401,2166.875 L411,2166.875 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="120" x="411" y="2205.0234"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="421" y="2228.0186">Hibernate/JPA</text><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2223.1719 401,2223.1719 L411,2223.1719 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="109" x="411" y="2261.3203"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="421" y="2284.3154">Spring Data</text><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2279.4688 401,2279.4688 L411,2279.4688 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="86" x="411" y="2317.6172"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="421" y="2340.6123">Querydsl</text><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2335.7656 401,2335.7656 L411,2335.7656 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="138" x="411" y="2373.9141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="421" y="2396.9092">Connection Pool</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="602" y="2387.7607">HikariCP</text><path d="M549,2392.0625 L559,2392.0625 C574,2392.0625 574,2382.9141 589,2382.9141 L599,2382.9141 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="37" x="602" y="2406.0576">C3P0</text><path d="M549,2392.0625 L559,2392.0625 C574,2392.0625 574,2401.2109 589,2401.2109 L599,2401.2109 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2392.0625 401,2392.0625 L411,2392.0625 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="134" x="411" y="2430.2109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110" x="421" y="2453.2061">Migration Tools</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="598" y="2444.0576">Flyway</text><path d="M545,2448.3594 L555,2448.3594 C570,2448.3594 570,2439.2109 585,2439.2109 L595,2439.2109 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="598" y="2462.3545">Liquibase</text><path d="M545,2448.3594 L555,2448.3594 C570,2448.3594 570,2457.5078 585,2457.5078 L595,2457.5078 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M361,2279.4688 L371,2279.4688 C386,2279.4688 386,2448.3594 401,2448.3594 L411,2448.3594 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,2279.4688 256,2279.4688 L266,2279.4688 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="129" x="266" y="2514.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="276" y="2537.6514">Search Engines</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="120" x="445" y="2486.5078"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="455" y="2509.5029">Elastic Search</text><path d="M395,2532.8047 L405,2532.8047 C420,2532.8047 420,2504.6563 435,2504.6563 L445,2504.6563 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="52" x="445" y="2542.8047"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="455" y="2565.7998">Solr</text><path d="M395,2532.8047 L405,2532.8047 C420,2532.8047 420,2560.9531 435,2560.9531 L445,2560.9531 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,2532.8047 256,2532.8047 L266,2532.8047 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="74" x="266" y="2655.3984"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="276" y="2678.3936">Testing</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="85" x="390" y="2599.1016"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="400" y="2622.0967">Unit Test</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="528" y="2612.9482">JUnit/TestNG</text><path d="M475,2617.25 L485,2617.25 C500,2617.25 500,2608.1016 515,2608.1016 L525,2608.1016 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="145" x="528" y="2631.2451">Mockito/PowerMock</text><path d="M475,2617.25 L485,2617.25 C500,2617.25 500,2626.3984 515,2626.3984 L525,2626.3984 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M340,2673.5469 L350,2673.5469 C365,2673.5469 365,2617.25 380,2617.25 L390,2617.25 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="137" x="390" y="2655.3984"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="400" y="2678.3936">Integration Test</text><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="132" x="577" y="2655.3984"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="587" y="2678.3936">Testcontainers</text><path d="M527,2673.5469 L537,2673.5469 C552,2673.5469 552,2673.5469 567,2673.5469 L577,2673.5469 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M340,2673.5469 L350,2673.5469 C365,2673.5469 365,2673.5469 380,2673.5469 L390,2673.5469 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="82" x="390" y="2711.6953"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="400" y="2734.6904">E2E Test</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="66" x="525" y="2734.6904">Selenium</text><path d="M472,2729.8438 L482,2729.8438 C497,2729.8438 497,2729.8438 512,2729.8438 L522,2729.8438 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M340,2673.5469 L350,2673.5469 C365,2673.5469 365,2729.8438 380,2729.8438 L390,2729.8438 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,2673.5469 256,2673.5469 L266,2673.5469 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="119" x="266" y="2965.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="276" y="2988.0264">MicroServices</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="49" x="435" y="2824.2891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="445" y="2847.2842">RPC</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="57" x="534" y="2767.9922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="37" x="544" y="2790.9873">REST</text><path d="M484,2842.4375 L494,2842.4375 C509,2842.4375 509,2786.1406 524,2786.1406 L534,2786.1406 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="62" x="534" y="2824.2891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="38" x="544" y="2847.2842">gRPC</text><path d="M484,2842.4375 L494,2842.4375 C509,2842.4375 509,2842.4375 524,2842.4375 L534,2842.4375 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="65" x="534" y="2880.5859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="41" x="544" y="2903.5811">Thrift</text><path d="M484,2842.4375 L494,2842.4375 C509,2842.4375 509,2898.7344 524,2898.7344 L534,2898.7344 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M385,2983.1797 L395,2983.1797 C410,2983.1797 410,2842.4375 425,2842.4375 L435,2842.4375 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="134" x="435" y="2993.1797"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114" x="445" y="3016.1748">Message Broker</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="61" x="619" y="2936.8828"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="41" x="629" y="2959.8779">Kafka</text><path d="M569,3011.3281 L579,3011.3281 C594,3011.3281 594,2955.0313 609,2955.0313 L619,2955.0313 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="96" x="619" y="2993.1797"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="72" x="629" y="3016.1748">RabbitMQ</text><path d="M569,3011.3281 L579,3011.3281 C594,3011.3281 594,3011.3281 609,3011.3281 L619,3011.3281 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#D3D3D3" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="93" x="619" y="3049.4766"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="69" x="629" y="3072.4717">ActiveMQ</text><path d="M569,3011.3281 L579,3011.3281 C594,3011.3281 594,3067.625 609,3067.625 L619,3067.625 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M385,2983.1797 L395,2983.1797 C410,2983.1797 410,3011.3281 425,3011.3281 L435,3011.3281 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="218" x="435" y="3105.7734"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="198" x="445" y="3128.7686">Logging/Tracing/Monitoring</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="70" x="706" y="3110.4717">ELK stack</text><path d="M653,3123.9219 L663,3123.9219 C678,3123.9219 678,3105.625 693,3105.625 L703,3105.625 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="87" x="706" y="3128.7686">Prometheus</text><path d="M653,3123.9219 L663,3123.9219 C678,3123.9219 678,3123.9219 693,3123.9219 L703,3123.9219 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="56" x="706" y="3147.0654">Grafana</text><path d="M653,3123.9219 L663,3123.9219 C678,3123.9219 678,3142.2188 693,3142.2188 L703,3142.2188 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M385,2983.1797 L395,2983.1797 C410,2983.1797 410,3123.9219 425,3123.9219 L435,3123.9219 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="51" x="435" y="3162.0703"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="27" x="445" y="3185.0654">K8S</text><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="118" x="536" y="3162.0703"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="546" y="3185.0654">Service Mesh</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="31" x="707" y="3175.917">Istio</text><path d="M654,3180.2188 L664,3180.2188 C679,3180.2188 679,3171.0703 694,3171.0703 L704,3171.0703 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="707" y="3194.2139">Linkerd</text><path d="M654,3180.2188 L664,3180.2188 C679,3180.2188 679,3189.3672 694,3189.3672 L704,3189.3672 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M486,3180.2188 L496,3180.2188 C511,3180.2188 511,3180.2188 526,3180.2188 L536,3180.2188 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M385,2983.1797 L395,2983.1797 C410,2983.1797 410,3180.2188 425,3180.2188 L435,3180.2188 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,2983.1797 256,2983.1797 L266,2983.1797 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="110" x="266" y="3274.6641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="90" x="276" y="3297.6592">Cloud Native</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="124" x="426" y="3218.3672"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="104" x="436" y="3241.3623">Cloud Provider</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="33" x="603" y="3223.0654">AWS</text><path d="M550,3236.5156 L560,3236.5156 C575,3236.5156 575,3218.2188 590,3218.2188 L600,3218.2188 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="41" x="603" y="3241.3623">Azure</text><path d="M550,3236.5156 L560,3236.5156 C575,3236.5156 575,3236.5156 590,3236.5156 L600,3236.5156 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="30" x="603" y="3259.6592">GCP</text><path d="M550,3236.5156 L560,3236.5156 C575,3236.5156 575,3254.8125 590,3254.8125 L600,3254.8125 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M376,3292.8125 L386,3292.8125 C401,3292.8125 401,3236.5156 416,3236.5156 L426,3236.5156 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="98" x="426" y="3274.6641"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="436" y="3297.6592">Serverless</text><path d="M376,3292.8125 L386,3292.8125 C401,3292.8125 401,3292.8125 416,3292.8125 L426,3292.8125 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#FECC9D" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="115" x="426" y="3330.9609"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="436" y="3353.9561">Spring Cloud</text><path d="M376,3292.8125 L386,3292.8125 C401,3292.8125 401,3349.1094 416,3349.1094 L426,3349.1094 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,3292.8125 256,3292.8125 L266,3292.8125 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="140" x="266" y="3443.5547"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="276" y="3466.5498">Coding Practices</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="101" x="456" y="3387.2578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="466" y="3410.2529">Clean Code</text><path d="M406,3461.7031 L416,3461.7031 C431,3461.7031 431,3405.4063 446,3405.4063 L456,3405.4063 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="105" x="456" y="3443.5547"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="466" y="3466.5498">Refactoring</text><path d="M406,3461.7031 L416,3461.7031 C431,3461.7031 431,3461.7031 446,3461.7031 L456,3461.7031 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="128" x="456" y="3499.8516"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="466" y="3522.8467">Design Pattern</text><path d="M406,3461.7031 L416,3461.7031 C431,3461.7031 431,3518 446,3518 L456,3518 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,3461.7031 256,3461.7031 L266,3461.7031 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="77" x="266" y="3584.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57" x="276" y="3607.292">Caching</text><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="59" x="393" y="3556.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="39" x="403" y="3579.1436">Redis</text><path d="M343,3602.4453 L353,3602.4453 C368,3602.4453 368,3574.2969 383,3574.2969 L393,3574.2969 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="97" x="393" y="3612.4453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77" x="403" y="3635.4404">Memcache</text><path d="M343,3602.4453 L353,3602.4453 C368,3602.4453 368,3630.5938 383,3630.5938 L393,3630.5938 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,3602.4453 256,3602.4453 L266,3602.4453 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><rect fill="#DDE8FA" height="36.2969" rx="12.5" ry="12.5" style="stroke:#000000;stroke-width:1.0;" width="142" x="266" y="3668.7422"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="276" y="3691.7373">Keep Learning :)</text><path d="M216,1946.9648 L226,1946.9648 C241,1946.9648 241,3686.8906 256,3686.8906 L266,3686.8906 " fill="none" style="stroke:#000000;stroke-width:1.0;"/><!--MD5=[0ba1102152d1307044f6759a571efc59] | |
@startmindmap | |
<style> | |
mindmapDiagram { | |
node { | |
BackgroundColor #dde8fa | |
LineColor black | |
LineThickness 1.0 | |
} | |
arrow { | |
LineColor black | |
} | |
.good_to_know { | |
BackgroundColor #fecc9d | |
} | |
.possibilities { | |
BackgroundColor lightgray | |
} | |
} | |
</style> | |
* Legends | |
* Essential | |
* Good to know <<good_to_know>> | |
* Possibilities <<possibilities>> | |
* Java Learning Path @ 2022 | |
* Prerequisites | |
* Git | |
* Linux | |
* Docker | |
* Algorithm | |
* SQL | |
* Http/Https | |
* OWASP Top Ten <<good_to_know>> | |
*_ https://owasp.org/www-project-top-ten/ | |
* The Twelve Factors <<good_to_know>> | |
*_ https://12factor.net/ | |
* IDEs | |
* IntelliJ | |
* Eclipse/NetBeans <<possibilities>> | |
* Build Tools | |
* Maven | |
* Gradle <<good_to_know>> | |
* Ant <<possibilities>> | |
* Java Core | |
* Collections | |
*_ List | |
*_ Map | |
*_ Set | |
*_ Queue | |
* IO | |
* Concurrency | |
*_ Thread | |
*_ Thread Pool | |
* Java 8+ | |
* Lambda | |
* Streams | |
* java.time | |
* Other Enhancements <<good_to_know>> | |
* JVM | |
*_ GC | |
* Utility Libraries | |
* Apache Commons | |
* Jackson JSON | |
* Log4j/Logback/slf4j | |
* RxJava <<good_to_know>> | |
* Web | |
* API | |
* REST | |
* SOAP <<possibilities>> | |
* GraphQL <<good_to_know>> | |
* Frameworks | |
* Spring/Spring Boot | |
* Spring Core | |
*_ DI | |
*_ AOP | |
* Spring Web | |
* Spring Securities | |
* Micronaut/Quarkus <<good_to_know>> | |
* Vert.x <<good_to_know>> | |
* Desktop | |
* JavaFX | |
* Swing/AWT <<possibilities>> | |
* Databases | |
* JDBC | |
* R2DBC <<good_to_know>> | |
* Hibernate/JPA | |
* Spring Data <<good_to_know>> | |
* Querydsl <<good_to_know>> | |
* Connection Pool | |
*_ HikariCP | |
*_ C3P0 | |
* Migration Tools <<good_to_know>> | |
*_ Flyway | |
*_ Liquibase | |
* Search Engines | |
* Elastic Search | |
* Solr <<possibilities>> | |
* Testing | |
* Unit Test | |
*_ JUnit/TestNG | |
*_ Mockito/PowerMock | |
* Integration Test | |
* Testcontainers <<good_to_know>> | |
* E2E Test | |
*_ Selenium | |
* MicroServices | |
* RPC | |
* REST | |
* gRPC <<good_to_know>> | |
* Thrift <<good_to_know>> | |
* Message Broker | |
* Kafka | |
* RabbitMQ <<good_to_know>> | |
* ActiveMQ <<possibilities>> | |
* Logging/Tracing/Monitoring | |
*_ ELK stack | |
*_ Prometheus | |
*_ Grafana | |
* K8S <<good_to_know>> | |
* Service Mesh <<good_to_know>> | |
*_ Istio | |
*_ Linkerd | |
* Cloud Native | |
* Cloud Provider | |
*_ AWS | |
*_ Azure | |
*_ GCP | |
* Serverless <<good_to_know>> | |
* Spring Cloud <<good_to_know>> | |
* Coding Practices | |
* Clean Code | |
* Refactoring | |
* Design Pattern | |
* Caching | |
* Redis | |
* Memcache | |
* Keep Learning :) | |
@endmindmap | |
PlantUML version 1.2022.6beta5(Unknown compile time) | |
(GPL source distribution) | |
Java Runtime: Java(TM) SE Runtime Environment | |
JVM: Java HotSpot(TM) 64-Bit Server VM | |
Default Encoding: UTF-8 | |
Language: en | |
Country: US | |
--></g></svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
https://github.com/s4kibs4mi/java-developer-roadmap | |
https://medium.com/javarevisited/the-java-programmer-roadmap-f9db163ef2c2 | |
tool: https://plantuml.com/mindmap-diagram |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment