2026. najnovija i najsveobuhvatnija putanja za učenje Java-e, verzija „jedan potez" (preporuka za čuvanje 🔥)
Iako sam formalno obrazovan u oblasti informatike, iskreno da kažem, kroz više od deset godina su se i sama Java i njeni prateći alati i okviri drastično promenili. I ja neprestano učim nova znanja i odbacujem zastarela.
Sad kad se osvrnem, vidim da sam prošao kroz mnogo stranputica i potrošio mnogo vremena — zaista je i žao i teško!
Među mojim čitaocima veliki deo čine Java početnici. Pošto su na samom startu, pod ogromnim su pritiskom i ne mogu sebi dozvoliti skupo probanje i grešku. Zato treba da pronađu efikasniju putanju učenja i skup delotvornih metoda — u protivnom, lako se desi da sav trud propadne.
Ali dobra vest je da su materijali za učenje Java-e izuzetno bogati. Uz samo malo pažnje i sređivanja, može se naći efikasan put učenja. Poslednje dve godine neprestano sam sređivao sopstvene ideje i podelio mnoštvo članaka o Javi, ali su bili previše razbacani. Zato ću iskoristiti ovu priliku da sve ponovo sredim, nadajući se da će vam pomoći u učenju.
Pre učenja Java-e možete prvo naučiti C
Za studente formalnog informatičkog smera preporučujem da, pre nego što pređete na Java-u, naučite C. Dok sam bio na fakultetu, udžbenik je bio „Thinking in Java", ali iskreno, ta knjiga nije prijateljski nastrojena prema početnicima.

Programski jezici su međusobno srodni. C, kao matrica iz koje je nastala Java, zaista vredi da ga formalci nauče radi izgradnje osnova. Za nas programere važi da učimo računarsku nauku, a ne programske jezike — jezik je samo alat, bez hijerarhije boljih i lošijih. Ja sam, recimo, učio Java-u, C, Ruby, JavaScript itd., i zaista među njima ima mnogo sličnosti. Ako ste učili JavaScript, lako ćete razumeti Java Lambda izraze.
Posebnost C-a je u tome što je verovatno jedini medij najpogodniji za učenje niza računarskih osnova. Na primer, Linux operativni sistem je pisan u C; računarske mreže sadrže mnoštvo mrežnih protokola sa različitim definicijama zaglavlja, i ta polja je pomoću C-ovih union i struct vrlo lako obraditi. Iako je Java izbacila pokazivače kao dosadne stvari, da budemo jasni — referenca je zapravo vrlo slična pokazivaču. Ko razume pokazivače u C-u, lako će razumeti reference u Java-i.
Naravno, pošto je apstrakcija C-a na višem nivou, i učenje zahteva određeni napor. Za početnike sa formalnog smera preporučujem kurs „C programiranje" profesora Weng Kaija.

Bilibili adresa: https://www.bilibili.com/video/BV19W411B7w1
Za one koji više vole knjige, preporučujem samo jednu: „Ruan Yifeng: uvodni tutorijal za C". Pročitao sam ga čim je izašao i mnogo sam naučio! Može se reći da je to najbolji uvodni tutorijal za C koji sam do sada video — bez konkurencije!

