Z unixu nepotrebujes vediet nic. Naopak postaci, ak budes vediet ako priblizne funguje OS, scheduling, thready, filesystem, sockety a tak dalej. Z JVM aj tak nemozes volat OS napriamo, ci je to Linux, Windows, AIX, BSD, OS/400 alebo System Z, ale vzdy musis ist cez nejake API, kde ti JVMko volania preklada podla danej platformy.
Co ale urcite urobit mozes: nastudovat si, ktore z tych API su "tie lepsie a viac crossplatform friendly". Ono totiz problem je v tom, ze JDK a Java si so sebou nesie kopec historickeho API, ktore je tam z dovodu kompatibility. Tak napr. co sa tyka filesystemov vzdy ma prekvapi, ako moze niekto v roku 2016 pouzivat java.io.File API oproti java.nio.File. Samozrejme niekedy sa inak neda, napr. ked kniznica 3 strany inak nevie, ale to ma byt vynimka.
Je dobre chapat ako funguje JVM, naucit sa citat disassemblovany bytecode - na tieto temy su na roote vyborne clanky od p. Tisnovskeho.
Taktiez, kedze sme v roku 2016, treba mat precitanu knihu "Java concurrency in practice" odpredu-odzadu a byt oboznameny, so vsetkymi konceptami, ktore sa vztahuju na viacvlaknove programovanie na JVM, t.j. ako funguje Java Memory Model, happens-before, volatile a co znamena "immutable" na JVM (odporucam seriu clankov od Jeremyho Masona na tuto temu).
Vnutorny stav, ktory bol dakedy oslavovany benefit objektovo-orientovaneho programovania je na sucasnych multiprocesorovych systemoch najvacsia pohroma.
Podla ma je to dost podstatne, lebo ked si zoberieme, ze
vacsina javistov pise webove aplikacie, ktore uz zo svojej podstaty bezia vo viacvlaknovom prostredi, je az zarazajuce, ako malo z developerov si uvedomuje implikacie tohto faktu, alebo ho jednoducho ignoruje. Osobne som uz riesil niekolko velmi nestatnych race-conditionov po inych ludoch typu - ved to sa predsa nikdy nestane... Hint: nie, relacna databaza skutocne nie je synchronizacna primitiva a to bez ohladu na to tranzakcnu izolaciu.
Java 8 lambdy a monady ako je Streamove API a Optional su uz len ceresnicka na torte, pri ktorej sa javistovi zjezia vlasy, no je zrejme, ze svet sa ubera tymto smerom, takze sa s tym treba oboznamit (aspon s konceptami).
Buildovacie nastroje, to je kapitola sama o sebe: Ant, Maven a Gradle. Maven ma svoje problemy, ale stale je asi najrozsirenejsi, no coraz viac projektov sa presuva na Gradle. Ant je ant
Dufam, ze ti toto ako juniorovi pomoze ako zdroj tipov na dalsie samovzdelavanie.