Úvodní stránka | Tato stránka v originále

Jávský programovací jazyk

Jávský jazyk je objektově orientovaný programovací jazyk vytvořil James Gosling a jiní inženýři u Slunce Microsystems. To bylo vyvinuto v 1991, jako součást zeleného projektu, a oficiálně oznámený na 23. května, 1995, u SunWorld; bytí vydané v listopadu. Gosling a přátelé zpočátku navrhli Javu, který byl nazýván Dubem nejprve (ve cti stromu u Gosling kanceláře), nahradit C + + (ačkoli soubor rysa lépe se podobá tomu Cíl C). Více na minulost Javy může být nalezená v článku o Jávské platformě, který zahrnuje jazyk, Jávský virtuální stroj, a Java API. Slunce řídí jávskou specifikaci a drží obchodní známku na jávském jménu.

Tabulka s obsahem
1 přehled
2 jazyk
3 verze
4 interpretoval verzi
5 vidět také
6 externích spojení

Přehled

Byly tam čtyři hlavní cíle ve vytvoření jávského jazyka:

Orientace objektu

První charakteristika, orientace objektu (“OO”), se odkazuje na metodu programování a design jazyka. Hlavní myšlenka na OO má navrhnout software kolem “věcí” (ie. namítá) to obsluhuje, poněkud než akce to hraje. Toto je založené na představě, že bývalá změna méně často a radikálně než latter, dělat takové objekty (vlastně entity obsahovat údaje) více stabilní základ pro systém softwaru je design. Záměr má vypracovat velké softwarové projekty snadnější zvládat to, tak zlepšovat kvalitu a redukovat množství neúspěšných projektů.

Nezávislost platformy

Druhá charakteristika, nezávislost platformy, znamená, že to programss zapsaný jávský jazyk musí běžet podobně na různorodém hardwaru. Jeden by měl být schopný napsat program jednou a provozovat to kdekoli. Toto je dosáhl tím, že překládá jávský jazykový kód “uprostřed” bytecode-- zjednodušil instrukce stroje, které odpovídají dané normě. Kód je pak útok na virtuální stroj, program psaný v rodném kódu na hardwaru hostitele, který překládá druhovou Javu bytecode do použitelného kódu na hardwaru. Další, standardizované knihovny jsou poskytovány dovolit přístup k rysům strojů hostitele (takový jako grafika a síťování) v sjednocených cestách. Jávský jazyk také zahrnuje podporu pro multi-navlékal programy -- nutnost pro mnoho aplikací síťování.

První realizace jazyka používaly interpretovaný virtuální stroj dosáhnout přenositelnosti, a mnoho implementací ještě dělá. Tyto implementace produkují programy, které běží více pomalu než úplně-zkompilované programy vytvořily typický C + + kompilátor a někteří pozdnější jávští jazykoví kompilátoři tak jazyk snášeli reputaci za výrobní pomalé programy. Nedávnější realizace Jávy VM produkuje programy, které běží hodně rychleji, používat rozmanité techniky.

První tito je jednoduše sestavit přímo do rodného kódu jako tradičnější kompilátor, skákání bytecodes úplně. Toto dosáhne vynikajícího výkonu, ale u vydání přenositelnosti. Další technika, jen-v-čas kompilátor nebo “JIT”, kompiluje jávské bytecodes do rodného kódu v době program je provozován. Důmyslnější VMs dokonce používá dynamické recompilation, ve kterém VM může analyzovat chování odladěného programu a selektivně recompile a optimalizovat kritické části programu. Oba těchto technik dovolit programu vzít výhodu rychlosti přirozeného kódu bez prohrávající přenositelnosti.

Přenositelnost je technicky těžký cíl dosáhnout, a jávský úspěch u toho cíle je věc nějaké diskuse. Ačkoli to je opravdu možné psát programy pro jávskou platformu to se chovat souhlasně přes mnoho hostitele platformy, velké množství dostupných platforem s malými omyly nebo rozporuplnosti vedli některé ke slunci parodie “psát jakmile, běžet kdekoli” slogan jak “psát jakmile, ladit všude”.

Platformová samostatná Java je, nicméně, velmi úspěšný se serverovými postranními aplikacemi, takový jako webové služby, servlets nebo podnikové jávské fazole.

Bezpečné provádění vzdáleného kódu

Jávská platforma byla jeden z prvních systémů poskytovat širokou podporu pro provádění kódu od vzdálených zdrojů. An applet mohl běžet uvnitř prohlížeče uživatele, vykonávat kód stáhnutý od vzdálený HTTP server. Vzdálený kód vběhne velmi omezil “sandbox”, který chrání uživatele před misbehaving nebo zlomyslným kódem; publikovatelé mohli žádat o certifikát že oni mohli používat k digitálně podepsat applety jak “bezpečný”, dávat je povolení unikat z sandbox a zpřístupňovat místní filesystem a síť, pravděpodobně pod uživatelskou kontrolou.