Tokom učenja zapamtite jednu stvar: obavezno mnogo vežbajte, mnogo vežbajte, mnogo vežbajte. To važi kako za učenje C-a, tako i za Java-u. Lepo se kaže: razumevanje + deset hiljada linija koda = savladano. Bilo da učite iz video snimaka ili iz knjiga, najveći strah je da vam oči vide, a ruke ne mogu — pomislite da ste razumeli, a zapravo ste udaljeni deset hiljada linija koda od savladavanja.
Za one koji nisu sa formalnog smera, ako je vreme ograničeno, možete odmah preći na Java-u. Mislim da, uz dobar izbor materijala za učenje, to nije nikakav problem.
Softver koji treba instalirati pre učenja Java-e
Da bi se dobro radilo, alat mora biti naoštren; pre bitke moramo opremiti oružje.
JDK je skraćenica od Java Development ToolKit, odnosno Java razvojni komplet. JDK je srž cele Java-e i obuhvata Java izvršno okruženje (Java Runtime Environment, kraće JRE), Java alate (poput javac, java, javap itd.) i osnovne Java klase (poput rt.jar). Obavezno ga instalirajte pre učenja Java-e.
Već je 2026. godina — zaista nema potrebe kucati kod u Notepadu. Sreo sam previše kurseva, uključujući moje profesore sa fakulteta, koji su iznova ponavljali da prvi program obavezno morate otkucati u Notepadu i uspešno ga pokrenuti iz komandne linije.
Posle toliko godina, mislim da je taj savet zaista užasan. Kako Notepad i komandna linija mogu da budu za početnike? Mora biti barem iskusan veteran! Tada sam i sam umalo odustao zbog Notepada i komandne linije.
IntelliJ IDEA je, bez diskusije, najbolji IDE za pisanje Java programa. Za početnike je zajednička (Community) edicija sasvim dovoljna.

Ako ga koristite prvi put, preporučujem da pročitate „IntelliJ IDEA Tutorial", koji je otvorenog koda na GitHub-u.
Maven je alat za upravljanje projektima i automatizaciju izgradnje, zasnovan na konceptu modela objekta projekta (POM), kojim se može upravljati izgradnjom, izveštavanjem i dokumentacijom projekta. Kao prilično uspešan open-source projekat unutar Apache, Maven prvenstveno služi za izgradnju projekata zasnovanih na Java-i, upravljanje zavisnostima i informacijama o projektu. Sa Mavenom je upravljanje bibliotekama trećih strana postalo mnogo udobnije.
Tutorijal za instalaciju i konfiguraciju pročitajte u mom članku Za 10 minuta savladajte Maven, alat za izgradnju projekata.
Dodatno, preporučujem da koristite GitHub/Gitee kao privatno spremište koda — izuzetno zgodno, besplatno i uz sinhronizaciju u oblaku. Ako još uvek ne poznajete Git komande, možete preuzeti GitHub Desktop za jednostavan rad.
Kada instalirate ovaj skup softvera, u suštini ste opremljeni svim alatima neophodnim za Java razvoj. Zatim možete hrabro ući u svet Java-e.
Šta je ključ u učenju Java-e
„Tri metra leda se ne stvaraju u jednom danu" — da biste Java-u zaista savladali, morate uložiti dosta truda. Java ima mnogo gradivnih jedinica, a vreme nam je ograničeno, što znači da možemo birati samo ključno i praktično, ne sve. Neke ređe gradivne jedinice možete slobodno preskočiti.
Ovde ću vam prikazati navigacionu mapu „Ergeove Java putanje napredovanja": glavne kategorije su Java jezgro, Java enterprise razvoj, baze podataka, računarske osnove, traženje posla/intervju i resursi za učenje. U suštini, svi Java resursi za učenje koji vam trebaju nalaze se ovde, a šta fali, to ću naknadno dodati.

Java je objektno orijentisani programski jezik, pa su tri glavne odlike — uvezivanje (enkapsulacija), nasleđivanje i polimorfizam — obavezne. Zatim idu obrada izuzetaka, IO, kolekcije, konkurentno programiranje i Java virtuelna mašina. Kada savladate ovaj sadržaj, može se reći da ste potpuno savladali jezgro same Java-e.
Kako učiti ovo gradivo? Naravno, direktno preko „Ergeove Java putanje napredovanja" — sadržaj je veoma sveobuhvatan i čvrst. Evo snimka ekrana za ilustraciju.

Zapamtite našu adresu:
Najteži delovi su konkurentno programiranje i JVM. Očigledno se ova dva dela ne uče lako, ali upravo oni najviše pokazuju koliko Java backend inženjer zaista vredi.

