Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 7, XP
  • Uvod u Java programiranje. Koje su tehnologije glavne komponente Java platforme? Java tehnologije i razvoj web aplikacija

Uvod u Java programiranje. Koje su tehnologije glavne komponente Java platforme? Java tehnologije i razvoj web aplikacija

Programski jezik Java i njegov prateći runtime sistem su dizajnirani tako da se jednom razvijeni i kompajlirani programi isporučuju preko Interneta u binarnom obliku i pokreću na bilo kojoj mašini koja podržava Java. Sigurnost je bila dio razvoja Jave od samog početka. U ovom dijelu će se raspravljati o radu ovog sigurnosnog sistema.

Java je jezik bezbedan tipovima. To znači da će kompajler odbiti svaki pokušaj korištenja varijable poput ove



osveta sa njenim tipom. Za poređenje, razmotrite sljedeće

Generiše nasumični broj i pohranjuje ga u p pokazivač. Zatim pohranjuje nulti bajt na adresu sadržanu u p, prepisuje ono što je bilo prije - kod ili podatke. U Javi, konstrukcije koje miješaju tipove na ovaj način zabranjene su samom gramatikom. Osim toga, Java nema varijable pokazivača, duhove, alokacije memorije kojima upravlja korisnik (kao što su malloc i free), a sve reference niza se provjeravaju u vremenu izvođenja.

Java programi se kompajliraju u srednji binarni kod koji se zove JVM bytecode. Postoji oko 100 komandi u JVM-u, od kojih većina gura objekte određenog tipa na stek, izbacuje ih iz steka ili aritmetički spaja dva unosa na stek. Ovi JVM programi se općenito tumače, iako u nekima
U nekim slučajevima, mogu se prevesti u mašinski jezik radi bržeg izvršavanja. U Java modelu, apleti koji se šalju preko Interneta za daljinsko izvršavanje su JVM programi.

Kada aplet stigne, prolazi kroz JVM proceduru provjere bajtkoda za usklađenost sa određenim pravilima. Pravilno kompajlirani aplet će ih automatski uskladiti, ali ništa ne sprečava napadača da napiše JVM aplet u JVM asembleru. Procedura verifikacije uključuje traženje odgovora na sljedeća pitanja:

1. Da li aplet pokušava lažirati pokazivače?

2. Da li krši ograničenja pristupa članovima privatnih klasa?

3. Da li pokušava da koristi varijablu jednog tipa kao varijablu drugog tipa?

4. Da li generira prelijevanje ili preljev steka?

5. Ne vrši li nevažeće konverzije varijabli jednog tipa u varijable drugog tipa?

Ako aplet prođe sve ove testove, može se pokrenuti bez straha da će pristupiti područjima memorije koja nije njegova.

Međutim, apleti i dalje mogu upućivati ​​sistemske pozive pozivanjem Java metoda (procedura) predviđenih za ovu svrhu. Metode koje su korišćene za ovo u Javi su se stalno poboljšavale. U prvoj verziji Jave, JDK (Java Development Kit) 1.0, apleti su podijeljeni u dvije klase: pouzdane i nepouzdane. Apleti koji su se preuzimali sa lokalnog diska bili su pouzdani i dozvoljavali su im bilo koji sistemski poziv koji su im bili potrebni. Nasuprot tome, apleti dobijeni putem interneta smatrani su nepouzdanim. Oni su vođeni u sandboxu, kao što je prikazano na sl. 9.33, a praktično im nije bilo dozvoljeno ništa.

Nakon što je stekao iskustvo s ovim modelom, Sun je odlučio da je previše restriktivan. JDK 1.1 je digitalno potpisan. Kada je aplet došao sa Interneta, potvrđeno je da ga je potpisala osoba ili organizacija kojoj korisnik vjeruje (kako je određeno korisnikovom listom pouzdanih nositelja digitalnog potpisa). Ako bi se potpisima moglo vjerovati, aplet bi mogao učiniti bilo šta; ako ne, radio je u sandboxu sa strogim ograničenjima.

Nakon sticanja dodatnog iskustva, i ovaj sistem se pokazao kao nezadovoljavajući, pa je ponovo promijenjen sigurnosni model. JDK 1.2 uveo je konfigurabilnu, vrlo prilagodljivu sigurnosnu politiku koja se primjenjuje na sve aplete, kako lokalne tako i udaljene. Ovaj sigurnosni model je toliko složen da bi njegovom opisu trebalo posvetiti posebnu knjigu (Gong, 1999), pa ćemo dati samo kratku generalizovanu sliku nekih od njegovih glavnih karakteristika. Svaki aplet karakteriziraju dvije stvari: odakle je došao i ko ga je potpisao. Na pitanje odakle je došao odgovara njegov URL, a na pitanje ko ga je potpisao odgovara privatni ključ kojim je digitalno potpisan. Svaki korisnik može kreirati sigurnosnu politiku koja se sastoji od liste pravila. Svako pravilo može navesti URL, vlasnika potpisa, objekt i radnju koju aplet može poduzeti s objektom ako je URL apleta

a vlasnik potpisa će odgovarati onima navedenim u pravilu. Konceptualno date informacije prikazane su u tabeli. 9.3, iako je u stvarnosti drugačije formatiran i odnosi se na hijerarhiju Java klasa.


Jedna vrsta radnje omogućava pristup datoteci. Radnja može definirati određenu datoteku ili direktorij, skup svih datoteka u datom direktoriju ili skup svih datoteka i direktorija rekurzivno sadržanih u datom direktoriju. Tri reda u tabeli. 9.3 odgovaraju ova tri slučaja. U prvom redu, korisnik Susan je postavila svoj zapis o dozvolama tako da apleti koji dolaze sa njene mašine za obradu poreza, www.taxprep.com, a potpisana od strane procesorske kompanije, imaju pristup njenim poreznim podacima u datoteci 1040.xls... Oni mogu samo čitati ovu datoteku, koju nijedan drugi aplet ne može pročitati. Osim toga, svi apleti iz svih izvora, bez obzira da li su potpisani ili ne, mogu čitati i pisati datoteke u /usr / tmp direktorij.

Nadalje, Susan toliko vjeruje Microsoftu da dozvoljava apletima primljenim sa njene stranice i potpisanim od strane Microsofta da čitaju, pišu i brišu datoteke ispod Office direktorija u stablu direktorija, na primjer, kako bi ispravile greške i instalirale nove verzije softvera. Da bi potvrdila potpise, Susan mora imati traženi javni ključ na svom disku ili ih mora primiti dinamički, na primjer, u obliku certifikata potpisanog od strane kompanije kojoj vjeruje i čiji javni ključ posjeduje.

Ne samo da datoteke mogu djelovati kao zaštićeni resursi. Također možete zaštititi pristup mreži. Ovdje će objekt biti određeni port na određenom računaru. Računar je specificiran pomoću IP adrese ili DNS imena; portovi na ovom računaru su označeni nizom brojeva. Moguće radnje uključuju povezivanje sa udaljenim računarom i prihvatanje veza koje potiču sa udaljenog računara. Dakle, aplet može pristupiti mreži, ali ovaj pristup je ograničen na komunikaciju samo sa onim računarima koji su eksplicitno navedeni na listi dozvola. Apleti mogu dinamički učitavati dodatni kod (klase) po potrebi, ali učitavači klasa koje dostavlja korisnik mogu ostvariti snažnu kontrolu nad kojim strojevima mogu izvoriti ove klase. Dostupni su i mnogi drugi sigurnosni alati.

Više o temi Sigurnost u Java sistemu:

  1. Član 39 Klasifikacija ugovora u posebne vrste. - Rimska klasifikacija. - Sistem pruskog prava, francuski i austrijski zakonik. - Sistem ruskog trezora. - Sistem ove prezentacije.

Šta je informaciona sigurnost? Ovo je stanje sigurnosti informacija koje osigurava njihovu povjerljivost, dostupnost i integritet.

Obično je za procjenu stanja informacione sigurnosti potrebno razumjeti i analizirati prijetnje i njihove izvore, procijeniti nivo štete, vjerovatnoću implementacije i relevantnost prijetnji, rizika (opciono) koji mogu uticati na naš sistem/ informacije.

Po mom mišljenju, nemoguće je procijeniti sigurnost određene tehnologije ili programskog jezika bez vezivanja za konkretan način implementacije, odnosno bez konkretnog gotovog softverskog proizvoda na jeziku koji ima detaljnu tehničku specifikaciju sa opisom arhitektura i funkcionalnost. Ali ni to neće biti dovoljno, jer je potrebno procijeniti stanje sigurnosti gotovog informacionog sistema sa njegovom specifičnom arhitekturom, skupom komponenti, poslovnim procesima, informacijama i, konačno, ljudima. Daću vam primjer izgradnje kuće. Posjedujemo materijale (pijesak, cement, lomljeni kamen, cigla itd.) i alate (kanta, lopata, lopatica, itd.). Kvalitetu i pouzdanost gotove kuće nećemo moći procijeniti samo prema korištenim materijalima/alatu: koliko će stajati, hoće li biti napuknuta, hoće li biti hladna ili tiha. Potrebno je odabrati projekt kuće, tehnologiju izgradnje i tim majstora. I tek nakon završetka izgradnje, moći ćemo izmjeriti usklađenost s projektom, GOST-om, SNiP-om, provjeriti mjerenja toplinske zaštite, buke, opterećenja, analizirati kvalitet cementa i odgovoriti na većinu pitanja. Ali glavno pitanje "koliko će to ostati?" nećemo imati tačan odgovor, jer ne znamo sve uslove rada kuće i sve faktore koji će uticati tokom čitavog vremena.

Kako zaštititi Javu

Uzmimo za primjer Javu . To je objektno orijentisani programski jezik; Java programi se prevode u Java bajt-kod, koji izvršava Java virtuelna mašina (JVM), program koji obrađuje bajt kod i predaje instrukcije hardveru kao tumač. Prednost ovog načina izvršavanja programa je potpuna nezavisnost bajtkoda od operativnog sistema i hardvera, što vam omogućava pokretanje Java aplikacija na bilo kom uređaju za koji postoji odgovarajuća virtuelna mašina.

« Univerzalni jezik ”zvuči lijepo, ali najčešći problem je i naličje medalje - curenje memorije u JVM-u, što dovodi do prelijevanja memorije i rušenja. U vezi sa ovim problemom nisu isključene ranjivosti, jer je osnovni postulat pouzdanosti da što jednostavnije to bolje. U ovom slučaju, tako složena pita se sklapa od osiguravanja kompatibilnosti velikog broja platformi i operativnih sistema da je gotovo nemoguće pratiti i zatvoriti sve ranjivosti pronađene u njima i brzo ih eliminirati. Za isti Microsoft, ranjivosti se mogu pronaći i popraviti nakon 4-8 godina, a to je ako se ne uzimaju u obzir neprijavljene karakteristike ostavljene namjerno ili greškom.

Iz moje prakse: kada programeri dodaju novu funkcionalnost koja je povezana sa već implementiranom, ili popravi staru funkcionalnost, onda u 15% slučajeva pokvare prethodno radni proizvod. A ako u isto vrijeme ne izvrše potpuno testiranje, na izlazu imamo proizvod s novom funkcionalnošću, ali sa starom djelomično ne radi. Postoje i razlike u kodiranju za različite platforme, verzije OS-a, softver. U tom smislu, može se zamisliti koliko je teško održavati programski jezik Java i JVM, a da ne spominjemo sigurnosna pitanja.

Trenutno je objavljen Java Development Kit 10, koji nam nudi standardne sigurnosne mehanizme, objavljen za Java SE 8 i opisan u Sigurnosnoj dokumentaciji. Ništa novo nije dodano u desetoj verziji.

Imajte na umu da Oracle ima Java sigurnosni centar resursa. Generalno, kompanija dijeli Java sigurnost u četiri glavna dijela:

A) Programeri bi trebali:

Pratite i koristite sve najnovije razvojno okruženje i sigurnosna ažuriranja;

Koristite programe za provjeru ispravnosti koda (na primjer, Checker Framework);

B) administratori sistema bi trebali:

Pratite i koristite sva najnovija ažuriranja za Javu i potrebne komponente za rad proizvoda (uključujući OS, biblioteke, okvire, itd.);

Koristite pravila implementacije Jave koja opisuje and;

Koristite pouzdanu vremensku oznaku.

C) krajnji korisnici bi trebali:

Uvijek koristite najnoviju originalnu verziju Jave;

D) stručnjacima za sigurnost je potrebno:

Koristite napredne alate za upravljanje i poboljšajte sigurnost (na primjer, Advanced Management Console);

Pratite pravovremenu instalaciju svih sigurnosnih ažuriranja;

Važno je da se svi pridržavaju sigurnosnih pravila i propisa. Postizanje stanja sigurnosti na adekvatnom nivou može se postići samo zajedno i uz korištenje svih raspoloživih mjera (tehničkih, organizacionih). Kao što moja praksa pokazuje, u 60% organizacija, IT i servisi za sigurnost informacija se dobro snalaze sa bezbednošću, kao i sa korisnicima koji koriste korporativne uređaje i povezani su na jedan domen. Ali najnekontroliraniji u ovoj oblasti su programeri, vođe timova, arhitekte.

Razvoj softvera i sigurnosna pitanja

U širem smislu, glavni razlozi sigurnosnih problema u aplikacijama tokom razvoja softvera su sljedeći:

A) Nerazumijevanje bezbjednosne terminologije općenito, a da ne spominjemo specifična znanja i primijenjena rješenja.

U pravilu, programeri sigurnost povezuju u najboljem slučaju sa sljedećim stvarima: kontrolom pristupa i evidentiranjem i zaštitom lozinkom, rjeđe - zaštitom veze na https razini (koristeći mehanizme šifriranja koji su standardno dostupni izvan kutije). Odnosno, formalno će koristiti sigurnosne metode, koje će zapravo ostati formalne, "za pokazivanje", ne uzimajući u obzir zahtjeve i nijanse:

Za lozinke: obično se koriste zadane vrijednosti i nisu dodatno konfigurirane za dužinu, snagu, učestalost promjene, neponovljivost, broj pokušaja. Često se ovi parametri ne mogu podesiti, jer nisu bili uključeni u zadatak obima za razvoj softvera, što dovodi do potrebe za dodavanjem koda.

Za upravljanje i evidentiranje pristupa: u najboljem slučaju, programeri su opisali grupe ili uloge korisnika i objekte pristupa koji bi trebali biti dostupni u softveru. U najgorem slučaju, sami programeri su "podijelili" sekcije i objekte na one potrebne korisnicima i administratorima. U prvom slučaju, dobijamo sistem koji se može fleksibilno konfigurisati, ali je potrebno dosta vremena za konfigurisanje i pregovaranje o pravima. U drugom - formalni sistem kontrole pristupa. Osim toga, programeri moraju razumjeti koje vrste informacija iu kojem obimu treba da se evidentiraju. Međutim, često im se ne daju ove informacije, što dovodi do nedovoljnih detalja u evidenciji za analizu incidenata ili razumijevanje onoga što se dešava u softveru. Ili na redundantno skladištenje dnevnika i velike količine informacija, što nameće značajna ograničenja u mogućnosti pohranjivanja informacija u potrebnom vremenskom periodu (na primjer, od jedne do tri godine) ili postoji potreba za kupovinom dodatnih skladišta informacija. Uz redundantno snimanje informacija, nastaju dodatni problemi sa brzinom analize i analize incidenata i brzinom pronalaženja potrebnih informacija. Višak rada također može zahtijevati dodatna sredstva za proširenje osoblja, kupovinu SIEM sistema uz postavljanje jedinstvenih pravila obrade informacija ili dovesti do rizika povezanih sa zastarjelim informacijama. Istovremeno, previše vremena se troši na analizu i obradu informacija.

Zaštita komunikacijskih kanala nije ništa manje važna, posebno za platne i bankarske sisteme, gdje su, osim otkrivanja ličnih i ličnih podataka, mogući finansijski gubici. Najčešće se događa da ne razmišljaju o zaštiti kanala i medija za prijenos informacija, a ako i razmišljaju, koriste "podrazumevane" postavke, na primjer, TLS / SSL. Ali i tu postoje neke posebnosti u izboru verzije protokola (TLS 1.1, 1.2, 1.3 ili SSL v1-3), algoritma enkripcije (RC4, IDEA, Triple DES, SEED, Camellia ili AES), dužine ključa. Ponekad se, na primjer, odabere ispravan TLS 1.2 protokol, sa AES enkripcijom, dužine ključa od 256 bita, ali zaboravite na mogućnost odabira adrese na portu 443 za HTTPS ili portu 80 za HTTP, umjesto da blokirate port 80, zbog čega postaje moguće dobiti pristup putem neosiguranog kanala. Ili, na primjer, podižu infrastrukturu na virtuelnim mašinama i uopšte ne razmišljaju o potrebi zatvaranja pristupa mreži između virtuelnih mašina.

B) Drugi problem je vezan za poslovanje, jer ulaže novac u specifičnu specijalnu funkcionalnost koja ne uzima u obzir sigurnosne blokove.

Nažalost, biznis ne razumije uvijek zašto bi trebao trošiti resurse na sigurnosne blokove, ako od njih nema funkcionalne koristi, proizvod neće donijeti više novca, ali postoje samo vjerovatni rizici koji možda neće funkcionirati. Poslovanje češće razumije potrebu za ulaganjem u sigurnost kada se incident u vezi s informacijskom sigurnošću već dogodio.

Nažalost, za to nije kriv samo biznis, već i njegovo okruženje koje:

Također ne razumije sigurnost;

Pošteđen budžet za stručnjake za informacionu bezbednost (oni se uopšte ne angažuju ili se angažuju visokospecijalizovani stručnjaci, ili se angažuje jedna osoba da bude odgovorna za sve);

Nisam mogao razumno prenijeti potrebu za sigurnošću i korektno opravdati postojeće rizike (reputacijske, finansijske, privremene).

C) Problem sa komunikacijom u kompaniji ili nedostatak iste.

To je slučaj kada preduzeće i njegovo okruženje razumeju potrebu i važnost informacione bezbednosti. Dodijelili su budžete, angažovali odgovarajuće stručnjake, ali postoje poteškoće u komunikaciji između poslovnih jedinica i informatičke sigurnosti/IT usluga, programera.

D) Nedostatak svijesti običnih korisnika kompanije o pitanjima sigurnosti informacija.

Pretpostavimo da imate sve potrebne odjele, stručnjake, tehničke i organizacijske mjere. Ali korisnici se opiru i ne žele da rade po pravilima. Ovo je vrlo česta situacija, a potrebno ju je i sveobuhvatno riješiti, jer ljudi ne razumiju zašto im je potreban dodatni rad da bi se uskladili sa pitanjima sigurnosti informacija (provjeravati datoteke antivirusom, zapamtiti složene lozinke, poznavati i pridržavati se politika i poslovanja). procesi itd.). Neophodno je periodično organizovati majstorske kurseve, na nivou domaćinstva reći šta je to informaciona bezbednost, koji problemi i rešenja postoje, komunicirati globalne ciljeve i ciljeve informacione bezbednosti, motivisati ih i njihov uticaj na poslovanje.

E) Nedostatak arhitekata za informatičku sigurnost – stručnjaci za informacijsku sigurnost nisu uvijek uključeni u razvoj softvera, a sami programeri razmišljaju o sigurnosti arhitekture i korištenju pisanih i gotovih sigurnosnih obrazaca (Security patterns).

Programeri ne znaju sve nijanse i ne znaju, jer je njihov zadatak da završe razvoj i pređu na sljedeći. Ako dublje uđete u sam razvoj, proces je mnogo komplikovaniji nego što se čini. Stoga je potrebno jasno dobiti zadatak od poslovanja, razložiti ga na razumljive mini-zadatke za programere, sprovesti razvoj, provesti alfa i beta testove, učitati, funkcionalne testove, popraviti greške, vratiti se na testove - ovaj proces je cikličan i dugo. Stoga nije iznenađujuće da nemaju dovoljno resursa da promisle o sigurnosti proizvoda do najsitnijih detalja.

Da biste razgovarali o sigurnosti, morate riješiti probleme opisane iznad. Ne opisujem posebno opcije rješenja, jer sve zavisi od konkretnih problema, okruženja, uslova. Ne postoji univerzalna tableta i moraju se poduzeti sve moguće mjere opreza. Osnovni zadatak je da svi zaposleni u kompaniji proniknu, razumiju i ispoštuju zahtjeve sigurnosti informacija i budu zainteresirani da ih poštuju. I tek tada će se moći govoriti o efektivnosti i dobrom stepenu zrelosti informacione sigurnosti u kompaniji.

Java zona developerWorks sadrži stotine članaka, tutorijala, savjeta i sadržaja iz Java zajednice koji će vam pomoći da izvučete maksimum iz Java platforme i povezanih tehnologija prilikom razvoja aplikacija. Međutim, ambicioznim programerima koji tek počinju sa Javom može biti teško da se snalaze u ogromnom broju resursa dostupnih na Internetu. Stoga smo kreirali ovu stranicu, koja pruža pregled osnovnih Java tehnologija u opštem kontekstu mogućnosti ovog jezika. Pronađite veze do resursa za dalje učenje Jave, kao što su članci developerWorksa za početnike i drugi obrazovni resursi, te veze za preuzimanje za IBM proizvode.

Da li ste ambiciozni Java programer? Ova stranica pruža pregled glavnih Java™ tehnologija i njihovog mjesta u razvoju modernog softvera. Sa vezama na uvodne članke developerWorksa o ovoj i srodnim temama, drugim obrazovnim materijalima, preuzimanjima i IBM proizvodima, ova stranica je odlična polazna tačka za učenje Jave.

Šta su "Java tehnologije"?

Java je i programski jezik i platforma.

Prvo, Java je objektno orijentirana na visokom nivou programski jezik... At kompilacija, koji se izvršava jednom tokom izrade aplikacije, Java kod se konvertuje u kod srednjeg jezika ( bytecode). Zauzvrat, bajt kod se analizira i izvršava ( interpretirano) Java virtuelna mašina (JVM), koja deluje kao prevodilac između jezika Java i hardvera operativnog sistema. Sve Java implementacije moraju emulirati JVM tako da se aplikacije koje pišete mogu izvoditi na bilo kojem sistemu koji uključuje Java virtuelnu mašinu.

Drugo, Java jeste softverska platforma, čije se verzije isporučuju za različite hardverske sisteme. Postoje tri verzije Jave (pogledajte odjeljak Izdanja Java platforme ispod). Platforma uključuje JVM i Java Application Programming Interface (API), koji je opsežan skup gotovih softverskih komponenti (klasa) koje olakšavaju razvoj i implementaciju apleta i aplikacija. Java API pokriva mnoge aspekte razvoja Jave, uključujući osnovnu manipulaciju objektima, mrežno programiranje, sigurnost, generiranje XML-a i web usluge. API je organiziran kao skup biblioteka tzv u paketima koji sadrže klase i interfejse za rešavanje povezanih problema.

Pored API-ja, svaka potpuna implementacija Java platforme mora uključivati ​​sljedeće:

  • Alati za programere za kompajliranje, pokretanje, praćenje, otklanjanje grešaka i dokumentovanje aplikacija.
  • Standardni mehanizmi za postavljanje aplikacija u korisničko okruženje.
  • Setovi alata koji vam omogućavaju da kreirate složena grafička korisnička sučelja.
  • Integracijske biblioteke za programski pristup bazama podataka i udaljenu manipulaciju objektima.

JVM je također dokazani okvir za pokretanje aplikacija napisanih na jezicima koji nisu Java. Konkretno, Groovy, Scala i specijalizirane implementacije Ruby-a i Python-a pružaju programerima mogućnost izvršavanja dinamičkih i funkcionalnih jezika na JVM-u (za više informacija pogledajte Kakva je Java veza s dinamičkim jezicima i funkcionalnim programiranjem?) .

Java jezik je razvio Sun Microsystems. Trenutno se razvoj Java tehnologija, uključujući rad na specifikacijama, referentnim implementacijama i testovima kompatibilnosti, odvija pod kontrolom otvorene neprofitne organizacije JCP (Java Community Process), koja okuplja Java programere i korisnike licenci. Godine 2007. Sun je objavio besplatnu verziju Jave, koja uključuje osnovne komponente platforme, pod licencom GNU GPL v2 (GPLv2). Više o ovoj verziji možete pročitati u odjeljku Java i razvoj besplatnog softvera.

Zašto biste trebali naučiti Javu?

Glavna prednost Java jezika je prenosivost Java aplikacija, tj. Mogućnost rada na bilo kojoj hardverskoj platformi i operativnom sistemu, budući da su svi JVM-ovi, bez obzira na kojoj platformi rade, sposobni da izvršavaju isti bajt kod.

Java jezik i platforma su izuzetno skalabilni. Možete jednostavno kreirati aplikacije za uređaje sa ograničenim resursima prilagođavanjem softvera koji je originalno napisan za desktop. Međutim, Java je takođe idealna za razvoj Web aplikacija na strani servera koje omogućavaju korisniku pristup računarskim resursima na Webu. Mogućnost sigurnog izvršavanja koda učitanog preko weba prvobitno je ugrađena u Javu, tako da Java pruža visok nivo sigurnosti pri radu preko Interneta. Web aplikacije se pokreću u runtime okruženjima tzv Web kontejneri koji pružaju mnoge zgodne usluge, uključujući slanje zahtjeva, sigurnost i istovremenost, upravljanje životnim ciklusom i pristup API-jima kao što su imenovanje, upravljanje transakcijama i e-pošta. Neki od njih su napisani u Javi serveri aplikacija koji se ponašaju kao Web kontejneri za druge komponente Java, XML i Web usluga koje su u interakciji s bazama podataka i dinamički prikazuju sadržaj web stranice. Ovi serveri takođe pružaju okruženje za implementaciju poslovnih aplikacija i alata za upravljanje transakcijama, grupisanje, sigurnost, povezanost i potrebne nivoe dostupnosti, performansi i skalabilnosti.

