Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Siguria dhe Makina Virtuale Java. Bibliotekë e gjerë thelbësore

Pra, Java ka një histori të gjatë dhe të vështirë zhvillimi, por është koha të shqyrtojmë se çfarë ndodhi me krijuesit, çfarë karakteristikash ka kjo teknologji.

Më e njohura, dhe në të njëjtën kohë duke shkaktuar debatin më të nxehtë, prona është shumë- ose ndër-platformë... Tashmë është thënë se arrihet duke përdorur makinën virtuale JVM, e cila është një program i rregullt që ekzekutohet nga sistemi operativ dhe i ofron aplikacioneve Java me të gjitha aftësitë e nevojshme. Meqenëse të gjithë parametrat e JVM janë specifikuar, detyra e vetme mbetet - të zbatohen makinat virtuale në të gjitha platformat ekzistuese dhe të përdorura.

Prania e një makinerie virtuale përcakton shumë veti të Java-s, por tani le të ndalemi në pyetjen e mëposhtme - a është Java një gjuhë e përpiluar apo e interpretuar? Në fakt, përdoren të dyja qasjet.

Kodi burimor i çdo programi Java përfaqësohet nga skedarë teksti të zakonshëm që mund të krijohen në çdo redaktues teksti ose mjet të specializuar zhvillimi dhe kanë zgjerimin .java. Këta skedarë futen në përpiluesin Java, i cili i përkthen ato në bitekod të veçantë Java. Është ky grup kompakt dhe efikas instruksionesh që mbështetet nga JVM dhe është pjesë integrale e platformës Java.

Dalja e përpiluesit ruhet në skedarë binare me shtesën .class. Një aplikacion Java i përbërë nga skedarë të tillë futet në hyrjen e makinës virtuale, e cila fillon t'i ekzekutojë, ose t'i interpretojë ato, pasi është një program vetë.

Shumë zhvillues në fillim kritikuan ashpër sloganin e guximshëm të Sun "Shkruaj një herë, vrapo kudo", duke zbuluar gjithnjë e më shumë mospërputhje dhe mospërputhje në platforma të ndryshme. Megjithatë, duhet pranuar se ata ishin thjesht shumë të paduruar. Java sapo lindi dhe versionet e para të specifikimeve nuk ishin mjaftueshëm gjithëpërfshirëse.

Shumë shpejt, Sun arriti në përfundimin se thjesht publikimi i specifikave lirisht (siç bëhej shumë kohë përpara Java) nuk ishte i mjaftueshëm. Është gjithashtu e nevojshme të krijohen procedura të veçanta për kontrollin e produkteve të reja për pajtueshmërinë me standardet. Testi i parë i tillë për JVM përmbante vetëm rreth 600 kontrolle, një vit më vonë numri i tyre u rrit në dhjetë mijë dhe është rritur që atëherë (ishte ky test që MS IE 4.0 nuk mund të kalonte në të njëjtën kohë). Sigurisht, autorët e makinave virtuale i kanë përmirësuar ato gjatë gjithë kohës, duke eliminuar gabimet dhe duke optimizuar punën e tyre. Megjithatë, çdo teknologji, qoftë edhe e konceptuar shumë mirë, kërkon kohë për të krijuar një zbatim cilësor. Java 2 Micro Edition (J2ME) aktualisht po kalon një rrugë të ngjashme zhvillimi, por më shumë për këtë më vonë.

Vetia tjetër më e rëndësishme është orientimi i objektit Java, i cili përmendet gjithmonë në të gjithë artikujt dhe njoftimet për shtyp. Vetë qasja e orientuar drejt objektit (OOP) diskutohet në leksionin e ardhshëm, por është e rëndësishme të theksohet se në Java pothuajse gjithçka zbatohet në formën e objekteve - threads dhe rrjedhat e të dhënave, rrjetëzimi, puna me imazhe, me një ndërfaqe përdoruesi. . , trajtimi i gabimeve, etj. Në fund të fundit, çdo aplikacion Java është një koleksion klasash që përshkruajnë lloje të reja objektesh.

Një diskutim i detajuar i modelit të objektit Java kryhet gjatë gjithë kursit, megjithatë, ne përshkruajmë veçoritë kryesore. Para së gjithash, krijuesit braktisën trashëgiminë e shumëfishtë. U vendos që ai të ndërlikojë dhe mjegullojë programet. Gjuha përdor një qasje alternative - një lloj të veçantë "ndërfaqe". Është diskutuar në detaje në leksionin përkatës.

Më tej, Java aplikohet shtypje e fortë... Kjo do të thotë se çdo variabël dhe çdo shprehje ka një lloj të njohur tashmë në kohën e përpilimit. Kjo qasje përdoret për të thjeshtuar identifikimin e problemeve, sepse përpiluesi raporton menjëherë gabimet dhe tregon vendndodhjen e tyre në kod. Kërkimi i përjashtimeve (përjashtimet - siç quhen situatat e pasakta në Java) gjatë ekzekutimit të programit (runtime) do të kërkojë testime komplekse, ndërsa shkaku i defektit mund të gjendet në një klasë krejtësisht të ndryshme. Kështu, duhet të bëni përpjekje shtesë për të shkruar kodin, por besueshmëria e tij është rritur ndjeshëm (dhe ky është një nga qëllimet themelore për të cilat u krijua gjuha e re).

Ekzistojnë vetëm 8 lloje të dhënash në Java që nuk janë objekte. Ato janë përcaktuar që në versionin e parë dhe nuk kanë ndryshuar kurrë. Këto janë pesë lloje të numrave të plotë: byte, short, int, long, si dhe karaktere char. Pastaj dy tipe fraksionale notojnë dhe dyfishohen, dhe në fund tipi boolean boolean. Llojet e tilla quhen të thjeshta, ose primitive (nga primitivi anglez), dhe ato diskutohen në detaje në leksionin për llojet e të dhënave. Të gjitha llojet e tjera janë objekt ose referencë (eng. referencë).

Për disa arsye, sintaksa Java ka mashtruar shumë. Ai me të vërtetë bazohet në sintaksën e gjuhëve C / C ++, kështu që nëse shikoni kodin burimor të programeve të shkruara në këto gjuhë dhe në Java, nuk do të jeni në gjendje të kuptoni menjëherë se cila prej tyre është shkruar në cila gjuhë. Për disa arsye, kjo dha shumë arsye për të menduar se Java është një C ++ e thjeshtuar me veçori shtesë si mbledhësi i mbeturinave. Më poshtë do të shikojmë grumbulluesin automatik të plehrave, por është gabim i madh të mendosh se Java është e njëjta gjuhë si C ++.

Sigurisht, kur zhvillonin një teknologji të re, autorët e Java-s u mbështetën në një gjuhë programimi të përhapur për një sërë arsyesh. Së pari, ata vetë e konsideruan C ++ si mjetin e tyre kryesor në atë kohë. Së dyti, pse të dalësh me diçka të re kur ekziston një e vjetër krejtësisht e përshtatshme? Më në fund, është e qartë se sintaksa e panjohur do të trembë zhvilluesit dhe do të komplikojë ndjeshëm prezantimin e një gjuhe të re, dhe në fund të fundit, Java duhet të ishte përhapur sa më shpejt që të ishte e mundur. Prandaj, sintaksa u thjeshtua pak për të shmangur konstruktet tepër konfuze.

Por, siç u përmend tashmë, C ++ ishte thelbësisht i papërshtatshëm për detyrat e reja të vendosura nga zhvilluesit nga kompania Sun, kështu që modeli Java u rindërtua, dhe në përputhje me qëllime krejtësisht të ndryshme. Ligjëratat e mëtejshme gradualisht do të zbulojnë dallime specifike.

Sa i përket modelit të objektit, ai u modelua më tepër në gjuhë të tilla si Smalltalk nga IBM, ose gjuha Simula e zhvilluar në vitet '60 në Qendrën Norvegjeze të Informatikës, të cilës i referohet krijuesi i Java, James Gosling.

Një tjetër pronë e rëndësishme e Java - lehtësia e të mësuarit dhe zhvillimit - mori gjithashtu nota të diskutueshme. Në të vërtetë, autorët morën mundimin për të shpëtuar programuesit nga gabimet më të zakonshme që ndonjëherë bëjnë edhe zhvilluesit me përvojë të C / C ++. Dhe vendin e parë këtu e zë puna me kujtesën.

Në Java, që në fillim, mekanizmi automatik i grumbullimit të plehrave(nga anglishtja e grumbulluesit të mbeturinave). Supozoni se programi krijon një objekt, punon me të dhe pastaj vjen një moment kur ai nuk është më i nevojshëm. Është e nevojshme të lirohet memoria e zënë në mënyrë që të mos ndërhyjë në funksionimin normal të sistemit operativ. Në C / C ++, kjo duhet të bëhet në mënyrë eksplicite nga programi. Natyrisht, me këtë qasje, ekzistojnë dy rreziqe - ose fshini një objekt që i nevojitet dikujt tjetër (dhe nëse aksesohet në të vërtetë, atëherë do të ndodhë një gabim), ose mos fshini një objekt që është bërë i panevojshëm, që do të thotë një rrjedhje memorie, domethënë programi fillon të konsumojë gjithnjë e më shumë RAM.

Kur zhvillohet në Java, programuesi nuk mendon fare për lirimin e kujtesës. Vetë makina virtuale numëron numrin e referencave për secilin objekt, dhe nëse bëhet zero, atëherë një objekt i tillë shënohet për përpunim nga mbledhësi i mbeturinave. Kështu, programuesi duhet vetëm të sigurohet që nuk ka referenca për objekte të panevojshme. Mbledhësi i mbeturinave është një sfond ekzekutimi që skanon rregullisht objektet ekzistuese dhe heq ato që nuk nevojiten më. Ju nuk mund të ndikoni në asnjë mënyrë në punën e grumbulluesit të plehrave nga programi, mund të filloni vetëm në mënyrë eksplicite kalimin e tij të ardhshëm duke përdorur një funksion standard. Është e qartë se kjo thjeshton shumë zhvillimin e programeve, veçanërisht për programuesit fillestarë.

Sidoqoftë, zhvilluesit me përvojë ishin të pakënaqur me faktin se ata nuk mund të kontrollonin plotësisht gjithçka që ndodh me sistemin e tyre. Nuk ka informacion të saktë se kur do të fshihet saktësisht një objekt që është bërë i panevojshëm, kur filli i grumbullimit të plehrave do të fillojë të funksionojë (dhe për rrjedhojë do të zërë burimet e sistemit), etj. Por, me gjithë respektin e duhur për përvojën e programuesve të tillë, duhet të theksohet se numri dërrmues i dështimeve të programeve të shkruara në C / C ++ shkaktohet nga puna e gabuar me kujtesën, dhe ndonjëherë kjo ndodh edhe me produkte të përhapura të shumë kompani serioze.

Përveç kësaj, theks i veçantë iu kushtua lehtësisë së zotërimit të teknologjisë së re. Siç u përmend tashmë, pritej (dhe këto pritshmëri u justifikuan, në konfirmim të korrektësisë së rrugës së zgjedhur!) që Java të përdorej sa më gjerësisht, edhe në ato kompani ku nuk kishin bërë kurrë më parë programim në një nivel të tillë ( pajisje shtëpiake të tilla si tostera dhe aparate kafeje, krijimi i lojërave dhe aplikacioneve të tjera për telefonat celularë, etj.). Kishte edhe një sërë konsideratash të tjera. Produktet për përdoruesit e zakonshëm, jo ​​për programuesit profesionistë, duhet të jenë veçanërisht të besueshme. Interneti është bërë World Wide Web sepse janë shfaqur përdorues laikë dhe aftësia për të krijuar aplikacione është po aq tërheqëse për ta. Ata kishin nevojë për një mjet të thjeshtë për të ndërtuar aplikacione të fuqishme.

Më në fund, bumi i internetit i viteve '90 fitoi vrull dhe prezantoi afate të reja, më të rrepta zhvillimi. Projektet afatgjata, që ishin të zakonshme në të kaluarën, pushuan së plotësuari nevojat e klientëve, sistemet e reja duhej të krijoheshin maksimumi brenda një viti, apo edhe në disa muaj.

Përveç futjes së grumbulluesit të plehrave, janë ndërmarrë hapa të tjerë për të lehtësuar zhvillimin. Disa prej tyre janë përmendur tashmë - refuzimi i trashëgimisë së shumëfishtë, thjeshtimi i sintaksës, etj. Aftësia për të krijuar aplikacione me shumë fije u zbatua në versionin e parë të Java (studimet kanë treguar se kjo është shumë e përshtatshme për përdoruesit, dhe standardet ekzistuese bazohen në sisteme teletipi, të cilat janë të vjetruara prej shumë vitesh). Karakteristikat e tjera do të diskutohen në leksionet e mëposhtme. Sidoqoftë, prej kohësh është pranuar përgjithësisht se ndërtimi dhe mirëmbajtja e sistemeve është në të vërtetë më e lehtë në Java sesa në C / C ++. Sidoqoftë, në të njëjtën kohë, këto gjuhë janë krijuar për qëllime të ndryshme, dhe secila ka avantazhet e veta të padiskutueshme.

Vetia tjetër e rëndësishme e Java është siguria. Fokusi fillestar në aplikacionet e shpërndara, dhe në veçanti vendimi për të ekzekutuar aplikacionet në kompjuterin e klientit, e bëri sigurinë një përparësi kryesore. Ekziston një gamë e tërë masash në punë në çdo makinë virtuale Java. Më poshtë është vetëm një përshkrim i shkurtër i disa prej tyre.

Së pari, këto janë rregullat për të punuar me kujtesën. Tashmë është thënë se pastrimi i kujtesës bëhet automatikisht. Rezervimi i tij përcaktohet gjithashtu nga JVM, dhe jo nga përpiluesi, ose në mënyrë të qartë nga programi; zhvilluesi mund të tregojë vetëm se dëshiron të krijojë një objekt tjetër të ri. Treguesit për adresat fizike mungojnë në parim.

Së dyti, prania e një përkthyesi të makinës virtuale e bën shumë më të lehtë ndërprerjen e kodit të rrezikshëm në çdo fazë të punës. Bajtkodi fillimisht ngarkohet në sistem, zakonisht në formën e skedarëve të klasës. JVM kontrollon me kujdes që ata të gjithë u binden rregullave të përgjithshme të sigurisë Java dhe se ato nuk janë krijuar nga sulmuesit përmes disa mjeteve të tjera (dhe nëse nuk janë të korruptuar në tranzit). Pastaj, gjatë ekzekutimit të programit, përkthyesi mund të kontrollojë lehtësisht çdo veprim për vlefshmëri. Aftësitë e klasave që janë ngarkuar nga një disk lokal ose përmes rrjetit ndryshojnë ndjeshëm (përdoruesi mund të caktojë ose heqë lehtësisht të drejta specifike). Për shembull, aplikacionet nuk do të hyjnë kurrë në sistemin lokal të skedarëve si parazgjedhje. Kufizime të tilla të integruara gjenden në të gjitha bibliotekat standarde Java.