Kompletna putanja učenja konkurentnog programiranja: https://javasi.dev/xuexiluxian/java/thread.html

Kompletna putanja učenja JVM-a: https://javasi.dev/xuexiluxian/java/jvm.html
Pošto učite sami, toplo preporučujem da otkucate sav kod iz tutorijala, naročito u početnoj fazi. Pošto nemate, kao na poslu, mnogo projekata za praksu, ne dobijate brzu povratnu informaciju, pa vođenje beleški postaje izuzetno važno. Takođe, obavezno kategorizujte i čuvajte svoje male demo primere, kako biste ih kasnije brzo našli — naročito neke male trikove koji će vam koristiti, a vremenom se mogu pretvoriti u sopstvenu biblioteku alata.
Obavezno pažljivo čuvajte male demo primere koje ste napisali, posebno one koji već rade — nemojte ih bacati, možda će jednog dana biti od velike pomoći. Po mom iskustvu, tokom učenja, iako neku gradivnu jedinicu u tom trenutku izuzetno dobro razumete, s vremenom ili uz promenu razvojnog okruženja može se desiti da propadne — kod deluje isti, ali ne radi. Ako tada pri ruci imate takav demo, otvorite ga, pogledate, čak i prekopirate i isprobate — problem se odmah rešava.
Većina Java programera će se baviti JavaWeb razvojom. Za JavaWeb se ne može a da se ne oslonite na porodicu Spring okvira (ranije SSM, danas Spring Boot). Ali ma kako se stvari menjale, sržni koncepti Springa su i dalje IoC i AOP — inverzija kontrole i aspektno orijentisano programiranje.
Za praktičan rad sa Spring Bootom, možete početi od praktičnog projekta Codingcat.
Zatim pređite na praktični projekat zajednice — sistem zasnovan na tehnološkom steku Spring Boot, MyBatis-Plus, MySQL, Redis, ElasticSearch, MongoDB, Docker, RabbitMQ itd.

Zatim na mikro-servisni projekat koji koristi najpopularnije aktuelne enterprise okvire — SpringCloud, Gateway, Nacos, Sentinel itd. — i predstavlja potpun projekat radnog toka.

Evo vam prikaz tehnološkog steka koji se koristi na backendu — sve su veoma glavne tehnologije.