Podržavajući upotrebu otvorenih standarda u poslovnim aplikacijama, Java otvara velike mogućnosti za korištenje web servisa zasnovanih na XML-u kako bi pomogla poslovnim partnerima u razmjeni informacionih resursa i aplikacija. Java je u srcu mnogih IBM-ovih tehničkih konsultantskih proizvoda i usluga (IBM proizvodi i tehnologije za Java programere) i igra ključnu ulogu u nekoliko ključnih poslova kompanije.

  • Istražite IBM pristup i naučite kako vam SOA može pomoći da kreirate heterogene aplikacije s funkcionalnošću iz više izvora, kako unutar tako i izvan poduzeća, podržavajući tako horizontalne poslovne procese. IBM pruža niz poslovnih korisnika i IT profesionalaca koji će vam pomoći da počnete s ovom tehnologijom.
  • je pristup baziran na komponentama koji nudi IBM i koji pruža čitav niz mogućnosti za strateške promjene. Pružena rješenja su zasnovana na fleksibilnom, proširivom softveru zasnovanom na otvorenim standardima (uključujući Javu) i hardverskoj infrastrukturi.

Izdanja Java platforme
Postoje tri izdanja Java platforme koja omogućavaju programerima aplikacija, dobavljačima usluga i proizvođačima hardvera da kreiraju rješenja koja zadovoljavaju potrebe određenih grupa korisnika.

  • Java SE (Java platforma, standardno izdanje)... Koristeći Java SE, možete izgraditi i implementirati Java aplikacije za desktop i servere, te razviti ugrađeni softver i programe za sisteme u realnom vremenu. Java SE izdanje uključuje klase potrebne za kreiranje Web usluga i osnovne komponente Java EE (Java Platform, Enterprise Edition). Trenutna verzija Java SE platforme je Java SE 6, poznata i kao "Mustang". Međutim, mnogi programeri još uvijek koriste Java SE 5 (Java 5.0, ili "Tiger").
    • Za odličan pregled Java SE 5 funkcija, pogledajte članke u kolumni. Većina aspekata programiranja za Java SE 5 platformu, za koju su izgrađene mnoge postojeće aplikacije, i dalje su relevantne za Javu SE 6.
    • Ovaj članak opisuje nove funkcije u Javi SE 6 za praćenje i procjenu performansi aplikacije.
    • Ovaj članak pruža uvod u jezik skriptiranja koji radi na platformi Java SE 6 i služi za pojednostavljenje programiranja složenih korisničkih interfejsa.
    • Ova dvodijelna serija pod naslovom pruža uvod u API koji pruža Java SE 6 koji omogućava Java aplikacijama da izvršavaju dinamički skriptni kod i obrnuto. ...
  • Java EE (Java Platforma, Enterprise Edition)... Ova poslovna verzija platforme pomaže programerima da izgrade i implementiraju prenosive, pouzdane, skalabilne i sigurne Java aplikacije na strani servera. Nadovezujući se na mogućnosti Java SE, Java EE pruža Web usluge, modele komponenti, udaljene i upravljačke API-je za implementaciju poslovnog softvera u SOA-i i Web 2.0.
    • Pročitajte članke i za uvodni pregled mogućnosti najnovije verzije Java EE platforme.
    • Pogledajte seriju - popularan okvir za izgradnju laganih i pouzdanih Java EE aplikacija.
    • Za više informacija o Javi EE pogledajte članke u koloni.
    • Članci u seriji Početak rada: Migracija na Java platformu napisani su posebno za .NET, Windows klijent/server i ASP programere kako bi im pomogli da pređu na Javu.
  • Java ME (Java platforma, mikro izdanje)... Java ME pruža okruženje za izvršavanje aplikacija napravljenih za širok spektar mobilnih i ugrađenih sistema kao što su mobilni telefoni, PDA uređaji, set-top box uređaji i štampači. Ovo izdanje platforme pruža fleksibilna korisnička sučelja, robustan sigurnosni model, cijeli niz ugrađenih mrežnih protokola i moćnu podršku za mrežne i vanmrežne dinamički učitane aplikacije. Aplikacije zasnovane na Java ME specifikacijama mogu raditi na raznim uređajima i još uvijek biti u mogućnosti da iskoriste svoje sistemske mogućnosti.

Koje su tehnologije glavne komponente Java platforme?

Java zona developerWorks sadrži uključenu Javu. U nastavku su navedene neke od komponenti, mogući paketi dodataka i proširenja uključena u svako izdanje platforme. Svaka tehnologija ima kratak opis i vezu do izvora koji opisuju njeno mjesto u svijetu Java. Imajte na umu da su mnoge komponente uključene u sva tri izdanja Java platforme.

Tehnologije uključene u Java SE:

  • Java Foundation Classes (Swing)(JFC) je zbirka biblioteka Java klasa koje se koriste za kreiranje grafičkih korisničkih interfejsa i drugih grafičkih funkcija u Java klijentskim aplikacijama. Menadžment .
  • JavaHelp je platformski nezavisan proširivi sistem pomoći koji omogućava programerima i tehničkim piscima da ugrade stranice pomoći u aplete, softverske komponente, aplikacije, operativne sisteme i uređaje, i kreiraju sisteme za veb pomoć. Pogledajte članak.
  • Hvala za Java izvorni interfejs(JNI) Java aplikacije koje se pokreću unutar JVM-a mogu komunicirati sa programima i bibliotekama napisanim na drugim programskim jezicima.
  • Tehnologija Java Web Start Pojednostavljuje primenu Java aplikacija omogućavajući korisnicima da preuzmu i pokreću bogat softver, kao što su tabele, klikom na dugme miša, bez instalacije (pogledajte članak).
  • Povezivanje Java baze podataka(JDBC) je API koji pruža sredstva za pristup većini relacijskih izvora podataka iz Java aplikacija. Može se povezati s mnogim SQL bazama podataka, kao i drugim tabelarnim izvorima podataka kao što su proračunske tablice i ravni fajlovi.
  • Java Advanced Imaging(JAI) je objektno orijentirani API koji pruža jednostavan model programiranja visokog nivoa za pojednostavljenje manipulacije slikama.
  • Java Authentication and Authorization Service(JAAS) je tehnologija koja pruža usluge sa sredstvima za autentifikaciju korisnika i provjeru njihovih prava pristupa. Uključuje Java implementaciju standardnog PAM (Pluggable Authentication Module) okvira i podržava autorizaciju na nivou korisnika.
  • Java Cryptography Extension(JCE) je skup paketa koji obezbjeđuju infrastrukturu i implementacije za enkripciju, generiranje i razmjenu ključeva i algoritame koda za provjeru autentičnosti poruke (MAC). Ova tehnologija također uključuje podršku za simetrične, asimetrične, blokovne i stream šifre, kao i za stream-safe i zapečaćene objekte. Više detalja možete pronaći u priručniku.
  • Java objekti podataka(JDO) je standardni apstraktni model postojanosti za Java objekte baziran na interfejsima. Omogućava programerima da direktno pohranjuju instance domenskih Java klasa u trajno skladište (kao što je baza podataka). U nekim slučajevima, ovaj model može zamijeniti direktno upisivanje u datoteku, serijalizaciju, JDBC, kao i korištenje EJB komponenti na strani servera, kojima upravljaju kontejneri (Container Managed Persistence - CMP) i nezavisno pohranjujuće stanje (Bean Managed Persistence - BMP).
  • Paket Java Management Extensions(JMX) pruža alate za izgradnju distribuiranih, modularnih, dinamičkih i Web dostupnih aplikacija za upravljanje i nadgledanje uređaja, softvera i mreža na osnovu pružanja usluga (pogledajte članak).
  • Java Media Framework(JMF) vam omogućava da dodate audio, video i druge medijske informacije u Java aplikacije i aplete (pogledajte priručnik).
  • Java imenovanje i interfejs imenika(JNDI) je objedinjeno sučelje za pristup različitim imenima i uslugama imenika na korporativnoj mreži. Omogućava aplikacijama da se efikasno povežu na različite usluge imenovanja i imenika u heterogenom okruženju preduzeća.
  • Java Secure Socket Extensions(JSSE) je zbirka paketa za sigurnu razmjenu informacija na Internetu. Oni implementiraju Java verziju protokola Secure Sockets Layer (SSL) i Transport Layer Security (TLS) i obezbjeđuju sredstva za šifriranje podataka, provjeru integriteta poruke i autentifikaciju na serveru i klijentu (potonje je opciono).
  • Java Speech API(JSAPI) uključuje JSGF (Java Speech Grammar Format) i JSML (Java Speech Markup Language) specifikacije. Ovaj paket pruža mogućnosti za korištenje govornih tehnologija u korisničkom interfejsu. JSAPI je multi-platformski API za podršku prepoznavanju glasovnih komandi, sistemima za unos govora i sintezi govora. Za više detalja pogledajte sljedeći odjeljak članka.
  • Java 3D je API koji pruža višeplatformske i skalabilne mogućnosti za rad sa 3D grafikom u Java aplikacijama. API je organiziran kao skup objektno orijentiranih sučelja koji se sklapaju u jedan, jednostavan model programiranja visokog nivoa.
  • Mehanizam Metadata Facility Omogućava programerima da definiraju atribute za klase, sučelja, polja i metode tako da mogu biti podvrgnuti posebnom rukovanju razvojnim alatima, alatima za implementaciju i bibliotekama trećih strana u vrijeme izvođenja (pogledajte članak).
  • Java Content Repository API je API za pristup repozitorijumima sadržaja u Java SE, bez obzira na njihovu implementaciju. Takva spremišta su sistemi za upravljanje informacijama visokog nivoa i proširene su verzije klasičnih spremišta podataka.
  • Enumerations(enumeracija) je tip podataka koji vam omogućava da opišete različite stavke podataka kao otkucani skup konstanti.
  • Generici(generički tipovi) vam omogućavaju da kreirate klase sa parametrima (apstraktnim tipovima) koji su specificirani u fazi instanciranja. Pogledajte članak za detalje, a također pogledajte članak o tome kako generički tipovi olakšavaju rad sa kolekcijama u Javi SE 6.0.
  • Komunalne usluge Konkurencija je skup klasa koje pružaju funkcionalnost srednjeg sloja uobičajenu za aplikacije za paralelnu obradu.
  • Java API za XML obradu(JAXP) je API koji Java aplikacije mogu koristiti za raščlanjivanje i transformaciju XML dokumenata, bez obzira na korišteni XML procesor. Ovo omogućava aplikacijama da lako prelaze između različitih procesora bez promjene koda aplikacije. Zauzvrat, JAXB tehnologija ( Java API za XML povezivanje) pruža mogućnosti za automatizaciju mapiranja XML dokumenata u Java objekte.
  • SOAP sa prilozima API za Javu(SAAJ) pruža programerima funkcije za generiranje i obradu poruka u skladu sa SOAP 1.1 specifikacijom, specificirajući SOAP sa prilozima. Za više detalja pogledajte članak).

