Ang Java ay isang malakas na na-type na object-oriented na programming language. Nilikha noong 1995, nakatanggap ito ng maraming pagpapabuti mula noon. Patuloy na sumasakop sa isang nangungunang posisyon sa pagraranggo ng mga programming language gayundin sa pagraranggo ng mga suweldo ng mga developer ng software .

At higit sa lahat, ang ranggo ng Java ay hindi tumatalon sa bawat taon — nananatili itong pare-parehong mataas. Subukan nating maunawaan kung ano ang nagpapasikat sa Java.

1. Cross-platform — Ang nakasulat na code ay mako-convert sa bytecode, na pagkatapos ay ipapatupad ng JVM. Mayroong mga pagpapatupad ng JVM para sa iba't ibang mga platform. Nangangahulugan iyon na ang code, kapag naisulat na, ay tatakbo sa Windows, Linux, at macOS, at maging sa iba't ibang mga kakaibang platform, tulad ng Arduino, mga matalinong refrigerator, at mga vacuum cleaner. Sa madaling salita, gagana ang code sa iba't ibang platform at operating system, nang hindi kailangang iakma para sa bawat isa sa kanila.

2. Awtomatikong pamamahala ng memorya — Hindi kailangang isipin ng developer kung saan iniimbak ang mga variable sa RAM, manu-manong basahin/isulat ang mga ito, o mag-alala tungkol sa integridad ng data. Kapag nilulutas ang problema sa negosyo ng isang customer, dapat mong isipin ang problema, hindi tungkol sa kung paano at saan magsusulat ng mga byte.

3. Bilis (JIT compiler) — Bilang karagdagan sa static na compilation, na nangyayari "in advance", sinusuportahan ng Java ang just-in-time (JIT) compilation. Ito ay lubos na nauugnay para sa server code, na maaaring tumakbo nang ilang buwan o kahit na taon sa isang pagkakataon. Ang code na madalas na isinasagawa ay pinagsama-sama sa iba't ibang paraan at ang oras ng pagpapatupad nito ay sinusukat. Ang resulta ay ang pagtakbo ng isang application, mas mabilis itong nagiging. At totoo iyon para sa isang aktibong tumatakbong server. Astig diba?

4. Paatras na compatibility — Ang code na nakasulat sa mga mas lumang bersyon ng Java ay gagana rin sa mga mas bagong bersyon. Ito ay maginhawa: pagkatapos ma-update ang spec ng Java, hindi mo na kailangang muling isulat ang kalahati ng iyong proyekto "dahil sa pag-update", ngunit maaari mo pa ring makuha ang pinakabagong mga patch ng seguridad.

5. Object orientation — Ang mga tao ay nag-iisip sa mga tuntunin ng mga bagay: isang mesa, isang trolleybus, isang smartphone. Ang mga developer ay hindi pinipilit na mag-isip sa mga hindi pangkaraniwang paradigm habang gumagana ang mga ito, at nakakatulong iyon na panatilihing wala sa aming code ang mga hindi kinakailangang error. Sa halip, maaari lamang tayong tumutok sa mga detalyeng mahalaga sa gawain. Halimbawa, mula sa pananaw ng isang interior designer, ang laki at lokasyon ng mesa sa isang silid ay mahalaga. Ang petsa ng paggawa nito, ang pangalan ng manggagawa na pumutol ng kahoy para sa mesa, at ang numero ng telepono ng FedEx driver na naghatid nito ay hindi mahalaga. Bilang karagdagan, ang data at mga pamamaraan para sa pagtatrabaho sa data na iyon ay naka-imbak nang magkasama sa code.

6. Static typing (fail fast) — Ang compatibility ng variable type ay sinusuri sa panahon ng compilation stage. Ang bawat developer ay nag-compile ng code, kaya ang mga error sa compilation ay nahuhuli halos kaagad. Ang mas huling yugto kung saan natuklasan ang isang error, mas mahal ang pag-aayos nito.

7. Code bilang dokumentasyon — Ang Java ay nagbabasa tulad ng mga pangungusap sa Ingles. Alinsunod dito, sa karamihan ng mga kaso, hindi na kailangang gumastos ng mga pagsisikap upang mapanatili ang dokumentasyon, dahil ang sinumang developer, na tumingin sa code, ay mauunawaan kung ano ang ginagawa ng isang pamamaraan o kung anong pag-uugali ang responsable para sa isang interface. Higit pa rito, may mga matatalinong kombensiyon tungkol sa "tamang" pagpapangalan ng lahat ng entity sa code. Madalas nililinaw ng pangalan ng isang pamamaraan kung ano ang ginagawa nito.

Halimbawa, ibinabalik ng getContext() na pamamaraan ang konteksto, at ang field ng edad ay responsable para sa pag-iimbak ng edad. Sa Java, ang haba ng mga pangalan ay hindi nakakaapekto sa dami ng mga mapagkukunan ng system na kinakailangan upang gumana sa mga entity. Hindi rin ito pinangangasiwaan ng C: kapag ang isang developer ay sumali sa isang bagong proyekto, sa halip na maunawaan ang lohika ng code, dapat niya itong maunawaan.

8. Maraming open source na library at frameworks — 99% ng mga gawaing kinakaharap ng developer sa pang-araw-araw na pagsasanay ay nalutas na ng isang tao. Sa paglipas ng panahon, ang magagandang solusyon ay nagiging mga aklatan at maging mga balangkas. Alin ang mas mahusay — mag-googling ng 5 minuto o muling mag-imbento ng sarili mong bisikleta gamit ang mga parisukat na gulong?

9. Malaking komunidad — Ang sikat na wikang ito ay may malaking base ng developer na nagtatanong ng maraming tanong sa Internet, nagbibigay ng maraming sagot, nagsusulat ng maraming code, at humaharap at lumulutas ng maraming problema. At kung mas maraming developer, mas sikat ang wika, at mas mabilis itong lumago. Ito ay isang virtuous cycle.

Marami sa mga positibong "kalidad" ng Java ang nabanggit na, ngunit nais kong magdagdag ng ilan pa:

  • Ang JVM (Java Virtual Machine) ay namamahala ng memorya para sa iyo, na ginagawa itong ligtas at ang #1 na wika para sa mga tool sa pananalapi.

  • Napakaginhawang isulat ang backend server (server logic) sa Java.

  • Hanggang kamakailan lamang, ang Java ang nangungunang wika para sa mga Android application.

    Ang Kotlin, isang wikang JVM na naiiba sa Java sa pamamagitan ng "syntactic sugar" at ilang feature, ay pumapalit na ngayon. Ang paglipat mula sa Java patungo sa Kotlin at vice versa ay tatagal ng ilang araw. At dahil anim na buwan na ngayon ang cycle ng pag-update ng Java, ang susunod na paglabas ng Java ay maaaring mayroong lahat ng hyped na bagay kung saan isinulat si Kotlin.

  • Maraming sikat na kumpanya ang gumagamit ng Java: Google, Facebook, Twitter, Amazon, LinkedIn, eBay, CodeGym at marami, marami pa.