Ohodnocení

Nejvíce obecně zvažovat jávskou technologii doručovat rozumně dobře na všech těchto slibech. Jazyk není, nicméně, bez nevýhod.

Java inklinuje být více high-level než podobné jazyky (takový jak C + +), který znamená, že jávský jazyk postrádá rysy takový jako hardware-specifické datové typy a nízkoúrovňové ukazatele na libovolnou paměť. Ačkoli tyto rysy jsou často zneužívány nebo zneužil programátory, oni jsou také silné nástroje. Nicméně, Jávské domorodé rozhraní (JNI) přece poskytuje cestu pro jávský program k hovoru non-jávský kód aby spekuloval schopnosti jiných jazyků když nutný.

Někteří také vidí nedostatek na jeho nedostatku rozmanité dědičnosti, silný rys několika objektově orientovaných jazyků takový jak C + +, Eiffel, a CLOS. Jávské subclasses mají jen jednu šanci zdědit implementaci tím, že si vybere jeden superclass, který může vést k nepravdivému dilemas (měl by obytný člun zdědit dům nebo loď?) a vyloučí jisté implementační techniky takový jako mixins. Nicméně, zastáncové věří Javě rozmanitý inheritence rozhraní je dobrý kompromis, poskytovat většinu z výhod plného rozmanitého inheritence zatímco uhne trnitým situacím ve kterém třída zdědí rozmanité konfliktní implementace.

Jávský vzor bytecode výkladu je široce viděn poskytovat přenositelnost jediný u vydání degradace výkonu vztažené k rodnému kódu. Dynamická kompilace pomáhá ohromně, ale ještě typicky moci ne tlouci statically-zkompilovaný kód; toto je, protože kompilace nastane u provozní, a tak poškodí výkon programu, působit dynamické kompilátory aplikovat optimalizace šetrně. Nicméně, přesně protože dynamičtí kompilátoři jsou přítomní u provozní, oni mohou vzít výhodu dynamického programového chování, a mohou dokonce recompile části programu jako změna podmínek. Proto, dynamičtí kompilátoři mohou vykonávat optimalizace že kompilátoři statické elektřiny nemohou; a tam dělat existovat některé programy pro kterého dynamicky-zkompilovaný kód je rychlejší než statically-zkompilovaný. (například, dlouhotrvající programy jehož chování závisí na vstupu data mohou spadat do této kategorie.) to je nenerozumné předpokládat, že tento soubor programů bude růst jako dynamická kompilace technologie se zlepší.

Java je těžké použití haldy-přidělil objekty přiměje programy, aby spotřeboval více paměti než podobné programy zapsaný nižší-jazyky úrovně, kde ukládání dat může být optimalizováno u jemné granularity. Protože to ošetřuje téměř všechno je objekt, Java povzbudí styl ve kterém objekty obsahují množství odkazů na jiné objekty poněkud než hrubá data, dělat objekty větší a data méně se soustředila. Oba tyto účinky inklinují k práci proti moderním pamětovým hierarchiím, jehož vyrovnávací schémata si libují v malých pracovních souborech a dobrém místě.

Tam jsou někteří kdo věřit tomu pro jisté projekty, orientace objektu dělá práci těžčeji místo toho snadnější. Obzvláště tato stížnost je nespecifická pro jávský jazyk ale platí o jiných objektově orientovaných jazycích také.

Jazyk

Příklad ahoj svět program v jávském jazyce znamená:

třída veřejnosti HelloWorld {veřejná statická nicota hlavní (řetězec [] argumenty) {System.out.println (“ahoj svět!”);}}

Struktury kontroly

Smyčky

zatímco (Booleovský výraz) {
    sdělení (s)
}

dělat {
    sdělení (s)
} zatímco (Booleovský výraz);

pro (initialisation ; podmínka ukončení ; expr incrementing) {
    sdělení (s)
}

Podmíněné příkazy

jestliže (Booleovský výraz) {
    sdělení (s)
}

jestliže (Booleovský výraz) {
    sdělení (s)
} jinde {
    sdělení (s)
}

S jinde jestliže libovolně komplexní jestliže-pak-stavby smět být stavěn.

jestliže (Booleovský výraz) {
    sdělení (s)
} jinde jestliže (Booleovský výraz) {
    sdělení (s)
} jinde jestliže (Booleovský výraz) {
    sdělení (s)
} jinde {
    sdělení (s)
}

měnit (výraz celého čísla) {případ konstantní celočíselné expr:
         sdělení (s)
         se zlomit;... standardní:
         sdělení (s)
         se zlomit;}

Výjimkové zacházení