J2EE tehnologije:

  • Enterprise JavaBeans(EJB) je komponentni model koji pojednostavljuje razvoj međuopreme pružanjem usluga kao što su upravljanje transakcijama, sigurnost i povezivanje baze podataka.
  • Specifikacija portleta definira skup API-ja za izgradnju portala u Javi, pokrivajući aspekte kao što su agregacija i prezentacija informacija, personalizacija i sigurnost (pogledajte članak).
  • JavaMail je API koji pruža skup apstraktnih klasa koje modeliraju sistem pošte.
  • Java Message Service(JMS) je API koji podržava kreiranje prenosivih Java aplikacija za razmjenu poruka. Definiše zajednički skup osnovnih koncepata i programskih strategija za sve JMS-kompatibilne sisteme za razmenu poruka.
  • JavaServer Faces(JSF) pruža model programiranja koji vam pomaže da izgradite Web aplikacije sastavljanjem stranica od komponenti korisničkog interfejsa za višekratnu upotrebu, povezivanjem tih komponenti sa izvorima podataka i klijentskim događajima za rukovaoce servera. Za više informacija pogledajte vodič iz dva dijela i seriju članaka iz serije kolumni.
  • JavaServer Pages(JSP) pruža Web programerima sredstva za brzo kreiranje i jednostavno održavanje dinamičnih web stranica na više platformi koje razdvajaju korisničko sučelje i generiranje sadržaja tako da dizajneri mogu mijenjati oznake bez dodirivanja dinamički generiranog sadržaja (pogledajte vodič.
  • Standardna biblioteka oznaka za stranice JavaServera(JSTL) je kolekcija specijaliziranih oznaka koje pružaju standardni format za izvođenje radnji koje zahtijevaju mnoge web aplikacije. Pogledajte Osvježite svoje JSP stranice pomoću JSTL-a i četverodijelnu seriju pod nazivom.
  • Java servleti proširite funkcionalnost Web servera pružanjem višeplatformskog pristupa zasnovanog na komponentama za izgradnju Web aplikacija koji je slobodan od ograničenja performansi CGI.
  • Arhitektura J2EE konektora(JCA) pruža standardnu ​​arhitekturu za povezivanje J2EE aplikacija sa heterogenim informacionim sistemima preduzeća (EIS). Ova arhitektura definira skup skalabilnih i sigurnih mehanizama zasnovanih na transakcijama pomoću kojih dobavljači EIS-a mogu obezbijediti standardne adaptere resursa za uključivanje u poslužitelj aplikacija. Za više informacija pogledajte članke i priručnik.
  • J2EE specifikacija upravljanja(JMX) definira model upravljanja informacijama za J2EE platformu. Ovaj model je posebno dizajniran za interakciju sa mnogim sistemima i kontrolnim protokolima. Sadrži standardne alate za mapiranje na zajednički informacioni model (CIM), SNMP bazu podataka upravljanja (MIB) i Java objektni model koristeći J2EE upravljačku EJB komponentu (MEJB) rezidentni server EJB.
  • Java Transaction API(JTA) je API na visokom nivou za implementaciju i nezavisan od protokola koji pruža programima i aplikacijskim serverima sredstva za pristup transakcijama. Java Transaction Service(JTS) definira implementaciju menadžera transakcija koji podržava JTA i implementira, na osnovnom nivou, mapiranje na Object Transaction Service (OTS 1.1) OMG-a. Proširivanje transakcije u JTS-u se implementira korištenjem Inter-ORB protokola (IIOP). Za više detalja pogledajte članak.

Tehnologije koje su dio J2ME:

  • Profil mobilnog informacionog uređaja(MIDP) je jedna od dvije konfiguracije koje čine Java runtime okruženje za mobilne uređaje sa ograničenim resursima. MIDP pruža osnovnu funkcionalnost za aplikacije, uključujući alate za kreiranje korisničkih interfejsa, povezivanje sa mrežnim resursima, lokalno skladištenje podataka i upravljanje životnim ciklusom.
  • Konfiguracija povezanog uređaja(CDC) je standardizirana infrastruktura za izgradnju i implementaciju aplikacija kojoj se može pristupiti s mnogih umreženih i ugrađenih uređaja.
  • Mobile 3D Graphics API za J2ME(M3G) je lagani interaktivni 3D API koji je dodatak J2ME. Više o njemu možete pročitati u dvodijelnoj seriji.

Java tehnologije i razvoj web aplikacija

Java je već dugi niz godina primarni jezik za razvoj web aplikacija. Poslednjih godina pojavili su se mnogi okviri i biblioteke koje olakšavaju kreiranje Java Web aplikacija, uključujući bogate interaktivne Web 2.0 aplikacije.

Pogledajte sljedeće resurse za Java Web Development.

  • Ova kolona predstavlja Grails, moderan okvir za izgradnju web aplikacija napisan u Groovy-u. Grails vam omogućava da neprimetno kombinujete prethodno napisani Java kod sa mogućnošću korišćenja fleksibilnog i dinamičkog jezika za skriptovanje. Za više informacija o Groovyju, pogledajte kakav je odnos Jave prema dinamičkim jezicima i funkcionalnom programiranju ispod?.
  • Ajax je metodologija programiranja koja koristi jezike za skriptiranje na strani klijenta za komunikaciju s web serverom tako da se stranice mogu brzo osvježiti bez potrebe za potpuno ponovnim učitavanjem. U ovoj seriji članaka naučit ćete kako vam Ajax može pomoći kao Java programeru. Pogledajte developerWorks za više informacija.
  • JavaServer Faces (JSF) pruža model programiranja koji vam pomaže da izgradite Web aplikacije sastavljanjem stranica od komponenti korisničkog interfejsa za višekratnu upotrebu, povezujući te komponente sa izvorima podataka i klijentima generisane događaje sa serverskim rukovaocima. Za više informacija pogledajte vodič iz dva dijela i seriju članaka iz serije kolumni.
  • Eclipse Web Tools Platform (WTP) proširuje popularno razvojno okruženje Eclipse dodavanjem alata za pravljenje Web aplikacija zasnovanih na Java EE tehnologijama (pogledajte tutorijal).
  • Pogledajte developerWorks za mnoge druge odlične materijale o ovim temama.

Java tehnologije, SOA i web usluge

Service Oriented Architecture (SOA) je model komponenti koji povezuje funkcionalne module aplikacije (poznate kao Usluge odakle dolazi taj termin Web usluge) kroz strogo opisane interfejse i ugovore. Definicije interfejsa su nezavisne od hardvera, operativnog sistema i programskog jezika u kojem je usluga implementirana, čime se održava jedinstvena komunikacija između usluga koje su komponente različitih sistema. SOA je primjer labavo spregnutog modela programiranja koji pruža alternativu klasičnim čvrsto povezanim objektno orijentiranim modelima.

Kreirani na ovom principu, web servisi vam omogućavaju da opišete poslovna pravila i procese u XML-u, tako da se interakcija aplikacija može obavljati bez obzira na platforme i programske jezike koji se koriste. XML tehnologije promovišu prenosivost podataka i pojednostavljuju kreiranje poruka, dok Java tehnologije omogućavaju pisanje prenosivog koda. XML i Java dobro funkcionišu zajedno, čineći ih savršenom kombinacijom tehnologija za izgradnju i implementaciju Web usluga.

Za više informacija pročitajte sljedeće materijale:

  • Stranice i stranice DeveloperWorksa mogu vam pomoći da se krećete kroz ove izazovne tehnologije.
  • U ovoj seriji ćete naučiti o infrastrukturama Java Web usluga i novim funkcionalnim slojevima koji su izgrađeni na tim uslugama.
  • Ovaj članak pruža uvod u elegantan stil dizajna web usluga pod nazivom Representational State Transfer (REST) ​​i objašnjava kako koristiti Javu za kreiranje RESTful Web usluga.
  • Razumijevanje JAX-RPC (Java API-based RPC za rad sa XML) tehnologije je od suštinskog značaja za kreiranje efikasnih Java Web usluga.
  • JAX-WS je očigledan sljedeći korak u evoluciji JAX-RPC-a. Praktični uvod u ovaj novi API je dat u tutorijalu.
  • Ova serija je vodič za arhitekturu komponenti usluga (SCA), specifikaciju koja opisuje SOA model za razvoj aplikacija i sistema.
  • Ovaj članak pruža uvod u okvir Service Data Objects, koji pojednostavljuje Java EE model podataka za izgradnju SOA aplikacija.

Kakve veze Java ima sa dinamičkim jezicima i funkcionalnim programiranjem?

Mnogi programeri koji počinju sa Javom imaju veliko iskustvo sa drugim programskim jezicima. Istovremeno, čak i najugledniji programeri priznaju da Java nije idealan jezik za rješavanje od svega problemi sa kojima se susreće u praksi. Srećom, uz podršku za JVM, možete u potpunosti iskoristiti današnje dinamičke skripte i funkcionalne jezike kada razvijate aplikacije za Java platformu. Fleksibilnost i dinamičnost ovih jezika pokazali su se vrlo korisnim pri izradi prototipa i implementaciji određenih vrsta aplikacija.

Više o mogućnostima korištenja dinamičkih i funkcionalnih jezika na Java platformi možete pročitati u materijalima, linkovi do kojih su dati u nastavku.

  • Groovy skriptni jezik omogućava Java programerima da koriste svoje najpoznatije jezičke konstrukcije i biblioteke, istovremeno pružajući fleksibilno, dinamično razvojno okruženje koje ne zahtijeva kompilaciju, pojednostavljuje sintaksu i podržava skriptiranje unutar uobičajenih Java aplikacija. Detaljan pregled mogućnosti ovog jezika dat je u člancima u seriji.
  • Novi API za skriptiranje u Javi SE 6, koji je unatrag kompatibilan sa Javom SE 5 i sadrži mali skup interfejsa i klasa, pruža jednostavan način za pozivanje skripti napisanih na desetinama jezika iz Java koda. Pomoću njega možete učitavati i pozivati ​​vanjske skripte u vrijeme izvođenja, dinamički mijenjajući ponašanje vaše aplikacije. Više o ovom API-ju možete pročitati u dvodijelnoj seriji pod naslovom.
  • Da li ste vatreni pobornik funkcionalnog programiranja? Zatim treba obratiti pažnju na kolonu u kojoj se govori o Scali, programskom jeziku za JVM koji kombinuje funkcionalan i objektno orijentisan pristup razvoju.
  • VM-ovi već dugo podržavaju alternativne programske jezike. U člancima u kolumni možete pročitati o JVM implementacijama jezika kao što su Rexx, Ruby, JavaScript, Python i neki drugi.

Java i razvoj besplatnog softvera

Postoji bezbroj načina za izgradnju Java biblioteka, alata, okvira, programa i aplikacijskih servera koji otvaraju dodatne mogućnosti programerima da iskoriste ovu moćnu platformu. Određeni broj besplatnih tehnologija je tokom vremena ugrađen u Java platformu, dok su druge ostale popularne kod Java programera tokom godina, u nekim slučajevima djelujući kao de facto standardi.

  • Apache Software Foundation (EN) okuplja mnoge projekte otvorenog koda, od kojih je većina razvijena pomoću Java tehnologije. Neki od članova ove porodice projekata su navedeni u nastavku.
    • Apache Struts je okvir za izgradnju Web aplikacija koje prate arhitekturu Model-View-Controller.
    • Apache Shale je još jedan moderan okvir za pravljenje web aplikacija koji je naslijeđen od Struts-a i baziran je na JSP (JavaServer Pages) tehnologiji. Za uvod u Shale pogledajte članke u seriji.
    • Apache Ant je de facto standard za automatizaciju procesa izgradnje Java aplikacija.
    • Apache Maven Build Tool dizajniran je imajući na umu zahtjeve modernih softverskih projekata, sa dinamičkom interakcijom između razvojnih timova i oslanjanjem na mnoge nezavisno podržane komponente (pogledajte vodič).
    • Apache Tomcat je popularan Web kontejner koji podržava servlete i stranice Java servera (JSP).
    • Projekat Apache Geronimo se bavi kreiranjem Java EE aplikacijskog servera u potpunosti usklađenog sa specifikacijama zasnovanog na čisto besplatnoj tehnologiji. Više o Geronimu možete pročitati u ovom članku i na web stranici developerWorks za obilje korisnog sadržaja.
    • Apache Derby je server relacijske baze podataka u potpunosti implementiran u Javi. Uvod u Derby je dat u članku.
  • Eclipse (EN) je otvorena i nezavisna razvojna platforma i skup osnovnih alata za pravljenje softvera. Napisan je na Javi i pruža dodatnu infrastrukturu koja olakšava razvoj, integraciju i korištenje softverskih alata. IBM je jedan od osnivača Eclipse.org i aktivno učestvuje u upravnom odboru i pododborima projekta. O nekim komponentnim tehnologijama Eclipse platforme za kreiranje Java aplikacija možete pročitati u sljedećim materijalima:
    • AspectJ je aspektno orijentisana ekstenzija za jezik Java koja se može koristiti za modularnu implementaciju unakrsne funkcionalnosti kao što je evidentiranje ili rukovanje izuzetcima.
    • Standardni komplet alata za vidžete (EN) (SWT) je komplet alata koji vam omogućava da iskoristite snagu operativnog sistema za kreiranje elemenata korisničkog interfejsa na efikasan i prenosiv način.
    • Mylyn je moćan sistem upravljanja poslovima za Eclipse korisnike. Za detaljne upute pogledajte članke i, ranije poznat kao "Acegi Security for Spring", je moćno i fleksibilno sigurnosno rješenje za poslovne aplikacije izgrađeno na vrhu Spring okvira. To je detaljno obrađeno u četiri članka iz serije.
  • Sun Microsystems je takođe pokrenuo sledeće projekte zajednice na java.net:
    • Openjdk

Kako razviti vještine Java programiranja?

Postoje dva glavna načina na koje možete razviti svoje vještine programiranja na Javi: pohađati namjenski kurs obuke (sa opcijama sertifikacije) ili naučiti Javu samostalno vježbajući kodiranje. Kursevi obuke ne samo da vam omogućavaju da učite iz iskustva kvalifikovanih programera, već vam takođe pružaju priliku da dobijete sertifikat koji može da ubedi potencijalnog poslodavca da posedujete veštine neophodne da odgovorite na tehničke izazove sa kojima se suočavamo. Na taj način možete produbiti svoje znanje u različitim oblastima Jave, samostalno eksperimentirajući i koristeći sve raspoložive resurse. Koji god put da odaberete, sljedeći resursi će vam pomoći.

  • Vodiči i članci
    • DeveloperWorks ima opsežnu kolekciju koja je na drugom mjestu nakon samog kodiranja u smislu korisnosti u učenju Jave.
    • Članci su serije i odlični su za poboljšanje vaših vještina Java jezika.
    • Korištenje teorije dizajna za kreiranje aplikacija u stvarnom svijetu raspravlja se u člancima u seriji.
    • Iskusni Java programeri unaprijed ugrađuju alate u svoje aplikacije kako bi ih otklonili i testirali. DeveloperWorks ima nekoliko članaka u seriji - Eclipse-bazirane igre u realnom vremenu za učenje Java programiranja. Za uvod u CodeRuler pogledajte Osvajanje srednjovjekovnih kraljevstava pomoću CodeRulera.
  • IBM-ovi kursevi tehničke obuke
    • Uživajte u širokom spektru Java kurseva na mreži, licem u lice i multimedija od IBM Global Services.
  • Certifikat
    • Možete polagati nekoliko ispita da biste stekli certifikate koji demonstriraju vaše vještine programiranja na Javi. Za kurseve za certifikaciju pogledajte web stranicu Java Certification.
    • IBM osnažuje vaše vještine u tehnologijama vezanim za Java, kao što je izgradnja poslovnih aplikacija za WebSphere, Rational softver, DB2, XML i SOA.
  • Forumi
    • Moderiran od strane stručnjaka sa dugogodišnjim iskustvom u tehnologiji Java, ovo je najinteraktivniji način učenja jezika Java.

IBM proizvodi i tehnologije za Java programere

IBM je jedan od lidera u praktičnoj primeni Java tehnologija. Sljedeće su veze na neke od IBM proizvoda i tehnologija dostupnih programerima za Java platformu.

  • Proizvodi za besplatno preuzimanje:
    • (Java Developer Kit) je kolekcija alata za pravljenje i testiranje apleta i aplikacija za Java SE i Java ME na raznim popularnim operativnim sistemima, uključujući Windows, Linux i AIX.
    • (IBM razvojni paket za Eclipse) je Eclipse-bazirani nepodržani komplet alata za razvojne programere koji vam omogućava da izgradite i pokrenete aplikacije u vašem vlastitom gotovom razvojnom okruženju.
    • : Možete preuzeti besplatne Eclipse softverske pakete sa developerWorksa, uključujući paralelne proizvode Calisto i Europa.
    • je virtuelno skladište obećavajućih Java tehnologija koje se razvijaju u IBM-u. To uključuje API-je, IDE, razvojne komplete, referentne implementacije i uslužne programe. Ispod su linkovi za neke od tehnologija predstavljenih u alphaWorksu.
    • ... Ovaj uslužni program vam pomaže da analizirate i generišete probne Ant skripte za izgradnju projekata razvijenih sa Eclipse, Rational i WebSphere IDE za platforme Java EE i SCA.
    • (IBM alat za modeliranje i analizu uzoraka za Java Garbage Collector). Ovaj uslužni program analizira detaljne GC datoteke praćenja, analizira upotrebu memorije hrpe (hrpe) i preporučuje podešavanje aplikacije na osnovu rezultata simulacije memorije. (Secure Shell Library za Javu) je lagana implementacija SSH-2 protokola razvijena od strane Internet Engineering Task Force (IETF). Pruža sigurne alate za autentifikaciju i druge sigurne usluge koje rade preko nezaštićene mreže. omogućava vam da konsolidujete i transformišete podatke, čime se povećava produktivnost, fleksibilnost i produktivnost vašeg poslovanja pružanjem brzog pristupa informacijama koje su vam potrebne.

U ovom vodiču ćemo pokriti sve što trebate znati prije nego počnete učiti programiranje uključeno Java. Naučićete o mogućnostima platforme, njenoj upotrebi i kako da počnete da pravilno učite Javu.

Šta je Java programski jezik?

Godine 1991. Green Team, divizija Sun Microsystems-a, na čelu sa James Gosling, kreirao je jezik za programiranje potrošačkih elektronskih uređaja. U to vrijeme se zvao Hrast ("Hrast"). Zašto "Hrast"? Jednostavno zato što je ovo drvo raslo ispred prozora Goslingove radne sobe.

Zeleni tim je demonstrirao upotrebu hrasta na interaktivnoj televiziji. Ali za digitalnu kablovsku televiziju tih godina, ova tehnologija je bila previše napredna. Istovremeno, internet je dobijao na popularnosti, čemu je novi programski jezik bio najprikladniji.

Nakon nekog vremena, novi jezik je preimenovan u Green, a nakon toga - u Javu, u čast kafe sa ostrva Java. Stoga Java logo prikazuje šolju za kafu.

Tokom razvoja Jave, C/C++ je bio popularan, pa je Gosling napravio sintaksu jezika sličnom C/C++ i implementirao princip “ napiši jednom - trči bilo gdje". 1995. Sun Microsystems je objavio prvu zvaničnu verziju Jave. Istovremeno je najavljeno da će Java biti uključena u Netscape Navigator pretraživač.

Oracle Corporation je 2010. godine kupila Sun Microsystems, zajedno sa programskim jezikom Java.

Istorija Java verzija

  1. Jun 1991. - početak razvojnog projekta programski jezik Java.
  2. JDK 1.0 - januar 1996.
  3. JDK 1.1 - februar 1997.
  4. J2SE 1.2 - decembar 1998.
  5. J2SE 1.3 - maj 2000.
  6. J2SE 1.4 - februar 2002.
  7. J2SE 5.0 - septembar 2004.
  8. Java SE 6 - decembar 2006.
  9. Java SE 7 - jul 2011.
  10. Java SE 8 - 18. mart 2014.
  11. Java SE 9 - 21. septembar 2017.

Funkcije programskog jezika Java

Java je višeplatformski jezik

Java kod napisan na jednoj platformi ( odnosno operativni sistem) može se pokrenuti nepromijenjen na drugim platformama.

Za pokretanje Jave, Java virtuelne mašine ( Java virtuelna mašina, JVM). JVM obrađuje bajt kod, a zatim procesor obrađuje kod primljen od JVM-a. Sve virtuelne mašine rade na sličan način, tako da isti kod radi isto na svim operativnim sistemima, što Java čini višeplatformskim programskim jezikom.

Objektno orijentirani programski jezik

Postoje različiti stilovi programiranja, a jedan od najpopularnijih je objektno orijentirano programiranje. Ovim pristupom, složeni problem se raščlanjuje na manje stvaranjem objekata. Ovo čini kod ponovo upotrebljivim.

Objektno orijentirane funkcije nalaze se u mnogim programskim jezicima, uključujući Javu, Python i C++. Ako ste ozbiljni u učenju programiranja, objektno orijentirani pristup vrijedi uključiti u svoj nastavni plan i program.

Java je brza

Rane verzije programski jezik Java je često kritikovana da je spora. Ali danas se situacija dramatično promijenila. Novije verzije JVM-a rade mnogo brže, a procesori koji ih tumače postaju sve brži i brži.

Java je jedan od najbržih programskih jezika danas. Dobro optimizirani Java kod radi skoro jednako brzo kao programski jezici niskog nivoa poput C/C++ i mnogo brže od Pythona, PHP-a itd.

Java je sigurna platforma

Java je:

  • sigurna platforma za razvoj i pokretanje aplikacija;
  • pruža alate za automatsko upravljanje memorijom, što smanjuje ranjivost koda;
  • osigurava siguran prijenos podataka.

Obimna osnovna biblioteka

Jedan od razloga zašto se Java široko koristi je ogromna standardna biblioteka. Sadrži stotine klasa i metoda iz različitih paketa kako bi se olakšao život programerima. Na primjer,

java.lang su napredne funkcije za nizove, nizove itd.

java.util je biblioteka za rad sa strukturama podataka, regularnim izrazima, datumom i vremenom itd.

kava.io je biblioteka za unos/izlaz datoteka, rukovanje izuzecima, itd.

Korištenje Java platforme

Prije učenja Jave programiranje od nule, morate znati da više od 3 milijarde uređaja širom svijeta radi na ovoj platformi. Za šta ga tačno možete koristiti:

  1. Android aplikacije - Za razvoj Android aplikacija, programski jezik Java se često koristi u kombinaciji sa Android SDK ( od engleskog software development kit - software development kit).
  2. Web aplikacije - Java se koristi za izradu web aplikacija koristeći serverske programe, Struts framework i JSP. Neke popularne web aplikacije napisane na Javi uključuju Google.com, Facebook.com, eBay.com, LinkedIn.com.

Vrijedi napomenuti da ove stranice nisu nužno napisane isključivo na Javi, već mogu koristiti i druge programske jezike.

  1. Razvoj softvera- programi kao što su Eclipse, OpenOffice, Vuze, MATLAB i mnogi drugi su napisani na Javi.
  2. Obrada velikih podataka – Za obradu velikih podataka možete koristiti Hadoop framework napisan u Javi.
  3. Sistemi trgovanja- korištenjem platforme Oracle Extreme Java platforma za trgovanje, možete pisati programe za trgovanje.
  4. Ugrađeni uređaji- Oracle Java Embedded tehnologija danas pokreće milijarde uređaja, kao što su televizori, SIM kartice, Blu-ray plejeri i još mnogo toga.

Također programiranje uključeno Java se koristi za razvoj igara, naučnih aplikacija ( na primjer, za obradu prirodnog jezika) iu mnogim drugim oblastima.

Java terminologija koju biste trebali znati

Java je zbirka tehnologija ( programski jezik i kompjuterska platforma) dizajniran za kreiranje i pokretanje softvera. Međutim, termin Java se često koristi za označavanje samog programskog jezika.

Programski jezik Java je široko zasnovan, opšte namene, višeplatformski, objektno orijentisani programski jezik.

Java 9 je najnovija verzija Jave u vrijeme pisanja ovog teksta.

Java EE, Java Me i Java SE — Ovi nazivi se odnose na Java Enterprise Edition, Micro Edition, odnosno Standard Edition.

Java EE cilja aplikacije koje rade na serverima. Java ME je dizajnirana za uređaje sa ograničenom snagom kao što su ugrađeni uređaji. Java SE je Java standardno izdanje za pisanje redovnih programa.

Ako ste novi u Java programiranje, preporučujemo da počnete sa Javom SE.

JVM - Java virtuelna mašina (" Java virtuelna mašina") je program koji omogućava računaru da pokreće programe napisane u Javi.

JRE - Java Runtime Environment (" java runtime") Uključuje JVM, odgovarajuće biblioteke i druge komponente potrebne za pokretanje programa. Ali u JRE-u nema kompajlera, debagera ili drugih razvojnih alata.

JDK - Java razvojni komplet (kit Java programer) sadrži JRE i druge razvojne alate kao što su kompajleri, debageri, itd.

Kako pokrenuti Javu na vašem operativnom sistemu

Kako pokrenuti Javu na Mac OS-u

Evo šta učiniti za Javu programiranje od nule i instalacije platforme na Mac OS X ili macOS:

  1. Preuzmite najnoviju verziju Java ( JDK) sa Java SE stranice za preuzimanje.
  2. Dvaput kliknite na preuzetu DMG datoteku i slijedite upute instalatera.
  3. Da biste potvrdili instalaciju, otvorite terminal i unesite sljedeću naredbu:

javac –verzija

Ako je Java ispravno instalirana, verzija programa ( na primjer javac 1.8.0_60).

Sljedeći korak je instaliranje IDE ( integrisano razvojno okruženje) za pisanje i pokretanje Java koda. Instalirat ćemo besplatnu verziju IntelliJ IDEA i pokrenuti Javu na njoj. Evo šta trebate učiniti za ovo:

  1. Idi IntelliJ stranica za preuzimanje i preuzmite besplatno Community Edition.
  1. Otvorite preuzetu DMG datoteku i slijedite upute za instalaciju. Za brzi pristup, možete premjestiti IntelliJ IDEA u folder Aplikacije.
  2. Otvorite IntelliJ IDEA. Odaberite opciju "Ne uvozi postavke" (" Ne uvozite postavke") I kliknite na "U redu". Zatim prihvatite Jetbrains politiku privatnosti klikom na dugme "Prihvati".
  3. Sada možete prilagoditi interfejs za sebe. Također možete preskočiti ovaj korak i ostaviti sve kao zadano. Ako niste sigurni, samo preskočite ovaj korak klikom na dugme Preskoči sve i Postavi zadane postavke. Preskočite sve i postavite zadane postavke»).


  1. Program će vam pokazati stranicu dobrodošlice. Kliknite na dugme "Kreiraj novi projekat". Kreirajte novi projekat»).
  2. U sljedećem prozoru odaberite "Java" u lijevom oknu i kliknite "Novo" na vrhu prozora programa da biste odabrali "JDK". Ovdje morate odabrati lokaciju na kojoj ste instalirali JDK, a zatim kliknite na Next.


  1. Imaćete opciju da kreirate projekat iz šablona ("Kreiraj projekat iz šablona"). Zanemarite ga i kliknite na dugme Dalje.
  2. U sljedećem koraku instalacije programski jezik Java unesite naziv projekta i kliknite na Završi.
  3. U lijevom oknu vidjet ćete svoj projekat. Ako tabla nije vidljiva, idite na meni Views> Tool Windows> Project.
  4. Idite na Hello> New> Java i postavite ime klase. Nazvali smo ga Prvi.


  1. Da pokrenete program koji ste upravo napisali, idite na Run> Run... Kliknite na First ( odnosno naziv fajla koji smo kreirali


Kako pokrenuti Javu na Linuxu

Za pokretanje primjera iz lekcije programiranja od nule Java na Linuxu će trebati JAVA SE Development Kit ( JDK) i IDE za razvoj vaših projekata. Pratite uputstva korak po korak da biste započeli sa Javom.

Instalirajte Javu

  1. Otvorite terminal i unesite sljedeću naredbu da instalirate Javu:

    sudo add-apt-repository ppa: webupd8team / java


    sudo apt update; sudo apt install oracle-java8-installer

  1. Prihvatite ugovor o licenci i uslove korišćenja klikom na "OK" odnosno "Da".
  2. Instalirali ste Javu. Da biste provjerili da li je instalacija bila uspješna, unesite sljedeću naredbu u terminal:

java –verzija

Ako je prikazana trenutna verzija, instalacija je bila uspješna. Ako ne, provjerite sa Oracle stranica pomoći.

Instalacija IntelliJ IDEA

  1. Idi.


  1. Preuzmite besplatno Community Edition klikom na dugme Preuzmi.
  2. Nakon preuzimanja promijenite direktorij u terminalu u direktorij za preuzimanje i raspakirajte Java tar datoteku u / opt folder pomoću sljedeće naredbe:

sudo tar xf .tar.gz -C / opt /

  1. Nakon raspakivanja, promijenite direktorij u bin folder programa IntelliJ IDEA:

    cd / opt / / bin

  2. Da pokrenete IDE, unesite sljedeću naredbu:
  3. Odabiremo "Ne uvozi postavke" (" Ne uvozite postavke") I kliknite na "OK". Nakon toga, prihvatamo Jetbrains politiku privatnosti klikom na dugme "Prihvati".
  4. Sada za prolaz kursevi programiranja Java, možete prilagoditi interfejs za sebe. Kreirajte prečicu na radnoj površini za brzi pristup programu. Nakon toga, da biste pokrenuli IDE, kliknite na "Dalje" u svim sljedećim koracima.
  5. Program će prikazati stranicu dobrodošlice. Kliknite na "Kreiraj novi projekat" Kreirajte novi projekat»).
  6. U sljedećem prozoru odaberite Java u lijevom oknu i uvjerite se da je Java odabrana u redu Project SDK. Ako nije, odaberite lokaciju na kojoj ste instalirali JDK: / usr / lib / jvm / java-8-oracle.


  1. Dvaput pritisnite "Next" i kreirajte projekat.
  2. U sljedećem koraku unesite naziv projekta i kliknite Završi. Sada ćete vidjeti svoj projekat u lijevom oknu. Ako ovaj panel nije vidljiv, idite na meni Views> Tool Windows> Project.
  3. Dodajte novu Java klasu. Odaberite src u lijevom oknu desnim klikom i idite na Novo> Java klasa. Postavite naziv klase. U nazivu klase ne smije biti razmaka.


  1. Napišite Java kod i sačuvajte projekat.
  2. Da pokrenete program, idite na Run> Run... Kliknite na HelloWorld ( Ime projekta) - program će kompajlirati datoteku i pokrenuti je.


