Skip to content

Instantly share code, notes, and snippets.

@quan-nh
Last active June 18, 2022 07:29
Show Gist options
  • Save quan-nh/b9947cef85a139a56f0280c121e90acb to your computer and use it in GitHub Desktop.
Save quan-nh/b9947cef85a139a56f0280c121e90acb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
<?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>
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