Java — objektorientēta programmēšanas valoda un platforma
Uzzini par Java — platformu neatkarīgu, objektorientētu programmēšanas valodu, tās LTS versijām (Java 8, 11, 17), vēsturi, Oracle lomu un nozīmi Android un uzņēmumu risinājumos.
Java ir programmēšanas valoda un platforma, ko izstrādāja Sun Microsystems un ko vēlāk pārņēma un turpina uzturēt Oracle Corporation, kā arī plaša atvērtā koda kopiena caur OpenJDK. Java pirmo reizi tika publiskota 1995. gadā (galvenie autori — James Gosling un komanda) un tās izstrādes laikā valoda tika dēvēta par Oak. Java izlaides ir regulāras: ilgtermiņa atbalsta (LTS) versijas ir svarīgas uzņēmumu vidē — piemēram, Java 11 (izlaista 2018. gada 25. septembrī) un Java 17 (LTS, izlaista 2021. gada septembrī). Pēc 2021. gada turpinājās regulāri sešu mēnešu izlaidumi, un nākamās LTS versijas iznāca vēlāk (piemēram, Java 21 LTS 2023. gada septembrī). Oracle ir mainījis licencēšanas un atjauninājumu politiku salīdzinājumā ar agrāko periodu — Java 8 publiskie bezmaksas atjauninājumi komerciālajiem lietotājiem tika ierobežoti, tomēr pastāv vairāki piegādātāji (piemēram, Eclipse Temurin), kas nodrošina bezmaksas OpenJDK būves un atbalstu.
Java ir objektorientēta valoda, t.i., tās pamatā ir objekti un to savstarpējā mijiedarbība. Tomēr Java nav pilnīgi “tīri” objektorientēta — tajā ir primitīvie datu tipi (int, boolean u.c.), statiskās metodes un citas valodas konstrukcijas, kas nav vienīgi objekti. Sintakse salīdzināma ar C, C++ un C#, tomēr šajās valodās rakstīts kods parasti nav tieši savietojams ar Java, bez pārveidošanas vai rekompilēšanas.
Viena no Java galvenajām idejām ir platformu neatkarība: “Write once, run anywhere” — rakstiet vienu reizi, palaidiet jebkur. To panāk, kompilators pārvērš Java avota kodu Java baitkodā (bytecode), nevis tieši mašīnkodā. Šo baitkodu izpilda Java virtuālā mašīna (JVM), kas interpretē vai, izmantojot JIT (Just-In-Time) kompilāciju, pārtulko to uz konkrētās ierīces mašīnkodu izpildei. JVM ir pieejama daudziem operētājsistēmu veidiem, tādējādi Java programmas darbojas uz dažādām operētājsistēmām. Java ir plaši izmantota arī mobilajā pasaulē — īpaši Android, kur izstrādātāji joprojām var izmantot Java (lai gan Google pēdējos gados aktīvi veicina Kotlin izmantošanu Android lietotnēs).
Galvenās iezīmes un priekšrocības
- Platformu neatkarība: Java baitkods darbojas jebkurā JVM, kas pieejama attiecīgajai platformai.
- Bagātīgas standarta bibliotēkas: plašs API klāsts I/O, tīklu, drošības, XML/JSON apstrādei, krātuves, GUI u.c. vajadzībām.
- Atmiņas pārvaldība: automātiska atkritumu savākšana (garbage collection), kas samazina tiešo atmiņas pārvaldības kļūdu risku.
- Drošība: JVM sniedz izolāciju un drošības pārbaudes, kas palīdz izvairīties no daudzām zemas līmeņa kļūdām.
- Skaidra tipizācija un saderība: spēcīgi tipizēta valoda un fokuss uz atpakaļsaderību — ļauj ilgtermiņa uzturēšanu uzņēmumu sistēmās.
- Risinājumi uzņēmumiem: Java ir pamats tādiem ekosistēmas risinājumiem kā Jakarta EE (iepriekš Java EE), Spring, Hibernate, kas dominē uzņēmumu serveru lietojumprogrammās.
Kā Java darbojas Android vidē
Android lietotņu izstrādē tradicionāli tika izmantota Java sintakse, taču Android vide neveic tiešu JVM izpildi tādā pašā formā kā darbvirsmas vai serveru JVM. Android izmanto speciālu izpildlaiku (sākotnēji Dalvik, vēlāk ART), kur Java vai Kotlin kods tiek pārveidots uz Dalvik/DEX formātu. Google pēdējos gados aktīvi atbalsta Kotlin kā pirmrindas valodu Android izstrādei, taču Java joprojām ir plaši izplatīta un savietojama ar esošo kodu.
Rīki un komponenti
- JDK (Java Development Kit): satur kompilatoru (javac), rīkus un bibliotēkas izstrādei.
- JRE (Java Runtime Environment): satur JVM un nepieciešamās bibliotēkas, lai palaistu Java programmas (dažos mūsdienu izvietojumos JRE un JDK līnija saplūst ar OpenJDK būvēm).
- JVM (Java Virtual Machine): izpildes vide, kas interpretē vai JIT-kompilē baitkodu.
Pielietojumi
Java tiek izmantota ļoti plašā jomā:
- uzņēmumu serveru lietojumprogrammas (banku sistēmas, biznesa aplikācijas),
- web aplikācijas un mikroservisi (izmantojot Spring, Jakarta EE u.c.),
- Android lietotnes (kopā ar Kotlin un citiem rīkiem),
- lielo datu un izkliedēto sistēmu risinājumi (piem., Hadoop ekosistēma),
- iebūvētās ierīces un IoT risinājumi,
- zinātniskie un akadēmiskie projekti, kur nepieciešama portabilitāte un drošība.
Kopsavilkums
Java ir stabila, plaši izplatīta valoda un platforma ar spēcīgu ekosistēmu un plašu atbalstu no kopienas un komerciāliem piegādātājiem. Tā savieno objektorientētu programmēšanu, bagātīgas bibliotēkas, JVM nodrošinātu platformu neatkarību un ilgtermiņa atpakaļsaderību, kas padara to par iecienītu izvēli gan uzņēmumu, gan mobilajām un iebūvētajām lietojumprogrammām.
Java jēdzieni
Java tika izstrādāta, lai sasniegtu piecus galvenos mērķus. Tie ir:
- Java ir jābūt viegli apgūstamai, objektorientētai un izplatītai.
- Java ir jābūt drošai un spēcīgai.
- Java nedrīkst būt atkarīga no kādas datora arhitektūras vai platformas.
- Java vajadzētu darboties labi.
- Java ir jābūt iespējai uzrakstīt tai paredzētu tulkojumu, kā arī jāatbalsta paralēlisms un jāizmanto dinamiskā tipizēšana.
Java platforma
Java platforma ir Sun Microsystems programmatūras produktu grupa. Platforma tiek izmantota Java programmu izstrādei un darbināšanai. Platforma ietver izpildes dzinēju (ko sauc par Java virtuālo mašīnu), kas ļauj Java programmām veikt vienu un to pašu darbību dažādās datorsistēmās.
Šo iespēju izstrādāt programmatūru vienā platformā un izmantot to citās platformās sauc par "starpplatformu iespēju".
Java programmas piemērs
Java programmas "Hello World" piemērs:
Java programmu veidi
Ir daudz Java programmu veidu, kas darbojas atšķirīgi:
- Java applets - neliela programma, kas rakstīta Java valodā un tiek lejupielādēta no tīmekļa vietnes un izpildīta tīmekļa pārlūkprogrammā klienta datorā.
- Lietojumprogramma - tiek izpildīta klienta datorā. Ja tā ir tiešsaistē, pirms palaišanas tā ir jālejupielādē.
- JAR fails (Java arhīvs) - tiek izmantots, lai apkopotu Java failus vienā failā (gandrīz tāpat kā .zip fails).
- Servlets - darbojas tīmekļa serverī un palīdz ģenerēt tīmekļa lapas.
- Swing lietojumprogramma - tiek izmantota, lai izveidotu lietojumprogrammu ar grafisko interfeisu (logi, pogas, izvēlnes utt.).
- EJB - darbojas tīmekļa serverī un tiek izmantots lielu un sarežģītu vietņu izstrādei.
Ieguvumi
Java parasti tiek izmantota, lai mācītu studentiem programmēt kā pirmo valodu, taču to joprojām izmanto arī profesionāļi.
- Java pieprasa, lai katrs mainīgais tiktu inicializēts. Dažās vecākās valodās, piemēram, C, mainīgos var neinicializēt, kas var izraisīt nejaušas kļūdas ar noslēpumainām kļūdām.
- Java pieprasa, lai katrai metodei tiktu deklarēts atgriešanas tips - metodei vienmēr jāatgriež vērtība, izņemot gadījumus, kad tās atgriešanas tips ir void. Tas arī novērš kļūdas.
- Java ir pieejams liels klašu un metožu kopums - Java API, ko var izmantot, neizstrādājot tik daudz koda "no nulles".
- Atšķirībā no C valodas Java primitīvie tipi, piemēram, int, vienmēr ir vienāda lieluma pēc bitu skaita, kas palīdz panākt saderību starp platformām.
- Agrāk tika uzskatīts, ka Java ir lēnāka par C, taču pēdējos gados tas vairs nav tik svarīgi, jo datori ir ātrāki.
- Java ir izņēmumu apstrāde, kas pieprasa, lai programmētājs apstrādātu kļūdu nosacījumus, piemēram, ievades/izvades kļūdas.
- Kodu, kas kompilēts vienā Java platformā, var palaist citās platformās, kas atbalsta Java, nemainot ne avota kodu, ne baitu kodu. Tas nozīmē, ka persona var izveidot Java programmu Windows datoram un palaist to Linux datorā vai Mac datorā.
Kritika
Java arī ir tikusi kritizēta. Dažas no šīm kritiskajām piezīmēm ir šādas:
- Ģenerikas tika pievienotas Java, lai esošais kods joprojām darbotos. Tas tika izdarīts, izmantojot tipu dzēšanu. Tas nozīmē, ka kompilēšanas laikā tiek dzēsts vispārīgā argumenta faktiskais tips. Tas var izraisīt to, ka Java tulks dažkārt rīkojas neparedzēti.
- Java nav neparādītu veselu skaitļu tipu, ko plaši izmanto tādas valodas kā C. Tas arī nozīmē, ka nav iespējams tieši apmainīties ar skaitliskajiem datiem starp C un Java programmām. Arī kriptogrāfija zināmā mērā ir atkarīga no šādiem tipiem; tas apgrūtina kriptogrāfijas lietojumprogrammu rakstīšanu Java.
- IEEE ir definējis aritmētikas ar mainīgo komatspunktu standartu IEE 754. Java atbalsta tikai daļu no šā standarta funkcijām.
Jautājumi un atbildes
J: Kā sauc Sun Microsystems izveidoto programmēšanas valodu?
A: Sun Microsystems izveidotā programmēšanas valoda saucas Java.
J: Kas pašlaik atbalsta un atjaunina Java?
A: Oracle Corporation pašlaik atbalsta un atjaunina Java.
J: Kādas ir pašreizējās Java ilgtermiņa atbalsta (LTS) versijas?
A: Pašreizējās ilgtermiņa atbalsta (LTS) Java versijas ir 17., 11. un 8. versija.
J: Kad tika izdota jaunākā Java versija?
A: Jaunākā Java versija, 19. versija, tika izdota 2022. gada septembrī.
J: Vai papildus Oracle ir vēl kāds cits uzņēmums, kas atbalsta Java?
A: Jā, arī Eclipse Adoptium atbalsta Java vismaz līdz 2026. gada maijam 8. versijai un vismaz līdz 2027. gada septembrim 17. versijai.
J: Kāda veida kodu izmanto Java?
A: Java izmanto objektorientētu kodu, kas nozīmē, ka tā pamatā ir objekti, kas darbojas kopā, lai programmas veiktu savu darbu. Tas izskatās līdzīgi kā C, C++ vai C#, taču šajās valodās rakstīts kods lielākajā daļā gadījumu nedarbosies, ja netiks mainīts.
J: Kā Java ir neatkarīga no platformas?
A:Java padara sevi neatkarīgu no platformas, liekot kompilatoram pārvērst kodu īpašā formātā, ko sauc par bajtkodi, nevis mašīnkodā. Tas nozīmē, ka, izpildot programmu, bajtkods var tikt interpretēts ar īpašu programmu, ko sauc par virtuālo mašīnu, kas to pārtulko mašīnkodā, lai to varētu palaist dažādās operētājsistēmās, piemēram, Android.
Meklēt