Kako pokrenuti Javu na Windows (XP, 7, 8 i 10)

Za savladavanje Jave osnove programiranja a pokretanje platforme na Windows-u će zahtijevati JAVA SE Development Kit (JDK) i IDE za razvoj projekata. Slijedite upute korak po korak u nastavku:

Instaliranje Jave

  • Idi stranica za preuzimanje Java Standard Edition Development Kit.
  1. U odeljku Java SE Development Kit na vrhu tabele kliknite na Prihvati ugovor o licenci ( Prihvatite licencni ugovor"). Zatim kliknite na vezu Windows (x64) za 64-bitni operativni sistem ili Windows (x86) za 32-bitni operativni sistem.

  1. Nakon preuzimanja, pokrenite instalacionu datoteku i pratite uputstva koja se pojavljuju na ekranu. Kliknite na " Sljedeći". Odaberite sve funkcije klikom na " Ova funkcija će biti instalirana na lokalnom tvrdom disku"I kopirajte lokaciju instalacije ( označena je žutom bojom) u "Notepad", a zatim kliknite " Sljedeći».


  1. Tokom procesa instalacije, od vas će biti zatraženo da instalirate JRE. Kliknite Dalje, a zatim Završi da biste dovršili instalaciju.
  2. Sada trebate urediti varijablu PATH. Idi Kontrolna tabla> Sistem i bezbednost> Sistem... U lijevom oknu odaberite " Dodatni sistemski parametri".

  1. Kliknite na " Varijable okruženja"... u poglavlju " Sistemske varijable " pronađite varijablu PATH i u sljedećem prozoru kliknite na "Uredi".

  1. Odaberite sav tekst u " Varijabilna vrijednost " i kopirajte ga u zasebnu tekstualnu datoteku. Ovo će olakšati uređivanje i provjeru grešaka. Pogledajte da li kopirani tekst sadrži red: C: ProgramData Oracle Java javapath; ... Ako je tako, možete nastaviti na sljedeći korak. Ako nije, onda zalijepite prethodno kopiranu lokaciju instalacije na početak varijable i dodajte bin na kraj reda ovako: C: Programske datoteke (x 86) Java jdk 1.8.0_112 bin; Imajte na umu da vaša JDK verzija (jdk 1.8.0_112) može biti drugačija. Kopirajte vrijednost varijable i zalijepite je u PATH prozor.


  1. Kliknite na " uredu"Da sačuvate svoje promjene.
  2. Da biste provjerili je li platforma ispravno instalirana za uvod u programiranje Java, otvori komandna linija upisivanjem cmd u Windows traku za pretragu ili preko komande "Pokreni ..." ( Windows - R). Unesite naredbu java -version. Ako je prikazana trenutna verzija Jave, instalacija je bila uspješna. Ako ne, provjerite sa Oracle stranica pomoći.

Instalacija IntelliJ IDEA

  1. Idi Stranica za preuzimanje IntelliJ IDEA.
  2. Preuzmite besplatno Community Edition klikom na Download.


  1. Nakon preuzimanja, pokrenite instalacioni fajl i pratite uputstva koja se pojavljuju na ekranu. Zatim kreirajte prečicu na radnoj površini za 64-bitnu verziju i dodajte asocijacije sa ekstenzijom .java. Kliknite "Dalje" i nastavite sa instalacijom.


  1. Jednom instaliran, otvorite IntelliJ IDEA klikom na ikonu na radnoj površini.
  2. Odaberite "Ne uvozi postavke" (" Ne uvozite postavke") I kliknite na "OK". Nakon toga prihvatamo Jetbrainsovu politiku privatnosti klikom na "Prihvati".
  3. Sada možete prilagoditi interfejs za sebe. Također možete preskočiti ovaj korak i ostaviti sve kao zadano klikom na dugme Preskoči sve i Postavi zadane postavke.
  4. Program će prikazati stranicu dobrodošlice. Kliknite na "Kreiraj novi projekat" Kreirajte novi projekat»).


  1. U sljedećem prozoru odaberite "Java" u lijevom oknu i kliknite na "Novo" na vrhu prozora programa da odaberete JDK. Ovdje trebate odabrati lokaciju na kojoj je JDK instaliran tokom Java instalacije, a zatim kliknite na "Dalje".
  2. IntelliJ IDEA će pronaći JDK i prepoznati ga. Ne morate provjeriti nijednu drugu opciju, samo kliknite na Next.
  3. Na sljedećem ekranu unesite naziv projekta: HelloWorld i kliknite Završi. Ako program kaže da direktorij ne postoji, kliknite na "OK". Ako ne vidite lijevo okno, idite na Views> Tool Windows> Project.
  4. Da biste postavili ime klase, odaberite src folder u lijevom oknu. Desni klik na njega, idite na Novo> Java i dajte klasi ime. U nazivu klase ne smije biti razmaka.


  1. Napišite kod i sačuvajte Java projekat lekcija programiranja.
  2. Da pokrenete program, idite na Run> Run... Kliknite na HelloWorld - program će kompajlirati datoteku i pokrenuti je.