zkouška {
    sdělení (s)
} chytit (typ výjimky) {
    sdělení (s)
} chytit (typ výjimky) {
    sdělení (s)
} konečně {
    sdělení (s)
}

Nestrukturovaný průběh

Java nemá goto sdělení, zatímco jejich použití je široce považováno za chudou programovací praxi. Tam být, nicméně, některá použití pro goto, které jsou zvážil to přijatelný, a Jáva má schopnosti kopírovat takovou funkčnost. Poznamenat, že goto je vyhrazené slovo a jako takový moci ne být užitý na identifikátory.

Časný odchod ze smyček

Java poskytuje dvě sdělení k odchodu ze smyčky uprostřed iterace. Sdělení

pokračovat;
skončí aktuální iteraci smyčky a odstartuje ten příští, chovat se jako goto skákat k vrcholu smyčkového těla. Podobně, sdělení
se zlomit;
vystoupí ze smyčky, končit iteraci proudu a vykonávat už žádné iterace. Účinek je to goto přeskakovat spravedlivou minulost konec smyčky.

Java je se lámat a pokračovat sdělení jsou silnější než C a C + + konstrukce stejného jména, v tom oni jsou schopní vystupovat z víc než jedné smyčky-hnízdící úroveň. Specificky, vyskočit ze zvláštní smyčky, jeden může označit smyčku, a pak opatřovat nálepkou k přerušení nebo pokračovat ve sdělení. Dosáhnout podobné funkčnosti v C a C + + by vyžadoval použití goto sdělení.

Například:

vnější: zatímco (pravdivý) {
    inner: zatímco (pravdivý) {se zlomit; / / vystoupí innermost přerušení smyčky inner; / / také vystoupí innermost přerušení smyčky vnější; / / vystoupí outermost smyčka}}

Toto by nemělo být zmatené s
rozbít popisku;
a
pokračovat v popisce;

sdělení v C a C + +, která funkce totožně goto.

Časný odchod z metod

Sdělení

návrat;
skončí metodu.

S

aValue návratu;
aValue může být vrácen k metodě povolání.

Primitivní datové typy

Typ proměnnéPopis
bajt8-kousek podepsal (dva je doplněk) celé číslo
krátký16-bit podepsal (dva je doplněk) celé číslo
int32-bit podepsal (dva je doplněk) celé číslo
dlouho64-bit podepsal (dva je doplněk) celé číslo
plavidlo32-bit jeden-preciznost pohyblivá čárka (IEEE 754 standardu)
dvojitý64-bit dvojitý-preciznostní pohyblivá čárka
(IEEE 754 standardu)
znak16-ti bitový jediný unikódový charakter
booleovskýpravdivý nebo nepravdivý

Charaktery používají 16-ti bitové unikódové kódování. To obsahuje všechny obvyklých charakterů, ale také zahrnuje znakové sady pro mnoho jazyků jiný než angličtina, včetně Řeka, Cyrillic, Číňan, arabský, etc. Jávské programy mohou používat všechny těchto charakterů, ačkoli většina editorů nemá vestavěnou podporu pro znakové sady jiný než obvyklé ASCII znaky. Sady a řetězce nejsou primitivní typy: oni jsou objekty.

Verze

Java byla zpočátku uvolněna jako jávská rozvojová výstroj 1.0 (JDK 1.0). Toto zahrnovalo Jávu provozní (virtuální stroj a knihovny třídy), a nástroje vývoje (např. Javac kompilátor). Pozdnější, slunce také stanovilo provozní-jediný balíček, volal jávské běhové prostředí (JRE). Křestní jméno se přilepilo, nicméně, tak obvykle lidé se odkazují na zvláštní verzi Javy jeho JDK verzí (např. JDK 1.4). JDKs verze 1.2 a pozdnější verze jsou často nazvané Java 2 také. Například, oficiální jméno JDK 1.4 je Jáva (TM) 2 platforma, standard verze vydání 1.4.

Jazyk jako takový byl stabilní od JDK 1.0, kromě pro sčítání tvrdit klíčové slovo v 1.4; knihovny třídy, které jdou s JDK se zvětšily a se měnili v některých částech. Extensionss a architektury silně remizovaly k jávskému programovacímu jazyku obsahovat: J2EE, J2ME, JNDI, JSML, JDBC, Jain, JDMK, Jini, Jiro, JXTA, JavaSpaces, JMI.

1.5 (codename tygr) je naplánován být propuštěn v červnu-srpen timeframe 2004. Důležité změny obsahují:

(od [1])

Interpretovaná verze

Tam je interpretovaná verze Javy nazvaný beanshell který může být používán jako skořápka psát jazyk. Tlumočník může být zasazený v jávské žádosti dělat to scriptable.

Viz též

Externí odkazy