Ako ste već savladali Spring, SpringMVC, MyBatis, Spring Boot itd., bićete u stanju da razvijate neke zaista korisne projekte — sistem za upravljanje studentima, sistem prodavnice, sistem bloga, sistem za „flash sale" itd.
Naravno, za potpun Java Web projekat, izvesno predznanje frontenda je neophodno, ali nemojte previše pažnje posvetiti tome — ružan interfejs ne smeta, fokus je na Java backendu.
Zatim mikro-servisi: Spring Cloud, Dubbo, Zookeeper, Nacos, Kafka, RabbitMQ, ElasticSearch, MongoDB, Redis itd. — to su obavezne stavke za napredni nivo.
Učenje programiranja je proces od haosa do reda. Ako naiđete na gradivo koje ne razumete, nemojte sumnjati u to da li ste vični programiranju — samo ga preskočite. To je sasvim normalno — morate imati srce koje nakon svakog poraza postaje hrabrije.
Koje Java gradivo više ne treba učiti
Kada je Zhang Wuji učio Taiči, njegov učitelj Zhang Sanfeng mu je dovikivao da obavezno zaboravi sve što je ranije naučio — što više zaboravi, to brže uči. Isto važi i za samostalno učenje Java-e: prvo morate znati koje Java gradivo više ne treba učiti. Tehnologija se ažurira brzo kao raketa, pa su neki Java elementi već odavno zastareli. Ako ne znate da odbacite suvišno, učenje postaje preteško.
1) AWT i Swing
Već je 2026. — ko još razvija desktop aplikacije sa AWT i Swing? Dovoljno je savladati backend razvoj. Sada je doba mobilnog interneta: uglavnom mobilne aplikacije, mini-programi i web stranice čine frontend. Fokus učenja možete prebaciti na Spring Boot, Spring Cloud, Netty, Dubbo, Zookeeper, MySQL.
2) Applet
Kao tehnologija plugina za web stranice, Applet nikada nije zaista ni postao popularan.
3) XML
XML još uvek nije eliminisan i ima dosta mesta gde se koristi — na primer, u Maven pom.xml fajlu. Ali kao format za prenos podataka, postepeno ga zamenjuje JSON. Što se tiče složenih XML API-ja za obradu (npr. XPath), nema potrebe za njihovim učenjem — ako zatreba, nadoknadićete naknadno.
4) JDBC
Lično ne preporučujem učenje niskonivojskog JDBC-a, naročito za samouke programere sa ograničenim vremenom. Radije uložite taj napor u MyBatis. Naravno, ako zaista imate vremena i želite izgraditi osnove, proučavanje nije bez vrednosti.
5) Struts
Struts je nekada bio odličan MVC okvir; sa čisto tehničkog stanovišta, prilično je dobar. Ali otkako se pojavio SpringMVC, Struts je „izgubio bitku".
6) Hibernate
Kada sam tek počeo da radim (2010. godine), perzistentni okvir koji se koristio bio je Hibernate. Ali vremenom se pokazalo da je Hibernate previše težak, sa visokom cenom učenja, pa ga je zamenio laki MyBatis. Danas postoji mišljenje da je takvo mapiranje objekata i relacija previše kruto i da je fleksibilnije pisati SQL direktno — recimo, laki okvir JFinal, koji mi se sviđa, više naginje pisanju SQL-a u Java kodu, za razliku od MyBatis i Hibernate koji ga pišu u XML fajlovima.
7) JSP
U praksi, JSP se uglavnom koristi kao V (View) sloj u MVC modelu. Nastao je da bi Java backend programerima olakšao razvoj frontenda, ali sa razvojem tehnologije i popularnošću razdvajanja frontenda i backenda, životni vek JSP-a je istekao.
8) Servlet
Iako je temelj SpringMVC-a zasnovan na Servletu i predstavlja kamen temeljac JavaWeb kontejnera, Servlet je zaista zastareo. Ako kasnije imate slobodnog vremena i želite da se zadubite, možete — donekle će vam pomoći oko primanja zahteva na serverskoj strani i slanja odgovora ka frontendu.
Možda moje viđenje nije sasvim objektivno i ne vodi dovoljno računa o osnovnom znanju, ali samostalnom učeniku ipak treba kontrolisati vremenske troškove. Ukratko, treba da uštedimo više vremena za ključno gradivo iz prethodnih sekcija!
Koje znanje još treba dopuniti uz Java-u
1) Strukture podataka i algoritmi
Bez sumnje, strukture podataka su programeru izuzetno važne. Ponavljam: program = struktura podataka + algoritam — ovo važi u svako doba.
Većina kurseva iz struktura podataka fokusira se na to kako matematički implementirati strukturu podataka, ali u praksi većina glavnih jezika već ima ugrađene uobičajene strukture podataka — recimo Java. Drugim rečima, većini programera u realnom radu retko kad treba da od nule implementira strukturu podataka. Zato nam je dovoljno sledeće:
Poznavanje koncepta uobičajenih struktura podataka — niz, stek, povezana lista, heš tabela itd.
Razumevanje razlika između uobičajenih struktura podataka — npr. ArrayList i LinkedList.
Praćenje perifernih algoritama nad uobičajenim strukturama podataka — npr. kako pretraživati List i Map.
Praćenje mesta na kojima se lako greši pri upotrebi struktura podataka — npr. bezbednost niti.
Kurs „Strukture podataka" Univerziteta Zhejiang na Bilibili-u je veoma dobar — sistematski i klasičan.