Vaš prvi Java program

Da biste korisnike upoznali sa novim programskim jezikom, koristite program Hello World. Ovo je jednostavan program koji ispisuje riječi Hello, World! U ovom odeljku ćemo vas naučiti kako da napišete ovaj Java program koristeći IntelliJ IDEA.

  1. Otvorite IntelliJ IDEA.
  2. Idite na File> New> Project ...> Java ( na lijevoj navigacijskoj traci).
  3. Postavite naziv projekta od kurs programiranja J a va. Nazvat ćemo ga Hello World i kliknuti na Završi.
  4. Sada treba da kreiramo novu Java klasu.
  5. Odaberite src folder u lijevom oknu, zatim idite na File> New> Java Class i imenujte novu klasu HelloWorld.
  6. Kopirajte sljedeći kod na HelloWorld.java i sačuvajte ga.

javna klasa HelloWorld (javni statički void main (String args) (


// ispisuje "Hello, World!"


System.out.println ("Zdravo, svijet!");

  1. Kliknite na dugme za početak ( Trči). Ako je sve u redu, vidjet ćete natpis Zdravo, svijete!

Kako da naučim Javu?

Službena dokumentacija Java

Oracle, kompanija koja posjeduje Javu, objavljuje kvalitetne tutorijale. Zvanična dokumentacija pokriva sve Java karakteristike i redovno se ažurira.

Napomena: jedina negativna je ta što zvanična Java dokumentacija nije uvijek napisana na najjednostavnijem jeziku.

Ako zaista želite da naučite programiranje uključeno Java, kupi dobru knjigu. Naravno, 1000 stranica se ne može pročitati u jednom danu. Ali dobar vodič će vam pomoći da naučite programiranje.

Java: Potpuni vodič (10. izdanje)

Odlična knjiga za one koji tek počinju da uče Javu. Najnovije izdanje uključuje sve karakteristike Java 8 izdanja.

Knjiga pokriva sve što treba znati o Java programiranju, uključujući sintaksu, ključne riječi i osnovne osnove programiranja, kao i Java API biblioteku, Java applete i još mnogo toga.

Filozofija Java (4. izdanje)

Ako prelazite na Javu sa drugog programskog jezika, ova knjiga je za vas. Ako počinjete od nule, najbolje je da ga pročitate zajedno s drugim.

Java 8. Džepna referenca: Prva pomoć za Java programere

Ova knjiga daje jasne odgovore na pitanja koja se nameću prilikom podučavanja J ava programiranje od nule... Ona ukratko predstavlja sve osnovne koncepte Jave (uključujući Java 9). Ne želite da listate stotine stranica u potrazi za pravim redom? Kupite ovu knjigu.

Umjesto zaključka

Ako počnete da učite Javu, nećete pogrešiti - to je obećavajući programski jezik pun širokih lepeza mogućnosti.

Prije nego počnete učiti Javu, evo nekoliko savjeta:

  • Nemojte čitati tutoriale i primjere poput romana. Jedini način da postanete dobar programer je da napišete mnogo koda.
  • Ako prelazite sa drugog programskog jezika (recimo, C #), ne morate pisati kod u stilu C #.
  • Pronađite online Java zajednice. Kada naučite kako pisati jednostavne Java programe, potražite popularne Java stranice i forume. Pokušajte riješiti probleme koje imaju drugi programeri. Ovo je odličan način da proširite vlastito znanje. Osim toga, ako naiđete na nevolje, znat ćete gdje da tražite pomoć.

Nadamo se da će vas ovaj članak potaknuti ka učenju Jave i pomoći vam da počnete sa svojim prvim programima.

Prijevod članka “ Naučite Java programiranje. Definitivni vodič”Pripremio ljubazni projektni tim

Govorit ćemo o osnovnoj Java sintaksi za početnike. Sintaksa programskog jezika je skup pravila koja regulišu način na koji je napisan i interpretiran...

Java jezik. Uvod.

Dugo je bilo teško zamisliti kompjuterski časopis bez članka o jeziku Java. O njemu su pisale čak i popularne novine i časopisi kao što su The New York Times, The Washington Post i Business Week.

Nemoguće je zapamtiti da je Nacionalni javni radio ikada posvetio desetominutni program nekom programskom jeziku. Dobro ili loše zavisi od tačke gledišta. A ulaganje od 100 miliona dolara u proizvodnju softvera kreiranog pomoću specifičnog programskog jezika?! Televizijske kompanije CNN, CNBC i drugi mediji samo su pričali, i još uvijek govore, o tome kako Java jezik to može i hoće.

Međutim, ova knjiga je za ozbiljne programere, a pošto je Java ozbiljan programski jezik, imamo o čemu da razgovaramo. Dakle, nećemo se upuštati u analizu reklamnih obećanja i pokušavati da saznamo šta je u njima istina, a šta fikcija. Umjesto toga, mi ćemo opisati Javu kao programski jezik dovoljno detaljno (uključujući, naravno, karakteristike koje joj omogućavaju da se koristi za rad na Internetu, što je, zapravo, izazvalo toliku reklamnu pompu). Nakon toga, pokušaćemo da odvojimo stvarnost od fantazije objašnjavajući šta Java jezik može, a šta ne može.

U početku je postojao jaz između reklamnih obećanja i stvarnih mogućnosti Java jezika. Kako je sazrevala, tehnologija je postala stabilnija i pouzdanija, a očekivanja su pala na razuman nivo. Java se sada sve više koristi za kreiranje "srednjeg softvera" koji održava komunikaciju između klijenata i serverskih resursa (kao što su baze podataka).

Iako ove važne aplikacije nisu prevelike, Java jezik se u ovoj oblasti pokazao najkorisnijim zbog svoje mašinske nezavisnosti, višenitnosti i mogućnosti mrežnog programiranja. Pored toga, Java je preuzela vodeću ulogu u ugrađenim sistemima, postavši de facto standard za prenosive uređaje, virtuelne kioske, kompjutere u vozilu i slično. Međutim, prvi pokušaji prepisivanja široko rasprostranjenih programa za osobne računare u Javi bili su neuspješni - rezultirajuće aplikacije su se pokazale kao male snage i spore. Pojavom nove verzije neki od ovih problema su riješeni, a ipak se mora priznati da su korisnici, općenito, potpuno ravnodušni prema jeziku na kojem su napisani programi koje su kupili. Vjerujemo da će glavne prednosti jezika Java doći od stvaranja novih vrsta uređaja i aplikacija, umjesto da se prepisuju postojeći programi.

Jezik Java kao programski alat

Kako je programski jezik Java premašio svoja reklamna obećanja. To je nesumnjivo jedan od najboljih jezika koji je dostupan ozbiljnim programerima. Java ima potencijal da bude odličan programski jezik, ali sada je vjerovatno prekasno. Kada se pojavi novi programski jezik, odmah se javlja gadan problem kompatibilnosti sa prethodno kreiranim softverom. Štaviše, čak i ako se promene u ovim programima mogu izvršiti bez mešanja u njihov tekst, teško je tvorcima jezika koji je tako toplo pozdravljen u javnosti, kao što je Java, da direktno kažu: „Da, možda smo napravili greška u razvoju verzije X, ali verzija Y će biti bolja." Kao rezultat toga, dok čekamo dalja poboljšanja, moramo reći da se struktura Java jezika neće značajno promijeniti u bliskoj budućnosti.

Očigledno pitanje je: " Kako ste poboljšali jezik Java?"Ispostavilo se da to nije učinjeno poboljšanjem samog programskog jezika, već radikalnom promjenom biblioteka programa napisanih na jeziku Java. Sun Microsystems je promijenio sve: počevši od naziva pojedinačnih bibliotečkih funkcija (učinivši ih smislenijim) i metode rada grafičkih modula (promena načina na koji rukujemo događajima i delimično prepisivanje programa rada), a završava se kreiranjem novih jezičkih karakteristika, kao što su alati za štampanje, koji nisu bili dostupni u Javi 1.0, što je rezultiralo mnogo korisnija platforma za programiranje od svih prethodnih verzija jezika Java.

Microsoft je objavio svoj vlastiti proizvod pod nazivom J++, koji je povezan sa jezikom Java. J ++ interpretira Java virtuelna mašina (Java virtuelna mašina) prilikom izvršavanja bajtkoda, ali jezici imaju različita sučelja u odnosu na eksterne kodove. J++ i Java jezici imaju skoro istu sintaksu. Međutim, Microsoft je kreirao dodatne jezičke konstrukcije. Svi oni imaju prilično sumnjivu vrijednost, sa izuzetkom Windows API-ja. Pored činjenice da ovi jezici imaju istu sintaksu, njihove osnovne biblioteke (stringovi, uslužni programi, alati za mrežno programiranje, višenitni alati, matematičke biblioteke, itd.) su u suštini iste.

Međutim, grafičke biblioteke, korisnički interfejs i daljinski pristup objektima su potpuno različiti između ovih jezika. Microsoft trenutno više ne podržava J++, pošto je razvio novi jezik, C#, koji ima mnogo zajedničkog sa Javom, ali koristi drugu virtuelnu mašinu. Ova knjiga ne opisuje J++ ili C#.

Prednosti Java jezika

1) Jedna od glavnih prednosti Java jezika je nezavisnost od platforme na kojoj se pokreću programi: Isti kod se može pokrenuti pod Windows, Solaris, Linux, Machintosh i još mnogo toga.
Ovo je zaista neophodno kada se programi preuzimaju preko Interneta za kasnije izvršavanje pod različitim operativnim sistemima.

2) Još jedna prednost je to sintaksa jezika Java je slična sintaksi jezika C++, a programerima koji poznaju jezike C i C++ nije teško da je nauče... Istina, za programere koji poznaju Visual Basic jezik, ova sintaksa može biti neobična.

Ako nikada niste programirali na C++, neki od pojmova koji se koriste u ovom odeljku možda vam neće biti jasni. U ovom slučaju, možete ga preskočiti. Dok dođete do kraja 6. poglavlja, ovi termini će vam postati poznati.

3) Takođe, Java - potpuno objektno orijentisani jezik, čak i više od C ++... Svi entiteti u Javi su objekti, sa izuzetkom nekoliko primitivnih tipova, kao što su brojevi. (Budući da je lako razvijati složene projekte sa objektno orijentisanim programiranjem, ono zamjenjuje starije strukturirano programiranje. Ako niste upoznati sa objektno orijentiranim programiranjem, poglavlja 3-6 će vam dati sve što trebate znati o tome.)

