Поддерживать
www.wikidata.ru-ru.nina.az
Eta statya o yazyke programmirovaniya O prikladnoj platforme na osnove dannogo yazyka sm Java programmnaya platforma Ne sleduet putat s JavaScript Java strogo tipizirovannyj obektno orientirovannyj yazyk programmirovaniya obshego naznacheniya razrabotannyj kompaniej Sun Microsystems v posleduyushem priobretyonnoj kompaniej Oracle Razrabotka vedyotsya soobshestvom organizovannym cherez Java Community Process yazyk i osnovnye realizuyushie ego tehnologii rasprostranyayutsya po licenzii GPL Prava na torgovuyu marku prinadlezhat korporacii Oracle JavaKlass yazyka yazyk JVM multiparadigmennyj obektno orientirovannyj aspektno orientirovannyj obobshyonnyj reflektivnyjPoyavilsya v 1995Avtor Dzhejms Gosling i Sun MicrosystemsRazrabotchik Sun Microsystems i OracleRasshirenie fajlov java class jar jad jmod war earVypusk Java SE 22 19 03 2024 Ispytal vliyanie C Si Ada Simula 67 d Smalltalk Objective C Object Pascal Oberon Eiffel Modula 3 Mesa d Simula C UCSD Pascal obyortka d Variativnaya funkciya annotaciya Java Niklaus Virt Patrik Noton vd i foreach d Povliyal na Ada C Chapel Clojure ECMAScript Fantom Gambas Groovy Hack Haxe J Kotlin PHP Python Scala Seed7 Vala JavaScriptLicenziya GNU GPLSajt oracle com ru java Mediafajly na Vikisklade Prilozheniya Java obychno transliruyutsya v specialnyj bajt kod poetomu oni mogut rabotat na lyuboj kompyuternoj arhitekture dlya kotoroj sushestvuet realizaciya virtualnoj Java mashiny Data oficialnogo vypuska 23 maya 1995 goda Java zanimaet vysokie mesta v rejtingah populyarnosti yazykov programmirovaniya 2 e mesto v rejtingah IEEE Spectrum 2020 i TIOBE 2021 Istoriya sozdaniyaDzhejms Gosling Iznachalno yazyk nazyvalsya Oak Dub razrabatyvalsya Dzhejmsom Goslingom dlya programmirovaniya bytovyh elektronnyh ustrojstv Iz za togo chto yazyk s takim nazvaniem uzhe sushestvoval Oak byl pereimenovan v Java Nazvan v chest marki kofe Java kotoraya v svoyu ochered poluchila naimenovanie odnoimyonnogo ostrova Yava poetomu na oficialnoj embleme yazyka izobrazhena chashka s goryachim kofe Sushestvuet i drugaya versiya proishozhdeniya nazvaniya yazyka svyazannaya s allyuziej na kofemashinu kak primer bytovogo ustrojstva dlya programmirovaniya kotorogo iznachalno yazyk sozdavalsya V sootvetstvii s etimologiej v russkoyazychnoj literature s konca dvadcatogo i do pervyh let dvadcat pervogo veka nazvanie yazyka neredko perevodilos kak Yava a ne transkribirovalos V rezultate raboty proekta mir uvidel principialno novoe ustrojstvo karmannyj personalnyj kompyuter Star7 kotoryj operedil svoyo vremya bolee chem na 10 let no iz za bolshoj stoimosti v 50 dollarov ne smog proizvesti perevorot v mire tehnologii i byl zabyt Ustrojstvo Star7 ne polzovalos populyarnostyu v otlichie ot yazyka programmirovaniya Java i ego okruzheniya Sleduyushim etapom zhizni yazyka stala razrabotka interaktivnogo televideniya Odnako v 1994 godu stalo ochevidnym chto interaktivnoe televidenie bylo oshibkoj S serediny 1990 h godov yazyk stal shiroko ispolzovatsya dlya napisaniya klientskih prilozhenij i servernogo programmnogo obespecheniya Togda zhe opredelyonnoe rasprostranenie poluchila tehnologiya Java appletov graficheskih Java prilozhenij vstraivaemyh v veb stranicy s razvitiem vozmozhnostej dinamicheskih veb stranic v 2000 e gody tehnologiya stala primenyatsya redko V veb razrabotke primenyaetsya Spring Framework dlya dokumentirovaniya ispolzuetsya utilita Javadoc Osnovnye osobennosti yazykaProgrammy na Java transliruyutsya v bajt kod Java vypolnyaemyj virtualnoj mashinoj Java JVM programmoj obrabatyvayushej bajtovyj kod i peredayushej instrukcii oborudovaniyu kak interpretator Dyuk talisman Java Dostoinstvom podobnogo sposoba vypolneniya programm yavlyaetsya polnaya nezavisimost bajt koda ot operacionnoj sistemy i oborudovaniya chto pozvolyaet vypolnyat Java prilozheniya na lyubom ustrojstve dlya kotorogo sushestvuet sootvetstvuyushaya virtualnaya mashina Drugoj vazhnoj osobennostyu tehnologii Java yavlyaetsya gibkaya sistema bezopasnosti v ramkah kotoroj ispolnenie programmy polnostyu kontroliruetsya virtualnoj mashinoj Lyubye operacii kotorye prevyshayut ustanovlennye polnomochiya programmy naprimer popytka nesankcionirovannogo dostupa k dannym ili soedineniya s drugim kompyuterom vyzyvayut nemedlennoe preryvanie Chasto k nedostatkam koncepcii virtualnoj mashiny otnosyat snizhenie proizvoditelnosti Ryad usovershenstvovanij neskolko uvelichil skorost vypolneniya programm na Java primenenie tehnologii translyacii bajt koda v mashinnyj kod neposredstvenno vo vremya raboty programmy JIT tehnologiya s vozmozhnostyu sohraneniya versij klassa v mashinnom kode obshirnoe ispolzovanie platformenno orientirovannogo koda native kod v standartnyh bibliotekah apparatnye sredstva obespechivayushie uskorennuyu obrabotku bajt koda naprimer tehnologiya Jazelle podderzhivaemaya nekotorymi processorami arhitektury ARM Po dannym sajta shootout alioth debian org dlya semi raznyh zadach vremya vypolneniya na Java sostavlyaet v srednem v poltora dva raza bolshe chem dlya C C no pri etom v nekotoryh sluchayah Java bystree a v otdelnyh sluchayah v 7 raz medlennee S drugoj storony dlya bolshinstva iz nih potreblenie pamyati Java mashinoj bylo v 10 30 raz bolshe chem programmoj na C C Takzhe primechatelno issledovanie provedyonnoe kompaniej Google soglasno kotoromu otmechaetsya sushestvenno bolee nizkaya proizvoditelnost i bo lshee potreblenie pamyati v testovyh primerah na Java v sravnenii s analogichnymi programmami na C Idei zalozhennye v koncepciyu i razlichnye realizacii sredy virtualnoj mashiny Java vdohnovili mnozhestvo entuziastov na rasshirenie perechnya yazykov kotorye mogli by byt ispolzovany dlya sozdaniya programm ispolnyaemyh na virtualnoj mashine Eti idei nashli takzhe vyrazhenie v specifikacii obsheyazykovoj infrastruktury CLI zalozhennoj v osnovu platformy NET kompaniej Microsoft Istoriya versijOsnovnaya statya Istoriya versij Java Etot razdel nuzhno proverit na sootvetstvie kriteriyam vzveshennosti izlozheniya Vozmozhno soderzhanie stati narushaet princip vzveshennogo izlozheniya predstavlyaya maloznachimye mneniya i fakty tak zhe kak i bolee vazhnye libo udelyaet slishkom mnogo mesta opisaniyu kakogo to odnogo aspekta temy v usherb drugim ne menee sushestvennym Pozhalujsta uluchshite eyo v sootvetstvii s pravilami napisaniya statej 17 yanvarya 2024 JDK 1 0 Razrabotka Java nachalas v 1990 godu pervaya oficialnaya versiya Java 1 0 byla vypushena tolko 21 yanvarya 1996 goda JDK 1 1 Vtoraya versiya byla vypushena 19 fevralya 1997 goda Biblioteka Accessibility Java 2D Podderzhka tehnologii drag and drop Polnaya podderzhka Unicode vklyuchaya podderzhku vvoda na yaponskom kitajskom i korejskom yazykah Podderzhka vosproizvedeniya audiofajlov neskolkih populyarnyh formatov Polnaya podderzhka tehnologii CORBA JIT kompilyator uluchshennaya proizvoditelnost Usovershenstvovaniya instrumentalnyh sredstv JDK v tom chisle podderzhka profilirovaniya Java programm J2SE 1 2 Data vypuska 8 dekabrya 1998 goda Kodovoe imya Playground V dannom sluchae vstrechaetsya putanica Vypuskalis knigi naprimer Beginning Java 2 by Ivor Horton Mar 1999 fakticheski po J2SE 1 2 byvshee nazvanie Java 2 Vmeste s tem po sej den takie knigi publikuyutsya naprimer H M Dejtel P Dzh Dejtel S I Santri Tehnologii programmirovaniya na Java 2 Raspredelyonnye prilozheniya 2011 V to vremya kogda Java 2 byla istoricheski zamenena sleduyushimi relizami podobnye nazvaniya knig dezorientiruyut v ponimanii o kakoj zhe versii Java oni napisany na samom dele Esli J2SE 1 2 prinyato schitat za Java 2 a avtory knig za Java 2 prinimayut JDK 7 chto privodit k polnoj putanice J2SE 1 3 Data vypuska 8 maya 2000 goda Kodovoe imya Kestrel J2SE 1 4 Data vypuska 6 fevralya 2002 goda Kodovoe imya Merlin J2SE 5 0 Specifikaciya Java 5 0 byla vypushena 30 sentyabrya 2004 goda kodovoe imya Tiger C etoj versii izmenena oficialnaya indeksaciya vmesto Java 1 5 pravilnee nazyvat Java 5 0 Vnutrennyaya zhe indeksaciya Sun ostalas prezhnej 1 x Malye izmeneniya teper vklyuchayutsya bez izmeneniya indeksacii dlya etogo ispolzuetsya slovo Update ili bukva u naprimer Java Development Kit 5 0 Update 22 Predpolagaetsya chto v obnovleniya mogut vhodit kak ispravleniya oshibok tak i nebolshie dobavleniya v API JVM V dannoj versii razrabotchiki vnesli v yazyk celyj ryad principialnyh dopolnenij Perechislimye tipy angl enum Ranee otsutstvovavshie v Java tipy oformleny po analogii s C no pri etom imeyut ryad dopolnitelnyh vozmozhnostej Perechislimyj tip yavlyaetsya polnocennym klassom Java to est mozhet imet konstruktor polya metody v tom chisle skrytye i abstraktnye Perechislenie mozhet realizovyvat interfejsy Dlya perechislenij imeyutsya vstroennye metody dayushie vozmozhnost polucheniya znachenij tipa po imeni simvolnyh znachenij sootvetstvuyushih imenam preobrazovaniya mezhdu nomerom i znacheniem proverki tipa na to chto on yavlyaetsya perechislimym Annotacii vozmozhnost dobavleniya v tekst programmy metadannyh neposredstvenno ne vliyayushih na vypolnenie koda no dopuskayushih ispolzovanie dlya polucheniya razlichnyh svedenij o kode i ego ispolnenii Odnovremenno vypushen instrumentarij dlya ispolzovaniya annotirovannogo koda Odno iz primenenij annotacij uproshenie sozdaniya testovyh modulej dlya Java koda Sredstva obobshyonnogo programmirovaniya angl generics mehanizm analogichnyj sredstvam yazykov Ada i Eiffel pozzhe takzhe poyavilis i v C principialno otlichayutsya ot shablonov C dayushij vozmozhnost sozdavat klassy i metody s polyami i parametrami proizvolnogo obektnogo tipa S ispolzovaniem dannogo mehanizma realizovany novye versii kollekcij standartnoj biblioteki Java Metody s neopredelyonnym chislom parametrov Autoboxing Unboxing avtomaticheskoe preobrazovanie mezhdu skalyarnymi tipami Java i sootvetstvuyushimi tipami obyortkami naprimer mezhdu int Integer Nalichie takoj vozmozhnosti sokrashaet kod poskolku isklyuchaet neobhodimost vypolneniya yavnyh preobrazovanij tipov v ochevidnyh sluchayah Razreshyon import staticheskih polej i metodov V yazyk vvedyon cikl po kollekcii obektov iterator angl foreach Vvedeno ispolzovanie Javadoc kommentariev kotorye ispolzuyutsya dlya avtomaticheskogo oformleniya dokumentacii po kommentariyam v ishodnom kode Java SE 6 Reliz versii sostoyalsya 11 dekabrya 2006 goda kodovoe imya Mustang Izmenena oficialnaya indeksaciya vmesto ozhidaemoj 6 0 versiya znachitsya kak 6 Malye izmeneniya kak i v Java 5 0 vnosyatsya v obychnye obnovleniya versii naprimer Java Standard Edition Development Kit 6 Update 27 Vneseny sleduyushie izmeneniya Kollekcii dobavleny interfejsy dlya organizacii dvuhstoronnih ocheredej v tom chisle blokiruyushih sebya vo vremya ozhidaniya elementa mnozhestv i slovarej organizovyvayushih poisk po blizhajshemu sootvetstviyu Navigable Set Navigable Map Pri etom organizovany novye klassy realizuyushie perechislennye interfejsy Dobavlena podderzhka yaponskogo imperatorskogo kalendarya naryadu s uzhe sushestvuyushimi grigorianskim i buddijskim kalendaryami Dostupny klassy potoki dlya chteniya i peredachi szhatyh dannyh s vozmozhnostyu peredachi ih po seti Snyaty ogranicheniya na kolichestvo fajlov v arhive ranee 64 Kb dlinu nazvaniya fajla ranee 256 simvolov i kolichestvo odnovremenno otkrytyh fajlov ranee 2000 sht Organizovana sistema upravleniya keshem i dobavlena podderzhka parametra no cache v HTTP zaprose JConsole graficheskij monitoring JVM stala oficialno podderzhivaemoj utilitoj Java HTTP Server pozvolyaet sozdat polnocennyj HTTP server s minimalno neobhodimymi funkcionalnymi svojstvami Povysilas skorost vychislenij na 70 skorost operacij vvoda vyvoda vozrosla v dva raza Swing uluchshena rabotosposobnost OpenGL i DirectX obrabotka teksta na LCD dobavlen GifWriter dlya raboty s fajlami formata GIF Ispravleno bolshoe kolichestvo oshibok JavaFX Data vypuska 8 oktyabrya 2013 goda JavaFX 2 2 voshyol v sostav Java SE 7 update 6 S 11 j versii modul postavlyaetsya otdelno ot JDK Java ME Embedded Data vypuska 10 oktyabrya 2013 goda Kodovoe imya Micro Edition Java SE 7 Reliz versii sostoyalsya 28 iyulya 2011 goda kodovoe imya Dolphin V finalnuyu versiyu Java Standard Edition 7 ne byli vklyucheny vse ranee zaplanirovannye izmeneniya Soglasno planu razvitiya plan B vklyuchenie novovvedenij budet razbito na dve chasti Java Standard Edition 7 bez lyambda ischisleniya proekta Jigsaw i chasti uluchshenij proekta Coin i Java Standard Edition 8 vsyo ostalnoe namechennyj na konec 2012 goda V novoj versii poluchivshej nazvanie Java Standard Edition 7 Java Platform Standard Edition 7 pomimo ispravleniya bolshogo kolichestva oshibok bylo predstavleno neskolko novshestv Tak naprimer v kachestve etalonnoj realizacii Java Standard Edition 7 ispolzovan ne proprietarnyj paket JDK a ego otkrytaya realizaciya OpenJDK a sam reliz novoj versii platformy gotovilsya pri tesnom sotrudnichestve inzhenerov Oracle s uchastnikami mirovoj ekosistemy Java komitetom JCP Java Community Process i soobshestvom OpenJDK Vse postavlyaemye Oracle binarnye fajly etalonnoj realizacii Java Standard Edition 7 sobrany na osnove kodovoj bazy OpenJDK sama etalonnaya realizaciya polnostyu otkryta pod licenziej GPLv2 s isklyucheniyami GNU ClassPath razreshayushimi dinamicheskoe svyazyvanie s proprietarnymi produktami K drugim novovvedeniyam otnosyatsya integraciya nabora nebolshih yazykovyh uluchshenij Java razvivaemyh v ramkah proekta Coin dobavlena podderzhka yazykov programmirovaniya s dinamicheskoj tipizaciej takih kak Ruby Python i JavaScript podderzhka zagruzki klassov po URL obnovlyonnyj XML stek vklyuchayushij JAXP 1 4 JAXB 2 2a i JAX WS 2 2 i drugie Za 5 dnej do vyhoda reliza Java Standard Edition 7 bylo obnaruzheno neskolko seryoznyh oshibok v goryachej optimizacii ciklov kotoraya vklyuchena po umolchaniyu i privodit virtualnuyu mashinu Java k krahu Specialisty Oracle najdennye oshibki za stol korotkij srok ispravit ne mogli no poobeshali chto oni budut ispravleny vo vtorom obnovlenii Java 7 Update 2 i chastichno v pervom Spisok novovvedenij Podderzhka dinamicheski tipizirovannyh yazykov InvokeDynamic rasshirenie JVM semantiki bajt koda yazyka Java dlya podderzhki dinamicheski tipizirovannyh yazykov Strogaya proverka class fajlov class fajly versii 51 Java Standard Edition 7 ili bolee pozdnej versii dolzhny byt provereny typechecking verifikatorom JVM ne dolzhna pereklyuchatsya na staryj verifikator Izmenenie sintaksisa yazyka Java Project Coin chastichnye izmeneniya v yazyke Java prednaznachennye dlya uprosheniya obshih zadach programmirovaniya Ispolzovanie klassa String v bloke switch Zakrytie ispolzuemyh resursov v bloke try try with resources rabotaet pri ispolzovanii interfejsa AutoClosable Obedinyonnaya obrabotka isklyuchenij v bloke catch multi catch exceptions perechislenie obrabatyvaemyh isklyuchenij v catch Povtornoe vybrasyvanie isklyuchenij rethrowing exceptions peredacha voznikshego isklyucheniya vverh po steku vyzovov Podchyorkivaniya v chislovyh literalah dlya luchshego vospriyatiya bolshih chisel Izmenenie vyvoda tipa v Java generic pri sozdanii obekta Ispolzovanie dvoichnyh chisel binary literals prefiks 0b ukazhet chto ispolzuetsya dvoichnoe chislo Uproshenie vyzova metodov varargs umenshenie preduprezhdenij pri vyzove metoda s peremennym chislom vhodyashih peremennyh Modifikaciya zagruzchika klassov class loader izbezhanie tupikovyh situacij v neierarhicheskoj topologii zagruzki klassov Zakrytie resursov otkrytyh URLClassLoader Obnovlenie kollekcij JSR 166 Podderzhka Unicode 6 0 Otdelenie yazyka polzovatelya i yazyka polzovatelskogo interfejsa obnovlenie obrabotki yazykov dlya otdeleniya lokali ot yazyka polzovatelskogo interfejsa Novye interfejsy I O dlya platformy Java nio 2 Ispolzovanie JDBC 4 1 i Rowset 1 1 ne zakoncheno Java SE 8 Reliz versii sostoyalsya 19 marta 2014 goda Kodovoe imya Octopus Spisok novovvedenij Polnocennaya podderzhka lyambda vyrazhenij Klyuchevoe slovo default v interfejsah dlya podderzhki funkcionalnosti po umolchaniyu Staticheskie metody v interfejsah Ssylki na metody i konstruktory Funkcionalnye interfejsy predikaty postavshiki i t d Potoki stream dlya raboty s kollekciyami Novyj API dlya raboty s datami ne zakoncheno Java SE 9 V svyazi so slozhnostyami v realizacii modulnoj sistemy v ramkah proekta Jigsaw reliz versii pervonachalno zaplanirovannyj 22 sentyabrya 2016 goda neskolko raz otkladyvalsya snachala data byla perenesena na 23 marta 2017 goda potom na 27 iyulya 2017 goda a zatem na 21 sentyabrya 2017 goda Poslednyaya data stala oficialnoj datoj reliza versii Spisok novovvedenij Integraciya Jigsaw v ramkah kotorogo razrabotana modulnaya sistema dlya platformy Java 9 i primenena k JDK 9 Obnovlenie Process API dlya uluchsheniya vzaimodejstviya s processami operacionnoj sistemy Obnovlenie motivirovano tem chto razrabotchikam zachastuyu prihodilos pisat platformozavisimyj kod dlya takih zadach Vremenno eksperimentalnyj novyj HTTP klient s podderzhkoj HTTP 2 i veb soketov prednaznachen zamenit ustarevshij klass HttpURLConnection Szhatye stroki esli soderzhimoe stroki pozvolyaet ona mozhet kodirovatsya v Latin 1 odin bajt na simvol vybor kodirovki konkretnogo ekzemplyara klassa String otobrazhaetsya v znachenii peremennoj flaga kotoraya teper est u vseh strok Podderzhka ukazannyh v NIST FIPS 202 algoritmov heshirovaniya SHA 3 krome SHAKE128 i SHAKE256 Algoritmy ispolzovaniya SHA 3 v kachestve osnovy dlya drugih kriptograficheskih funkcij ne realizovany v silu otsutstviya sootvetstvuyushih standartov Uluchsheny sredstva dlya pometki ustarevshego API V annotaciyu Deprecated dobavlen parametr pozvolyayushij ukazyvat versiyu programmy s kotoroj ispolzovanie otmechennogo elementa ne rekomenduetsya a takzhe parametr pozvolyayushij ukazat chto zaplanirovano udalenie elementa v kakoj libo iz budushih versij private metody v interfejsah Podderzhka GTK 3 na Linux Java SE 10 Data reliza 20 marta 2018 goda Spisok novovvedenij Oficialnyj chastichnyj spisok novovvedenij i plan reliza raspolozhen na sajte OpenJDK Vyvod tipov lokalnyh peremennyh pomechennyh s pomoshyu klyuchevogo slova var Sozdanie prozrachnogo interfejsa sborshika musora dlya uprosheniya razrabotki novyh sborshikov Umensheno vremya zaderzhek mnogopotochnogo sborshika musora G1 za schyot realizacii parallelnogo polnogo cikla sborki musora Vozmozhnost vypolnyat funkcii obratnogo vyzova na potokah ne delaya globalnyh blokirovok v ramkah vseh potokov Podderzhka simvolov iz novyh rasshirenij Unicode cu tip valyuty fw pervyj den nedeli rg dvuhbukvennye kody stran i regionov tz chasovoj poyas HotSpot VM teper mozhet vydelyat pamyat kuchi dlya obektov na alternativnyh ustrojstvah operativnoj pamyati v tom chisle teh kotorye obladayut energonezavisimoj pamyatyu kak naprimer nakopiteli Intel Optane Memory Novyj eksperimentalnyj JIT kompilyator Graal predostavlyayushij vozmozhnosti Ahead of Time kompilyacii po umolchaniyu otklyuchyon rabotaet tolko na Linux x64 Obnovlenie sistemy numeracii versij Java SE i JDK s celyu priblizheniya k sheme upravleniya versiyami po vremeni Java SE 11 Oficialnyj chastichnyj spisok novovvedenij i plan reliza raspolozhen na sajte OpenJDK Data reliza 25 sentyabrya 2018 goda Spisok novovvedenij Obnovlenie sistemy upravleniya dostupom pozvolyayushee vlozhennym klassam obrashatsya k zakrytym private metodam i polyam vneshnego klassa i naoborot bez neobhodimosti sozdaniya kompilyatorom promezhutochnyh metodov s povysheniem urovnya dostupa Epsilon novyj sborshik musora sobstvenno sborkoj musora ne zanimayushijsya voobshe pri ispolzovanii Epsilon prevyshenie predela vydelyaemoj pamyati privodit k zaversheniyu raboty JVM Standartizirovan klient HTTP s podderzhkoj HTTP 2 vvedyonnyj v Java 9 kak eksperimentalnyj Parametry lyambda funkcij mogut byt neyavno tipizirovany putyom vyvoda tipov cherez klyuchevoe slovo var dlya unifikacii s sintaksisom lokalnyh peremennyh vvedyonnym v JDK 10 Podderzhka 10 j versii standarta Unicode Podderzhka protokola TLS 1 3 Eksperimentalnyj masshtabiruemyj sborshik musora ZGC s nizkimi zaderzhkami Po umolchaniyu otklyuchyon rabotaet tolko na Linux x64 Java SE 12 Data reliza 13 marta 2019 goda Izmeneniya blok switch mozhet ispolzovatsya v vyrazheniyah prisvaivaniya znacheniya peremennoj dobavlena podderzhka 11 j versii standarta Unicode sborshik musora ZGC dobavlena podderzhka vygruzki klassov sborshik musora G1 dobavlena eksperimentalnaya vozmozhnost razmesheniya starogo pokoleniya kuchi na alternativnyh modulyah pamyati naprimer angl v klasse NumberFormat dobavlena podderzhka kompaktnogo vyvoda bolshih chisel naprimer 1K 1000 1M 1 000 000 ustraneny nekotorye neispolzumye ili priznannye ustarevshimi deprecated klassy i ili ih metody naprimer klass SecurityWarning iz paketa AWT metody finalize v klassah FileInputStream i FileOutputStream Java SE 13 Data reliza 17 sentyabrya 2019 goda Izmeneniya v blokah switch dobavlena vozmozhnost ispolzovaniya klyuchevogo slova yield vozvrashayushego ukazannoe za nim znachenie dlya kompaktnoj zapisi strokovyh konstant vvedena eksperimentalnaya vozmozhnost raboty s tekstovymi blokami obramlyonnyh trojkami dvojnyh kavychek v klasse FileSystems paketa java nio file dobavleny novye realizacii metoda newFileSystem metody get put klassa ByteBuffer paketa java nio peresylayut dannye vne zavisimosti ot tekushej pozicii v bufere peredachi dobavlena podderzhka Unicode 12 1 sborshik musora ZGC vozvrashaet bolee neispolzuemuyu pamyat kuchi OS pri etom maksimalnyj podderzhivaemyj razmer pamyati kuchi uvelichen do 16 TB v JCA dobavlena vozmozhnost chteniya privatnyh klyuchej v formate angl Microsoft CryptoAPI dlya macOS isklyuchena podderzhka stilya oformleniya look and feel Swing Motif Java SE 14 Data reliza 17 marta 2020 goda Izmeneniya eksperimentalno vvedeno klyuchevoe slovo record dlya oboznacheniya neizmenyaemyh final klassov yavlyayushihsya kontejnerami neizmenyaemyh dannyh zapisej vvedeno sopostavlenie shablonov dlya operatora instanceof v blokah switch v metkah case blokov switch mogut ispolzovatsya strelochnye gt operatory isklyuchyon sborshik musora Concurrent Mark and Sweep CMS metody suspend i resume klassov Thread i ThreadGroup priznany ustarevshimi deprecated Java SE 15 Data reliza 15 sentyabrya 2020 goda Izmeneniya dobavlena eksperimentalnaya vozmozhnost ispolzovaniya zapechatannyh sealed klassov interfejsov pri obyavlenii kotoryh s pomoshyu novogo klyuchevogo slova permits mozhno ukazyvat kakie klassy interfejsy mogut nasledovat dannyj zapechatannyj klass interfejs dobavlena vozmozhnost ispolzovaniya skrytyh hidden klassov kotorye ne mogut ispolzovatsya neposredstvenno bajt kodom Java ili drugimi klassami v sintaksis yazyka oficialno vvedena eksperimentalno dobavlennaya v Java 13 vozmozhnost raboty s tekstovymi blokami dobavlena podderzhka Unicode 13 0 v klasse CharSequence dobavlen default metod isEmpty v klasse TreeMap dobavlena vozmozhnost peregruzki metodov putIfAbsent computeIfAbsent computeIfPresent compute merge Java SE 16 Data reliza 16 marta 2021 goda Izmeneniya v sintaksis yazyka oficialno vvedeny eksperimentalno dobavlennye v Java 14 vozmozhnosti raboty s zapisyami record i ispolzovaniya instanceof v blokah switch dobavlen Foreign Linker API prednaznachennyj dlya zameny mehanizma JNI dobavlen Foreign Memory Access API pozvolyayushij Java prilozheniyam effektivno i bezopasno ispolzovat pamyat vne kuchi Java dobavleno dinamicheskoe osvobozhdenie oblasti pamyati v kotoroj hranitsya staticheskaya informaciya Java prilozheniya metadannye zagruzhennyh klassov i vozvrashenie osvobozhdyonnoj pamyati OS v JCA dobavlena podderzhka algoritma SHA 3 v klassah SocketChannel i ServerSocketChannel paketa java nio channels dobavlena podderzhka ispolzovaniya soketov domena Unix dobavleno svojstvo jdk tls maxHandshakeMessageSize pozvolyayushee zadat maksimalnyj razmer soobsheniya rukopozhatiya dlya protokolov TLS DTLS v interfejs Stream dobavlen metod toList pozvolyayushij preobrazovyvat potok v spisok dobavlen Vector API prednaznachennyj dlya ispolzovaniya vozmozhnostej vektornogo ischisleniya metody stop destroy isDestroyed setDaemon isDaemon klassa ThreadGroup priznany ustarevshimi deprecated sborshik musora ZGC mozhet proizvodit odnovremennuyu obrabotku stekov raznyh potokov sborshik musora G1 mozhet odnovremenno osvobozhdat pamyat zanimavshuyusya raznymi potokami Java SE 17 Data reliza 14 sentyabrya 2021 goda Izmeneniya v sintaksis yazyka oficialno vvedena eksperimentalno dobavlennaya v Java 15 vozmozhnost raboty s zapechatannymi sealed klassami interfejsami eksperimentalno rasshirena vozmozhnost ispolzovaniya blokov switch v nih mozhno vypolnyat raznye dejstviya v zavisimosti ot togo k kakomu klassu otnositsya ukazannyj obekt to est metki case mogut byt imenami klassov v generatorah psevdosluchajnyh chisel paket java util dobavleny novye algoritmy metody generacii dobavlen Foreign Function amp Memory API pozvolyayushij Java prilozheniyam vzaimodejstvovat s kodom i dannymi vne sredy vypolneniya Java v klasse Console paketa java io dobavlen metod charset vozvrashayushij ispolzuemyj konsolyu nabor simvolov dobavleno novoe sistemnoe svojstvo native encoding pozvolyayushee uznat oboznachenie naimenovanie kodirovki simvolov bazovoj sredy hosta v paket java time dobavlen interfejs InstantSource pozvolyayushij poluchat informaciyu o tekushem momente vremeni v paket java util dobavlen klass HexFormat pozvolyayushij preobrazovyvat chisla shestnadcaterichnoj sistemy schisleniya v chisla drugih sistem schisleniya ili stroki i obratno v MacOS dobavlena vozmozhnost ispolzovaniya novogo konvejera renderinga 2D grafiki Swing Apple Metal interfejs UserDefinedFileAttributeView paketa java nio file attribute rasshiren dlya vozmozhnsti polucheniya dostupa k dopolnitelnym atributam fajlov v klasse FileSystemView paketa javax swing filechooser dobavlen metod getSystemIcon pozvolyayushij zagruzhat ikonki vysokogo kachestva razresheniya v klasse DatagramSocket paketa java net dobavleny metody joinGroup i leaveGroup prednaznachennye sootvetstvenno dlya prisoedineniya k gruppe mnogoadresnoj rassylki ili vyhoda iz neyo isklyuchyon mehanizm aktivacii RMI v virtualnoj mashine Java HotSpot isklyuchyon kod AOT kompilyatora Java SE 18 Data reliza 22 marta 2022 goda Izmeneniya vo vseh Java SE API kodirovka po umolchaniyu izmenena na UTF 8 dobavlena utilita prostogo veb servera jwebserver zapuskaemaya iz komandnoj stroki uluchshena bezopasnost pri ispolzovanii metodov refleksii dobavlen interfejs postavshika uslug dlya imeni hosta i razbora setevogo adresa interfejs JavaFileManager paketa javax tools rasshiren 2 novymi metodami getJavaFileForOutputForOriginatingFiles i getFileForOutputForOriginatingFiles kotorye ispolzuyutsya dlya sozdaniya novyh fajlov na osnovanii ukazannyh ishodnyh fajlov interfejs Filer paketa javax annotation processing ispolzuet eti metody pri sozdanii novyh fajlov v toj zhe manere v klass Charset paketa java nio charset dobavlena peregruzka metoda forName vtorym argumentom kotorogo mozhet ukazyvatsya naimenovanie rezervnoj kodirovki na sluchaj otsutstviya v sisteme ili nevozmozhnosti opredeleniya zaprashivaemoj pervym argumentom priznany ustarevshimi deprecated mehanizmy finalizacii metody finalize raznyh klassov metod stop klassa Thread v sborshike musora G1 maksimalnyj razmer obrabatyvaemyh regionov kuchi uvelichen s 32 do 512 Mb v sborshikah musora SerialGC ParallelGC ZGC dobavlena podderzhka deduplikacii Java SE 19 Data reliza 20 sentyabrya 2022 goda Izmeneniya dobavleny eksperimentalnye vozmozhnosti raboty s virtualnymi potokami proverki yavlyaetsya li peredavaemyj metodu obekt zapisyu record dobavlena podderzhka Unicode 14 0 v potokah vyvoda System out i System err dobavleny novye svojstva stdout encoding i stderr encoding sootvetstvenno kotorye opredelyayut kodirovku simvolov potoka dobavlena podderzhka tokenov privyazki kanalov TLS pri autentifikacii po protokolam Kerberos cherez HTTPS v klassah DateTimeFormatter i DateTimeFormatterBuilder paketa java time format dobavleny novye vozmozhnosti opredeleniya formatov vremeni i dat v klassah HashMap LinkedHashMap WeakHashMap HashSet LinkedHashSet dobavleny staticheskie metody pozvolyayushie sozdavat novye hesh tablicy v klasse SSLParameters paketa javax net ssl dobavleny metody getSignatureSchemes i setSignatureSchemes pozvolyayushie sootvetstvenno poluchat i zadavat shemy proverki elektronnyh cifrovyh podpisej pri soedineniyah po protokolam TLS DTLS izmeneno dejstvie metodov klassa ThreadGroup metody destroy i setDaemon ne delayut nichego metod isDestroyed vsegda vozvrashaet false metody suspend resume i stop vsegda vybrasyvayut isklyuchenie UnsupportedOperationException konstruktory klassa Locale paketa java util priznany ustarevshimi deprecated vmesto nih rekomenduetsya ispolzovat staticheskij metod of Java SE 20 Data reliza 21 marta 2023 goda Izmeneniya pri rabotah s potokami vvedena eksperimentalnaya vozmozhnost ispolzovaniya ogranichennyh znachenij parametrizovannyj klass ScopedValue kotorye mogut effektivno i bezopasno ispolzovatsya raznymi potokami dobavlena podderzhka Unicode 15 0 v klasse SSLParameters paketa javax net ssl dobavleny metody getNamedGroups i setNamedGroups pozvolyayushie v prioritetnom poryadke nastraivat spiski grupp algoritmov obmena klyuchami pri soedineniyah po protokolam TLS DTLS izmeneno dejstvie metodov suspend resume i stop klassa Thread oni vsegda vybrasyvayut isklyuchenie UnsupportedOperationException priznany ustarevshimi deprecated konstruktory klassa URL paketa java net vmesto nih rekomenduetsya ispolzovat novyj staticheskij metod of etogo klassa ili metody toURL klassa URI iz togo zhe paketa ispolzuemye v Java appletah klassy MLet MLetContent PrivateMLet MLetMBean paketa javax management loading v sborshike musora G1 uluchshena parallelnaya obrabotka potokov Java SE 21 Data reliza 19 sentyabrya 2023 goda Izmeneniya v sintaksis yazyka oficialno vvedeny ranee eksperimentalno dobavlennye vozmozhnosti rasshireniya ispolzovaniya blokov switch v nih mozhno vypolnyat raznye dejstviya v zavisimosti ot togo k kakomu klassu otnositsya ukazannyj obekt to est metki case mogut byt imenami klassov s Java 17 proverki yavlyaetsya li peredavaemyj metodu obekt zapisyu record s Java 19 raboty s virtualnymi potokami s Java 19 dobavleny parametrizovannye interfejsy SequencedCollection SequencedSet SequencedMap dlya raboty s kollekciyami v kotoryh chyotko opredelyon poryadok sledovaniya elementov dobavlen Key Encapsulation Mechanism API mehanizm obespecheniya nadyozhnoj raboty s simmetrichnymi kriptosistemami dobavleny eksperimentalnye vozmozhnosti raboty so strokovymi shablonami v kotoryh mogut ispolzovatsya tekstovye bloki bezymyannymi shablonami i peremennymi oboznachemymi simvolom s bezymyannymi klassami vnutri java fajla mozhno bez opredeleniya imeni klassa zapisat opredelenie metoda main klass HttpClient paketa java net http teper realizuet interfejs AutoCloseable v klassy Pattern paketa java util regex i String dobavleny metody splitWithDelimiters vozvrashayushie strokovye massivy sostoyashie kak iz obychnyh simvolov tak i simvolov razdelitelej v klassah StringBuilder i StringBuffer dobavleny metody repeat vozvrashayushie povtoryonnye ukazannoe chislo raz posledovatelnosti simvolov v klasse Character dobavleny novye metody raboty s simvolami emodzi v klasse ThreadGroup udalyon metod allowThreadSuspension udalyon klass Compiler v sborshike musora ZGC dobavlena razdelnaya obrabotka obektov molodogo i starogo pokolenij Klassifikaciya platform JavaVnutri Java sushestvuet neskolko osnovnyh semejstv tehnologij Java SE Java Standard Edition osnovnoe izdanie Java Soderzhit kompilyatory API Java Runtime Environment podhodit dlya sozdaniya polzovatelskih prilozhenij v pervuyu ochered dlya nastolnyh sistem Jakarta EE ranee Java EE Enterprise Edition predstavlyaet soboj nabor specifikacij dlya sozdaniya PO urovnya predpriyatiya V 2017 m proekt Java EE byl peredan Eclipse Foundation i togda zhe ego naimenovanie izmenilos na tekushee Moduli Java EE udaleny iz Java SE s 11 j versii Java ME Java Micro Edition sozdana dlya ispolzovaniya v ustrojstvah ogranichennyh po vychislitelnoj moshnosti naprimer v mobilnyh telefonah KPK vstroennyh sistemah Java Card tehnologiya predostavlyaet bezopasnuyu sredu dlya prilozhenij rabotayushih na smart kartah i drugih ustrojstvah s ochen ogranichennym obyomom pamyati i vozmozhnostyami obrabotki Java i MicrosoftKompaniej Microsoft byla razrabotana sobstvennaya realizaciya JVM pod nazvaniem angl MSJVM vklyuchavshayasya v sostav razlichnyh operacionnyh sistem nachinaya s Windows 98 takzhe vhodila v Internet Explorer ot versii 3 i vyshe chto pozvolyalo ispolzovat MSJVM v OS Windows 95 i Windows NT 4 posle ustanovki IE3 na dannye OS MSJVM imela sushestvennye otlichiya ot Sun Java vo mnogom lomayushie osnovopolagayushuyu koncepciyu perenosimosti programm mezhdu raznymi platformami otsutstvie podderzhki programmnogo interfejsa vyzova udalyonnyh metodov RMI otsutstvie podderzhki tehnologii JNI nalichie nestandartnyh rasshirenij takih kak sredstva integracii Java i DCOM rabotayushih tolko na platforme Windows Tesnaya integraciya Java s DCOM i Win32 postavila pod vopros krossplatformennuyu paradigmu yazyka Vposledstvii eto yavilos povodom dlya sudebnyh iskov so storony Sun Microsystems k Microsoft Sud prinyal storonu kompanii Sun Microsystems V konechnom schyote mezhdu dvumya kompaniyami byla dostignuta dogovoryonnost o vozmozhnosti prodleniya sroka oficialnoj podderzhki polzovatelej nestandartnoj Microsoft JVM do konca 2007 goda V 2005 godu kompaniej Microsoft dlya platformy NET byl predstavlen Java podobnyj yazyk J ne sootvetstvuyushij oficialnoj specifikacii yazyka Java i isklyuchyonnyj vposledstvii iz standartnogo instrumentariya razrabotchika Microsoft Visual Studio nachinaya s Visual Studio 2008 Java i AndroidOsnovnaya statya Android Yazyk Java aktivno ispolzuetsya dlya sozdaniya mobilnyh prilozhenij pod operacionnuyu sistemu Android Pri etom programmy kompiliruyutsya v nestandartnyj bajt kod dlya ispolzovaniya ih virtualnoj mashinoj Dalvik nachinaya s Android 5 0 Lollipop virtualnaya mashina zamenena na ART Dlya takoj kompilyacii ispolzuetsya dopolnitelnyj instrument a imenno Android SDK Software Development Kit razrabotannyj kompaniej Google Razrabotku prilozhenij mozhno vesti v srede Android Studio NetBeans v srede Eclipse Primeneniya platformy JavaSleduyushie uspeshnye proekty realizovany s privlecheniem Java J2EE tehnologij RuneScape Amazon eBay LinkedIn Yahoo Sleduyushie kompanii v osnovnom fokusiruyutsya na Java J2EE tehnologiyah SAP IBM Oracle V chastnosti SUBD Oracle Database vklyuchaet JVM kak svoyu sostavnuyu chast obespechivayushuyu vozmozhnost neposredstvennogo programmirovaniya SUBD na yazyke Java vklyuchaya naprimer hranimye procedury Proizvoditelnost Programmy napisannye na Java imeyut reputaciyu bolee medlennyh i zanimayushih bolshe operativnoj pamyati chem napisannye na yazyke C Tem ne menee skorost vypolneniya programm napisannyh na yazyke Java byla sushestvenno uluchshena s vypuskom v 1997 1998 godah tak nazyvaemogo JIT kompilyatora v versii 1 1 v dopolnenie k drugim osobennostyam yazyka dlya podderzhki luchshego analiza koda takie kak vnutrennie klassy klass StringBuffer uproshyonnye logicheskie vychisleniya i tak dalee Krome togo byla proizvedena optimizaciya virtualnoj mashiny Java s 2000 goda dlya etogo ispolzuetsya virtualnaya mashina HotSpot Po sostoyaniyu na fevral 2012 goda kod Java 7 priblizitelno v 1 8 raza medlennee koda napisannogo na yazyke Si Nekotorye platformy predlagayut apparatnuyu podderzhku vypolneniya dlya Java K primeru mikrokontrollery vypolnyayushie kod Java na apparatnom obespechenii vmesto programmnoj JVM a takzhe osnovannye na ARM processory kotorye podderzhivayut vypolnenie bajt koda Java cherez opciyu Jazelle Osnovnye vozmozhnostiAvtomaticheskoe upravlenie pamyatyu Rasshirennye vozmozhnosti obrabotki isklyuchitelnyh situacij Bogatyj nabor sredstv filtracii vvoda vyvoda Nabor standartnyh kollekcij massiv spisok stek i t p Nalichie prostyh sredstv sozdaniya setevyh prilozhenij v tom chisle s ispolzovaniem protokola RMI Nalichie klassov pozvolyayushih vypolnyat HTTP zaprosy i obrabatyvat otvety Vstroennye v yazyk sredstva sozdaniya mnogopotochnyh prilozhenij kotorye potom byli portirovany na mnogie yazyki naprimer Python Unificirovannyj dostup k bazam dannyh na urovne otdelnyh SQL zaprosov na osnove JDBC SQLJ na urovne koncepcii obektov obladayushih sposobnostyu k hraneniyu v baze dannyh na osnove angl i Java Persistence API Podderzhka obobshenij s versii 1 5 Podderzhka lyambd zamykanij vozmozhnostej funkcionalnogo programmirovaniya s Java 8 Osnovnye ideiPrimitivnye tipy V yazyke Java tolko 8 primitivnyh skalyarnyh prostyh tipov a href wiki D0 9B D0 BE D0 B3 D0 B8 D1 87 D0 B5 D1 81 D0 BA D0 B8 D0 B9 D1 82 D0 B8 D0 BF title Logicheskij tip boolean a a href wiki D0 91 D0 B0 D0 B9 D1 82 title Bajt byte a a href wiki D0 A1 D0 B8 D0 BC D0 B2 D0 BE D0 BB D1 8C D0 BD D1 8B D0 B9 D1 82 D0 B8 D0 BF title Simvolnyj tip char a a href wiki D0 A6 D0 B5 D0 BB D1 8B D0 B9 D1 82 D0 B8 D0 BF class mw redirect title Celyj tip int a a href wiki D0 A7 D0 B8 D1 81 D0 BB D0 BE D0 BE D0 B4 D0 B8 D0 BD D0 B0 D1 80 D0 BD D0 BE D0 B9 D1 82 D0 BE D1 87 D0 BD D0 BE D1 81 D1 82 D0 B8 title Chislo odinarnoj tochnosti float a a href wiki D0 A7 D0 B8 D1 81 D0 BB D0 BE D0 B4 D0 B2 D0 BE D0 B9 D0 BD D0 BE D0 B9 D1 82 D0 BE D1 87 D0 BD D0 BE D1 81 D1 82 D0 B8 title Chislo dvojnoj tochnosti double a Sushestvuet takzhe vspomogatelnyj devyatyj primitivnyj tip a href wiki Void title Void void a odnako peremennye i polya takogo tipa ne mogut byt obyavleny v kode a sam tip ispolzuetsya tolko dlya opisaniya sootvetstvuyushego emu klassa dlya ispolzovaniya pri refleksii naprimer s pomoshyu klassa Void mozhno uznat yavlyaetsya li opredelyonnyj metod tipa void Hello class getMethod main String class getReturnType Void TYPE Dliny i diapazony znachenij primitivnyh tipov opredelyayutsya standartom a ne realizaciej i privedeny v tablice Tip char sdelali dvuhbajtovym dlya udobstva lokalizacii odin iz ideologicheskih principov Java kogda skladyvalsya standart uzhe sushestvoval Unicode 16 no ne Unicode 32 Poskolku v rezultate ne ostalos odnobajtovogo tipa dobavili novyj tip byte prichyom v Java v otlichie ot drugih yazykov on ne yavlyaetsya bezznakovym Tipy float i double mogut imet specialnye znacheniya displaystyle infty displaystyle infty i ne chislo NaN Dlya tipa double oni oboznachayutsya Double POSITIVE INFINITY Double NEGATIVE INFINITY Double NaN dlya tipa float tak zhe no s pristavkoj Float vmesto Double Minimalnye i maksimalnye znacheniya prinimaemye tipami float i double tozhe standartizovany Tip Dlina v bajtah Diapazon ili nabor znachenijboolean 1 v massivah 4 v peremennyh true falsebyte 1 128 127char 2 0 216 1 ili 0 65535short 2 215 215 1 ili 32768 32767int 4 231 231 1 ili 2147483648 2147483647long 8 263 263 1 ili primerno 9 2 1018 9 2 1018float 4 2 2 23 2127 2 2 23 2127 ili primerno 3 4 1038 3 4 1038 a takzhe displaystyle infty displaystyle infty NaNdouble 8 2 2 52 21023 2 2 52 21023 ili primerno 1 8 10308 1 8 10308 a takzhe displaystyle infty displaystyle infty NaN Takaya zhyostkaya standartizaciya byla neobhodima chtoby sdelat yazyk platformenno nezavisimym chto yavlyaetsya odnim iz ideologicheskih trebovanij k Java Tem ne menee odna nebolshaya problema s platformennoj nezavisimostyu vsyo zhe ostalas Nekotorye processory ispolzuyut dlya promezhutochnogo hraneniya rezultatov 10 bajtovye registry ili drugimi sposobami uluchshayut tochnost vychislenij Dlya togo chtoby sdelat Java maksimalno sovmestimoj mezhdu raznymi sistemami v rannih versiyah lyubye sposoby povysheniya tochnosti vychislenij byli zapresheny Odnako eto privodilo k snizheniyu bystrodejstviya Vyyasnilos chto uhudshenie tochnosti radi platformennoj nezavisimosti malo komu nuzhno tem bolee esli za eto prihoditsya platit zamedleniem raboty programm Posle mnogochislennyh protestov etot zapret otmenili no dobavili klyuchevoe slovo strictfp zapreshayushee povyshenie tochnosti Nachinaya s Java 17 zapret na povyshenie tochnosti snova nachal dejstvovat a klyuchevoe slovo strictfp bylo obyavleno ustarevshim Preobrazovaniya pri matematicheskih operaciyah V yazyke Java dejstvuyut sleduyushie pravila Esli odin operand imeet tip double drugoj tozhe preobrazuetsya k tipu double Inache esli odin operand imeet tip float drugoj tozhe preobrazuetsya k tipu float Inache esli odin operand imeet tip long drugoj tozhe preobrazuetsya k tipu long Inache oba operanda preobrazuyutsya k tipu int Dannyj sposob neyavnogo preobrazovaniya vstroennyh tipov polnostyu sovpadaet s preobrazovaniem tipov v Si C Obektnye peremennye obekty ssylki i ukazateli V yazyke Java imeyutsya tolko dinamicheski sozdavaemye obekty Peremennye obektnogo tipa i obekty v Java sovershenno raznye sushnosti Peremennye obektnogo tipa yavlyayutsya ssylkami to est analogami ukazatelej na dinamicheski sozdavaemye obekty Eto podchyorkivaetsya sintaksisom opisaniya peremennyh Tak kod na C mozhet vyglyadet sleduyushim obrazom double a 10 20 Foo b 30 No to zhe samoe na Java budet vyglyadet sovsem po drugomu double a new double 10 20 Foo b new Foo 30 Pri prisvaivaniyah peredache v podprogrammy i sravneniyah obektnye peremennye vedut sebya kak ukazateli to est prisvaivayutsya kopiruyutsya i sravnivayutsya adresa obektov A pri dostupe s pomoshyu obektnoj peremennoj k polyam dannyh ili metodam obekta ne trebuetsya nikakih specialnyh operacij razymenovyvaniya etot dostup osushestvlyaetsya tak kak esli by obektnaya peremennaya byla samim obektom Obektnymi yavlyayutsya peremennye lyubogo tipa krome primitivnogo Yavnyh ukazatelej v Java net V otlichie ot ukazatelej C C i drugih yazykov programmirovaniya ssylki v Java v vysokoj stepeni bezopasny blagodarya zhyostkim ogranicheniyam na ih ispolzovanie Nelzya preobrazovyvat obekt tipa int ili lyubogo drugogo primitivnogo tipa v ukazatel ili ssylku i naoborot Nad ssylkami zapresheno vypolnyat operacii ili lyubye drugie arifmeticheskie i logicheskie operacii amp amp Preobrazovanie tipov mezhdu ssylkami zhyostko reglamentirovano Za isklyucheniem ssylok na massivy razresheno preobrazovyvat ssylki tolko mezhdu nasleduemym tipom i ego naslednikom prichyom preobrazovanie nasleduemogo tipa v nasleduyushij dolzhno byt yavno zadano a vo vremya vypolneniya proizvoditsya proverka ego osmyslennosti Preobrazovaniya ssylok na massivy razresheny lish togda kogda razresheny preobrazovaniya ih bazovyh tipov a takzhe net konfliktov razmernosti V Java net operacij vzyatiya adresa amp ili vzyatiya obekta po adresu Ampersand amp oznachaet vsego lish pobitovoe i dvojnoj ampersand logicheskoe i Odnako dlya bulevyh tipov odinochnyj ampersand oznachaet logicheskoe i otlichayusheesya ot dvojnogo tem chto cep proverok ne prekrashaetsya pri poluchenii v vyrazhenii znacheniya false Naprimer a b amp amp foo bar ne povlechyot vyzovov foo i bar v sluchae esli a b togda kak ispolzovanie amp povlechyot v lyubom sluchae Blagodarya takim specialno vvedyonnym ogranicheniyam v Java nevozmozhno pryamoe manipulirovanie pamyatyu na urovne fizicheskih adresov hotya opredeleno znachenie ssylki ne ukazyvayushej ni na chto null Esli nuzhen ukazatel na primitivnyj tip ispolzuyutsya klassy obyortki primitivnyh tipov Boolean Byte Character Short Integer Long Float Double Dublirovanie ssylok i klonirovanie Pri prisvaivanii ne proishodit kopirovaniya obekta tak kak obektnye peremennye ssylochnye Tak esli napisat Foo foo bar bar foo to proizojdyot kopirovanie adresa iz peremennoj foo v peremennuyu bar To est foo i bar budut ukazyvat na odnu i tu zhe oblast pamyati to est na odin i tot zhe obekt popytka izmenit polya obekta na kotoryj ssylaetsya peremennaya foo budet menyat obekt s kotorym svyazana peremennaya bar i naoborot Esli zhe neobhodimo poluchit imenno eshyo odnu kopiyu ishodnogo obekta polzuyutsya ili metodom funkciej chlenom v terminologii C clone sozdayushim kopiyu obekta ili rezhe kopiruyushim konstruktorom konstruktory v Java ne mogut byt virtualnymi poetomu ekzemplyar klassa potomka budet nepravilno skopirovan konstruktorom klassa predka metod klonirovaniya vyzyvaet nuzhnyj konstruktor i tem samym pozvolyaet obojti eto ogranichenie Metod clone trebuet chtoby klass realizovyval interfejs Cloneable Esli klass realizuet interfejs Cloneable po umolchaniyu clone kopiruet vse polya melkaya kopiya Esli trebuetsya ne kopirovat a klonirovat polya a takzhe ih polya i tak dalee nado pereopredelyat metod clone Opredelenie i ispolzovanie metoda clone chasto yavlyaetsya netrivialnoj zadachej Inicializaciya peremennyh Vse peremennye ili trebuyut yavnogo opredeleniya ili avtomaticheski zapolnyayutsya nulyami 0 null false Takim obrazom ischezayut gejzenbagi svyazannye so sluchajnym ispolzovaniem neinicializirovannoj pamyati harakternye dlya nizkourovnevyh yazykov vrode Si Sborka musora V yazyke Java nevozmozhno yavnoe udalenie obekta iz pamyati vmesto etogo realizovana sborka musora Tradicionnym priyomom dayushim sborshiku musora namyok na neobhodimost osvobozhdeniya pamyati yavlyaetsya prisvaivanie peremennoj pustogo znacheniya null chto mozhet okazatsya effektivnym pri neobhodimosti osvobodit bolee ne trebuyushijsya obekt ssylka na kotoryj hranitsya v dolgozhivushem obekte Eto odnako ne znachit chto obekt zamenyonnyj znacheniem null budet nepremenno i nemedlenno udalyon no est garantiya chto etot obekt budet udalyon imenno v budushem Dannyj priyom vsego lish ustranyaet ssylku na obekt to est otvyazyvaet ukazatel ot obekta v pamyati Pri etom sleduet uchityvat chto obekt ne budet udalyon sborshikom musora poka na nego ukazyvaet hotya by odna ssylka iz ispolzuemyh peremennyh ili obektov Sushestvuyut takzhe metody dlya iniciacii prinuditelnoj sborki musora no ne garantiruetsya chto oni budut vyzvany ispolnyayushej sredoj i ih ne rekomenduetsya ispolzovat dlya obychnoj raboty Klassy i funkcii Java ne yavlyaetsya procedurnym yazykom lyubaya funkciya mozhet sushestvovat tolko vnutri klassa Eto podchyorkivaet terminologiya yazyka Java gde net ponyatij funkciya ili funkciya chlen angl member function a tolko metod V metody prevratilis i standartnye funkcii Naprimer v Java net funkcii sin a est metod Math sin klassa Math soderzhashego krome sin metody cos exp sqrt abs i mnogie drugie Kak i v yazyke C lyubaya ispolnyaemaya programma na Java dolzhna imet tochku vhoda kotoroj yavlyaetsya funkciya s imenem main ona dolzhna byt edinstvennoj v programme i v otlichie ot Si vsegda staticheskoj Pri etom nachinaya s Java 21 v kotoroj byli vvedeny bezymyannye klassy dopuskaetsya opredelyat metod main tochku vhoda ne opredelyaya imeni glavnogo klassa Konstruktory v Java ne schitayutsya metodami Destruktorov v Java ne sushestvuet a metod finalize ni v koem sluchae nelzya schitat analogom destruktora Konstruktory Konstruktor eto specialnyj metod kotoryj obyazatelno vyzyvaetsya pri sozdanii novogo obekta to est obekt ekzemplyar klassa ne mozhet byt sozdan bez vyzova konstruktora klassa Ne vsegda udobno inicializirovat vse peremennye klassa pri sozdanii ego ekzemplyara poetomu peremennye ekzemplyara chasto obyavlyayut vnutri tela konstruktora a inicializiruyut kak argumenty konstruktora pri sozdanii ekzemplyara klassa Inogda proshe chtoby kakie to znacheniya byli by sozdany po umolchaniyu pri sozdanii obekta V takom sluchae peremennye obyavlyayutsya i inicializiruyutsya vnutri tela konstruktora Konstruktor inicializiruet obekt neposredstvenno vo vremya sozdaniya Imya konstruktora sovpadaet s imenem klassa vklyuchaya registr a po sintaksisu konstruktor pohozh na metod bez vozvrashaemogo znacheniya private int Cat tak vyglyadit metod po imeni Cat Cat tak vyglyadit konstruktor klassa Cat V otlichie ot metoda konstruktor nikogda nichego ne vozvrashaet Konstruktor opredelyaet dejstviya vypolnyaemye pri sozdanii obekta klassa i yavlyaetsya vazhnoj chastyu klassa Kak pravilo programmisty starayutsya yavno ukazat konstruktor Esli yavnogo konstruktora net to Java avtomaticheski sozdast ego pustym dlya ispolzovaniya po umolchaniyu V kachestve primera mozhno rassmotret nekij klass Box predstavlyayushij soboj opisanie korobki Konstruktor klassa prosto ustanovit nachalnye razmery dlya korobki class Box int width shirina korobki int height vysota korobki int depth glubina korobki Konstruktor Box int a int b width a height b depth 10 vychislyaem obyom korobki int getVolume return width height depth Staticheskie metody i polya V Java kak i v C ispolzuyutsya staticheskie polya i staticheskie metody angl static method v teorii programmirovaniya ih takzhe nazyvayut metodami klassa kotorye zadayutsya pri pomoshi klyuchevogo slova static Staticheskie polya peremennye klassa imeyut tot zhe smysl chto i v C kazhdoe takoe pole yavlyaetsya sobstvennostyu klassa poetomu dlya dostupa k staticheskim polyam ne trebuetsya sozdavat ekzemplyary sootvetstvuyushego klassa Naprimer matematicheskie funkcii realizovannye v klasse Math predstavlyayut soboj kak raz staticheskie metody dannogo klassa Poetomu ih mozhno vyzyvat napryamuyu iz klassa ne sozdavaya ego ekzemplyara naprimer double x Math sin 1 Sozdanie ekzemplyara staticheskogo klassa zapreshayut s pomoshyu privatnogo konstruktora Naprimer sozdanie ekzemplyara klassa Math privedyot k oshibke na etape kompilyacii Math m new Math Error Math has private access in java lang Math double x m sin 1 Metoda sin u obekta ne sushestvovalo by t k on statichnyj Poskolku staticheskie metody sushestvuyut nezavisimo ot obektov ekzemplyarov klassa oni ne imeyut dostupa k obychnym ne staticheskim polyam i metodam dannogo klassa V chastnosti pri realizacii staticheskogo metoda nedopustimo ispolzovat identifikator this Vozmozhnost staticheskogo importa pozvolyaet vyzyvat staticheskie funkcii i konstanty bez ukazaniya klassa Primer bez staticheskogo importa double x Math sin Math tan Math sqrt y Math floor 24 5 Math cos 42 Math PI Tot zhe primer no so staticheskim importom import static java lang Math double x sin tan sqrt y floor 24 5 cos 42 PI Zavershyonnost final Klyuchevoe slovo final finalnyj imeet raznye znacheniya pri opisanii polya metoda ili klassa Finalnoe pole klassa inicializiruetsya pri opisanii ili v konstruktore klassa a staticheskoe pole v staticheskom bloke inicializacii Vposledstvii ego znachenie ne mozhet byt izmeneno Esli staticheskoe pole klassa ili peremennaya proinicializirovany konstantnym vyrazheniem oni rassmatrivayutsya kompilyatorom kak imenovannaya konstanta v takom sluchae ih znachenie mozhet byt ispolzovano v operatorah switch dlya konstant tipov int i String v tom chisle elementov perechislenij a takzhe dlya uslovnoj kompilyacii dlya konstant tipa boolean pri ispolzovanii s operatorom if Znacheniya lokalnyh peremennyh a takzhe parametrov metoda pomechennyh klyuchevym slovom final ne mogut byt izmeneny posle prisvoeniya Pri etom ih znacheniya mogut ispolzovatsya vnutri anonimnyh klassov Metod klassa otmechennyj slovom final ne mozhet byt pereopredelyon pri nasledovanii Finalnyj klass ne mozhet imet naslednikov Abstraktnost V Java metody ne obyavlennye yavno kak static final ili private yavlyayutsya virtualnymi v terminologii C pri vyzove metoda po raznomu opredelyonnogo v bazovom i nasleduyushem klassah vsegda proizvoditsya proverka vremeni vypolneniya Abstraktnym metodom modifikator abstract v Java nazyvaetsya metod dlya kotorogo zadany parametry i tip vozvrashaemogo znacheniya no ne zadano telo Abstraktnyj metod opredelyaetsya v klassah naslednikah Analog abstraktnogo metoda v C chisto virtualnaya funkciya pure virtual function Dlya togo chtoby v klasse mozhno bylo opisyvat abstraktnye metody sam klass tozhe dolzhen byt opisan kak abstraktnyj Obekty abstraktnogo klassa sozdavat nelzya Interfejsy Vysshej stepenyu abstraktnosti v Java yavlyaetsya interfejs modifikator interface Interfejs soderzhit preimushestvenno abstraktnye metody imeyushie vseobshij uroven dostupa opisateli abstract i public dlya nih dazhe ne trebuyutsya Odnako s versij Java 8 i 9 byli vvedeny vozmozhnosti ispolzovaniya v interfejsah Java 8 staticheskih static metodov i metodov po umolchaniyu default Java 9 metodov imeyushih uroven dostupa private Eti metody soderzhat telo a znachit abstraktnymi ne yavlyayutsya no v konkretnoj realizacii interfejsa default metody mogut byt pereopredeleny Interfejs v Java ne schitaetsya klassom hotya po suti yavlyaetsya polnostyu abstraktnym klassom Klass mozhet nasledovat rasshiryat extends drugoj klass ili realizovyvat implements interfejs Krome togo interfejs mozhet nasledovat rasshiryat extends drugoj interfejs V Java klass ne mozhet nasledovat bolee odnogo klassa zato mozhet realizovyvat neskolko interfejsov Mnozhestvennoe nasledovanie interfejsov ne zapresheno to est odin interfejs mozhet nasledovatsya ot neskolkih Interfejsy mozhno ispolzovat v kachestve tipov parametrov metodov Nelzya sozdavat ekzemplyary interfejsov Markernye interfejsy V Java est interfejsy kotorye ne soderzhat metodov dlya realizacii a specialnym obrazom obrabatyvayutsya JVM Cloneable Serializable RandomAccess Remote Shablony v Java generics Nachinaya s versii Java 5 0 v yazyke poyavilsya mehanizm obobshyonnogo programmirovaniya shablony vneshne blizkie k shablonam C S pomoshyu specialnogo sintaksisa v opisanii klassov i metodov mozhno ukazat parametry tipy kotorye vnutri opisaniya mogut ispolzovatsya v kachestve tipov polej parametrov i vozvrashaemyh znachenij metodov Obyavlenie obobshyonnogo klassa class GenericClass lt E gt E getFirst void add E obj Ispolzovanie obobshyonnogo klassa v kode GenericClass lt String gt obj new GenericClass lt gt obj add qwerty String p obj getFirst Dopuskaetsya obobshyonnoe obyavlenie klassov interfejsov i metodov Krome togo sintaksis podderzhivaet ogranichennye obyavleniya tipov parametrov ukazanie v obyavlenii konstrukcii vida lt T extends A amp B amp C gt trebuet chtoby tip parametr T realizovyval interfejsy A B C i tak dalee V otlichie ot shablonov C shablony Java ne podderzhivayutsya sredoj ispolneniya kompilyator prosto sozdayot bajt kod v kotorom nikakih shablonov uzhe net Realizaciya shablonov v Java principialno otlichaetsya ot realizacii analogichnyh mehanizmov v C kompilyator ne porozhdaet dlya kazhdogo sluchaya ispolzovaniya shablona otdelnyj variant klassa ili metoda shablona a prosto sozdayot odnu realizaciyu bajt koda soderzhashuyu neobhodimye proverki i preobrazovaniya tipov Eto privodit k ryadu ogranichenij ispolzovaniya shablonov v programmah na Java Proverka prinadlezhnosti k klassu V Java mozhno yavno proverit k kakomu klassu prinadlezhit obekt Vyrazhenie foo instanceof Foo ravno true esli obekt foo prinadlezhit klassu Foo ili ego nasledniku ili realizuet interfejs Foo ili v obshem vide nasleduet klass kotoryj realizuet interfejs kotoryj nasleduet Foo Dalee funkciya getClass opredelyonnaya dlya vseh obektov vydayot obekt tipa Class lt gt Dlya kazhdogo klassa sozdayotsya ne bolee odnogo opisyvayushego ego obekta tipa Class poetomu eti obekty mozhno sravnivat Tak naprimer foo getClass bar getClass budet istinno esli obekty foo i bar prinadlezhat k odnomu klassu Krome togo obekt tipa Class lt gt lyubogo tipa mozhno poluchit tak Integer class Object class Pryamoe sravnenie klassov ne vsegda yavlyaetsya optimalnym sredstvom proverki na prinadlezhnost k klassu Zachastuyu vmesto nego ispolzuyut funkciyu isAssignableFrom Eta funkciya opredelena u obekta tipa Class i prinimaet obekt tipa Class lt gt v kachestve parametra Takim obrazom vyzov Foo class isAssignableFrom Bar class vernyot true v sluchae esli Foo yavlyaetsya predkom klassa Bar Tak kak vse obekty yavlyayutsya potomkami tipa Object vyzov Object class isAssignableFrom vsegda vernyot true V pare s upomyanutymi funkciyami obekta tipa Class ispolzuyutsya takzhe funkcii isInstance ekvivalentno instanceof a takzhe cast preobrazuet parametr v obekt vybrannogo klassa Obrabotka oshibok Obrabotka oshibok v Java pohozha na obrabotku oshibok v C za isklyucheniem neobhodimosti v bloke finally Dannoe otlichie obuslovleno tem chto Java ne mozhet priderzhivatsya koncepcii RAII iz za nalichiya sborshika musora a avtomaticheskoe osvobozhdenie resursov v destruktore mozhet idti v nepredskazuemom poryadke cherez proizvolnye promezhutki vremeni Osushestvlyaetsya obrabotka oshibok s pomoshyu operatorov try catch i finally Vybrasyvaemaya oshibka opisyvaetsya obektom opredelyonnogo klassa nasleduyushegosya ot Throwable i sootvetstvuyushego tipu oshibki Vnutr bloka try pomeshaetsya kod kotoryj mozhet vybrosit isklyuchenie a blok catch otlavlivaet zadannye programmistom tipy oshibok Pri etom mozhno ukazyvat bolee odnogo bloka catch dlya obrabotki razlichnyh klassov oshibok ili multi catch dlya obrabotki neskolkih oshibok Blok finally yavlyaetsya neobyazatelnym no pri nalichii vypolnyaetsya nezavisimo ot vozniknoveniya oshibki i prednaznachen dlya osvobozhdeniya vydelennyh v hode raboty bloka try resursov Nachinaya s Java 7 podderzhivaetsya interfejs AutoCloseable kotoryj pozvolyaet realizovyvat klassy avtomaticheski osvobozhdayushie resursy Obekty podobnyh klassov trebuetsya sozdavat v kruglyh skobkah pered blokom try Prostym primerom avtomaticheskogo osvobozhdeniya resursom mozhet sluzhit chtenie soderzhimogo fajla import java io public class Main public static void main String args throws IOException if args length lt 2 System err println Ne ukazano imya fajla return String filename args 1 Otkrytyj fajl budet avtomaticheski zakryt po oshibke try BufferedReader reader new BufferedReader new FileReader filename String line for int n 1 line reader readLine null n System out println n line catch FileNotFoundException e System err println Ukazannyj fajl ne najden finally reader close avtomaticheskoe zakrytie resursa Java priderzhivaetsya koncepcii obyazatelnogo ukazaniya klassov oshibok kotorye mozhet vybrosit metod Delaetsya eto s pomoshyu klyuchevogo slova throws posle opisaniya metoda Esli v metode ne ukazat klass isklyucheniya ili ego predka kotoroe mozhet byt vybrosheno iz metoda to eto vyzovet oshibku kompilyacii Koncepciya dolzhna byla pozvolit delat kod samodokumentiruemym oboznachaya kakie isklyucheniya mozhet vybrosit tot ili inoj metod no na praktike redko sebya opravdyvaet poskolku v silu raznyh obstoyatelstv programmist mozhet ukazat v kachestve vybrasyvaemogo isklyucheniya klass Exception libo zaklyuchit problemnye chasti metoda v blok try catch dlya ignorirovaniya otdelnyh oshibok libo v blok try finally skryvaya vse vozmozhnye oshibki Nedostatkom koncepcii takzhe yavlyaetsya i to chto programmist sam dolzhen opredelyat i propisyvat isklyucheniya kotorye mozhet vybrasyvat metod Prostranstvo imyon Stil etogo razdela neenciklopedichen ili narushaet normy literaturnogo russkogo yazyka Statyu sleduet ispravit soglasno stilisticheskim pravilam Vikipedii Osnovnaya statya Prostranstvo imyon programmirovanie Ideya prostranstv imyon voploshena v Java paketah Nazvanie Java paketa latinica nizhnij i verhnij registr s ciframi ne pervye v stroke i znakom podchyorkivaniya ne pervye i ne poslednie ne yavlyayushayasya instrukciyami yazyka prim if null razdelyonnaya tochkami Pravilnye primery nazvanij project types net media a0 a b canrepeat canrepeat UPPERCASE RaNdOmCaSe hotya nezhelatelno iz za nechitabelnosti Nepravilnye primery nazvanij doubledots something dve tochki podryad nestandartnyj yazyk ne latinica 0first characret is number chislo v nachale contains white space probel true asd soderzhit true sm vyshe Pakety soderzhat klassy interfejsy perechisleniya annotacii i t d imena kotoryh latinica nizhnij i verhnij registr s ciframi ne pervye v stroke Publichnyj klass interfejs i t d v odnom fajle mozhet byt tolko odin Imya publichnogo klassa interfejsa i t d v fajle dolzhno sovpadat s nazvaniem fajla Kazhdyj klass imeet svoyo prostranstvo imyon dlya funkcij peremennyh i podklassov podinterfejsov i t d prichyom poluchit podklass klassa mozhno s pomoshyu OuterClass InnerClass a mozhno s pomoshyu OuterClass InnerClass poetomu ispolzovanie simvola dollara v nazvanii klassa ne rekomenduetsya Primery programmKod programmy Hello world class HelloWorld public static void main String args System out println Hello world Obobsheniya Primer ispolzovaniya obobshenijimport java util List import java util ArrayList public class Sample public static void main String args Sozdanie obekta po shablonu List lt String gt strings new ArrayList lt gt strings add Hello strings add world strings add for var string strings System out print string Refleksiya Primer ispolzovaniya refleksiiimport java lang reflect Field import java lang reflect Method class TestClass private int value public int getValue return value public void setValue int valueIn this value valueIn public class Main public static void main String args var testClass new TestClass for var field testClass getClass getDeclaredFields System out printf name s type s n field getName field getType getCanonicalName for var method testClass getClass getDeclaredMethods System out printf name s return type s n method getName method getReturnType getCanonicalName Annotacii Primer ispolzovaniya annotacijimport java lang annotation ElementType import java lang annotation Retention import java lang annotation RetentionPolicy import java lang annotation Target Retention RetentionPolicy RUNTIME Target ElementType TYPE public interface MyAnnotation public boolean value default false MyAnnotation value true public class TestClass public class Main public static void main String args var testClass new TestClass var myAnnotation testClass getClass getAnnotation MyAnnotation class if myAnnotation null System out printf value s n myAnnotation value Sredstva razrabotki POJDK pomimo nabora bibliotek dlya platform Java SE i Java EE soderzhit kompilyator komandnoj stroki javac i nabor utilit tak zhe rabotayushih v rezhime komandnoj stroki NetBeans IDE svobodnaya integrirovannaya sreda razrabotki dlya vseh platform Java Java ME Java SE i Java EE Propagandiruetsya Oracle vladelcem tehnologii Java kak bazovoe sredstvo dlya razrabotki PO na yazyke Java i drugih yazykah C C PHP Fortran i dr Eclipse IDE svobodnaya integrirovannaya sreda razrabotki dlya Java SE Java EE i Java ME Propagandiruetsya IBM odnim iz vazhnejshih razrabotchikov korporativnogo PO kak bazovoe sredstvo dlya razrabotki PO na yazyke Java i drugih yazykah C C Ruby Fortran i dr IntelliJ IDEA sreda razrabotki dlya platform Java SE Java EE i Java ME Razrabotchik kompaniya JetBrains Rasprostranyaetsya v dvuh versiyah svobodnoj besplatnoj Community Edition i kommercheskoj proprietarnoj Ultimate Edition JDeveloper sreda razrabotki dlya platform Java SE Java EE i Java ME Razrabotchik kompaniya Oracle BlueJ sreda razrabotki programmnogo obespecheniya na yazyke Java sozdannaya v osnovnom dlya ispolzovaniya v obuchenii no takzhe podhodyashaya dlya razrabotki nebolshih programm Geany svobodnaya sreda razrabotki programmnogo obespecheniya napisannaya s ispolzovaniem biblioteki GTK2 Sm takzheV rodstvennyh proektahZnacheniya v VikislovareKnigi v VikiuchebnikeMediafajly na Vikisklade Sravnenie C i Java Spisok Java API Java User GroupsPrimechaniyaKommentarii Proiznositsya na anglijskom kak ˈdʒɑːve v russkom yazyke vstrechayutsya transliteracii Dzhava i Yava pravoobladateli torgovoj marki predpochitayut pervuyu transliteraciyu Dokumentaciya a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang String html String a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang AutoCloseable html AutoCloseable a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java net URLClassLoader html URLClassLoader a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java net HttpURLConnection html HttpURLConnection a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang StringBuffer html StringBuffer a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Void html Void a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Object html clone clone a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java lang Cloneable html Cloneable a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Math html Math a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Object html getClass getClass a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Class html isInstance java lang Object isInstance a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang Throwable html Throwable a a rel nofollow class external text href https docs oracle com en java javase 11 docs api java base java lang AutoCloseable html AutoCloseable a Istochniki https www oracle com java JDK 22 Release Notes neopr https www lemondeinformatique fr actualites lire java open source c est fait et c est en gpl 21350 html Top Programming Languages 2020 IEEE Spectrum angl 18 yanvarya 2021 Data obrasheniya 14 fevralya 2021 TIOBE Index TIOBE The Software Quality Company neopr www tiobe com Data obrasheniya 19 noyabrya 2018 25 fevralya 2018 goda Buyya Object oriented Programming with Java Essentials and Applications Tata McGraw Hill Education 2009 678 s ISBN 9780070669086 12 noyabrya 2018 goda Star7 s chego nachinalas Java neopr Data obrasheniya 2 oktyabrya 2022 2 oktyabrya 2022 goda neopr Data obrasheniya 4 marta 2010 Arhivirovano iz originala 14 iyunya 2011 goda Metz Cade Google pits C against Java Scala and Go angl The Register 3 iyunya 2011 Data obrasheniya 5 iyunya 2011 Arhivirovano 21 avgusta 2011 goda Loop Recognition in C Java Go Scala 0 3 MB ot 16 noyabrya 2011 na Wayback Machine V Google proveli sravnenie proizvoditelnosti C Java Go i Scala neopr Data obrasheniya 5 iyunya 2011 8 iyunya 2011 goda Robert Tolksdorf Programming languages for the Java Virtual Machine JVM angl is research GmbH Onlajn katalog alternativnyh yazykov i yazykovyh rasshirenij dlya JVM Data obrasheniya 5 iyunya 2009 Arhivirovano 21 avgusta 2011 goda neopr 10 fevralya 2008 Data obrasheniya 17 noyabrya 2018 Arhivirovano 10 fevralya 2008 goda neopr 19 yanvarya 2004 Data obrasheniya 17 noyabrya 2018 Arhivirovano 19 yanvarya 2004 goda Ada 83 LRM Sec 12 1 Generic Declarations neopr archive adaic com Data obrasheniya 17 noyabrya 2018 17 aprelya 2019 goda Collections Framework Enhancements neopr oracle com Data obrasheniya 12 sentyabrya 2023 25 noyabrya 2023 goda Rezultaty testov neopr Data obrasheniya 13 sentyabrya 2012 25 iyunya 2012 goda JavaFX FAQ neopr www oracle com Data obrasheniya 17 noyabrya 2018 29 oktyabrya 2018 goda Smith Donald The Future of JavaFX and Other Java Client Roadmap Updates 17 noyabrya 2018 Data obrasheniya 17 noyabrya 2018 plan razrabotki dlya JDK7 neopr Data obrasheniya 4 iyulya 2011 8 yanvarya 2021 goda Plan B neopr Data obrasheniya 4 iyulya 2011 11 iyulya 2011 goda OpenJDK Project Coin neopr openjdk java net Data obrasheniya 17 noyabrya 2018 Arhivirovano 4 oktyabrya 2012 goda Kompaniya Oracle anonsirovala vyhod Java Standard Edition 7 ot 3 avgusta 2011 na Wayback Machine rus Index corruption and crashes in Apache Lucene Core Apache Solr with Java 7 ot 9 avgusta 2021 na Wayback Machine angl Aktornoe rasshirenie yazyka Java v srede MPS ot 29 aprelya 2015 na Wayback Machine vestnik ITMO Vyp 6 94 What s New in JDK 8 neopr www oracle com Data obrasheniya 17 noyabrya 2018 13 aprelya 2020 goda Method References angl The Java Tutorials docs oracle com Data obrasheniya 17 noyabrya 2018 21 oktyabrya 2018 goda JDK 9 release delayed another four months neopr Data obrasheniya 17 maya 2017 9 maya 2017 goda Java 9 gets a release date July 27 neopr Data obrasheniya 17 maya 2017 17 maya 2017 goda Java 9 delayed to September 21 neopr Data obrasheniya 29 iyulya 2017 29 iyulya 2017 goda Oracle Announces Java SE 9 and Java EE 8 Press Release angl Oracle 21 sentyabrya 2017 Data obrasheniya 1 avgusta 2018 2 oktyabrya 2018 goda Project Jigsaw angl openjdk java net Data obrasheniya 24 noyabrya 2018 9 yanvarya 2021 goda JEP 102 Process API Updates angl OpenJDK Data obrasheniya 6 sentyabrya 2018 6 sentyabrya 2018 goda JEP 110 HTTP 2 Client Incubator angl OpenJDK Data obrasheniya 6 sentyabrya 2018 2 sentyabrya 2018 goda JEP 11 Incubator Modules angl OpenJDK Data obrasheniya 6 sentyabrya 2018 15 sentyabrya 2018 goda JEP 254 Compact Strings angl OpenJDK Data obrasheniya 6 sentyabrya 2018 8 sentyabrya 2018 goda JEP 287 SHA 3 Hash Algorithms angl OpenJDK Data obrasheniya 6 sentyabrya 2018 6 sentyabrya 2018 goda JEP 277 Enhanced Deprecation angl OpenJDK Data obrasheniya 6 sentyabrya 2018 19 sentyabrya 2018 goda Java Language Updates neopr www oracle com Data obrasheniya 14 noyabrya 2021 14 noyabrya 2021 goda JEP 283 Enable GTK 3 on Linux neopr openjdk java net Data obrasheniya 25 noyabrya 2018 24 noyabrya 2018 goda Oracle Java SE 10 Release Arrives angl ORACLE Data obrasheniya 24 iyunya 2018 20 marta 2018 goda JEP 286 Local Variable Type Inference angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JEP 304 Garbage Collector Interface angl openjdk java net Data obrasheniya 20 noyabrya 2018 3 oktyabrya 2018 goda JEP 307 Parallel Full GC for G1 angl openjdk java net Data obrasheniya 21 noyabrya 2018 3 oktyabrya 2018 goda Aleksej Ragozin Safepoints in HotSpot JVM angl blog ragozin info Data obrasheniya 24 noyabrya 2018 24 noyabrya 2018 goda JEP 312 Thread Local Handshakes angl openjdk java net Data obrasheniya 24 noyabrya 2018 21 oktyabrya 2018 goda JEP 314 Additional Unicode Language Tag Extensions angl openjdk java net Data obrasheniya 22 noyabrya 2018 5 oktyabrya 2018 goda JEP 316 Heap Allocation on Alternative Memory Devices angl openjdk java net Data obrasheniya 24 noyabrya 2018 22 oktyabrya 2018 goda JEP 317 Experimental Java Based JIT Compiler angl openjdk java net Data obrasheniya 22 noyabrya 2018 24 noyabrya 2018 goda JEP 322 Time Based Release Versioning angl openjdk java net Data obrasheniya 22 noyabrya 2018 31 oktyabrya 2018 goda JEP 181 Nest Based Access Control angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JEP 318 Epsilon A No Op Garbage Collector Experimental angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JEP 321 HTTP Client Standard angl openjdk java net Data obrasheniya 18 noyabrya 2018 24 noyabrya 2018 goda JEP 323 Local Variable Syntax for Lambda Parameters angl openjdk java net Data obrasheniya 18 noyabrya 2018 15 noyabrya 2018 goda JEP 327 Unicode 10 angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JEP 332 Transport Layer Security TLS 1 3 angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JEP 333 ZGC A Scalable Low Latency Garbage Collector Experimental angl openjdk java net Data obrasheniya 18 noyabrya 2018 18 noyabrya 2018 goda JDK 12 Release Notes neopr Data obrasheniya 24 sentyabrya 2023 27 sentyabrya 2023 goda JDK Releases neopr Data obrasheniya 16 yanvarya 2024 4 iyunya 2022 goda JDK 13 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda Consolidated JDK 14 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda JDK 15 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda JDK 16 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda Consolidated JDK 17 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda JDK 18 Release Notes neopr Data obrasheniya 16 yanvarya 2024 18 aprelya 2023 goda JDK 19 Release Notes neopr Data obrasheniya 16 yanvarya 2024 20 sentyabrya 2023 goda JDK 20 Release Notes neopr Data obrasheniya 16 yanvarya 2024 12 sentyabrya 2023 goda JDK 21 Release Notes neopr Data obrasheniya 16 yanvarya 2024 16 yanvarya 2024 goda Delabassee David Opening Up Java EE An Update 26 noyabrya 2018 Data obrasheniya 25 noyabrya 2018 And the Name Is Life at Eclipse angl 2018 02 26 26 noyabrya 2018 Data obrasheniya 25 noyabrya 2018 JEP 320 Remove the Java EE and CORBA Modules neopr openjdk java net Data obrasheniya 25 noyabrya 2018 24 noyabrya 2018 goda Microsoft Java Virtual Machine Support angl Microsoft 12 sentyabrya 2003 Oficialnoe zayavlenie Microsoft o programme podderzhki MSJVM Data obrasheniya 9 oktyabrya 2010 Arhivirovano 21 avgusta 2011 goda Visual J rus Microsoft noyabr 2007 Oficialnaya informaciya Microsoft ob isklyuchenii J iz komplekta Visual Studio 2008 Data obrasheniya 10 oktyabrya 2010 Arhivirovano 21 avgusta 2011 goda Todd Hoff Amazon Architecture angl 18 sentyabrya 2007 Obsuzhdenie arhitektury Amazon s ispolzovaniem Java tehnologij Data obrasheniya 6 iyunya 2009 28 fevralya 2009 goda Amazon Elastic Compute Cloud Amazon EC2 angl Amazon Web Services LLC Opisanie tehnologii i vozmozhnostej Amazon EC2 kak veb servisa Data obrasheniya 6 iyunya 2009 Arhivirovano 21 avgusta 2011 goda Todd Hoff eBay Architecture angl 27 maya 2008 Obsuzhdenie arhitektury eBay na platforme Java Data obrasheniya 6 sentyabrya 2009 Arhivirovano 21 avgusta 2011 goda Randy Shoup Dan Pritchett The eBay Architecture angl SD Forum 2006 29 noyabrya 2006 Prezentaciya po istorii razvitiya arhitektury eBay Data obrasheniya 6 iyunya 2009 Arhivirovano 21 avgusta 2011 goda Brian Guan The LinkedIn Blog Blog Archive Grails at LinkedIn angl LinkedIn com 11 iyunya 2008 Istoriya sozdaniya sistemy LinkedIn na osnove Java tehnologii Grails Data obrasheniya 5 iyunya 2009 Arhivirovano 21 avgusta 2011 goda Hadoop and Distributed Computing at Yahoo angl Yahoo Startovaya stranica Java tehnologii raspredelyonnogo obsluzhivaniya Hadoop na portale razrabotchikov Yahoo Data obrasheniya 21 iyunya 2009 Arhivirovano 21 avgusta 2011 goda OracleJVM and Java Stored Procedures angl Oracle Inc Razdel portala Oracle posvyashyonnyj tehnologiyam Java v sostave servera SUBD Oracle Data obrasheniya 5 iyunya 2009 Arhivirovano 21 avgusta 2011 goda Ubuntu Intel Q6600 quad core Computer Language Benchmarks neopr Arhivirovano 22 iyunya 2012 goda Wolfgang Puffitsch Martin Schoeberl picoJava II in an FPGA angl DTU Library 2007 2 dekabrya 2018 goda JVM ne imeet podderzhki dlya peremennyh tipa boolean poetomu oni predstavlyayutsya v vide znachenij tipa int Odnako massivy boolean podderzhivayutsya VM Spec The Structure of the Java Virtual Machine ot 24 noyabrya 2011 na Wayback Machine JEP 306 Restore Always Strict Floating Point Semantics angl Data obrasheniya 21 noyabrya 2022 21 noyabrya 2022 goda Byarn Straustrup Yazyk programmirovaniya C The C Programming Language M SPb Binom Nevskij dialekt 2008 1104 s 5000 ekz ISBN 5 7989 0226 2 ISBN 5 7940 0064 3 ISBN 0 201 70073 5 Dzhejms Gosling Bill Dzhoj Gaj Stil Gilad Bracha Aleks Bakli Daniel Smit Java Language Specification Chapter 15 Expressions angl docs oracle com Data obrasheniya 1 dekabrya 2018 1 dekabrya 2018 goda Java API Reference Class Object angl docs oracle com Data obrasheniya 26 noyabrya 2018 26 noyabrya 2018 goda Scott Oaks Java Performance The Definitive Guide Getting the Most Out of Your Code O Reilly Media Inc 2014 04 10 425 s ISBN 9781449363543 21 iyulya 2021 goda The Trouble with Checked Exceptions neopr www artima com Data obrasheniya 21 dekabrya 2018 8 yanvarya 2019 goda Pulsar Eclipse Mobile Tools Platform angl Eclipse Proekt eclipse dlya mobilnyh razrabotchikov Data obrasheniya 23 marta 2011 Arhivirovano 21 avgusta 2011 goda LiteraturaGerbert Shildt Java Polnoe rukovodstvo 10 e izdanie Java The Complete Reference 10th Edition M 2018 1488 s ISBN 978 5 6040043 6 4 Kej S Horstmann Java SE 9 Bazovyj kurs Core Java SE 9 for the Impatient M 2018 576 s ISBN 978 5 6040043 0 2 978 0 13 469472 6 Kej S Horstmann Java SE 8 Vvodnyj kurs Java SE 8 for the Really Impatient M 2014 208 s ISBN 978 5 8459 1900 7 Fred Long Dhruv Mohindra Robert S Sikord Din F Sazerlend Devid Svoboda Rukovodstvo dlya programmista na Java 75 rekomendacij po napisaniyu nadyozhnyh i zashishyonnyh programm Java Coding Guidelines 75 Recommendations for Reliable and Secure Programs M 2014 256 s ISBN 978 5 8459 1897 0 Kej S Horstmann Java Biblioteka professionala tom 1 Osnovy 10 e izdanie Core Java Volume I Fundamentals Tenth Edition M 2017 864 s ISBN 978 5 8459 2084 3 Kej S Horstmann Java Biblioteka professionala tom 2 Rasshirennye sredstva programmirovaniya 10 e izdanie Core Java Volume II Advanced Feature Tenth Edition M 2017 976 s ISBN 978 5 9909445 0 3 Barri Berd Java 9 dlya chajnikov Java For Dummies 7th edition M 2018 624 s ISBN 978 5 9500296 1 5 978 1 119 23555 2 Kishori Sharan Java 9 Polnyj obzor novovvedenij Java 9 Revealed M 2018 544 s ISBN 978 5 97060 575 2 Dzhejms Gosling Bill Dzhoj Gaj Stil Gilad Bracha Aleks Bakli Yazyk programmirovaniya Java SE 8 Podrobnoe opisanie 5 e izdanie The Java Language Specification Java SE 8 Edition 5th Edition Java Series M 2015 672 s ISBN 978 5 8459 1875 8 Dzhoshua Bloh Java Effektivnoe programmirovanie Effective Java 3 e M 2019 464 s ISBN 978 5 6041394 4 8 Bendzhamin Dzh Evans Dzhejms Gof Kris Nyulend Java optimizaciya programm Prakticheskie metody povysheniya proizvoditelnosti prilozhenij v JVM M 2019 448 s ISBN 978 5 907114 84 5 Monahov Vadim Yazyk programmirovaniya Java i sreda NetBeans 3 e izd SPb 2011 704 s ISBN 978 5 9775 0671 7 Bryus Ekkel Filosofiya Java Thinking in Java 4 e izd SPb Piter 2018 1168 s ISBN 978 5 496 01127 3 SsylkiThe Java Tutorials angl obuchayushie materialy po Java 8 angl svobodno rasprostranyaemye elektronnye versii knig Bryusa Ekkelya po C i Java vmeste s ishodnym kodom Uchebnik Java 8 Oficialnyj sajt Java
Вершина