Adresa videa: https://www.bilibili.com/video/BV1JW411i731
Što se tiče oblasti koju poznajem, većina uobičajenih poslovnih sistema ne zahteva previše složene algoritme, pa nisam uložio previše vremena u algoritme. Ali ako se budete bavili nekim specifičnim područjima, a algoritmi vam nisu jača strana, može se reći da ćete „napredovati milimetrima". Na primer, obrada slika — bilo da je u pitanju transformacija ili pojačavanje, neizostavno se koriste transformacije matrica, pa se nužno uvodi linearna algebra, a dublje ulazeći otvaraju se i druga područja znanja.
Zato učenje algoritama zavisi od situacije. Ako želite na poziciju u algoritmima, knjige poput „Algoritmi (4. izdanje)", „Uvod u algoritme", „Lepota matematike", „Programerski biseri" i „Mač koji pokazuje" sve morate strpljivo prežvakati.
Ako želite da vežbate na LeetCode-u, možete pogledati i Ergeove beleške za rešavanje LeetCode zadataka.

2) Dizajn paterni
Smtram da su dizajn paterni obavezan most koji juniori i srednji programeri moraju preći da bi postali seniori. Mnogi programeri u početku jure jako, ali kasnije posustaju — upravo zbog dizajn paterna. U prvim godinama rada većina programera je u fazi savladavanja jezika, odnosno u fazi „veštine", a potom sledi faza „umeća". U svetu programiranja, tipičan predstavnik „umeća" su upravo „dizajn paterni".
Za učenje dizajn paterna preporučujem „Ponovo uči Java dizajn paterni" mog dobrog prijatelja Xiao Fuge-a. Sajt Refactoring Guru koji sam ranije preporučio je takođe vrlo zgodan.

Adresa za čitanje onlajn: https://refactoring.guru
3) JDK izvorni kod
Na intervjuima intervjueri posebno vole da pitaju o izvornom kodu — klasična pitanja o HashMap:
- Zašto je faktor učitavanja 0,75?
- Zašto je prag za prelazak povezane liste u crveno-crno stablo baš 8?
- Koja je osnovna struktura podataka ispod HashMap-a?
- Koje su metode rešavanja heš kolizije?
- Zašto je dužina niza HashMap-a stepen dvojke?
- Kako se HashMap širi?
Na ova pitanja tačan odgovor možete dobiti samo iz izvornog koda, zar ne?
Jedan mi je student rekao rečenicu koja mi je duboko ostala u sećanju: „Šta se ne može rešiti? Samo ako pristaneš da čitaš izvorni kod." Brat Yang je objavio video u kojem detaljno objašnjava kako čitati JDK izvorni kod — preporučujem ga.

Adresa videa: https://www.bilibili.com/video/BV1V7411U78L
Naravno, i na Ergeovoj Java putanji napredovanja ćete naći razlaganje JDK izvornog koda, uključujući deo o okviru kolekcija.

4) Operativni sistemi, arhitektura računara i računarske mreže
O važnosti ova tri predmeta ne treba mnogo pričati. Ako imate vremena i energije, preporučujem da ih učite po sledećoj putanji.
Preporučujem laboratorijski kurs „Operativni sistemi" Harbinskog instituta tehnologije (HIT), koji obuhvata osnove operativnih sistema, procese i niti, upravljanje memorijom, periferne uređaje i sisteme fajlova.

Adresa videa: https://www.bilibili.com/video/BV1js411b7vg
Odgovarajuća pitanja za intervju sam takođe sredio, u članku Intervju pitanja — Operativni sistemi.

Ako želite dublje u arhitekturu računara, preporučujem otvoreni kurs „Arhitektura računara" Pekinškog univerziteta — sa vrlo visokom opštom ocenom.