Međutim, nije dovoljno razviti još jedan, malo poboljšani, dijalekt jezika C ++. Osnovno je važno da je lakše razviti programe bez grešaka u Javi nego u C++. Zašto? Java programeri su dugo razmišljali zašto su programi napisani na C++ tako skloni greškama. Oni su jeziku Java pružili sredstva da eliminišu samu mogućnost kreiranja programa koji bi sakrili najčešće greške. Da bi to uradio, jezik Java je uradio sledeće.

4) Isključena je mogućnost eksplicitne alokacije i oslobađanja memorije.
Java memorija se automatski vraća prikupljanjem smeća. Programator je zagarantovan protiv grešaka u vezi sa zloupotrebom memorije.

5) Uvedeni istiniti nizovi i nedozvoljena aritmetika pokazivača.
Sada programeri, u principu, ne mogu izbrisati podatke iz memorije zbog nepravilne upotrebe pokazivača.

6) Otklonjena je mogućnost brkanja operatora dodjeljivanja sa operatorom poređenja jednakosti.
Sada ne možete čak ni kompajlirati if (ntries = 3) izraz. ... ... (Visual Basic programeri ovdje možda uopće ne primjećuju nikakav problem, jer je ova greška izvor većine nesporazuma u C i C ++).

7) Višestruko nasljeđivanje je isključeno. Zamijenjen je novim konceptom - interfejsom koji je pozajmljen iz jezika Objective C.
Interfejs daje programeru gotovo sve što programer može dobiti od višestrukog nasljeđivanja, izbjegavajući pritom složenost upravljanja hijerarhijama klasa.

Karakteristike jezika Java

Jednostavno
Interpreted
Distribuirano
Pouzdan
Safe
Neovisno o mašini
Objektno orijentisan
Visoke performanse
Višenitno
Dynamic
Arhitektura računara nezavisna

Već smo se dotakli nekih od ovih tačaka u prošlom dijelu. U ovom odeljku ćemo: obezbediti citate iz priručnika Java jezika koji otkrivaju karakteristike jezika; Podijelimo sa čitateljima svoja razmišljanja o određenim svojstvima jezika, na osnovu vlastitog iskustva rada s njegovom najnovijom verzijom.

Jednostavno

Željeli smo stvoriti sistem koji je jednostavan za programiranje, ne zahtijeva dodatnu obuku i koji uzima u obzir ustaljenu praksu i standarde programiranja. Stoga, iako smo smatrali da je jezik C ++ neprikladan za ove svrhe, jezik Java je dizajniran da bude što sličniji njemu kako bi sistem učinio dostupnijim. Java jeziku nedostaju mnoge retko korišćene, nejasne i opskurne karakteristike C++ koje, po našem mišljenju, donose više štete nego koristi.

Java sintaksa je u suštini očišćena verzija C++ sintakse. Ovaj jezik nema datoteke zaglavlja, aritmetiku pokazivača (i same pokazivače), strukture, unije, preopterećenje operatora, virtuelne osnovne klase itd. (Razlike između Jave i C++ opisane su u C++ napomenama razbacanim po knjizi.) Međutim, programeri nisu nastojali da isprave sve nedostatke jezika C++.

Na primjer, sintaksa naredbe switch u jeziku Java ostala je nepromijenjena. Poznavajući jezik C++, biće lako preći na sintaksu jezika Java.
Ako obično koristite okruženje za vizuelno programiranje (kao što je Visual Basic), Java jezik će vam se činiti komplikovanim.
Njegova sintaksa često izgleda prilično čudno (iako nije teško razumjeti značenje izraza). Što je još važnije, jezik Java zahtijeva mnogo više programiranja. Ljepota Visual Basica je u tome što njegovo okruženje za vizualno programiranje omogućava da kreirate infrastrukturu aplikacija gotovo automatski. Postizanje istog rezultata sa Javom zahteva ručno programiranje, ali rezultira mnogo kraćim programima.

Međutim, postoji i treća vrsta programskog okruženja koja vam omogućava da kreirate programe koristeći tehnologiju "povuci i ispusti".

Drugi aspekt jednostavnosti je kratkoća. Jedan od ciljeva jezika Java je da omogući razvoj programa koji se mogu potpuno nezavisno izvršavati na malim mašinama. Glavni tumač i pomoćna sredstva za klasu su veličine oko 40 KB; standardne biblioteke i alati za obradu niti (posebno samostalna mikrokernel) zauzimaju još 17: KB.
Ovo je ogroman uspjeh. Imajte na umu, međutim, da su biblioteke podrške za GUI mnogo veće.

Objektno orijentisan

Jednostavno rečeno, objektno orijentirano programiranje je tehnika programiranja koja se fokusira na podatke (tj. objekte) i načine pristupa njima. Po analogiji sa stolarijom, objektno orijentisani majstor je uglavnom fokusiran na stolicu koju pravi, a tek sekundarno ga zanimaju alati potrebni za to; u isto vreme, stolar koji nije orijentisan na objekte misli samo na svoj alat. Objektno orijentisana svojstva Jave i C++ su u suštini ista.

Objektna orijentacija je dokazala svoju vrijednost u proteklih 30 godina i bez nje je nemoguće zamisliti moderan programski jezik. Zaista, objektno orijentisane karakteristike jezika Java su uporedive sa jezikom C ++. Osnovna razlika među njima leži u mehanizmu višestrukog nasljeđivanja, za koji je jezik Java našao najbolje rješenje, kao i u modelu metaklase jezika Java.

Reflection (Poglavlje 5) i Object Serialization (Poglavlje 12) vam omogućavaju da implementirate trajne objekte i alate za izgradnju grafičkih korisničkih interfejsa od komponenti koje nisu u kutiji.

Ako nikada niste programirali na objektno orijentisanim jezicima, pažljivo pročitajte poglavlja 4-6. Ova poglavlja pokrivaju osnove objektno orijentiranog programiranja i pokazuju vam prednosti razvoja složenih projekata u odnosu na tradicionalne, proceduralno orijentirane jezike kao što su C ili Basic.

Distribuirano

Java ima veliku biblioteku programa za prenos podataka zasnovanih na TCP/IP (Transmission Control Protocol/Internet Protocol), HTTP (Hypertext Transfer Protocol) ili FTP (File Transfer Protocol). Protokol za prenos datoteka. Aplikacije napisane na jeziku Java mogu otvarati i pristupati objektima preko mreže pomoću iURL-ovi (Uniform Resource Location) su laki kao i lokalna mreža.

Jezik Java pruža moćno i jednostavno web iskustvo. Svako ko je ikada pokušao da napiše programe za rad na Internetu na drugim jezicima biće prijatno iznenađen kako se najteži zadaci, na primer, otvaranje mrežnih konekcija (konekcija soketa), lako rešavaju u Javi. Elegantan mehanizam takozvanih servleta čini rad servera izuzetno efikasnim.

Servleti su podržani od strane mnogih popularnih web servera. (Umrežavanje će biti obrađeno u Svesku II.) Komunikaciju između distribuiranih objekata u Javi obezbeđuje mehanizam za pozivanje udaljenih metoda (ova tema je takođe pokrivena u Svesku 2).

Pouzdan

Jezik Java je dizajniran za kreiranje programa koji moraju pouzdano raditi u svim situacijama. Jezik Java se fokusira na rano otkrivanje grešaka, dinamičku provjeru (tokom izvršavanja programa) i izuzetke sklone greškama... Jedina značajna razlika između Jave i C++ je model Java pokazivača, koji isključuje mogućnost prepisivanja dijela oštećenje memorije i podataka.

Ova nekretnina je također vrlo korisna. Java kompajler detektuje greške koje drugi jezici pronalaze samo u toku rada. Osim toga, programeri koji su proveli mnogo sati tražeći grešku koja je uzrokovala oštećenje memorije zbog neispravnog pokazivača bit će vrlo srećna što se takvi problemi u principu ne mogu pojaviti u jeziku Java.

Ako ste prethodno programirali u Visual Basic ili COBOL jeziku koji ne koristi eksplicitno pokazivače, možda nećete razumjeti zašto je to toliko važno. C programeri su manje sretni. Potrebni su im pokazivači za pristup nizovima, nizovima, objektima, pa čak i datotekama. Prilikom programiranja u Visual Basic jeziku, ništa od ovoga nije potrebno, a programer ne mora da brine o alokaciji memorije za ove entitete. S druge strane, mnoge strukture podataka u jeziku bez pokazivača vrlo je teško implementirati. Za uobičajene strukture kao što su nizovi i nizovi, pokazivači nisu potrebni. Moć pokazivača dolazi u obzir samo tamo gdje ne možete bez njih, kao na primjer kada kreirate povezane liste. Java programer se zauvijek riješio nevažećih pokazivača, pogrešnih alokacija i curenja memorije.

Safe

Java jezik je namijenjen za korištenje u umreženom ili distribuiranom okruženju. Zbog toga je velika pažnja posvećena sigurnosti. Jezik Java vam omogućava da kreirate sisteme koji su zaštićeni od virusa i neovlašćenog pristupa.

U prvom izdanju napisali smo: “Nikad ne reci nikad” i bili smo u pravu. Grupa stručnjaka za sigurnost sa Univerziteta Princeton otkrila je prve sigurnosne greške u Javi 1.0 ubrzo nakon što je prva verzija JDK-a puštena u prodaju. Štaviše, i oni i drugi stručnjaci su nastavili i kasnije su otkrili sve više grešaka u sigurnosnim mehanizmima svih narednih verzija jezika Java.

Pozitivna strana ove situacije je to što je razvojni tim Java jezika proglasio nultu toleranciju za bilo kakve sigurnosne greške i odmah je počeo rješavati sve probleme pronađene u sigurnosnom mehanizmu apleta. Konkretno, objavljivanjem internih specifikacija Java interpretatora, Sun je znatno olakšao pronalaženje skrivenih sigurnosnih grešaka i doveo je nezavisne stručnjake da ih pronađu.

