Da li se još uvek isplati učiti Javu?
Iako je Java već napunila 25 godina, još uvek "nije istrošila svoj mač". U izveštaju Stack Overflow-a o popularnim programskim jezicima 2019. godine, Java se nalazi na petom mestu, a 41% anketiranih programera smatra da je Java i dalje popularan programski jezik.

Upotreba Jave u Kini daleko premašuje onu u inostranstvu, pa Java ima veće tržišno učešće u Kini. Bilo 2020. ili 2021, 2022, 2023. godine, u kratkom roku teško je poljuljati dominantan položaj Jave.
Iako se ovih godina stalno priča da je Java "previše zasićena", mogu samo reći da takvih glasova ima svake godine — samo ih saslušajte i idite dalje.
Mnoge velike internet kompanije koriste Javu. U Kini najpoznatija je svakako Alibaba, a u inostranstvu najpoznatija je svakako Google. Pa zašto je Java tako popularan?
1) Jednostavnost
Java pruža programerima jednostavno i lako iskustvo korišćenja. U poređenju sa drugim objektno orijentisanim jezicima, dizajn i ekosistem biblioteka Jave imaju ogromnu prednost. Java je eliminisala retko korišćene, teško razumljive i zbunjujuće osobine C++, kao što su aritmetika pokazivača, preopterećivanje operatora i ručno upravljanje memorijom.
Java omogućava alokaciju na steku, automatsko prikupljanje smeća i automatsko upravljanje memorijom, što u određenoj meri smanjuje poteškoće za početnike.
2) Prenosivost
Ako bi se Java direktno kompilirala u binarni kod koji operativni sistem prepoznaje, jedan identifikator bi možda bio 1100 pod Windows operativnim sistemom, a 1001 pod Linux-om. U tom slučaju, program koji radi pod Windows-om ne bi mogao da radi u Linux okruženju.
Da bi rešio ovaj problem, Java prvo kompilira u bajtkod, koji zatim JVM (Java virtuelna mašina) interpretira i izvršava, sa ciljem da pretvori ujednačen bajtkod u binarni kod koji operativni sistem prepoznaje, a zatim ga izvrši. Za različite operativne sisteme postoji odgovarajuća verzija JVM-a, pa je Java na taj način postigla prenosivost.
3) Bezbednost
Java je pogodan za mrežna/distribuirana okruženja, i da bi se postigao ovaj cilj, uložen je ogroman trud u bezbednost. Pomoću Jave mogu se izgraditi programi otporni na viruse i neovlašćene izmene.
Od samog početka, Java je dizajnirala mnoge mehanizme za zaštitu od napada, na primer:
- Prekoračenje steka u toku izvršavanja, što je uobičajen način napada crva.
- Verifikacija bajtkoda, koja osigurava da kod bude u skladu sa JVM specifikacijom i sprečava zlonamerni kod da ošteti okruženje izvršavanja.
- Bezbedno učitavanje klasa, koje sprečava nepoverljiv kod da ometa rad Java programa.
- Sveobuhvatan API podržava širok spektar usluga šifrovanja, uključujući digitalne potpise, sažetke poruka, (simetrične i asimetrične) šifre i generatore ključeva.
- Bezbedna komunikacija, uz podršku za HTTPS i SSL, štiti integritet i privatnost podataka u prenosu.
4) Konkurentnost
Java je izuzetno uspešna u oblasti višenitnog programiranja. Ukoliko operativni sistem to podržava, niti u Javi mogu iskoristiti više procesora, što donosi bolji odziv pri interakciji i ponašanje u realnom vremenu.
"Autor, da li će Java nastaviti da bude popularan?" — Sanmej je trepnula svojim dugačkim trepavicama i rekla mi.
"Naravno! To je pre svega zahvaljujući širokom spektru scenarija primene Jave." — odgovorio sam odlučno.
Oblast velikih podataka:
Kao i Python, Java zauzima dominantan položaj u oblasti velikih podataka, i mnogi okviri za obradu podataka velikog obima zasnovani su na Javi.
- Apache Hadoop, za obradu velikih skupova podataka u distribuiranom okruženju. Hadoop koristi arhitekturu sa glavnim i pomoćnim čvorovima, gde glavni čvor kontroliše ceo distribuirani računarski stek. Hadoop je popularan među kompanijama koje treba da obrađuju i analiziraju podatke velikog obima.
- Apache Spark, koji se često koristi u velikim ETL (tehnologija skladišta podataka) sistemima, prediktivnim analizama i programima za izveštavanje.
- Apache Mahout, za mašinsko učenje, na primer klasifikaciju, klasterizaciju i preporuke.
- JFreechart, za vizualizaciju podataka; pomoću njega se mogu napraviti razne vrste grafikona, kao što su tortni grafikoni, stubičasti grafikoni, linijski grafikoni, grafikoni rasturenih tačaka, boks-grafikoni, histogrami itd.
- Deeplearning4j, za izgradnju različitih tipova neuronskih mreža; može se integrisati sa Spark-om i pokrenuti na GPU (grafičkom procesoru).
- Apache Storm, za obradu tokova podataka u realnom vremenu; jedan Storm čvor može obraditi milione poslova u sekundi.
Oblast interneta stvari (IoT):

Oracle navodi da su fleksibilnost i popularnost glavni razlozi zbog kojih IoT programeri biraju Javu. Java pruža veliki broj API biblioteka koje se lako mogu primeniti u ugrađenim aplikacijama. U poređenju sa drugim programskim jezicima, poput C-a, Java se pri prelasku sa jedne platforme na drugu ponaša glatkije i ređe greši.
Oblast finansijskih usluga:
- Četbotovi, zahvaljujući brojnim faktorima kao što su prenosivost, održivost i vizualizacija, Java je postao najbolji alat za razvoj četbotova.
- Detekcija i upravljanje prevarama, banke i finansijske kompanije koriste AI (veštačka inteligencija) alate za otkrivanje finansijskih prevara i prevara sa kreditnim karticama, a Java se često koristi za razvoj ovih AI alata.
- Sistemi za trgovanje, dinamička optimizacija kompilacije u toku izvršavanja koju pruža Java virtuelna mašina u mnogim slučajevima ima bolje performanse od kompajliranih jezika (kao što je C++), što čini da sistemi za trgovanje rade glatkije.
- Mobilni novčanici, mobilni novčanici razvijeni na osnovu AI i Java algoritama mogu pomoći korisnicima da donose pametnije odluke prilikom trošenja novca.
Oblast Web-a:
Java tehnologija je dala snažan podsticaj razvoju Web oblasti, i postoji mnogo glavnih okvira za Java Web razvoj:
- Spring okvir, lagan okvir kontejnera za inverziju kontrole (IoC) i orijentisan na aspekte (AOP), koji prožima sve aspekte Java EE tehnologije; velika većina Java aplikacija može imati koristi od Spring okvira.
- Spring MVC okvir, lagan Web okvir tipa vođenog zahtevom, zasnovan na implementaciji MVC (Model-View-Controller) obrasca dizajna u Javi.
- MyBatis okvir, odličan okvir perzistentnog sloja podataka, koji može uspostaviti mapiranje između klasa entiteta i SQL izjava, i predstavlja poluautomatsku implementaciju ORM-a (Object Relational Mapping, mapiranje objektnih relacija).
- JavaServer Faces okvir, koji je razvio Oracle, lako povezuje prezentacioni sloj sa kodom aplikacije i pruža skup API-ja za prikaz i upravljanje UI komponentama.
Ukratko, Oracle tvrdi da Java radi na 97% računara preduzeća — prilično impresivno.