Adresa videa: https://www.coursera.org/learn/jisuanji-zucheng
Za računarske mreže preporučujem „Mikrokurs računarskih mreža" nastavnika sa Univerziteta nauke i tehnologije Hunan — izuzetno pažljivo urađen, prava retkost.

Adresa videa: https://www.bilibili.com/video/BV1c4411d7jb
Pitanja za intervju nisu izostavljena — stavio sam ih u Intervju pitanja — Računarske mreže.

5) Upravljanje projektima i arhitektura
Proces izrade softverskog sistema ne obuhvata samo kodiranje — tu su i raspored projekata, koordinacija tima i niz netehničkih faktora. Ako želite od programera preći na menadžment, postati team leader ili razvojni menadžer, znanje iz softverskog inženjerstva mora pratiti korak.
Preporučujem tri knjige: „Izgradnja softvera", „Mitski čovek-mesec" i „Peopleware". Iako su godine ostavile trag, i dalje vrede dubokog čitanja. Naravno, za softversko inženjerstvo najbolji način učenja je posmatranje — posmatrajte kako vaš tim rešava inženjerske probleme, razmišljajte, i na kraju formirajte sopstveni pogled na stvari.
Da bi se napisao dobar i lep program, potrebno je proći tri faze.
Prva faza — čvrste osnove. Jednostavno rečeno: tečno savladati sintaksu i okvire, postati „koder" koji može dovršiti razvojne zadatke.
Druga faza — od „kodera" do „inženjera": lokalno, ne samo da funkciju implementirate, već pazite i na dimenzije izvan same funkcije — robusnost, nisko sprezanje, proširivost i slično.
Treća faza — od „inženjera" do „arhitekte": ne samo da lokalno procenjujete kvalitet modula, već upravljate na nivou celog sistema, raspoređujete prioritete resursa i osiguravate da sistem ne propadne.
Da biste postali odličan arhitekta, pored sopstvenog truda potrebno je i malo sreće. Možda samo čitanje nije dovoljno, ali ove klasične knjige ipak treba pročitati — doneće ogromnu pomoć u svakodnevnom radu.
- „Code Complete"
- „Refaktorisanje: unapređenje dizajna postojećeg koda"
- „Dizajn softverske arhitekture"
- „Tehnička arhitektura velikih sajtova — ključni principi i analize slučajeva"
Na kraju
Proces učenja je poput penjanja na planinu — oko 80% ljudi će odustati na tom putu. Verujte mi: uz jasan cilj, napor i upornost, uz malo sreće, osvojićete vrh!
Da dodam još jednu stvar — većina vas uči Java-u radi čega? Mislim da većina ne iz interesovanja, zar ne? Radi pronalaska posla. Tada je krajnji korak da, pre traženja posla, odradite krug intervju pitanja, čime se šanse za dobijanje posla znatno povećavaju. Na Ergeovoj Java putanji napredovanja pažljivo smo pripremili i deo sa intervju pitanjima.

Sa ove slike se oseti koliko je sveobuhvatno i koliko je sjajno.
Adresa za učenje: Intervju pitanja
Iskreno se nadam da ćete na putu učenja Java-e biti malo veseliji, malo čistiji, da ćete manje slušati i čitati one tekstove koji stvaraju anksioznost — „35 godina", „diskriminacija po obrazovanju". Smirite se, naučite još malo znanja, ojačajte — to je bolje od svega!
Reči jednog čoveka nužno nisu savršene, ali ako vam makar malo pomognu u učenju, i meni je to veoma dovoljno!
Ovoliko čvrstog sadržaja — ne zaboravite da lajkujete i ohrabrite me. Ako imate prijatelja koji uči Java-u, podelite ovaj članak sa njim~
GitHub otvorena zbirka znanja sa preko 17 000 zvezdica — „Ergeova Java putanja napredovanja". Lajkuj i prati