Ovo je povećalo vjerovatnoću da će bilo kakve greške u sigurnosnom sistemu uskoro biti otkrivene. U svakom slučaju, izuzetno je teško prevariti sigurnosni sistem jezika Java. Do sada pronađene greške bile su gotovo suptilne i (relativno) malobrojne.

Sun-ova sigurnosna web stranica nalazi se na sljedećem URL-u: http://java.sun.com/sfaq/.

Evo nekih situacija koje Java sigurnosni sistem sprečava.

1) Prelivanje steka izvršnog programa, što je uzrokovano ozloglašenim "crvom" koji se širio Internetom.

2) Oštećenje memorijskih područja izvan prostora koji je dodijeljen procesu.

3) Čitanje i pisanje lokalnih datoteka pomoću sigurnog učitavača klasa kao što je web pretraživač koji onemogućava pristup takvim datotekama.

Sve ove sigurnosne mjere su prikladne i obično rade besprijekorno, ali diskrecija nikada ne škodi. Iako su dosad pronađene greške bile daleko od trivijalnih, a detalji njihove pretrage se često drže u tajnosti, mora se priznati da je vjerovatno još uvijek nemoguće dokazati sigurnost Java jezika.

Vremenom su jeziku dodane nove zaštite. Počevši od verzije 1.1, koncept digitalno potpisanih klasa pojavio se u jeziku Java. Kada koristite digitalno potpisanu klasu, možete biti sigurni u autora. Ako joj vjerujete, ovoj klasi možete dodijeliti sve privilegije dostupne na vašoj mašini.

Microsoftov alternativni mehanizam isporuke koda oslanja se na ActiveX tehnologiju i koristi samo digitalne potpise radi sigurnosti. Očigledno, to nije dovoljno - svaki korisnik Microsoft softvera može potvrditi da se programi poznatih proizvođača često kvare, stvarajući tako rizik od oštećenja podataka. Java sigurnost je mnogo pouzdanija od ActiveX tehnologije jer kontrolira aplikaciju od trenutka kada se pokrene i sprječava je da prouzrokuje štetu.

Arhitektura nezavisna

Kompajler generiše objektnu datoteku, čiji format ne zavisi od arhitekture računara - prevedeni program može da radi na bilo kom procesoru pod kontrolom sistema za izvršavanje Java programa. Da bi to uradio, Java kompajler generiše komande bajt koda koje ne zavise od specifične arhitekture računara. Bajt kod je dizajniran na takav način da se može lako interpretirati na bilo kojoj mašini ili prevesti u mašinski ovisan kod u hodu.

Ovo nije nova ideja. Prije više od 20 godina, i Pascal implementacijski sistem Niclausa Wirtha i UCSD Pascal koristili su istu tehnologiju. Upotreba bajtkodova daje veliku prednost tokom izvršavanja programa (iako sinhrona kompilacija to kompenzira u mnogim slučajevima). Programeri jezika Java obavili su odličan posao u razvoju skupa instrukcija bajtkoda koje dobro funkcionišu na većini modernih računara, lako se pretvarajući u stvarne mašinske instrukcije.

Neovisno o mašini

Za razliku od C i C ++ jezika, Java specifikacija nema aspekte specifične za implementaciju. I veličina osnovnih tipova podataka i aritmetičke operacije nad njima su dobro definirane.

Na primjer, int u Javi uvijek znači 32-bitni cijeli broj. U C i C ++, tip int može značiti ili 16-bitni ili 32-bitni cijeli broj, kao i cijeli broj proizvoljne veličine, prema izboru programera određenog kompajlera. Jedino ograničenje je da veličina tipa int ne može biti manja od veličine kratkog int i veličine dugog int. Fiksna veličina numeričkih tipova izbegava mnoge probleme povezane sa pokretanjem programa na različitim računarima. Binarni podaci se pohranjuju i prenose u fiksnom formatu, čime se također izbjegavaju nesporazumi povezani s različitim redoslijedom bajtova na različitim platformama (konflikt "big endian / little endian"). Nizovi se čuvaju u standardnom Unicode formatu.

Biblioteke, koje su deo sistema, definišu mašinski nezavisan interfejs. Na primjer, jezik pruža apstraktnu klasu Window i njene implementacije za Unix, Windows i Macintosh operativne sisteme.

Svako ko je ikada pokušao da napiše program koji podjednako dobro radi na Windows-u, Macintosh-u i deset verzija Unixa zna da je to veoma težak zadatak. Java verzija je napravila herojski pokušaj da riješi ovaj problem pružanjem jednostavnog kompleta alata koji prilagođava uobičajene elemente korisničkog interfejsa širokom spektru softverskih platformi. Nažalost, biblioteka, na koju je trebalo dosta rada, nije nam omogućila da postignemo prihvatljive rezultate na različitim platformama. (Istovremeno su se pojavile različite greške u grafičkim programima na različitim platformama.)

Međutim, ovo je bio samo početak. U mnogim aplikacijama, neovisnost stroja je daleko važnija od sofisticiranosti grafičkog korisničkog interfejsa. Ovo su aplikacije koje su imale koristi od Jave 1.0. Međutim, komplet alata za grafičko korisničko sučelje je sada potpuno redizajniran i više ne ovisi o korisničkom sučelju na glavnom računalu. Nova verzija je sadržajnija i, po našem mišljenju, korisniku privlačnija od prethodnih.

Interpreted

Java interpreter se može poslati na bilo koju mašinu i izvršiti bajtkod direktno na njemu. Pošto je uređivanje linkova lakši proces, razvoj softvera može postati mnogo brži i efikasniji.

Ovo može biti prednost pri razvoju aplikacija, ali citat je očito preuveličavanje. U svakom slučaju, Java kompajler u Java Software Development Kitu (JSDK) je prilično spor. (Neki kompajleri treće vrste, poput onih iz IBM-a, su mnogo brži.) Brzina ponovnog prevođenja je samo jedan faktor koji karakteriše efikasnost programskog okruženja. Kada uporedite brzinu Jave u odnosu na Visual Basic, možda ćete biti razočarani.

Visoke performanse

Dok su interpretirani bajtkodovi općenito više nego adekvatni u performansama, postoje situacije u kojima su potrebne još veće performanse. Bajtkodovi se mogu prevesti u hodu (u toku rada) u mašinske kodove za određeni procesor na kojem aplikacija radi.

Ako se interpretator koristi za izvršavanje bajtkodova, izraz "visoke performanse" se ne bi trebao koristiti. Međutim, na mnogim platformama moguća je drugačija vrsta kompilacije, koju obezbjeđuju kompajleri-JIT-ovi upravo na vrijeme. Oni prevode bajt kod u mašinski ovisan kod, pohranjuju rezultat u memoriju, a zatim ga pozivaju po potrebi. Budući da se interpretacija izvodi samo jednom, ovaj pristup višestruko povećava brzinu rada.

Uprkos činjenici da su sinhroni prevodioci i dalje sporiji od kompajlera zavisnih od mašine, oni su u svakom slučaju mnogo brži od interpretatora, omogućavajući 10- ili čak 20-struko ubrzanje za neke programe. Ova tehnologija se stalno poboljšava i na kraju može dostići brzine koje tradicionalni prevodioci nikada ne mogu nadmašiti. Na primjer, sinhroni kompajler može odrediti koji dio koda se izvršava češće i optimizirati ga za brzinu izvršavanja.

MULTI-THREAD

Pruža bolju interaktivnost i izvođenje programa.

Ako ste ikada pokušali da izvršite višenitna izračunavanja u bilo kom drugom programskom jeziku, bićete prijatno iznenađeni koliko je to lako uraditi u Javi. Java niti mogu iskoristiti prednosti višeprocesnih sistema ako to operativni sistem dozvoljava. Nažalost, implementacije streamova na većini platformi se veoma razlikuju jedna od druge, a programeri Java jezika ne pokušavaju da postignu uniformnost. Samo kod za pozivanje niti ostaje isti za sve mašine; Java jezik pomera implementaciju višenitnog rada na osnovni operativni sistem ili biblioteku niti. (Niti su obrađene u tom II.) Uprkos tome, jednostavnost višenitnog rada čini Javu tako privlačnom za razvoj serverskog softvera.

Dynamic

Na mnogo načina, Java je dinamičnija od C ili C++. Dizajniran je tako da se lako prilagođava okruženju koje se stalno mijenja. Nove metode i objekti mogu se slobodno dodavati u biblioteke bez nanošenja štete. Jezik Java olakšava dobijanje informacija o napretku programa.

Ovo je vrlo važno kada trebate dodati kod u program koji je već pokrenut. Vrhunski primjer za to je kod koji se preuzima sa Interneta za izvršavanje od strane pretraživača. U Javi 1.0 nije bilo lako dobiti informacije o napretku programa koji se izvršava, ali trenutna verzija jezika Java izlaže programeru i strukturu i ponašanje objekata programa koji se izvršava.
Ovo je veoma vredno za sisteme koji treba da analiziraju objekte tokom izvršavanja programa. Takvi sistemi uključuju GUI buildere, pametne debagere, dodatke i baze podataka objekata.

Java i Internet

Ideja je jednostavna - korisnici preuzimaju Java bajtkodove sa Interneta i izvršavaju ih na svojim mašinama. Java programi koji se pokreću na web pretraživačima nazivaju se apleti. Da biste koristili aplet, potreban vam je web pretraživač koji može tumačiti bajt kodove. Izvor Java jezika licencira Sun, koji insistira da i sam jezik i struktura njegovih osnovnih biblioteka ostanu nepromijenjeni. Nažalost, u stvarnosti to nije slučaj. Različite verzije pretraživača Netscape i Internet Explorer podržavaju različite verzije jezika Java, od kojih su neke značajno zastarjele. Ova nesretna situacija stvara sve više prepreka u razvoju apleta koji koriste prednosti najnovije verzije jezika Java. Da bi rešio ovaj problem, Sun je razvio Java Plug-in, koji obezbeđuje najsavremenije okruženje za pokretanje Java programa pomoću Netscape i Internet Explorer pretraživača.

Učitavanje apleta je kao ugrađivanje slike u web stranicu. Aplet postaje dio stranice, a tekst se obavija oko prostora koji zauzima. Međutim, razlika je u tome što je slika sada živa. Reaguje na korisničke komande, menja svoj izgled i obezbeđuje prenos podataka između računara na kojem se aplet pregleda i računara na kojem se aplet pokreće.

Učitavanje apleta je kao umetanje slike u web stranicu. Aplet postaje dio stranice, a tekst se obavija oko prostora koji zauzima. Poenta je da je slika "živa". Reaguje na unos korisnika, menja svoj izgled i prenosi podatke između računara koji pokreće aplet i računara koji pokreće aplet.

Na sl. 1.1 pokazuje dobar primjer dinamičke web stranice koja izvodi složene proračune i koristi aplet za prikaz molekula. Da biste bolje razumjeli strukturu molekule, možete je rotirati ili zumirati sliku pomoću miša. Takve manipulacije se ne mogu raditi na statičnim web stranicama, ali apleti to omogućavaju. (Ovaj aplet se može naći na http: //jmol.sourceforge.net.)

Rice. 1.1. Jmol applet

Apleti se mogu koristiti za dodavanje novih dugmadi i tekstualnih polja na web stranicu. Međutim, ovi apleti se sporo učitavaju preko telefonske linije.

Slično se može učiniti sa dinamičkim HTML-om, obrascima jezika za označavanje hiperteksta (HTML) ili skript jezikom kao što je JavaScript. Naravno, prvi apleti su bili namijenjeni animaciji: vrteći se globusi, rasplesani likovi iz crtanih filmova, maštoviti tekstovi i tako dalje. Međutim, većina gore navedenih može raditi animirane GIF-ove, a Dynamic HTML, u kombinaciji sa skriptiranjem, čini mnogo više od apleta.

Kao rezultat nekompatibilnosti pretraživača i nedosljednog učitavanja preko sporih mrežnih veza, apleti koji ciljaju na web stranice nisu bili veliko postignuće. U lokalnim mrežama (intranetima) situacija je potpuno drugačija. Obično nemaju problema sa propusnim opsegom, pa je vrijeme učitavanja apleta nevažno. Na lokalnoj mreži možete odabrati željeni pretraživač ili koristiti Java Plug-In program. Zaposleni ne mogu premjestiti softver koji se isporučuje preko mreže na pogrešnu lokaciju ili ga pogrešno instalirati, a sistemski administrator ne mora zaobići sve klijentske mašine i ažurirati softver na njima. Veliki broj programa dizajniranih za obračun zaliha, zakazivanje godišnjih odmora, nadoknadu putovanja i slično razvile su mnoge korporacije u obliku appleta baziranih na pretraživaču.

Dok smo pisali knjigu, klatno se ponovo okrenulo sa klijentskih programa na programiranje na strani servera. Konkretno, aplikacijski serveri mogu koristiti mogućnosti nadzora Java virtuelne mašine za automatsku ravnotežu opterećenja, spajanje veza baze podataka, sinhronizaciju objekata, sigurno gašenje i ponovno učitavanje i druge procese potrebne za skalabilne serverske aplikacije, koje je gotovo nemoguće ispravno implementirati. Stoga su programeri koji kreiraju aplikacije mogli kupiti ove složene mehanizme umjesto da ih sami razvijaju. To je povećalo produktivnost programera - fokusirali su se na logiku svojih programa, a da ih ne ometaju detalji povezani s radom servera.

Top srodni članci