Dione
Z. KotalaP. Toman: Java
Predchozi (Obsah) Dalsi

3. Kßvu, prosφm?

Kßva, Φi p°esn∞ji "kafe", tak znφ p°eklad slova "java" [Φti d╛ßva] pochßzejφcφho z americkΘ slangovΘ angliΦtiny, kterΘ se stalo jmΘnem novΘho programovacφho jazyka. Jeho vznik je spojen s rozmachem celosv∞tovΘ sφt∞ Internet, resp. se slu╛bou World Wide Web (WWW), a prßv∞ na WWW strßnkßch se m∙╛eme s mal²mi programy v Jav∞, naz²van²mi applety, nejΦast∞ji setkat.

Applet m∙╛e v Java-kompatibilnφm prohlφ╛eΦi jako je nap°φklad Netscape Navigator (verze 2.0 a vy╣╣φ) vypadat takto:

app256.gif

Java v╣ak nenφ, jak se mnozφ domnφvajφ, urΦena jen pro Internet, ale je obecn∞ pou╛iteln²m jazykem urΦen²m pro tvorbu b∞╛n²ch aplikacφ. Pochßzφ od firmy Sun Microsystems, jejφ╛ dce°inß spoleΦnost JavaSoft jej nadßle vyvφjφ.

Zßkladnφ programovacφ nßstroje jsou na Internetu od tΘ╛e firmy voln∞ k dispozici vΦetn∞ obsßhlΘ a kvalitnφ dokumentace (viz kap. 4.). Krom∞ toho je na trhu ╣irokß nabφdka vizußlnφch v²vojov²ch prost°edφ.

3.1. Vlastnosti jazyka

Java je objektov∞ orientovan² jazyk, kter² vychßzφ z jazyk∙ C a C++. Narozdφl od sv²ch p°edch∙dc∙ v╣ak neobsahuje n∞kterΘ konstrukce zp∙sobujφcφ p°i programovßnφ nejv∞t╣φ potφ╛e a naopak p°idßvß °adu zajφmav²ch vlastnostφ:

  • V Jav∞ neexistuje p°φm² a nekontrolovan² p°φstup do pam∞ti - ukazatele jsou nahrazeny referenΦnφmi prom∞nn²mi, datovΘ typy jsou pevn∞ definovßny (1) , provßdφ se kontrola p°i indexaci polφ, zabra≥uje se p°φstupu ke zru╣en²m objekt∙m.

  • Syntaxe je jednodu╣╣φ a srozumiteln∞j╣φ - Java neobsahuje preprocesor (tj. ╛ßdnß makra ani direktivy), nenφ povoleno p°et∞╛ovßnφ operßtor∙, je zaveden jednotn² zßpis pro p°φstup k objekt∙m i knihovnßm.

  • Java disponuje silnou statickou typovou kontrolou. Aritmetika je definovßna podle normy IEEE, co╛ zaruΦuje stejn² v²sledek na rozdφln²ch systΘmech. Abecedy neanglick²ch jazyk∙ jsou podporovßny pomocφ ╣estnßctibitovΘho znakovΘho k≤du Unicode.

  • Prost°ednictvφm v²jimek lze zachytit chyby a neoΦekßvanΘ stavy vyskytujφcφ se za b∞hu programu a umo╛nit jeho zotavenφ.

  • Jazyk zahrnuje prost°edky pro paralelnφ b∞h Φßstφ programu (multithreading) a jejich synchronizaci.

  • Java podporuje vytvß°enφ distribuovan²ch aplikacφ a automatickΘ ╣φ°enφ program∙ po sφti. Lze tak zajistit upgrade softwaru s minimßlnφmi finanΦnφmi nßroky.

  • BezpeΦnost aplikacφ lze zajistit programovou kontrolou p°φstupu k objekt∙m a za°φzenφm, vlastnφ k≤d programu je p°ed spu╣t∞nφm verifikovßn na sprßvnost.

3.2. Java Platforma