Së fundi, ekziston një mekanizëm për nënshkrimin e aplikacioneve dhe aplikacioneve të tjera të shkarkuara përmes rrjetit. Një certifikatë e veçantë garanton që përdoruesi ka marrë kodin pikërisht ashtu siç e ka lëshuar prodhuesi. Kjo, natyrisht, nuk siguron mjete shtesë mbrojtjeje, por i lejon klientit ose të refuzojë të punojë me aplikacione nga prodhuesit jo të besueshëm, ose menjëherë të shohë se janë bërë ndryshime të paautorizuara në program. Në rastin më të keq, ai e di se kush është përgjegjës për dëmin.

Tërësia e vetive të përshkruara të Java bën të mundur të pohohet se gjuha është shumë e përshtatshme për zhvillimin e aplikacioneve të internetit dhe intranetit (rrjetet e brendshme të korporatave).

Së fundi, një tipar i rëndësishëm dallues i Java është dinamizmi i saj. Gjuha është konceptuar shumë mirë, qindra mijëra zhvillues dhe shumë kompani të mëdha janë të përfshirë në zhvillimin e saj. Fazat kryesore të këtij zhvillimi janë përmbledhur në seksionin vijues.

Pra, le të përmbledhim. Platforma Java ka përparësitë e mëposhtme:

  • transportueshmëri, ose ndër-platformë ;
  • orientimi i objektit, është krijuar një model efikas i objektit;
  • sintaksë e njohur C / C ++;
  • model i integruar dhe transparent i sigurisë;
  • orientimi në detyrat e internetit, aplikacionet e shpërndara në rrjet;
  • dinamizmi, lehtësia e zhvillimit dhe shtimi i veçorive të reja;
  • lehtësinë e të mësuarit.

Por nuk duhet të supozohet se mësimi më i lehtë do të thotë që nuk keni nevojë të mësoni fare një gjuhë. Shkrimi i programeve vërtet të mira, ndërtimi i sistemeve të mëdha, komplekse, kërkon një kuptim solid të të gjitha koncepteve bazë Java dhe bibliotekave të përdorura. Kjo është ajo që ky kurs ka të bëjë.

Versionet dhe produktet kryesore Java

Le të bëjmë një rezervim menjëherë se produktet këtu nënkuptojnë zgjidhje softuerike nga Sun, të cilat janë "zbatim referimi".

Pra, Java u shpall për herë të parë më 23 maj 1995. Produktet kryesore të disponueshme në atë kohë në formën e versioneve beta ishin:

  • Specifikimi i gjuhës Java, JLS, Specifikimi i gjuhës Java (duke përshkruar fjalorin, llojet e të dhënave, konstruktet bazë, etj.);
  • Specifikimi JVM
  • Java e Zhvillimit Kit, JDK - Një mjet zhvilluesi që përbëhet kryesisht nga shërbime, biblioteka standarde të klasave dhe demonstrime.

Specifikimi i gjuhës ishte shkruar aq mirë saqë përdoret praktikisht i pandryshuar deri më sot. Natyrisht, u bënë një numër i madh sqarimesh, përshkrime më të hollësishme, u shtuan disa veçori të reja (për shembull, deklarimi i klasave të brendshme), por konceptet bazë mbeten të pandryshuara. Ky kurs mbështetet shumë në specifikimet e gjuhës.

Specifikimi JVM është menduar kryesisht për krijuesit e makinave virtuale, dhe për këtë arsye nuk përdoret pothuajse nga programuesit Java.

JDK ka qenë prej kohësh një mjet bazë për zhvillimin e aplikacioneve. Ai nuk përmban asnjë redaktues teksti, por funksionon vetëm në skedarët ekzistues Java. Përpiluesi përfaqësohet nga programi javac (përpiluesi java). Makina virtuale zbatohet nga java. Për lëshimet testuese të aplikacioneve, ekziston një mjet i veçantë i quajtur appletviewer. Më në fund, ofrohet një mjet javadoc për të gjeneruar automatikisht dokumentacion nga kodi burimor.

Versioni i parë përmbante vetëm 8 biblioteka standarde:

  • java.lang - klasat bazë të kërkuara për funksionimin e çdo aplikacioni (emri është një shkurtim i gjuhës);
  • java.util - Shumë klasa ndihmëse të dobishme
  • java.applet - klasa për krijimin e aplikacioneve;
  • java.awt, java.awt.peer - një bibliotekë për krijimin e një ndërfaqeje grafike të përdoruesit (GUI), e quajtur Abstract Window Toolkit, AWT, e përshkruar në detaje në Leksionin 11;
  • java.awt.image - klasa shtesë për të punuar me imazhe;
  • java.io - punë me transmetime dhe skedarë;
  • java.net - rrjetëzimi.

Kështu, të gjitha bibliotekat fillojnë me java, ato janë ato standarde. Të gjithë të tjerët (duke filluar me com, org, etj.) mund të ndryshojnë në çdo version pa mbështetje përputhshmërie.

Versioni përfundimtar i JDK 1.0 u lëshua në janar 1996.

Le të shpjegojmë menjëherë sistemin e emërtimit të versionit. Emërtimi i versionit përbëhet nga tre shifra. E para është gjithmonë 1. Kjo do të thotë se përputhshmëria e plotë ruhet midis të gjitha versioneve të 1.x.x. Kjo do të thotë, një program i shkruar në një JDK më të vjetër do të ekzekutohet gjithmonë me sukses në një më të ri. Përputhshmëria e prapambetur ruhet sa herë që është e mundur - nëse programi është përpiluar me një JDK më të ri dhe nuk janë përdorur biblioteka të reja, atëherë në shumicën e rasteve makinat e vjetra virtuale do të jenë në gjendje të ekzekutojnë një kod të tillë.

Shifra e dytë ka ndryshuar nga 0 në 4 (e fundit në kohën kur u krijua kursi). Në secilin version, pati një zgjerim të konsiderueshëm të bibliotekave standarde (212, 504, 1781, 2130 dhe 2738 - numri i klasave dhe ndërfaqeve nga 1.0 në 1.4), dhe gjithashtu disa veçori të reja u shtuan në vetë gjuhën. Shërbimet e përfshira në JDK gjithashtu kanë ndryshuar.

Më në fund, shifra e tretë tregon zhvillimin e një versioni. Asgjë nuk ndryshon në gjuhë ose biblioteka, vetëm gabimet eliminohen, optimizimi kryhet, argumentet e shërbimeve mund të ndryshohen (shtohen). Pra, versioni më i fundit i JDK 1.0 është 1.0.2.

Edhe pse me zhvillimin e versionit 1.x asgjë nuk hiqet, sigurisht, disa funksione ose klasa janë zhvlerësuar. Ato janë deklaruar të zhvlerësuara dhe megjithëse do të mbështeten derisa të shpallet 2.0 (dhe asgjë nuk është dëgjuar ende për të), nuk rekomandohet përdorimi i tyre.

Bashkë me suksesin e parë të JDK 1.0, mbërritën edhe kritikat. Disavantazhet kryesore të gjetura nga zhvilluesit ishin si më poshtë. E para, natyrisht, është performanca. Makina e parë virtuale ishte shumë e ngadaltë. Kjo për faktin se JVM, në fakt, është një interpretues, i cili gjithmonë funksionon më ngadalë se ekzekutimi i kodit të përpiluar. Megjithatë, optimizimi i suksesshëm që eliminoi këtë të metë ishte ende përpara. U vunë re gjithashtu aftësi mjaft të dobëta të AWT, mungesa e punës me bazat e të dhënave dhe të tjera.

Në dhjetor 1996, u njoftua një version i ri i JDK 1.1 dhe versioni beta u lëshua menjëherë për qasje falas. Versioni përfundimtar doli në shkurt 1997. Çfarë është shtuar në versionin e ri Java?

Sigurisht, një vëmendje e veçantë i është kushtuar performancës. Shumë pjesë të makinës virtuale janë optimizuar dhe rishkruar duke përdorur Assembler në vend të C si më parë. Për më tepër, që nga tetori 1996, Sun ka zhvilluar një produkt të ri - përpiluesin Just-In-Time, JIT. Detyra e tij është të përkthejë bajtkodin Java të programit në kodin "amtare" të sistemit operativ. Kështu, koha e fillimit të programit rritet, por ekzekutimi mund të përshpejtohet në disa raste deri në 50 herë! Që nga korriku 1997, ekziston një zbatim për Windows dhe JIT është përfshirë në JDK si standard me aftësinë për të çaktivizuar.

Shumë veçori të reja të rëndësishme janë shtuar. JavaBeans, një teknologji e shpallur në vitin 1996, ju lejon të krijoni komponentë vizualë që mund të integrohen lehtësisht në mjetet e zhvillimit vizual. JDBC (Java DataBase Connectivity) ofron akses në bazat e të dhënave. RMI (Remote Method Invocation) e bën të lehtë krijimin e aplikacioneve të shpërndara. Mbështetja kombëtare gjuhësore dhe siguria janë përmirësuar.

Në tre javët e para, JDK 1.1 u shkarkua mbi 220,000 herë, dhe në më pak se një vit më shumë se dy milionë herë. Për momentin, versioni 1.1 konsiderohet plotësisht i vjetëruar dhe zhvillimi i tij u ndal në 1.1.8. Megjithatë, për shkak të faktit se shfletuesi më i zakonshëm MS IE ende mbështet vetëm këtë version, ai vazhdon të përdoret për të shkruar aplikacione të vogla.

Përveç kësaj, Sun filloi të ofrojë Java Runtime Environment (JRE) më 11 mars 1997. Në fakt, ky është zbatimi minimal i një makinerie virtuale që kërkohet për të ekzekutuar aplikacionet Java, pa një përpilues ose mjete të tjera zhvillimi. Nëse përdoruesi dëshiron vetëm të ekzekutojë programe, kjo është pikërisht ajo që i nevojitet.

Siç mund ta shihni, pengesa kryesore mbetet mbështetja e dobët për ndërfaqen grafike të përdoruesit (GUI). Në dhjetor 1996, Sun dhe Netscape njoftuan një bibliotekë të re, IFC (Klasat e Fondacionit të Internetit), e zhvilluar tërësisht në Java nga Netscape, për të krijuar saktësisht një ndërfaqe komplekse me dritare. Në prill 1997, u njoftua se kompanitë po planifikonin të kombinonin AWT të Sun dhe IFC të Netscape për të krijuar një produkt të ri Java Foundation Classes, JFC, i cili do të përfshinte:

  • dritare e përmirësuar

gjuha Java. Prezantimi.

Për një kohë të gjatë, ishte e vështirë të imagjinohej një revistë kompjuterike pa një artikull në gjuhën Java. Edhe gazeta dhe revista të tilla të njohura si The New York Times, The Washington Post dhe Business Week shkruan për të.

Është e pamundur të kujtohet se Radioja Publike Kombëtare i ka kushtuar ndonjëherë një program dhjetë minutash një gjuhe programimi. E mira apo e keqja varet nga këndvështrimi. Dhe investimi prej 100 milion dollarë në prodhimin e softuerit të krijuar duke përdorur një gjuhë programimi specifike ?! Kompanitë televizive CNN, CNBC dhe media të tjera vetëm folën, dhe ende po flasin, se si gjuha Java mund dhe do ta bëjë këtë.

Megjithatë, ky libër është për programues seriozë, dhe meqenëse Java është një gjuhë serioze programimi, kemi shumë për të folur. Pra, ne nuk do të zhytemi në analizën e premtimeve reklamuese dhe do të përpiqemi të zbulojmë se çfarë është e vërtetë dhe çfarë është trillim në to. Në vend të kësaj, ne do ta përshkruajmë Java si një gjuhë programimi me detaje të mjaftueshme (duke përfshirë, natyrisht, veçoritë që e lejojnë atë të përdoret për të punuar në internet, gjë që, në fakt, shkaktoi kaq shumë bujë reklamash). Pas kësaj, ne do të përpiqemi të ndajmë realitetin nga fantazia duke shpjeguar se çfarë mund dhe nuk mund të bëjë gjuha Java.

Në fillim, kishte një humnerë midis premtimeve të reklamave dhe mundësive reale të gjuhës Java. Teksa piqej, teknologjia u bë më e qëndrueshme dhe e besueshme dhe pritshmëritë ranë në një nivel të arsyeshëm. Java tani po përdoret gjithnjë e më shumë për të krijuar "middleware" që ruan komunikimin midis klientëve dhe burimeve të serverit (të tilla si bazat e të dhënave).

Ndërsa këto aplikacione të rëndësishme nuk janë dërrmuese, është në këtë fushë që gjuha Java është dëshmuar më e dobishme për shkak të pavarësisë së saj të makinës, multithreading dhe aftësive të programimit të rrjetit. Përveç kësaj, Java mori drejtimin në sistemet e integruara, duke u bërë standardi de fakto për pajisjet portative, kioskat virtuale, kompjuterët e makinave në bord dhe të ngjashme. Sidoqoftë, përpjekjet e para për të rishkruar programe të përhapura për kompjuterët personalë në Java ishin të pasuksesshme - aplikacionet që rezultuan rezultuan të ishin me fuqi të ulët dhe të ngadaltë. Me ardhjen e versionit të ri, disa nga këto probleme u zgjidhën, e megjithatë duhet pranuar se përdoruesit, në përgjithësi, janë krejtësisht indiferentë ndaj gjuhës në të cilën janë shkruar programet që kanë blerë. Ne besojmë se përfitimet kryesore të gjuhës Java do të vijnë nga krijimi i llojeve të reja të pajisjeve dhe aplikacioneve, në vend të rishkrimit të programeve ekzistuese.

Gjuha Java si një mjet programimi

Si gjuha e programimit Java i tejkaloi premtimet e saj reklamuese. Është padyshim një nga gjuhët më të mira të disponueshme për programuesit seriozë. Java ka potencialin të jetë një gjuhë e shkëlqyer programimi, por ndoshta është tepër vonë tani. Kur shfaqet një gjuhë e re programimi, lind menjëherë problemi i keq i përputhshmërisë me softuerin e krijuar më parë. Për më tepër, edhe nëse ndryshimet në këto programe mund të bëhen pa ndërhyrë në tekstin e tyre, është e vështirë për krijuesit e një gjuhe që u mirëprit aq ngrohtë nga publiku, si Java, të thonë drejtpërdrejt: “Po, mund të kemi bërë një gabim në zhvillimin e versionit X, por versioni Y do të jetë më i mirë." Si rezultat, duke pritur përmirësime të mëtejshme, duhet të themi se struktura e gjuhës Java nuk do të ndryshojë ndjeshëm në të ardhmen e afërt.

