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í |
Byly tam čtyři hlavní cíle ve vytvoření jávského jazyka:
- To je objektově orientované.
- To je nezávislé na platformě hostitele (více nebo méně)
- To obsahuje zařízení jazyka a knihovny pro síťování.
- To je navržené vykonat kód od vzdálených zdrojů bezpečně.
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ů.
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.
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é.
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
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é srozbít popisku;a
pokračovat v popisce;sdělení v C a C + +, která funkce totožně goto.
Sdělení
návrat;skončí metodu.
S
aValue návratu;aValue může být vrácen k metodě povolání.
| Typ proměnné | Popis |
|---|---|
| bajt | 8-kousek podepsal (dva je doplněk) celé číslo |
| krátký | 16-bit podepsal (dva je doplněk) celé číslo |
| int | 32-bit podepsal (dva je doplněk) celé číslo |
| dlouho | 64-bit podepsal (dva je doplněk) celé číslo |
| plavidlo | 32-bit jeden-preciznost pohyblivá čárka (IEEE 754 standardu) |
| dvojitý | 64-bit dvojitý-preciznostní pohyblivá čárka(IEEE 754 standardu) |
| znak | 16-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.
- JDK 1.0 1996, Solaris, Okna, MacOS klasika, Linux
- JDK 1.1 1997, Solaris, okna, MacOS klasika, linux
- JDK 1.2 1998 (také známý jako Java 2), Solaris, okna, linux,?
- JDK 1.3 2000, Solaris, okna, MacOS X, linux
- JDK 1.4 2002, Solaris, okna, MacOS X, linux
- JDK 1.5 2004 (přesto být propuštěn)
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í:
- Generics - poskytuje kompilační čas napsat bezpečí pro sbírky a odklidí dřinu osazení.
- Autoboxing/unboxing - odklidí dřinu manuální konverze mezi primitivními typy (takový jak int) a obal píše (takový jako celé číslo).
- Metadata - nechá vás vyhýbat se psát kód textové vaty, tím, že umožní nástrojům produkovat to z anotací ve zdrojovém kódu. Toto vede k “declarative” programovací styl kde programátor říká, že co by mělo být děláno a nástroje vydávají kód dělat to.
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.
- Jávská platforma
- Java API
- Jávský virtuální stroj
- gcc (zahrnuje Javu k kompilátoru programovacího jazyka)
- Srovnání Javy k C + +.
- JINI
- Zatmění (otevřený získat Idea)
- NetBeans (další otevřený zdroj Ide)
- Optimalizace Javy
- Jávský platformový debugger architektura
Externí odkazy
- Oficiální jávské domácí místo
- Originální jávské whitepaper
- beanshell interpretoval verzi
- Jávská jazyková specifikace, 2. vydání pedantský popis všech jávského jazyka
- Jávská diskuzní skupina (Google webové rozhraní)
- Čistá java pracovní plocha
- Javapedia projekt
- Srovnání Javy vs. C + +
- Sluneční konzultace v jávském programování
- Dokumentace pro nejnovější Javu 2 vydání standardu API, v1.4.2