Nejv∞t╣φm p°φnosem Javy je bezesporu plnß p°enositelnost program∙ na libovolnou platformu bez nutnosti jejich rekompilace. Programy se toti╛ nep°eklßdajφ do strojovΘho k≤du konkrΘtnφho procesoru, ale do nezßvislΘ podoby, tzv. bytovΘho k≤du (bytecode) (2) . Tento k≤d pak m∙╛e b²t interpretovßn na jakΘmkoliv poΦφtaΦi nebo pr∙myslovΘm za°φzenφ. Kompatibilita je tedy zaji╣t∞na na binßrnφ ·rovni.

HardwarovΘ rozdφly zast°e╣uje tzv. Java Platforma, kterß obsahuje dv∞ zßkladnφ Φßsti:

  • Abstraktnφ poΦφtaΦ - virtußlnφ stroj (Java Virtual Machine - JVM), kter² sestßvß z runtime systΘmu, co╛ je Φßst realizujφcφ vazbu na hardware, a interpretu, kter² vykonßvß bytov² k≤d.

    Pro urychlenφ m∙╛e b²t interpret voliteln∞ nahrazen tzv. JIT (Just-In-Time) kompilßtorem, kter² p°i b∞hu programu provßdφ nejprve p°eklad do strojovΘho k≤du p°φslu╣nΘho procesoru.

  • AplikaΦnφ programovΘ rozhranφ (Java Core API) - co╛ jsou zßkladnφ knihovny pro psanφ program∙. V²hodou je, ╛e tyto knihovny nemusφ b²t s programem distribuovßny, nebo╗ jsou souΦßstφ Java Platformy.

V souΦasnΘ dob∞ probφhß nßvrh n∞kolika roz╣i°ujφcφch programov²ch rozhranφ. Jednß se nap°φklad o podporu 2D a 3D grafiky (Java 2D a 3D API), zvuk (Java Audio API), sprßvu sφt∞ (Java Management API), bezpeΦnost (Java Security API) atd.

Firma Sun rovn∞╛ vyvφjφ specißlnφ mikroprocesory urΦenΘ pro rychlou interpretaci bytovΘho k≤du a takΘ sφ╗ov² poΦφtaΦ (JavaStation) s operaΦnφm systΘmem na bßzi Javy (JavaOS).

3.3. Java nenφ JavaScript

Pom∞rn∞ roz╣φ°en²m omylem je nßzor, ╛e jazyky Java a JavaScript jsou toto╛nΘ. P°esto╛e syntakticky si jsou dosti podobnΘ, existujφ mezi nimi zßsadnφ rozdφly (3) a nelze ani °φci, ╛e JavaScript je podmno╛inou Javy.

JavaScript pochßzφ od firmy Netscape a je urΦen v²hradn∞ pro WWW strßnky. Tφmto jazykem se dßle nebudeme zab²vat - vφce informacφ lze nalΘzt nap°φklad na [WWW9].

3.4. Nedostatky Javy

Hlavnφm nedostatkem Javy je malß rychlost interpretovan²ch program∙. To se t²kß zejmΘna Internetov²ch prohlφ╛eΦ∙, kterΘ navφc majφ mnohdy problΘmy se stabilitou applet∙ (ov╣em nikoliv vinou Javy). Tuto vadu by m∞ly v budoucnu odstranit vyvφjenΘ JIT kompilßtory.

Druh²m problΘmem jsou znaΦnΘ nßroky na pam∞╗, vznikajφcφ v d∙sledku automatickΘ sprßvy pam∞╗ov²ch prost°edk∙. Kapacita pam∞tφ poΦφtaΦ∙ v╣ak neustßle roste, a tudφ╛ se jednß o pon∞kud mΘn∞ zßva╛n² nedostatek.


  • (1) Rozumφ se shodn∞ pro v╣echny hardwarovΘ platformy.
  • (2) Jednß se o pseudok≤d zßsobnφkovΘho typu, viz p°φklad D.3..
  • (3) V p°φpad∞ JavaScriptu je interpretovßn p°φmo zdrojov² text, nejsou podporovßny t°φdy ani d∞diΦnost atd.

Predchozi
Converted by Selathco v0.9 on 25.09.1999 19:46
Dalsi