Pyetja e qartë është: " Si e keni përmirësuar gjuhën Java?"Rezulton se kjo nuk është bërë duke përmirësuar vetë gjuhën e programimit, por duke ndryshuar rrënjësisht bibliotekat e programeve të shkruara në gjuhën Java. Sun Microsystems ka ndryshuar gjithçka: duke filluar me emrat e funksioneve individuale të bibliotekës (duke i bërë ato më kuptimplota) dhe metodat e punës së moduleve grafike (duke ndryshuar mënyrën se si i trajtojmë ngjarjet dhe duke rishkruar pjesërisht programet e punës) dhe duke përfunduar me krijimin e veçorive të reja gjuhësore, si mjetet e printimit, që nuk ishin të disponueshme në Java 1.0, duke rezultuar në një platformë programimi më e dobishme se të gjitha versionet e mëparshme të gjuhës Java.

Microsoft ka lëshuar produktin e vet të quajtur J ++, i cili lidhet me gjuhën Java. J ++ interpretohet nga një makinë virtuale Java (Makina Virtuale Java) kur ekzekuton bytekodin, por gjuhët kanë ndërfaqe të ndryshme me kodet e jashtme. Gjuhët J ++ dhe Java kanë pothuajse të njëjtën sintaksë. Megjithatë, Microsoft ka krijuar konstruksione gjuhësore shtesë. Të gjithë ata kanë një vlerë mjaft të dyshimtë, me përjashtim të Windows API. Përveç faktit që këto gjuhë kanë të njëjtën sintaksë, bibliotekat e tyre kryesore (vargjet, shërbimet, mjetet e programimit të rrjetit, mjetet multithreading, bibliotekat e matematikës, etj.) janë në thelb të njëjta.

Sidoqoftë, bibliotekat grafike, ndërfaqja e përdoruesit dhe qasja e objekteve në distancë janë krejtësisht të ndryshme midis këtyre gjuhëve. Microsoft aktualisht nuk e mbështet më J ++, pasi ka zhvilluar një gjuhë të re, C #, e cila ka shumë të përbashkëta me Java, por përdor një makinë virtuale të ndryshme. Ky libër nuk përshkruan J ++ ose C #.

Përparësitë e gjuhës Java

1) Një nga avantazhet kryesore të gjuhës Java është pavarësinë nga platforma në të cilën ekzekutohen programet: I njëjti kod mund të ekzekutohet nën Windows, Solaris, Linux, Machintosh dhe më shumë.
Kjo është me të vërtetë e nevojshme kur programet shkarkohen në internet për ekzekutim të mëvonshëm nën sisteme të ndryshme operative.

2) Një avantazh tjetër është se sintaksa e gjuhës Java është e ngjashme me sintaksën e gjuhës C ++, dhe nuk është e vështirë për programuesit që njohin gjuhët C dhe C ++ ta mësojnë atë... Vërtetë, për programuesit që njohin gjuhën e Visual Basic, kjo sintaksë mund të jetë e pazakontë.

Nëse nuk keni programuar kurrë në C ++, disa nga termat e përdorur në këtë seksion mund të mos jenë të qarta për ju. Në këtë rast, ju mund ta kaloni atë. Në kohën kur të arrini në fund të Kapitullit 6, këto terma do të bëhen të njohura për ju.

3) Gjithashtu, Java - gjuhë plotësisht e orientuar nga objekti, madje më shumë se C ++... Të gjitha entitetet në Java janë objekte, me përjashtim të disa llojeve primitive, siç janë numrat. (Për shkak se është e lehtë të zhvillohen projekte komplekse me programim të orientuar nga objekti, ai zëvendëson programimin e vjetër të strukturuar. Nëse nuk jeni të njohur me programimin e orientuar nga objekti, kapitujt 3-6 do t'ju japin gjithçka që duhet të dini rreth tij.)

Sidoqoftë, nuk mjafton të zhvillohet një dialekt tjetër, pak i përmirësuar, i gjuhës C ++. Është thelbësisht e rëndësishme që është më e lehtë të zhvillohen programe pa gabime në Java sesa në C ++. Pse? Zhvilluesit e Java-s kanë menduar për një kohë të gjatë pse programet e shkruara në C ++ janë kaq të prirur ndaj gabimeve. Ata i dhanë gjuhës Java mjetet për të eliminuar vetë mundësinë e krijimit të programeve që do të fshihnin gabimet më të zakonshme. Për ta bërë këtë, gjuha Java ka bërë sa më poshtë.

4) Mundësia e alokimit të qartë dhe lirimit të memories është përjashtuar.
Kujtesa Java rikthehet automatikisht nga mbledhja e mbeturinave. Programuesi është i garantuar kundër gabimeve që lidhen me keqpërdorimin e memories.

5) Prezantoi vargje të vërteta dhe aritmetikë të ndaluar të treguesve.
Tani programuesit, në parim, nuk mund të fshijnë të dhënat nga memorja për shkak të përdorimit jo të duhur të treguesve.

6) Mundësia e ngatërrimit të operatorit të caktimit me operatorin e krahasimit të barazisë është eliminuar.
Tani nuk mund të përpiloni as shprehjen if (ntries = 3). ... ... (Programuesit e Visual Basic mund të mos vërejnë fare problem këtu, pasi ky gabim është burimi i shumicës së keqkuptimeve në C dhe C ++).

7) Trashëgimia e shumëfishtë është e përjashtuar. Ai është zëvendësuar nga një koncept i ri - një ndërfaqe e huazuar nga gjuha Objective C.
Ndërfaqja i jep programuesit pothuajse gjithçka që programuesi mund të marrë nga trashëgimia e shumëfishtë, duke shmangur kompleksitetin e menaxhimit të hierarkive të klasave.

Karakteristikat e gjuhës Java

E thjeshtë
Interpretuar
Shpërndarë
E besueshme
I sigurt
Makina e pavarur
I orientuar nga objekti
Performancë e lartë
Me shumë fije
Dinamik
Arkitektura kompjuterike e pavarur

Ne kemi prekur tashmë disa nga këto pika në pjesën e fundit. Në këtë seksion, ne do të: ofrojmë citate nga manuali i gjuhës Java që zbulojnë veçoritë e gjuhës; Le të ndajmë me lexuesit mendimet tona për disa veçori të gjuhës, bazuar në përvojën tonë të punës me versionin e saj të fundit.

E thjeshtë

Ne donim të krijonim një sistem që programohet lehtë, nuk kërkon trajnim shtesë dhe merr parasysh praktikën e vendosur dhe standardet e programimit. Prandaj, megjithëse e konsideruam gjuhën C ++ të papërshtatshme për këto qëllime, gjuha Java u projektua të ishte sa më e ngjashme me të për ta bërë sistemin më të aksesueshëm. Gjuhës Java i mungojnë shumë nga veçoritë e pakta të përdorura, të paqarta dhe të paqarta C ++ që, sipas mendimit tonë, bëjnë më shumë dëm sesa mirë.

Sintaksa Java është në thelb një version i pastruar i sintaksës C ++. Kjo gjuhë nuk ka skedarë kokash, aritmetikë të treguesve (dhe vetë treguesit), struktura, bashkime, mbingarkime të operatorëve, klasa bazë virtuale, etj. (Dallimet midis Java dhe C ++ përshkruhen në shënimet C ++ të shpërndara në të gjithë librin.) Megjithatë, zhvilluesit nuk u përpoqën të korrigjonin të gjitha mangësitë e gjuhës C ++.

Për shembull, sintaksa e deklaratës switch në gjuhën Java ka mbetur e pandryshuar. Duke ditur gjuhën C ++, do të jetë e lehtë të kaloni në sintaksën e gjuhës Java.
Nëse zakonisht përdorni një mjedis programimi vizual (siç është Visual Basic), gjuha Java do t'ju duket e ndërlikuar.
Sintaksa e saj shpesh duket mjaft e çuditshme (megjithëse nuk është e vështirë të kuptosh kuptimin e shprehjes). Më e rëndësishmja, gjuha Java kërkon shumë më tepër programim. Bukuria e Visual Basic është se mjedisi i tij i programimit vizual ju lejon të krijoni një infrastrukturë aplikacioni pothuajse automatikisht. Arritja e të njëjtit rezultat me Java kërkon programim manual, por rezulton në programe shumë më të shkurtra.

Megjithatë, ekziston një lloj i tretë i mjedisit programues që ju lejon të krijoni programe duke përdorur teknologjinë "drag-and-drop".

Një aspekt tjetër i thjeshtësisë është shkurtësia. Një nga qëllimet e gjuhës Java është të mundësojë zhvillimin e programeve që mund të ekzekutohen plotësisht në mënyrë të pavarur në makina të vogla. Përkthyesi kryesor dhe pajisjet mbështetëse të klasës janë rreth 40 KB në madhësi; bibliotekat standarde dhe mjetet e filetimit (veçanërisht mikrokerneli i pavarur) marrin edhe 17: KB.
Ky është një sukses i madh. Vini re, megjithatë, se bibliotekat mbështetëse të GUI janë shumë më të mëdha.

I orientuar nga objekti

Me fjalë të thjeshta, programimi i orientuar nga objekti është një teknikë programimi që fokusohet në të dhëna (d.m.th., objekte) dhe mjetet e qasjes në to. Për analogji me zdrukthtari, mjeshtri i orientuar nga objekti është i fokusuar kryesisht në karrigen që bën dhe vetëm së dyti interesohet për mjetet e nevojshme për ta bërë këtë; në të njëjtën kohë, marangozi jo i orientuar nga objekti mendon vetëm për veglat e tij. Karakteristikat e orientuara nga objekti i Java dhe C ++ janë në thelb të njëjta.

Orientimi i objektit ka dëshmuar vlerën e tij gjatë 30 viteve të fundit, dhe pa të është e pamundur të imagjinohet një gjuhë programimi moderne. Në të vërtetë, tiparet e orientuara nga objekti i gjuhës Java janë të krahasueshme me gjuhën C ++. Dallimi kryesor midis tyre qëndron në mekanizmin e trashëgimisë së shumëfishtë, për të cilën gjuha Java ka gjetur zgjidhjen më të mirë, si dhe në modelin metaclass të gjuhës Java.

Reflektimi (Kapitulli 5) dhe Serializimi i Objekteve (Kapitulli 12) ju lejojnë të implementoni objekte dhe vegla të qëndrueshme për ndërtimin e ndërfaqeve grafike të përdoruesit nga komponentë të jashtëm.

Nëse nuk keni programuar kurrë në gjuhë të orientuara nga objekti, lexoni me kujdes Kapitujt 4-6. Këta kapituj mbulojnë bazat e programimit të orientuar nga objekti dhe ju tregojnë përfitimet e zhvillimit të projekteve komplekse mbi gjuhët tradicionale, të orientuara nga procedura, si C ose Basic.

Shpërndarë

Java ka një bibliotekë të madhe të programeve të transferimit të të dhënave të bazuara në TCP / IP (Protokolli i Kontrollit të Transmetimit / Protokolli i Internetit), HTTP (Protokolli i Transferimit të Hipertekstit) ose FTP (Protokolli i Transferimit të Skedarit). Protokolli i transferimit të skedarëve). Aplikacionet e shkruara në gjuhën Java mund të hapin dhe aksesojnë objektet përmes rrjetit duke përdorur dheURL-të (Uniform Resource Location) janë po aq të lehta sa një rrjet lokal.

Gjuha Java ofron një përvojë të fuqishme dhe të lehtë për t'u përdorur në internet. Kushdo që ka provuar ndonjëherë të shkruajë programe për të punuar në internet në gjuhë të tjera do të befasohet këndshëm se sa lehtësisht zgjidhen detyrat më të vështira, për shembull, hapja e lidhjeve të rrjetit (lidhja e prizave), në Java. Një mekanizëm elegant i të ashtuquajturave servlet e bën funksionimin e serverit jashtëzakonisht efikas.

Servletët mbështeten nga shumë serverë të njohur në internet. (Rrjetëzimi do të trajtohet në Vëllimin II.) Komunikimi ndërmjet objekteve të shpërndara në Java sigurohet nga mekanizmi i thirrjes së metodës në distancë (kjo temë trajtohet gjithashtu në vëllimin 2).

E besueshme

Gjuha Java është krijuar për të krijuar programe që duhet të funksionojnë me besueshmëri në të gjitha situatat. Gjuha Java fokusohet në zbulimin e hershëm të gabimeve, kontrollin dinamik (gjatë ekzekutimit të programit) dhe përjashtimet e prirur ndaj gabimeve... I vetmi ndryshim domethënës midis Java dhe C ++ është modeli i treguesit Java, i cili përjashton mundësinë për të mbishkruar një seksion të dëmtimi i memories dhe i të dhënave.

Kjo pronë është gjithashtu shumë e dobishme. Përpiluesi Java zbulon gabime që gjuhët e tjera i gjejnë vetëm në kohën e ekzekutimit. Për më tepër, programuesit që kanë shpenzuar shumë orë në kërkim të një gabimi që shkaktoi dëmtim të kujtesës për shkak të një treguesi të pavlefshëm do të jenë shumë të lumtur që probleme të tilla nuk mund të lindin në gjuhën Java, në parim.

Nëse keni programuar më parë në një gjuhë Visual Basic ose COBOL që nuk përdor në mënyrë eksplicite tregues, mund të mos e kuptoni pse kjo është kaq e rëndësishme. Programuesit C janë më pak me fat. Ata kanë nevojë për tregues për të hyrë në vargjet, vargjet, objektet dhe madje edhe skedarët. Kur programoni në gjuhën Visual Basic, asnjë nga këto nuk kërkohet dhe programuesi nuk duhet të shqetësohet për ndarjen e memories për këto entitete. Nga ana tjetër, shumë struktura të dhënash në një gjuhë jo-pointer janë shumë të vështira për t'u zbatuar. Për strukturat e zakonshme si vargjet dhe vargjet, treguesit nuk janë të nevojshëm. Fuqia e treguesve hyn në lojë vetëm aty ku nuk mund të bëni pa to, si p.sh. kur krijoni lista të lidhura. Programuesi Java shpëton përgjithmonë nga treguesit e pavlefshëm, shpërndarjet e gabuara dhe rrjedhjet e kujtesës.

I sigurt

Gjuha Java është menduar për përdorim në një mjedis të rrjetit ose të shpërndarë. Për këtë arsye, vëmendje e madhe i është kushtuar sigurisë. Gjuha Java ju lejon të krijoni sisteme që janë të mbrojtura nga viruset dhe ngacmimet.

Në botimin e parë shkruam: “Kurrë mos thuaj kurrë” dhe kishim të drejtë. Një grup ekspertësh sigurie në Universitetin Princeton zbuluan gabimet e para të sigurisë në Java 1.0 menjëherë pasi versioni i parë i JDK doli në shitje. Për më tepër, ata dhe specialistë të tjerë vazhduan dhe më pas gjetën gjithnjë e më shumë gabime në mekanizmat e sigurisë të të gjitha versioneve të mëvonshme të gjuhës Java.

Në anën pozitive të kësaj situate, ekipi i zhvillimit të gjuhës Java deklaroi tolerancën zero për çdo defekt të sigurisë dhe filloi menjëherë të rregullonte çdo problem që gjendej në mekanizmin e sigurisë së aplikacioneve. Në veçanti, duke publikuar specifikimet e brendshme të përkthyesit Java, Sun e ka bërë shumë më të lehtë gjetjen e gabimeve të fshehura të sigurisë dhe ka sjellë ekspertë të pavarur për t'i gjetur ato.

Kjo rriti gjasat që ndonjë gabim në sistemin e sigurisë do të zbulohej së shpejti. Në çdo rast, është jashtëzakonisht e vështirë të mashtrosh sistemin e sigurisë së gjuhës Java. Defektet e gjetura deri më tani kanë qenë pothuajse delikate dhe (relativisht) të pakta në numër.

Faqja e internetit e sigurisë së Sun është në URL-në e mëposhtme: http://java.sun.com/sfaq/.

Këtu janë disa nga situatat që parandalon sistemi i sigurisë Java.

1) Mbingarkesa e një programi të ekzekutueshëm, i cili u shkaktua nga një "krimb" famëkeq që u përhap në internet.

2) Dëmtimi i zonave të kujtesës jashtë hapësirës së caktuar për procesin.

3) Leximi dhe shkrimi i skedarëve lokalë duke përdorur një ngarkues të sigurt të klasës, si p.sh. një shfletues uebi që nuk lejon aksesin e skedarëve të tillë.

Të gjitha këto masa sigurie janë të përshtatshme dhe zakonisht funksionojnë pa të meta, por diskrecioni nuk dëmton kurrë. Megjithëse gabimet e gjetura deri më tani nuk ishin aspak të parëndësishme dhe detajet e kërkimit të tyre shpesh mbahen sekret, duhet pranuar se ndoshta është ende e pamundur të vërtetohet siguria e gjuhës Java.

Me kalimin e kohës, mbrojtje të reja iu shtuan gjuhës. Duke filluar me versionin 1.1, koncepti i klasave të nënshkruara dixhitale u shfaq në gjuhën Java. Kur përdorni një klasë të nënshkruar në mënyrë dixhitale, mund të jeni të sigurt për autorin. Nëse i besoni, mund t'i jepni kësaj klase të gjitha privilegjet e disponueshme në kompjuterin tuaj.

Mekanizmi alternativ i dërgimit të kodit të Microsoft-it mbështetet në teknologjinë ActiveX dhe përdor vetëm nënshkrime dixhitale për siguri. Natyrisht, kjo nuk mjafton - çdo përdorues i softuerit Microsoft mund të dëshmojë se programet nga prodhuesit e njohur shpesh rrëzohen, duke krijuar kështu rrezikun e korrupsionit të të dhënave. Siguria Java është shumë më e besueshme se teknologjia ActiveX sepse kontrollon aplikacionin që nga momenti i fillimit dhe e pengon atë të shkaktojë dëme.

Arkitekturë e pavarur

Përpiluesi gjeneron një skedar objekti, formati i të cilit nuk varet nga arkitektura e kompjuterit - programi i përpiluar mund të funksionojë në çdo procesor nën kontrollin e sistemit të ekzekutimit të programit Java. Për ta bërë këtë, përpiluesi Java gjeneron komanda të kodit bajt që nuk varen nga arkitektura specifike e kompjuterit. Bajtkodi është projektuar në atë mënyrë që të mund të interpretohet lehtësisht në çdo makinë ose të përkthehet në kod të varur nga makina menjëherë.

Kjo nuk është një ide e re. Më shumë se 20 vjet më parë, si sistemi i zbatimit Pascal i Niclaus Wirth ashtu edhe UCSD Pascal përdorën të njëjtën teknologji. Përdorimi i bajtkodeve jep një përfitim të madh gjatë ekzekutimit të programit (edhe pse kompilimi sinkron e kompenson atë në shumë raste). Zhvilluesit e gjuhës Java kanë bërë një punë të shkëlqyeshme për të zhvilluar një grup udhëzimesh bajtkodi që funksionojnë mirë në shumicën e kompjuterëve modernë, duke u përkthyer lehtësisht në udhëzime reale të makinës.

Makina e pavarur

Ndryshe nga gjuhët C dhe C ++, specifikimi Java nuk ka aspekte specifike të zbatimit. Si madhësia e llojeve bazë të të dhënave ashtu edhe veprimet aritmetike mbi to janë të përcaktuara mirë.

Për shembull, int në Java gjithmonë nënkupton një numër të plotë 32-bit. Në C dhe C ++, lloji int mund të nënkuptojë një numër të plotë 16-bit ose 32-bit, si dhe një numër të plotë me madhësi arbitrare, siç zgjidhet nga zhvilluesi i një përpiluesi të veçantë. Kufizimi i vetëm është se madhësia e tipit int nuk mund të jetë më e vogël se madhësia e int-it të shkurtër dhe madhësia e int-it të gjatë. Madhësia fikse e llojeve numerike shmang shumë nga telashet që lidhen me ekzekutimin e programeve në kompjuterë të ndryshëm. Të dhënat binare ruhen dhe transmetohen në një format fiks, i cili gjithashtu shmang keqkuptimet që lidhen me renditjen e bajteve të ndryshme në platforma të ndryshme (konflikti "big endian / small endian"). Vargjet ruhen në formatin standard Unicode.

Bibliotekat, të cilat janë pjesë e sistemit, përcaktojnë një ndërfaqe të pavarur nga makina. Për shembull, gjuha ofron një dritare të klasës abstrakte dhe implementimet e saj për sistemet operative Unix, Windows dhe Macintosh.

Kushdo që ka provuar ndonjëherë të shkruajë një program që funksionon po aq mirë në Windows, Macintosh dhe dhjetë shije të Unix-it, e di se kjo është një detyrë shumë e vështirë. Versioni Java bëri një përpjekje heroike për të zgjidhur këtë problem duke ofruar një paketë të thjeshtë veglash që përshtat elementet e zakonshme të ndërfaqes së përdoruesit në një shumëllojshmëri të gjerë platformash softuerësh. Fatkeqësisht, biblioteka, e cila u mundua shumë, nuk na lejoi të arrijmë rezultate të pranueshme në platforma të ndryshme. (Në të njëjtën kohë, gabime të ndryshme u shfaqën në programet grafike në platforma të ndryshme.)

Megjithatë, ky ishte vetëm fillimi. Në shumë aplikacione, pavarësia e makinës është shumë më e rëndësishme se sa sofistikimi i një ndërfaqeje grafike të përdoruesit. Këto janë aplikacionet që kanë përfituar nga Java 1.0. Megjithatë, paketa e veglave grafike të ndërfaqes së përdoruesit tani është ridizajnuar plotësisht dhe nuk varet më nga ndërfaqja e përdoruesit në kompjuterin pritës. Versioni i ri është më kuptimplotë dhe, sipas mendimit tonë, më tërheqës për përdoruesin sesa versionet e mëparshme.

Interpretuar

Interpretuesi Java mund të dërgohet në çdo makinë dhe të ekzekutojë bitekodin direkt në të. Meqenëse redaktimi i lidhjeve është një proces më i lehtë, zhvillimi i softuerit mund të bëhet shumë më i shpejtë dhe më efikas.

Ky mund të jetë një avantazh kur zhvilloni aplikacione, por citati është një ekzagjerim i qartë. Në çdo rast, përpiluesi Java në Paketën e Zhvillimit të Softuerit Java (JSDK) është mjaft i ngadaltë. (Disa përpilues të llojit të tretë, si ata nga IBM, janë shumë më të shpejtë.) Shpejtësia e rikompilimit është vetëm një faktor që karakterizon efikasitetin e një mjedisi programimi. Kur krahasoni shpejtësinë e Java kundrejt Visual Basic, mund të zhgënjeheni.

Performancë e lartë

Ndërsa bajtkodet e interpretuara në përgjithësi janë më se të përshtatshme në performancë, ka situata ku kërkohet performancë edhe më e lartë. Bajtkodet mund të përkthehen menjëherë (në kohën e ekzekutimit) në kode makinerie për një procesor specifik në të cilin po funksionon aplikacioni.

Nëse një përkthyes përdoret për të ekzekutuar bajtkodet, shprehja "performancë e lartë" nuk duhet të përdoret. Megjithatë, në shumë platforma është e mundur një lloj tjetër përpilimi, i ofruar nga përpiluesit në kohë - JIT. Ata e përkthejnë bajtkodin në kod të varur nga makina, e ruajnë rezultatin në memorie dhe më pas e thërrasin sipas nevojës. Meqenëse interpretimi kryhet vetëm një herë, kjo qasje rrit shpejtësinë e punës shumë herë.

Përkundër faktit se përpiluesit sinkron janë akoma më të ngadaltë se kompajlerët e varur nga makina, ata janë në çdo rast shumë më të shpejtë se interpretuesit, duke siguruar shpejtësi 10 ose edhe 20 herë për disa programe. Kjo teknologji po përmirësohet vazhdimisht dhe në fund mund të arrijë shpejtësi që përpiluesit tradicionalë nuk mund t'i tejkalojnë kurrë. Për shembull, një përpilues sinkron mund të përcaktojë se cila pjesë e kodit po ekzekutohet më shpesh dhe ta optimizojë atë për shpejtësinë e ekzekutimit.

SHUMË FIJE

Ofron interaktivitet dhe ekzekutim më të mirë të programit.

Nëse keni provuar ndonjëherë të bëni llogaritje me shumë fije në ndonjë gjuhë tjetër programimi, do të habiteni këndshëm se sa e lehtë është ta bëni këtë në Java. Fijet Java mund të përfitojnë nga sistemet e shumëpërpunimit nëse e lejon sistemi operativ. Fatkeqësisht, zbatimet e transmetimeve në shumicën e platformave janë shumë të ndryshme nga njëra-tjetra, dhe zhvilluesit e gjuhës Java nuk bëjnë asnjë përpjekje për të arritur uniformitetin. Vetëm kodi për thirrjen e fijeve mbetet i njëjtë për të gjitha makinat; gjuha Java e zhvendos zbatimin e multithreading në sistemin operativ themelor ose bibliotekën threading. (Fijet janë mbuluar në Vëllimin II.) Pavarësisht kësaj, është lehtësia e multithreading ajo që e bën Java kaq tërheqëse për zhvillimin e softuerit të serverit.

Dinamik

Në shumë mënyra, Java është më dinamike se C ose C ++. Është projektuar për t'u përshtatur lehtësisht me një mjedis që ndryshon vazhdimisht. Metodat dhe objektet e reja mund të shtohen lirisht në biblioteka pa shkaktuar ndonjë dëm. Gjuha Java e bën të lehtë marrjen e informacionit për ecurinë e një programi.

Kjo është shumë e rëndësishme kur ju duhet të shtoni kod në një program tashmë të ekzekutuar. Një shembull kryesor i kësaj është kodi që shkarkohet nga Interneti për ekzekutim nga një shfletues. Në Java 1.0, nuk ishte e lehtë të merrje informacion për ecurinë e një programi që po ekzekutohej, por versioni aktual i gjuhës Java i ekspozon programuesit si strukturën ashtu edhe sjelljen e objekteve të programit që ekzekutohen.
Kjo është shumë e vlefshme për sistemet që duhet të analizojnë objektet gjatë ekzekutimit të programit. Sisteme të tilla përfshijnë ndërtues GUI, korrigjues inteligjentë, shtojca dhe baza të të dhënave të objekteve.

Java dhe interneti

Ideja është e thjeshtë - përdoruesit shkarkojnë bytekodet Java nga Interneti dhe i ekzekutojnë ato në makinat e tyre. Programet Java që funksionojnë në shfletues ueb quhen aplikacione. Për të përdorur aplikacionin, ju nevojitet një shfletues uebi i aktivizuar me Java që mund të interpretojë kodet e bajtit. Burimi i gjuhës Java është i licencuar nga Sun, i cili këmbëngul që vetë gjuha dhe struktura e bibliotekave të saj kryesore të mbeten të pandryshuara. Fatkeqësisht, ky nuk është rasti në realitet. Versione të ndryshme të shfletuesve Netscape dhe Internet Explorer mbështesin versione të ndryshme të gjuhës Java, disa prej të cilave janë dukshëm të vjetruara. Kjo situatë fatkeqe krijon gjithnjë e më shumë pengesa në zhvillimin e aplikacioneve që përfitojnë nga versioni më i fundit i gjuhës Java. Për të adresuar këtë problem, Sun ka zhvilluar Java Plug-in, i cili ofron mjedisin më modern për ekzekutimin e programeve Java bazuar në shfletuesit Netscape dhe Internet Explorer.

Ngarkimi i një aplikacioni është si të futni një imazh në një faqe interneti. Apleti bëhet pjesë e faqes dhe teksti mbështillet rreth hapësirës që zë. Megjithatë, ndryshimi është se imazhi tani është i gjallë. Ai u përgjigjet komandave të përdoruesit, ndryshon pamjen e tij dhe siguron transferimin e të dhënave midis kompjuterit në të cilin shikohet aplikacioni dhe kompjuterit që po ekzekuton aplikacionin.

Ngarkimi i një aplikacioni është si të futësh një fotografi në një faqe interneti. Apleti bëhet pjesë e faqes dhe teksti mbështillet rreth hapësirës që zë. Çështja është se imazhi është "live". Ai i përgjigjet hyrjes së përdoruesit, ndryshon pamjen e tij dhe transferon të dhëna midis kompjuterit që drejton apletin dhe kompjuterit që drejton apletin.

Në fig. 1.1 tregon një shembull të mirë të një faqe interneti dinamike që kryen llogaritje komplekse dhe përdor një aplikacion për të shfaqur molekulat. Për të kuptuar më mirë strukturën e molekulës, mund ta rrotulloni atë ose të zmadhoni imazhin duke përdorur miun. Manipulime të tilla nuk mund të bëhen në ueb faqe statike, por aplikacionet e bëjnë të mundur. (Ky aplet mund të gjendet në http://jmol.sourceforge.net.)

Oriz. 1.1. Apleti Jmol

Apletet mund të përdoren për të shtuar butona të rinj dhe fusha teksti në një faqe interneti. Megjithatë, këto aplikacione janë të ngadalta për t'u ngarkuar përmes linjës telefonike.

Pothuajse e njëjta gjë mund të bëhet duke përdorur format HTML Dinamike, Hypertext Markup Language (HTML) ose një gjuhë skriptimi si JavaScript. Natyrisht, aplikacionet e para ishin të destinuara për animacion: rrotullime të globeve, vallëzime të personazheve vizatimorë, tekste fantastike, e kështu me radhë. Sidoqoftë, shumica e të mësipërmeve mund të bëjnë GIF të animuar, dhe HTML-ja dinamike, e kombinuar me skriptimin, bën shumë më tepër sesa aplikacionet.

Si rezultat i papajtueshmërive të shfletuesit dhe ngarkimit të paqëndrueshëm mbi lidhjet e ngadalta të rrjetit, aplikacionet që synojnë faqet e internetit nuk kanë qenë një përparim i madh. Në rrjetet lokale (intranet) situata është krejtësisht e ndryshme. Zakonisht nuk kanë probleme me gjerësinë e brezit, kështu që koha e ngarkimit të aplikacioneve është e parëndësishme. Në rrjetin lokal, mund të zgjidhni shfletuesin e dëshiruar ose të përdorni programin Java Plug-In. Punonjësit nuk mund të zhvendosin një program të dorëzuar përmes një rrjeti në vendndodhjen e gabuar ose ta instalojnë gabimisht dhe një administrator i sistemit nuk ka nevojë të anashkalojë të gjitha makinat e klientit dhe të përditësojë programet në to. Një numër i madh programesh të krijuara për llogaritjen e inventarit, caktimin e pushimeve, rimbursimin e udhëtimeve dhe të ngjashme janë zhvilluar nga shumë korporata në formën e aplikacioneve të bazuara në shfletues.

Ndërsa shkruanim librin, lavjerrësi u zhvendos përsëri nga programet e klientit në programimin nga ana e serverit. Në mënyrë të veçantë, serverët e aplikacioneve mund të përdorin aftësitë e monitorimit të Makinës Virtuale Java për të balancuar automatikisht ngarkesën, lidhjet e bazës së të dhënave, sinkronizimin e objekteve, mbylljen dhe ringarkimin në mënyrë të sigurtë dhe proceset e tjera të nevojshme për aplikacionet e serverëve të shkallëzuar, të cilat janë pothuajse të pamundura për t'u zbatuar saktë. Kështu, programuesit që krijonin aplikacione ishin në gjendje t'i blinin këto mekanizma komplekse në vend që t'i zhvillonin ato vetë. Kjo rriti produktivitetin e programuesve - ata u përqendruan në logjikën e programeve të tyre, pa u hutuar nga detajet që lidhen me funksionimin e serverëve.

ZhvilluesiWorks Java Zone përmban qindra artikuj, udhëzime, këshilla dhe përmbajtje nga komuniteti Java për t'ju ndihmuar të përfitoni sa më shumë nga platforma Java dhe teknologjitë e lidhura me të kur zhvilloni aplikacione. Sidoqoftë, zhvilluesit aspirantë që sapo kanë filluar me Java mund ta kenë të vështirë të lundrojnë në vëllimin e madh të burimeve të disponueshme në internet. Prandaj, ne kemi krijuar këtë faqe, e cila ofron një pasqyrë të teknologjive themelore Java në kontekstin e përgjithshëm të aftësive të kësaj gjuhe. Gjeni lidhje me burimet për të mësuar më tej Java, të tilla si artikujt e developerWorks për fillestarët dhe burime të tjera arsimore, dhe lidhje me shkarkimet për produktet e IBM.

A jeni një zhvillues aspirues Java? Kjo faqe ofron një përmbledhje të teknologjive kryesore Java™ dhe vendin e tyre në zhvillimin modern të softuerit. Me lidhje me artikujt hyrës të zhvilluesit Works mbi këtë dhe tema të ngjashme, materiale të tjera edukative dhe shkarkime dhe produkte IBM, kjo faqe është një pikënisje e shkëlqyer për të mësuar Java.

Cilat janë "teknologjitë Java"?

Java është një gjuhë programimi dhe një platformë.

Së pari, Java është një objekt i orientuar drejt nivelit të lartë gjuhë programimi... Në përpilimi, i cili ekzekutohet një herë gjatë ndërtimit të aplikacionit, kodi Java konvertohet në kodin e gjuhës së ndërmjetme ( bytekod). Nga ana tjetër, bytekodi analizohet dhe ekzekutohet ( interpretuar) makina virtuale Java (JVM), e cila vepron si një përkthyes midis gjuhës Java dhe harduerit të sistemit operativ. Të gjitha implementimet Java duhet të imitojnë JVM në mënyrë që aplikacionet që shkruani të mund të ekzekutohen në çdo sistem që përfshin makinën virtuale Java.

Së dyti, Java është platformë softuerike, versionet e të cilave ofrohen për sisteme të ndryshme harduerike. Ekzistojnë tre versione të Java-s (shih seksionin Java Platforma Editions më poshtë). Platforma përfshin JVM dhe Ndërfaqen e Programimit të Aplikacionit Java (API), e cila është një grup i gjerë i komponentëve (klasave) të gatshme të softuerit që lehtësojnë zhvillimin dhe vendosjen e aplikacioneve dhe aplikacioneve. Java API mbulon shumë aspekte të zhvillimit të Java, duke përfshirë manipulimin e objekteve bazë, programimin e rrjetit, sigurinë, gjenerimin e XML dhe shërbimet e Uebit. API organizohet si një grup bibliotekash të quajtura në pako të cilat përmbajnë klasa dhe ndërfaqe për zgjidhjen e problemeve të ndërlidhura.

Përveç API-së, çdo implementim i plotë i platformës Java duhet të përfshijë sa vijon:

  • Mjete zhvilluesish për përpilimin, ekzekutimin, monitorimin, korrigjimin dhe dokumentimin e aplikacioneve.
  • Mekanizmat standardë për vendosjen e aplikacioneve në një mjedis përdoruesi.
  • Paketat e veglave që ju lejojnë të krijoni ndërfaqe komplekse grafike të përdoruesit.
  • Bibliotekat e integrimit për aksesin programatik në bazat e të dhënave dhe manipulimin e objekteve në distancë.

JVM është gjithashtu një kornizë e provuar për ekzekutimin e aplikacioneve të shkruara në gjuhë të tjera përveç Java. Në veçanti, Groovy, Scala dhe zbatimet e specializuara të Ruby dhe Python u ofrojnë zhvilluesve mundësinë për të ekzekutuar gjuhë dinamike dhe funksionale në JVM (për më shumë informacion, shihni Cila është lidhja e Java me gjuhët dinamike dhe programimin funksional?) .

Gjuha Java u zhvillua nga Sun Microsystems. Aktualisht, zhvillimi i teknologjive Java, duke përfshirë punën për specifikimet, zbatimin e referencës dhe testet e përputhshmërisë, kryhet nën kontrollin e organizatës së hapur jofitimprurëse JCP (Java Community Process), e cila bashkon zhvilluesit dhe të licencuarit Java. Në vitin 2007, Sun lëshoi ​​një version falas të Java, i cili përfshin përbërësit kryesorë të platformës, nën licencën GNU GPL v2 (GPLv2). Mund të lexoni më shumë rreth këtij versioni në seksionin Java dhe Zhvillimi i Software-it të Lirë.

Pse duhet të mësoni Java?

Avantazhi kryesor i gjuhës Java është transportueshmëria e aplikacioneve Java, d.m.th. Aftësia për të ekzekutuar në çdo platformë harduerike dhe sistem operativ, pasi të gjitha JVM-të, pavarësisht se në cilën platformë funksionojnë, janë në gjendje të ekzekutojnë të njëjtin bajtkod.

Gjuha Java dhe platforma janë jashtëzakonisht të shkallëzueshme. Mund të krijoni lehtësisht aplikacione për pajisje me burime të kufizuara duke përshtatur softuerin e shkruar fillimisht për desktopin. Megjithatë, Java është gjithashtu ideale për zhvillimin e aplikacioneve në ueb nga ana e serverit që i mundësojnë një përdoruesi të aksesojë burimet kompjuterike në ueb. Aftësia për të ekzekutuar në mënyrë të sigurt kodin e ngarkuar në ueb u ndërtua fillimisht në Java, kështu që Java ofron një nivel të lartë sigurie kur punoni në internet. Aplikacionet në ueb ekzekutohen në mjediset e kohës së funksionimit të quajtura Kontejnerët në ueb të cilat ofrojnë shumë shërbime të përshtatshme, duke përfshirë dërgimin e kërkesave, sigurinë dhe konkurencën, menaxhimin e ciklit jetësor dhe aksesin në API si emërtimi, menaxhimi i transaksioneve dhe emaili. Një numër i tyre janë shkruar në Java serverët e aplikacioneve që veprojnë si kontejnerë ueb për komponentë të tjerë Java, XML dhe shërbime të uebit që ndërveprojnë me bazat e të dhënave dhe japin në mënyrë dinamike përmbajtjen e faqes së internetit. Këta serverë ofrojnë gjithashtu një mjedis për vendosjen e aplikacioneve dhe mjeteve të ndërmarrjes për menaxhimin e transaksioneve, grupimin, sigurinë, lidhjen dhe nivelet e kërkuara të disponueshmërisë, performancës dhe shkallëzueshmërisë.

Duke mbështetur përdorimin e standardeve të hapura në aplikacionet e ndërmarrjeve, Java hap mundësi të mëdha për përdorimin e shërbimeve të uebit të bazuara në XML për të ndihmuar partnerët e biznesit të shkëmbejnë burime informacioni dhe aplikacione. Java është në qendër të shumë produkteve dhe shërbimeve të konsulencës teknike të IBM (Produktet dhe teknologjitë e IBM për Zhvilluesit Java) dhe luan një rol kyç në disa nga bizneset kryesore të kompanisë.

  • Eksploroni qasjen e IBM dhe mësoni se si SOA mund t'ju ndihmojë të krijoni aplikacione heterogjene me funksionalitet nga burime të shumta, brenda dhe jashtë ndërmarrjes, duke mbështetur kështu proceset horizontale të biznesit. IBM ofron një sërë përdoruesish biznesi dhe profesionistësh të TI-së për t'ju ndihmuar të filloni me këtë teknologji.
  • është një qasje e bazuar në komponentë e ofruar nga IBM që ofron një gamë të plotë mundësish për ndryshime strategjike. Zgjidhjet e ofruara bazohen në softuer fleksibël, të zgjerueshëm, të bazuar në standarde të hapura (përfshirë Java) dhe infrastrukturën harduerike.

Edicionet e platformës Java
Ekzistojnë tre botime të platformës Java që lejojnë zhvilluesit e aplikacioneve, ofruesit e shërbimeve dhe prodhuesit e pajisjeve të krijojnë zgjidhje që plotësojnë nevojat e grupeve specifike të përdoruesve.

  • Java SE (Platforma Java, Edicion standard)... Duke përdorur Java SE, mund të ndërtoni dhe vendosni aplikacione Java për desktop dhe serverë, dhe të zhvilloni softuer dhe programe të integruara për sisteme në kohë reale. Edicioni Java SE përfshin klasat e nevojshme për të krijuar shërbime ueb dhe komponentët bazë Java EE (Java Platform, Enterprise Edition). Versioni aktual i platformës Java SE është Java SE 6, i njohur gjithashtu si "Mustang". Megjithatë, shumë zhvillues janë ende duke përdorur Java SE 5 (Java 5.0, ose "Tiger").
    • Për një përmbledhje të shkëlqyer të veçorive të Java SE 5, shihni artikujt e kolonës. Shumica e aspekteve të programimit për platformën Java SE 5, për të cilën janë ndërtuar shumë aplikacione ekzistuese, janë ende të rëndësishme për Java SE 6.
    • Ky artikull përshkruan veçoritë e reja në Java SE 6 për monitorimin dhe vlerësimin e performancës së aplikacionit.
    • Ky artikull ofron një hyrje në një gjuhë skriptimi që funksionon në krye të platformës Java SE 6 dhe shërben për të thjeshtuar programimin e ndërfaqeve komplekse të përdoruesit.
    • Kjo seri me dy pjesë e titulluar ofron një hyrje në API të ofruar nga Java SE 6 që lejon aplikacionet Java të ekzekutojnë kodin dinamik të skriptimit dhe anasjelltas. ...
  • Java EE (Platforma Java, Edition Enterprise)... Ky version i ndërmarrjes i platformës i ndihmon zhvilluesit të ndërtojnë dhe vendosin aplikacione Java portative, të besueshme, të shkallëzueshme dhe të sigurta nga ana e serverit. Duke u mbështetur në aftësitë e Java SE, Java EE ofron shërbime në internet, modele komponentësh, API të largimit dhe menaxhimit për të zbatuar softuerin e ndërmarrjes në SOA dhe Web 2.0.
    • Lexoni artikuj dhe për një pasqyrë hyrëse të aftësive të versionit më të fundit të platformës Java EE.
    • Shikoni serinë - një kornizë popullore për ndërtimin e aplikacioneve Java EE të lehta dhe të besueshme.
    • Për më shumë informacion mbi Java EE, shihni artikujt në kolonë.
    • Artikujt në serinë Fillimi: Migrimi në Platformën Java janë shkruar posaçërisht për zhvilluesit .NET, klientin/serverin e Windows dhe ASP për t'i ndihmuar ata të migrojnë në Java.
  • Java ME (Platforma Java, Micro Edition)... Java ME ofron një mjedis funksionimi për aplikacione të ndërtuara për një gamë të gjerë sistemesh celulare dhe të integruara, si telefonat celularë, PDA, set-top boxes dhe printera. Ky botim i platformës ofron ndërfaqe fleksibël të përdoruesit, një model të fortë sigurie, një gamë të plotë të protokolleve të integruara të rrjetit dhe mbështetje të fuqishme për rrjetin dhe aplikacionet e ngarkuara dinamikisht jashtë linje. Aplikacionet e bazuara në specifikimet Java ME mund të ekzekutohen në një sërë pajisjesh dhe të jenë ende në gjendje të shfrytëzojnë aftësitë e tyre të sistemit.

Cilat teknologji janë përbërësit kryesorë të platformës Java?

Zona Java developerWorks përmban Java-në e përfshirë. Më poshtë janë renditur disa nga komponentët, paketat e mundshme shtesë dhe shtesat e përfshira me çdo botim të platformës. Çdo teknologji ka një përshkrim të shkurtër dhe një lidhje me burimet që përshkruajnë vendin e saj në botën Java. Vini re se shumë nga komponentët janë të përfshirë në të tre botimet e Platformës Java.

Teknologjitë e përfshira në Java SE:

  • Klasat e Java Foundation (lëkundje)(JFC) është një koleksion i bibliotekave të klasës Java të përdorura për të krijuar ndërfaqe grafike të përdoruesit dhe funksione të tjera grafike në aplikacionet e klientit Java. Menaxhimi .
  • JavaNdihmëështë një sistem ndihmës i shtrirë i pavarur nga platforma që lejon zhvilluesit dhe shkrimtarët teknikë të ngulitin faqet e ndihmës në aplikacione, komponentë softuerësh, aplikacione, sisteme operative dhe pajisje dhe të krijojnë sisteme ndihmëse në ueb. Referojuni artikullit.
  • falë Ndërfaqja origjinale Java(JNI) Aplikacionet Java që ekzekutohen brenda JVM mund të ndërveprojnë me programe dhe biblioteka të shkruara në gjuhë të tjera programimi.
  • Teknologjia Java Web Start Thjeshtëson vendosjen e aplikacioneve Java duke i lejuar përdoruesit të shkarkojnë dhe ekzekutojnë softuer të pasur, si p.sh. tabelat, me klikimin e një butoni të mausit, pa instalim (shih artikullin).
  • Lidhshmëria e bazës së të dhënave Java(JDBC) është një API që ofron mjetet për të hyrë në shumicën e burimeve të të dhënave relacionale nga aplikacionet Java. Mund të lidhet me shumë baza të dhënash SQL, si dhe me burime të tjera tabelare të të dhënave, si p.sh. tabelat dhe skedarët e sheshtë.
  • Java e avancuar Imazhe(JAI) është një API e orientuar nga objekti që ofron një model të thjeshtë programimi të nivelit të lartë për të thjeshtuar manipulimin e imazhit.
  • Shërbimi i Autentifikimit dhe Autorizimit Java(JAAS) është një teknologji që ofron shërbime me një mjet për të vërtetuar përdoruesit dhe për të verifikuar të drejtat e tyre të aksesit. Ai përfshin një implementim Java të kornizës standarde PAM (Pluggable Authentication Module) dhe mbështet autorizimin në nivel përdoruesi.
  • Zgjerimi i kriptografisë Java(JCE) është një grup paketash që ofrojnë infrastrukturë dhe zbatime për enkriptimin, gjenerimin dhe shkëmbimin e çelësave dhe algoritmet e kodit të vërtetimit të mesazheve (MAC). Kjo teknologji përfshin gjithashtu mbështetje për shifrat simetrike, asimetrike, të bllokut dhe të transmetimit, si dhe për objekte të sigurta dhe të mbyllura për transmetim. Më shumë detaje mund të gjenden në manual.
  • Objektet e të dhënave Java(JDO) është një model standard i qëndrueshmërisë abstrakte për objektet Java bazuar në ndërfaqe. Ai i lejon zhvilluesit të ruajnë drejtpërdrejt shembujt e klasave të domenit Java në ruajtje të vazhdueshme (të tilla si një bazë të dhënash). Në disa raste, ky model mund të zëvendësojë shkrimin e drejtpërdrejtë në një skedar, serializimin, JDBC, si dhe përdorimin e komponentëve EJB nga ana e serverit, të dyja të menaxhuara nga kontejnerët (Këmbëngulja e menaxhuar me kontejnerë - CMP) dhe gjendjen e ruajtjes në mënyrë të pavarur (Bean Managed Persistence - BMP).
  • Qese plastike Zgjerimet e menaxhimit të Java-s(JMX) ofron mjete për ndërtimin e aplikacioneve të shpërndara, modulare, dinamike dhe të bazuara në ueb për menaxhimin dhe monitorimin e pajisjeve, softuerëve dhe rrjeteve bazuar në ofrimin e shërbimit (shih artikullin).
  • Java Media Framework(JMF) ju lejon të shtoni informacione audio, video dhe media të tjera në aplikacionet dhe aplikacionet Java (shih manualin).
  • Emërtimi Java dhe Ndërfaqja e Drejtorisë(JNDI) është një ndërfaqe e unifikuar për qasjen në shërbime të ndryshme të emrave dhe drejtorive në një rrjet të korporatës. Ai mundëson që aplikacionet të lidhen në mënyrë efikase me një sërë shërbimesh emërtimi dhe drejtorie në një mjedis heterogjen ndërmarrje.
  • Zgjatjet e foleve të sigurta Java(JSSE) është një koleksion paketash për shkëmbimin e sigurt të informacionit në internet. Ata zbatojnë versionin Java të protokolleve Secure Sockets Layer (SSL) dhe Transport Layer Security (TLS) dhe ofrojnë mjetet për të kriptuar të dhënat, verifikuar integritetin e mesazhit dhe vërtetimin në server dhe klient (kjo e fundit është opsionale).
  • Java Speech API(JSAPI) përfshin specifikimet JSGF (Java Speech Grammar Format) dhe JSML (Java Speech Markup Language). Kjo paketë ofron aftësi për përdorimin e teknologjive të të folurit në ndërfaqen e përdoruesit. JSAPI është një API ndër-platformë për mbështetjen e njohjes së komandave zanore, sistemet e hyrjes së të folurit dhe sintezën e të folurit. Shihni pjesën tjetër të artikullit për më shumë detaje.
  • Java 3Dështë një API që ofron aftësi ndër-platformë dhe të shkallëzueshme për të punuar me grafika 3D në aplikacionet Java. API është i organizuar si një grup ndërfaqesh të orientuara nga objekti që palosen në një model programimi të vetëm, të thjeshtë dhe të nivelit të lartë.
  • Mekanizmi Lehtësia e meta të dhënave Lejon zhvilluesit të përcaktojnë atributet për klasat, ndërfaqet, fushat dhe metodat në mënyrë që ato të mund t'i nënshtrohen një trajtimi të veçantë nga mjetet e zhvillimit, mjetet e vendosjes dhe bibliotekat e palëve të treta në kohën e ekzekutimit (shih artikullin).
  • Java Content Repository APIështë një API për aksesin në depo të përmbajtjes në Java SE, pavarësisht nga zbatimi i tyre. Depo të tilla janë sisteme të menaxhimit të informacionit të nivelit të lartë dhe janë versione të zgjeruara të depove klasike të të dhënave.
  • Numërimet(numërimi) është një lloj i të dhënave që ju lejon të përshkruani elementë të ndryshëm të të dhënave si një grup konstantesh të shtypur.
  • Gjenerikët(llojet gjenerike) ju lejojnë të krijoni klasa me parametra (lloje abstrakte) që specifikohen në fazën e instancimit. Shihni artikullin për detaje dhe gjithashtu shikoni artikullin se si llojet gjenerike e bëjnë më të lehtë punën me koleksionet në Java SE 6.0.
  • Shërbimet komunale Konkurrencaështë një grup klasash që ofrojnë funksionalitetin e nivelit të mesëm që zakonisht kërkohet nga aplikacionet e përpunimit paralel.
  • Java API për përpunimin XML(JAXP) është një API që aplikacionet Java mund ta përdorin për të analizuar dhe transformuar dokumentet XML, pavarësisht nga procesori XML i përdorur. Kjo i lejon aplikacionet të kalojnë lehtësisht midis përpunuesve të ndryshëm pa ndryshuar kodin e aplikacionit. Nga ana tjetër, teknologjia JAXB ( Java API për lidhjen XML) ofron aftësi për të automatizuar hartëzimin e dokumenteve XML me objektet Java.
  • SOAP me API të bashkëngjitjeve për Java(SAAJ) u ofron zhvilluesve funksione për gjenerimin dhe përpunimin e mesazheve në përputhje me specifikimin SOAP 1.1, duke specifikuar SOAP me Shtojca. Shihni artikullin për më shumë detaje).

Teknologjitë J2EE:

  • Ndërmarrja JavaBeans(EJB) është një model komponenti që thjeshton zhvillimin e programeve të mesme duke ofruar shërbime të tilla si menaxhimi i transaksioneve, siguria dhe lidhja me bazën e të dhënave.
  • Specifikimi i portletit përcakton një grup API-sh për ndërtimin e portaleve në Java, duke mbuluar aspekte të tilla si grumbullimi dhe prezantimi i informacionit, personalizimi dhe siguria (shih artikullin).
  • JavaMailështë një API që ofron një grup klasash abstrakte që modelojnë sistemin e postës.
  • Shërbimi i mesazheve Java(JMS) është një API që mbështet krijimin e aplikacioneve portative të mesazheve Java. Ai përcakton një grup të përbashkët konceptesh bazë dhe strategji programimi për të gjitha sistemet e mesazheve në përputhje me JMS.
  • Fytyrat e JavaServerit(JSF) ofron një model programimi që ju ndihmon të ndërtoni aplikacione në ueb duke grumbulluar faqe nga komponentë të ndërfaqes së përdoruesit të ripërdorshëm, duke i lidhur ato përbërës me burimet e të dhënave dhe ngjarjet e krijuara nga klienti me mbajtësit e serverëve. Për më shumë informacion, shihni serinë e artikujve të tutorialit me dy pjesë dhe të serive të kolonave.
  • Faqet e JavaServerit(JSP) u ofron zhvilluesve të uebit mjetet për të krijuar dhe mirëmbajtur me lehtësi faqe interneti dinamike, ndër-platformë, të cilat ndajnë ndërfaqen e përdoruesit dhe gjenerimin e përmbajtjes, në mënyrë që projektuesit të mund të ndryshojnë shënimin pa prekur përmbajtjen e krijuar në mënyrë dinamike (shih udhëzuesin.
  • Biblioteka standarde e etiketave për faqet JavaServer(JSTL) është një koleksion etiketash të specializuara që ofrojnë një format standard për kryerjen e veprimeve të kërkuara nga shumë aplikacione Web. Shikoni Rifresko faqet tuaja JSP me JSTL dhe serinë me katër pjesë të titulluar.
  • Java Servlets zgjeroni funksionalitetin e serverëve të uebit duke ofruar një qasje ndër-platformë, të bazuar në komponentë për ndërtimin e aplikacioneve në ueb, e cila është e lirë nga kufizimet e performancës së CGI.
  • Arkitektura e lidhësve J2EE(JCA) ofron një arkitekturë standarde për lidhjen e aplikacioneve J2EE me sistemet heterogjene të informacionit të ndërmarrjeve (EIS). Kjo arkitekturë përcakton një grup mekanizmash të shkallëzuar dhe të sigurt të bazuar në transaksione me anë të të cilave shitësit EIS mund të ofrojnë përshtatës standarde të burimeve për t'u përfshirë në një server aplikacioni. Për më shumë informacion, shihni artikujt dhe manualin.
  • Specifikimi i menaxhimit J2EE(JMX) përcakton një model informacioni menaxhimi për platformën J2EE. Ky model është krijuar posaçërisht për të ndërvepruar me shumë sisteme dhe protokolle kontrolli. Ai përmban mjete standarde për hartëzimin në Modelin e Përbashkët të Informacionit (CIM), Baza e Informacionit të Menaxhimit SNMP (MIB) dhe modelin e objektit Java duke përdorur serverin rezident EJB të komponentit të menaxhimit J2EE EJB (MEJB).
  • Java Transaction API(JTA) është një API e pavarur e zbatimit dhe protokollit të nivelit të lartë që u siguron programeve dhe serverëve të aplikacioneve mjetet për të hyrë në transaksione. Shërbimi i Transaksionit Java(JTS) përcakton një zbatim të një menaxheri transaksioni që mbështet JTA dhe zbaton, në një nivel themelor, hartëzimin në Shërbimin e Transaksionit të Objekteve (OTS 1.1) të OMG. Përhapja e transaksioneve në JTS zbatohet duke përdorur protokollin Inter-ORB (IIOP). Shihni artikullin për më shumë detaje.

Teknologjitë që janë pjesë e J2ME:

  • Profili i pajisjes së informacionit celular(MIDP) është një nga dy konfigurimet që përbëjnë mjedisin e kohës së funksionimit Java për pajisjet celulare me burime të kufizuara. MIDP ofron funksionalitet bazë për aplikacionet, duke përfshirë mjetet për krijimin e ndërfaqeve të përdoruesit, lidhjen me burimet e rrjetit, ruajtjen lokale të të dhënave dhe menaxhimin e ciklit jetësor.
  • Konfigurimi i pajisjes së lidhur(CDC) është një infrastrukturë e standardizuar për ndërtimin dhe vendosjen e aplikacioneve që mund të aksesohen nga shumë pajisje të lidhura në rrjet dhe të integruara.
  • API grafike celulare 3D për J2ME(M3G) është një API interaktiv 3D i lehtë që është një shtesë për J2ME. Mund të lexoni më shumë rreth tij në serinë me dy pjesë.

Teknologjitë Java dhe zhvillimi i aplikacioneve në ueb

Java ka qenë gjuha kryesore për zhvillimin e aplikacioneve në ueb për shumë vite. Vitet e fundit, shumë korniza dhe biblioteka janë shfaqur për të lehtësuar krijimin e aplikacioneve Java Web, duke përfshirë aplikacione të pasura interaktive Web 2.0.

Shikoni burimet e mëposhtme për Java Web Development.

  • Kjo kolonë prezanton Grails, një kornizë moderne për ndërtimin e aplikacioneve Web të shkruara në Groovy. Grails ju lejon të kombinoni pa probleme kodin Java të shkruar më parë me aftësinë për të përdorur një gjuhë skriptimi fleksibël dhe dinamik. Për më shumë informacion mbi Groovy, shihni Cila është marrëdhënia e Java me gjuhët dinamike dhe programimin funksional më poshtë?.
  • Ajax është një metodologji programimi që përdor gjuhët e skriptimit nga ana e klientit për të komunikuar me një server në ueb në mënyrë që faqet të mund të rifreskohen shpejt pa pasur nevojë t'i ringarkoni ato plotësisht. Në këtë seri artikujsh dhe, do të mësoni se si Ajax mund t'ju ndihmojë si zhvillues Java. Shikoni developerWorks për më shumë informacion.
  • JavaServer Faces (JSF) ofron një model programimi që ju ndihmon të ndërtoni aplikacione në ueb duke mbledhur faqe nga komponentë të ndërfaqes së përdoruesit të ripërdorshëm, duke i lidhur ata komponentë me burimet e të dhënave dhe ngjarjet e krijuara nga klienti me mbajtësit e serverëve. Për më shumë informacion, shihni serinë e artikujve të tutorialit me dy pjesë dhe të serive të kolonave.
  • Platforma Eclipse Web Tools (WTP) zgjeron mjedisin popullor të zhvillimit të Eclipse duke shtuar mjete për ndërtimin e aplikacioneve Web bazuar në teknologjitë Java EE (shih udhëzuesin).
  • Shikoni developerWorks për shumë materiale të tjera të shkëlqyera mbi këto tema.

Java Technologies, SOA dhe Shërbimet e Uebit

Arkitektura e Orientuar në Shërbimin (SOA) është një model komponenti që lidh modulet funksionale të një aplikacioni (të njohur si Shërbimet nga erdhi termi Shërbimet e internetit) përmes ndërfaqeve dhe kontratave të përshkruara në mënyrë rigoroze. Përkufizimet e ndërfaqes janë të pavarura nga hardueri, sistemi operativ dhe gjuha e programimit në të cilën zbatohet shërbimi, duke ruajtur kështu komunikimin e unifikuar ndërmjet shërbimeve që janë komponentë të sistemeve të ndryshme. SOA është një shembull i një modeli programimi të lidhur lirshëm që ofron një alternativë ndaj modeleve klasike të orientuara drejt objektit të lidhur ngushtë.

Të krijuara mbi këtë parim, shërbimet në ueb ju lejojnë të përshkruani rregullat dhe proceset e biznesit në XML, në mënyrë që ndërveprimi i aplikacioneve të mund të kryhet pavarësisht nga platformat dhe gjuhët e programimit të përdorura. Teknologjitë XML promovojnë transportueshmërinë e të dhënave dhe thjeshtojnë krijimin e mesazheve, ndërsa teknologjitë Java ju mundësojnë të shkruani kod portativ. XML dhe Java punojnë mirë së bashku, duke i bërë ato kombinimin e përsosur të teknologjive për ndërtimin dhe vendosjen e shërbimeve të Uebit.

Për më shumë informacion, lexoni materialet e mëposhtme:

  • Faqet dhe faqet e DeveloperWorks mund t'ju ndihmojnë të lundroni në këto teknologji sfiduese.
  • Në këtë seri, do të mësoni rreth infrastrukturave të shërbimeve të Java Web dhe shtresave të reja funksionale të ndërtuara në krye të këtyre shërbimeve.
  • Ky artikull prezanton një stil elegant të dizajnit të shërbimeve të Uebit të quajtur Transferimi i Shtetit Përfaqësues (REST) ​​dhe shpjegon se si të përdorni Java për të ndërtuar shërbime Ueb RESTful.
  • Kuptimi i teknologjisë JAX-RPC (Java API-based RPC for Working with XML) është thelbësor për krijimin e shërbimeve efikase në ueb Java.
  • JAX-WS është hapi tjetër i dukshëm në evolucionin e JAX-RPC. Një hyrje praktike për këtë API të re është dhënë në tutorial.
  • Kjo seri është një udhëzues për Arkitekturën e Komponentit të Shërbimit (SCA), një specifikim që përshkruan një model SOA për zhvillimin e aplikacioneve dhe sistemeve.
  • Ky artikull ofron një hyrje në kuadrin e Objekteve të të Dhënave të Shërbimit, i cili thjeshton modelin e të dhënave Java EE për ndërtimin e aplikacioneve SOA.

Çfarë lidhje ka Java me gjuhët dinamike dhe programimin funksional?

Shumë zhvillues që po fillojnë me Java kanë përvojë të gjerë me gjuhë të tjera programimi. Në të njëjtën kohë, edhe programuesit më të nderuar pranojnë se Java nuk është gjuha ideale për zgjidhje nga të gjitha problemet e hasura në praktikë. Për fat të mirë, me mbështetjen e JVM, ju mund të përfitoni plotësisht nga skriptimet dinamike dhe gjuhët funksionale të sotme kur zhvilloni aplikacione për platformën Java. Fleksibiliteti dhe dinamizmi i këtyre gjuhëve rezultojnë të jenë shumë të dobishme gjatë prototipit dhe zbatimit të llojeve të caktuara të aplikacioneve.

Mund të lexoni më shumë rreth mundësive të përdorimit të gjuhëve dinamike dhe funksionale në platformën Java në materialet, lidhjet me të cilat janë dhënë më poshtë.

  • Gjuha e skriptimit Groovy lejon zhvilluesit Java të përdorin konstruktet dhe bibliotekat e tyre më të njohura gjuhësore, ndërkohë që ofrojnë një mjedis zhvillimi fleksibël dhe dinamik që nuk kërkon kompilim, thjeshton sintaksën dhe mbështet skriptimin brenda aplikacioneve të zakonshme Java. Një përmbledhje e detajuar e aftësive të kësaj gjuhe jepet në artikujt e serisë.
  • API i ri i skriptimit në Java SE 6, i cili është i pajtueshëm me Java SE 5 dhe përmban një grup të vogël ndërfaqesh dhe klasash, ofron një mënyrë të thjeshtë për të thirrur skriptet e shkruara në dhjetëra gjuhë nga kodi Java. Me të, ju mund të ngarkoni dhe telefononi skriptet e jashtme në kohën e ekzekutimit, duke ndryshuar në mënyrë dinamike sjelljen e aplikacionit tuaj. Mund të lexoni më shumë rreth këtij API në serinë me dy pjesë të titulluar.
  • Jeni një mbështetës i zjarrtë i programimit funksional? Pastaj duhet t'i kushtoni vëmendje kolonës që flet për Scala, një gjuhë programimi për JVM që kombinon një qasje funksionale dhe të orientuar nga objekti ndaj zhvillimit.
  • VM-të kanë mbështetur gjuhët alternative të programimit për një kohë të gjatë. Në artikujt e kolonës, mund të lexoni për implementimet JVM të gjuhëve të tilla si Rexx, Ruby, JavaScript, Python dhe disa të tjera.

Java dhe Zhvillimi i Software-it të Lirë

Ka mënyra të panumërta për të ndërtuar biblioteka Java, paketa mjetesh, korniza, programe dhe serverë aplikacionesh që hapin mundësi shtesë për zhvilluesit për të shfrytëzuar këtë platformë të fuqishme. Një sërë teknologjish falas janë përfshirë me kalimin e kohës në platformën Java, ndërsa të tjerat kanë mbetur të njohura me zhvilluesit Java gjatë viteve, në disa raste duke vepruar si standarde de facto.

  • Apache Software Foundation (EN) bashkon shumë projekte me burim të hapur, shumica e të cilave janë zhvilluar me teknologjinë Java. Disa nga anëtarët e kësaj familje projektesh janë renditur më poshtë.
    • Apache Struts është një kornizë për ndërtimin e aplikacioneve në ueb që ndjekin arkitekturën Model-View-Controller.
    • Apache Shale është një tjetër kornizë moderne për ndërtimin e aplikacioneve në ueb që trashëgohet nga Struts dhe bazohet në teknologjinë JSP (JavaServer Pages). Për një hyrje në Shale, shihni artikujt në seri.
    • Apache Ant është standardi de fakto për automatizimin e procesit të ndërtimit të aplikacioneve Java.
    • Apache Maven Build Tool u projektua duke pasur parasysh kërkesat e projekteve moderne të softuerit, me ndërveprime dinamike midis ekipeve të zhvillimit dhe mbështetje në shumë komponentë të mbështetur në mënyrë të pavarur (shih udhëzuesin).
    • Apache Tomcat është një kontejner i njohur në internet që mbështet serverat dhe faqet e serverëve Java (JSP).
    • Projekti Apache Geronimo ka të bëjë me krijimin e një serveri aplikacioni Java EE plotësisht në përputhje me specifikimet, bazuar në teknologjinë thjesht falas. Mund të lexoni më shumë rreth Geronimo në këtë artikull dhe në faqen e zhvilluesitWorks për një mori përmbajtjesh të dobishme.
    • Apache Derby është një server relacional i bazës së të dhënave i implementuar plotësisht në Java. Një hyrje në Derby është dhënë në artikull.
  • Eclipse (EN) është një platformë e hapur dhe e pavarur zhvillimi dhe një grup mjetesh bazë për ndërtimin e softuerit. Është shkruar në Java dhe ofron një infrastrukturë shtesë për të lehtësuar zhvillimin, integrimin dhe përdorimin e mjeteve softuerike. IBM është një anëtar themelues i Eclipse.org dhe merr pjesë aktive në bordin drejtues të projektit dhe nënkomitetet. Ju mund të lexoni për disa nga teknologjitë përbërëse të platformës Eclipse që synojnë krijimin e aplikacioneve Java në materialet e mëposhtme:
    • AspectJ është një shtrirje e orientuar nga aspekti në gjuhën Java që mund të përdoret për të zbatuar në mënyrë modulare funksionalitete të ndërthurura, të tilla si logimi ose trajtimi i përjashtimeve.
    • Paketa e veglave standarde të miniaplikacioneve (EN) (SWT) është një paketë veglash që ju lejon të shfrytëzoni fuqinë e sistemit operativ për të krijuar elementë të ndërfaqes së përdoruesit në një mënyrë efikase dhe të lëvizshme.
    • Mylyn është një sistem i fuqishëm i menaxhimit të punës për përdoruesit e Eclipse. Për udhëzime të hollësishme, shihni artikujt dhe, i njohur më parë si "Acegi Security for Spring", është një zgjidhje e fuqishme dhe fleksibël sigurie për aplikacionet e ndërmarrjeve të ndërtuara në krye të kornizës Spring. Është mbuluar në detaje në katër artikuj të serisë.
  • Sun Microsystems ka nisur gjithashtu projektet e mëposhtme të komunitetit në java.net:
    • Openjdk

Si të zhvilloni aftësitë e programimit Java?

Ka dy mënyra kryesore se si mund të zhvilloni aftësitë tuaja të programimit Java: merrni një kurs trajnimi të dedikuar (me opsione certifikimi), ose mësoni Java vetë duke praktikuar kodimin. Kurset e trajnimit jo vetëm që ju lejojnë të mësoni nga përvoja e zhvilluesve të kualifikuar, por gjithashtu ofrojnë mundësinë për të marrë një certifikatë që mund të bindë një punëdhënës të mundshëm se keni aftësitë e nevojshme për të përballuar sfidat teknike me të cilat përballemi. Duke vepruar kështu, ju mund të thelloni njohuritë tuaja në fusha të ndryshme të Java, duke eksperimentuar vetë dhe duke përdorur të gjitha burimet në dispozicion. Cilado rrugë që zgjidhni, burimet e mëposhtme do t'ju ndihmojnë.

  • Udhëzues dhe artikuj
    • DeveloperWorks ka një koleksion të gjerë që është i dyti vetëm pas kodimit të vetes për sa i përket dobisë në mësimin e Java.
    • Artikujt janë seri dhe janë të shkëlqyer për të përmirësuar aftësitë tuaja në gjuhën Java.
    • Përdorimi i teorisë së dizajnit për të krijuar aplikacione të botës reale diskutohet në artikujt në seri.
    • Zhvilluesit me përvojë Java para-ndërtojnë mjete në aplikacionet e tyre për të korrigjuar dhe testuar ato. DeveloperWorks ka disa artikuj në seri - lojëra në kohë reale të bazuara në Eclipse për të mësuar programimin Java. Për një hyrje në CodeRuler, shihni Pushtimi i Mbretërive Mesjetare me CodeRuler.
  • Kurse trajnimi teknik IBM
    • Shijoni një shumëllojshmëri të gjerë kursesh Java në internet, ballë për ballë dhe multimedia nga IBM Global Services.
  • Certifikimin
    • Ju mund të bëni disa provime për të fituar certifikata që demonstrojnë aftësitë tuaja programuese Java. Për kurset e certifikimit, shihni faqen e internetit të Certifikimit Java.
    • IBM fuqizon aftësitë tuaja në teknologjitë e lidhura me Java, të tilla si ndërtimi i aplikacioneve të ndërmarrjeve për WebSphere, softueri Racional, DB2, XML dhe SOA.
  • Forumet
    • Moderuar nga ekspertë me vite përvojë në teknologjinë Java, kjo është mënyra më interaktive për të mësuar gjuhën Java.

Produktet dhe teknologjitë e IBM për zhvilluesit Java

IBM është një nga liderët në aplikimin praktik të teknologjive Java. Më poshtë janë lidhjet me disa nga produktet dhe teknologjitë e IBM të disponueshme për zhvilluesit për platformën Java.

  • Produkte të shkarkueshme falas:
    • (Java Developer Kit) është një koleksion mjetesh për ndërtimin dhe testimin e aplikacioneve dhe aplikacioneve për Java SE dhe Java ME në një sërë sistemesh operative të njohura, duke përfshirë Windows, Linux dhe AIX.
    • (IBM Development Package for Eclipse) është një paketë veglash zhvilluesish e pambështetur e bazuar në Eclipse që ju lejon të ndërtoni dhe ekzekutoni aplikacione në mjedisin tuaj të zhvillimit jashtë raftit.
    • : Ju mund të shkarkoni paketa softuerike falas Eclipse nga developerWorks, duke përfshirë produktet paralele Calisto dhe Europa.
    • është një depo virtuale e teknologjive premtuese Java që po zhvillohet në IBM. Këto përfshijnë API-të, IDE-të, kompletet e zhvillimit, implementimet e referencës dhe shërbimet. Më poshtë janë lidhjet me disa nga teknologjitë e paraqitura në alphaWorks.
    • ... Ky mjet ju ndihmon të analizoni dhe gjeneroni skriptet Ant të testueshme për ndërtimin e projekteve të zhvilluara me Eclipse, Rational dhe WebSphere IDE për platformat Java EE dhe SCA.
    • (IBM Pattern Modeling and Analysis Tool for Java Garbage Collector). Ky mjet analizon skedarët e detajuar të gjurmëve GC, analizon përdorimin e memories së grumbullit (grumbullit) dhe rekomandon akordimin e aplikacionit bazuar në rezultatet e simulimit të kujtesës. (Secure Shell Library for Java) është një implementim i lehtë i protokollit SSH-2 i zhvilluar nga Task Forca e Inxhinierisë së Internetit (IETF). Ai siguron mjete të sigurta vërtetimi dhe shërbime të tjera të sigurta që funksionojnë në një rrjet të pasigurt. ju lejon të konsolidoni dhe transformoni të dhënat, duke rritur kështu produktivitetin, fleksibilitetin dhe produktivitetin e biznesit tuaj duke ofruar akses të shpejtë në informacionin që ju nevojitet.

Çfarë është siguria e informacionit? Kjo është një gjendje e sigurisë së informacionit, e cila siguron konfidencialitetin, disponueshmërinë dhe integritetin e tij.

Zakonisht, për të vlerësuar gjendjen e sigurisë së informacionit, është e nevojshme të kuptohen dhe analizohen kërcënimet dhe burimet e tyre, të vlerësohet niveli i dëmtimit, gjasat e zbatimit dhe rëndësia e kërcënimeve, rreziqet (opsionale) që mund të ndikojnë në sistemin tonë / informacion.

Sipas mendimit tim, është e pamundur të vlerësohet siguria e një teknologjie ose gjuhe programimi të caktuar pa u lidhur me një metodë specifike zbatimi, domethënë pa një produkt specifik të përfunduar softuerësh në një gjuhë që ka një specifikim teknik të detajuar me një përshkrim të arkitekturës dhe funksionalitetit. Por edhe kjo nuk do të jetë e mjaftueshme, pasi është e nevojshme të vlerësohet gjendja e sigurisë së sistemit të informacionit të përfunduar me arkitekturën e tij specifike, grupin e komponentëve, proceset e biznesit, informacionin dhe, së fundi, njerëzit. Më lejoni t'ju jap një shembull të ndërtimit të një shtëpie. Kemi materiale (rërë, çimento, gurë të grimcuar, tulla etj.) dhe mjete (kovë, lopatë, mistri etj.). Ne nuk do të jemi në gjendje të vlerësojmë cilësinë dhe besueshmërinë e shtëpisë së përfunduar vetëm nga materialet / mjetet e përdorura: sa kohë do të qëndrojë, nëse do të plasaritet, nëse do të jetë e ftohtë apo e qetë. Ju duhet të zgjidhni një projekt shtëpie, teknologji ndërtimi dhe një ekip zejtarësh. Dhe vetëm pas përfundimit të ndërtimit, ne do të jemi në gjendje të matim pajtueshmërinë me projektin, GOST, SNiP, të kontrollojmë matjet e mbrojtjes termike, zhurmën, ngarkesat, të analizojmë cilësinë e çimentos dhe t'i përgjigjemi shumicës së pyetjeve. Por pyetja kryesore "sa kohë do të qëndrojë?" Nuk do të kemi një përgjigje të saktë, pasi nuk i dimë të gjitha kushtet e funksionimit të shtëpisë dhe të gjithë faktorët që do të ndikojnë gjatë gjithë kohës.

Si ta mbani Java të sigurt

Merrni Java për shembull . Është një gjuhë programimi e orientuar nga objekti; Programet Java përkthehen në bitekod Java, i cili ekzekutohet nga makina virtuale Java (JVM), një program që përpunon kodin e bajtit dhe i kalon instruksionet harduerit si përkthyes. Avantazhi i kësaj metode të ekzekutimit të programeve është pavarësia e plotë e bytekodit nga sistemi operativ dhe hardueri, i cili ju lejon të ekzekutoni aplikacione Java në çdo pajisje për të cilën ekziston një makinë virtuale përkatëse.

« Një gjuhë universale "tingëllon bukur, por problemi më i zakonshëm është gjithashtu ana e kundërt e medaljes - një rrjedhje memorie në JVM, e cila çon në tejmbushje të memories dhe përplasje. Në lidhje me këtë problem, dobësitë nuk përjashtohen, sepse postulati bazë i besueshmërisë është që sa më e thjeshtë aq më mirë. Në këtë rast, një byrek kaq kompleks po mblidhet nga sigurimi i përputhshmërisë së një numri të madh platformash dhe sistemesh operative që është pothuajse e pamundur të gjurmohen dhe mbyllen të gjitha dobësitë e gjetura në to dhe t'i eliminojnë shpejt ato. Për të njëjtin Microsoft, dobësitë mund të gjenden dhe rregullohen pas 4-8 vjetësh, dhe kjo nëse nuk merrni parasysh veçoritë e padeklaruara të mbetura qëllimisht ose gabimisht.

Nga praktika ime: kur programuesit shtojnë funksionalitet të ri që lidhet me një të implementuar tashmë, ose rregullojnë funksionalitetin e vjetër, atëherë në 15% të rasteve ata thyejnë një produkt të funksionuar më parë. Dhe nëse në të njëjtën kohë ata nuk kryejnë testim të plotë, në dalje kemi një produkt me funksionalitet të ri, por me të vjetrën pjesërisht të pafuqishme. Ekzistojnë gjithashtu ndryshime në kodimin për platforma të ndryshme, versione të OS, softuer. Në këtë drejtim, mund të imagjinohet se sa e vështirë është të ruash gjuhën e programimit Java dhe JVM, për të mos përmendur çështjet e sigurisë.

Për momentin është lëshuar Java Development Kit 10, e cila na ofron mekanizma standardë të sigurisë, të lëshuar për Java SE 8 dhe të përshkruara në Dokumentacionin e Sigurisë. Asgjë e re nuk është shtuar në versionin e dhjetë.

Vini re se Oracle ka një Qendër të Burimeve të Sigurisë Java. Në përgjithësi, kompania e ndan sigurinë Java në katër seksione kryesore:

A) zhvilluesit duhet:

Ndiqni dhe përdorni të gjitha mjediset më të fundit të zhvillimit dhe përditësimet e sigurisë;

Përdorni programe për të kontrolluar korrektësinë e kodit (për shembull, Checker Framework);

B) administratorët e sistemit duhet:

Ndiqni dhe përdorni të gjitha përditësimet më të fundit për Java dhe komponentët e nevojshëm që produkti të funksionojë (përfshirë OS, bibliotekat, kornizat, etj.);

Përdorni rregullat e vendosjes së Java të përshkruara nga dhe;

Përdorni një vulë kohore të besueshme.

C) përdoruesit përfundimtarë duhet:

Përdorni gjithmonë versionin më të fundit origjinal Java;

D) profesionistët e sigurisë kanë nevojë:

Përdorni mjete të avancuara të menaxhimit dhe përmirësoni sigurinë (për shembull, Advanced Management Console);

Monitoroni instalimin në kohë të të gjitha përditësimeve të sigurisë;

Është e rëndësishme që të gjithë të ndjekin dhe të ndjekin rregullat dhe rregulloret e sigurisë. Arritja e një gjendje sigurie në një nivel adekuat mund të bëhet vetëm së bashku dhe duke përdorur të gjitha masat në dispozicion (teknike, organizative). Siç tregon praktika ime, në 60% të organizatave, shërbimet e TI-së dhe të sigurisë së informacionit po ecin mirë me sigurinë, si dhe me përdoruesit që përdorin pajisje të korporatës dhe janë të lidhur me një domen të vetëm. Por më të pakontrolluarit në këtë fushë janë zhvilluesit, drejtuesit e ekipeve, arkitektët.

Zhvillimi i softuerit dhe çështjet e sigurisë

Më gjerësisht, arsyet kryesore për problemet e sigurisë në aplikacione gjatë zhvillimit të softuerit janë si më poshtë:

A) Mungesa e kuptimit të terminologjisë së sigurisë në përgjithësi, për të mos përmendur njohuritë specifike dhe zgjidhjet e aplikuara.

Si rregull, zhvilluesit e lidhin sigurinë në rastin më të mirë me gjërat e mëposhtme: kontrollin e hyrjes dhe regjistrimin dhe mbrojtjen e fjalëkalimit, më rrallë - mbrojtjen e lidhjes në nivelin https (duke përdorur mekanizmat e enkriptimit që janë të disponueshëm jashtë kutisë si parazgjedhje). Dmth formalisht ata do të përdorin metoda sigurie, të cilat në fakt do të mbeten formale, "për show", pa marrë parasysh kërkesat dhe nuancat:

Për fjalëkalimet: zakonisht përdoren vlerat e paracaktuara dhe nuk konfigurohen shtesë për gjatësinë, forcën, frekuencën e ndryshimit, mospërsëritshmërinë, numrin e përpjekjeve. Shumë shpesh, këto parametra nuk mund të ndryshohen, pasi ato nuk janë përfshirë në detyrën e fushës për zhvillimin e softuerit, gjë që çon në nevojën për të shtuar kodin.

Për menaxhimin dhe regjistrimin e aksesit: në rastin më të mirë, zhvilluesit kanë përshkruar grupet ose rolet e përdoruesve dhe objektet e aksesit që duhet të jenë të disponueshme në softuer. Në rastin më të keq, vetë zhvilluesit "ndanë" seksionet dhe objektet në ato të nevojshme për përdoruesit dhe administratorët. Në rastin e parë, marrim një sistem që mund të konfigurohet në mënyrë fleksibël, por kërkon një kohë të konsiderueshme për të konfiguruar dhe negociuar të drejtat. Në të dytën - një sistem zyrtar i kontrollit të aksesit. Për më tepër, zhvilluesit duhet të kuptojnë se çfarë lloj informacioni dhe në çfarë vëllimi duhet të regjistrohen. Megjithatë, ata shpesh nuk pajisen me këtë informacion, gjë që çon në detaje të pamjaftueshme në regjistra për të analizuar incidentet ose për të kuptuar se çfarë po ndodh në softuer. Ose për ruajtjen e tepërt të regjistrave dhe një sasi të madhe informacioni, gjë që imponon kufizime të rëndësishme në aftësinë për të ruajtur informacionin për një periudhë të kërkuar kohore (për shembull, një deri në tre vjet) ose ekziston nevoja për të blerë depo informacioni shtesë. Me regjistrimin e tepërt të informacionit, lindin probleme shtesë me shpejtësinë e analizës dhe analizës së incidenteve dhe shpejtësinë e gjetjes së informacionit të nevojshëm. Teprica mund të kërkojë gjithashtu fonde shtesë për zgjerimin e stafit, blerjen e sistemeve SIEM me rregulla unike për përpunimin e informacionit ose mund të çojë në rreziqe që lidhen me informacionin e vjetëruar. Në të njëjtën kohë, harxhohet shumë kohë për analizimin dhe përpunimin e informacionit.

Mbrojtja e kanaleve të komunikimit nuk është më pak e rëndësishme, veçanërisht për sistemet e pagesave dhe ato bankare, ku përveç zbulimit të të dhënave personale dhe personale, janë të mundshme edhe humbje financiare. Më shpesh ndodh që ata të mos mendojnë për mbrojtjen e kanaleve dhe mediave të transmetimit të informacionit, dhe nëse mendojnë, përdorin cilësimet "e parazgjedhur", për shembull, TLS / SSL. Por ka edhe veçoritë e veta në zgjedhjen e versionit të protokollit (TLS 1.1, 1.2, 1.3 ose SSL v1-3), algoritmin e enkriptimit (RC4, IDEA, Triple DES, SEED, Camellia ose AES), gjatësinë e çelësit. Ndonjëherë, për shembull, zgjidhet protokolli i saktë TLS 1.2, me enkriptim AES, një gjatësi çelësi 256 bit, por ju harroni mundësinë e zgjedhjes së një adrese në portin 443 për HTTPS dhe ose portin 80 për HTTP, në vend që të bllokoni portin. 80, si rezultat i të cilit bëhet e mundur qasja përmes një kanali të pasigurt. Ose, për shembull, ata ngrenë infrastrukturën në makinat virtuale dhe nuk mendojnë fare për nevojën e mbylljes së aksesit në rrjet midis makinave virtuale.

B) Problemi i dytë lidhet me biznesin, pasi investon para në funksione specifike të veçanta që nuk marrin parasysh blloqet e sigurisë.

Fatkeqësisht, një biznes nuk e kupton gjithmonë pse duhet të shpenzojë burime në blloqe sigurie, nëse nuk ka përfitim funksional prej tyre, produkti nuk do të sjellë më shumë para, por ka vetëm rreziqe të mundshme që mund të mos funksionojnë. Biznesi më shpesh e kupton nevojën për të investuar në siguri kur tashmë ka ndodhur një incident i sigurisë së informacionit.

Fatkeqësisht, për këtë nuk është fajtor vetëm biznesi, por edhe mjedisi i tij, i cili:

Gjithashtu nuk e kupton sigurinë;

Kurse buxhetin për specialistët e sigurisë së informacionit (ata nuk janë punësuar fare ose janë punësuar specialistë shumë të specializuar, ose një person është punësuar që të jetë përgjegjës për gjithçka);

Nuk mund të përcjell në mënyrë të arsyeshme nevojën për siguri dhe të justifikoj saktë rreziqet aktuale (reputacion, financiar, të përkohshëm).

C) Problemi i komunikimit në kompani ose mungesa e tij.

Ky është rasti kur biznesi dhe mjedisi i tij e kuptojnë nevojën dhe rëndësinë e sigurisë së informacionit. Ata ndanë buxhete, punësuan specialistë të duhur, por ka vështirësi në komunikimin midis njësive të biznesit dhe shërbimeve të sigurisë së informacionit/IT, zhvilluesve.

D) Mungesa e ndërgjegjësimit të përdoruesve të thjeshtë të kompanisë në çështjet e sigurisë së informacionit.

Supozoni se keni të gjitha departamentet, specialistët, masat teknike dhe organizative të nevojshme. Por përdoruesit rezistojnë dhe nuk duan të punojnë sipas rregullave. Kjo është një situatë shumë e zakonshme dhe është gjithashtu e nevojshme ta zgjidhim atë në mënyrë gjithëpërfshirëse, pasi njerëzit nuk e kuptojnë pse u duhet punë shtesë për të përmbushur çështjet e sigurisë së informacionit (kontrolloni skedarët me antivirus, mbani mend fjalëkalimet komplekse, dini dhe respektoni politikat dhe biznesin proceset, etj.). Është e nevojshme që periodikisht të organizohen klasa master, të tregohet në nivel familjar se çfarë është siguria e informacionit, cilat probleme dhe zgjidhje ekzistojnë, të komunikohen qëllimet dhe objektivat globale të sigurisë së informacionit dhe të motivohen ato dhe ndikimi i tyre në biznes.

E) Mungesa e arkitektëve të sigurisë së informacionit - specialistët e sigurisë së informacionit nuk janë gjithmonë të përfshirë në zhvillimin e softuerit, dhe vetë programuesit mendojnë për sigurinë e arkitekturës dhe përdorimin e modeleve të shkruara dhe të gatshme të sigurisë (Security Models).

Zhvilluesit nuk i dinë të gjitha nuancat dhe nuk mund t'i dinë, pasi detyra e tyre është të përfundojnë zhvillimin dhe të kalojnë në atë tjetër. Nëse futeni më thellë në vetë zhvillimin, procesi është shumë më i ndërlikuar nga sa duket. Prandaj, është e nevojshme të merret qartë detyra nga biznesi, të zbërthehet në mini-detyra të kuptueshme për zhvilluesit, të kryhet zhvillimi, të kryhen teste alfa dhe beta, ngarkimi, testet funksionale, rregullimi i gabimeve, kthimi në teste - ky proces është ciklik dhe gjatë. Prandaj, nuk është për t'u habitur që ata nuk kanë burime të mjaftueshme për të menduar për sigurinë e produktit deri në detajet më të vogla.

Për të folur për sigurinë, duhet të zgjidhni problemet e përshkruara më sipër. Unë nuk i përshkruaj në mënyrë specifike opsionet për zgjidhje, pasi gjithçka varet nga problemet specifike, mjedisi, kushtet. Nuk ka asnjë pilulë që i përshtatet të gjithëve dhe duhet marrë çdo masë paraprake e mundshme. Detyra kryesore është që të gjithë punonjësit e kompanisë të depërtojnë, kuptojnë dhe respektojnë kërkesat e sigurisë së informacionit dhe të jenë të interesuar t'i respektojnë ato. Dhe vetëm atëherë do të jetë e mundur të flitet për efektivitetin dhe një nivel të mirë pjekurie të sigurisë së informacionit në kompani.

Artikujt kryesorë të lidhur