Java — сямейства праграмных прадуктаў і спецыфікацый ад кампаніі Sun Microsystems, якія разам складаюць праграмную платформу для распрацоўкі прыкладнога праграмнага забеспячэння і разгортвання яго ў кросплатформавым асяроддзі. Розныя рэалізацыі платформы Java дазваляюць ствараць праграмнае забеспячэнне для прылад шырокага спектра складанасці: ад убудаваных прылад і мабільных тэлефонаў да сервераў і суперкамп'ютараў. Найбольшае распаўсюджанне Java атрымала ў распрацоўцы праграмных сродкаў для абслугоўвання патрэб вялікіх прадпрыемстваў, у мабільных і серверных вэб-тэхналогіях, радзей Java выкарыстоўваецца на настольных камп'ютарах. Java не выкарыстоўвае такія нізкаўзроўневыя канструкцыі, як указальнікі, праца з памяццю аблегчана тым, што ўсе аб'екты — гэта спасылковыя тыпы, экзэмпляры якіх размяшчаюцца ў кучы. За кіраванне выкарыстоўвання памяці адказвае віртуальная машына Java з дапамогай аўтаматызаванага зборшчыка смецця.
Платформа Згодна з канцэпцыяй «напісана адзін раз, працуе ўсюды», праграма напісаная для платформы Java кампілюецца не ў машынны код, а ў байт-код, асяроддзем выканання для якога з'яўляецца Java Runtime Environment(JRE). Віртуальная машына Java (JVM) — частка JRE — інтэрпрэтуе байт-код у машынныя інструкцыі, спецыфічныя для той апаратнай і праграмнай платформы, для якой рэалізавана дадзеная версія JRE. Такім чынам дасягаецца кросплатформавасць праграмнага забеспячэння, напісанага для Java. Java Card: тэхналогія, якая дазваляе запускаць у асяроддзі павышанай бяспекі Java-праекты на смарт-картах і іншых прыладах, якія максімальна абмежаваны ў памяці і выканаўчых магчымасцях Java ME: набор тэхналогій і спецыфікацый, прызначаных для невялікіх прылад, якія абмежаваны ў памяці, спажыванні энергіі, маюць невялікі дысплэй. З цягам часу былі вылучаны дзве галіны гэтай платформы: Connected Limited Device Configuration (CLDC) з асаблівай увагай на невялікія мабільныя тэлефоны і Connected Device Configuration (СDС) для прылад, якія не так моцна абмежаваны ў рэсурсах і маюць пашыраныя магчымасці, напрыклад, смартфоны. Java SE: базавая платформа, якая можа быць выкарыстана і на ўсталяваных прыладах, і на хатніх кампьютарах, і на вялікіх серверах Java EE: платформа, якая прапануе шырокі функцыянал, неабходны для пабудовы масштабуемых праграмных прадуктаў, якія забяспечваюць вэб патрэбы і патрэбы вялікіх прадпрыемстваў, як сервернае ПЗ
Java Virtual Machine Канцэпцыя віртуальнай машыны Java ляжыць у аснове ўсёй Java-платформы. Java-праграмы кампілююцца ў байт-код аднолькавы для ўсіх апаратных асяроддзяў, бо інтэрпрэтатарам кода з'яўляецца JVM. Першапачаткова JVM проста правярала на бяспеку і выконвала байт-код, які на ёй запускаецца, але, пачынаючы з версіі 1.2, якая выйшла ў 1998 годзе, кампанія Sun выпускае віртуальныя машыны Java, у склад якіх уключан кампілятар часу выканання (just-in-time альбо JIT compiler). Гэта тэхналогія дазваляе пад час выканання аналізаваць уваходны байт-код. Часткі праграмы, якія паўтараюцца, JIT кампілятар перапрацоўвае ў апаратныя інструкцыі спецыфічныя для дадзенай аперацыйнай сістэмы і працэсара. JIT-кампіляцыя значна паскарае працэс інтэпрытацыі, бо скампіляваны код будзе выконвацца так жа хутка, як і код спецыфічны для канкрэтнай сістэмы выканання.
Java Virtual Machine дазваляе пісаць праграмныя прадукты, якія не залежаць ад платформы, але сама JVM кросплатформавай не з'яўляецца, і кожнае асяроддзе выканання мае сваю асабістую віртуальную машыну.
У 1996 годзе кампанія Sun выпусціла першую версію спецыфікацыі Java-машыны, вядомую пад назвай «Блакітная кніга». Гэтая спецыфікацыя дэ-факта стала стандартам платформы Java і дазволіла стварыць мноства альтэрнатыўных рэалізацый JVM. Зыходны код на мове C адной з мінімальных рэалізацый віртуальнай машыны Java (Kilo Virtual Machine) прадстаўлены на афіцыйным сайце кампаніі Sun (такая Java-машына звычайна выкарыстоўваецца ў мабільных прыладах у складзе платформы Java ME)
API платформы Java Большасць сучасных аперацыйных сістэм палягчаюць працу праграмістаў шляхам прапановы дынамічна звязаных бібліятэк, у якіх ужо рэалізаваны найбольш запатрабаваны функцыянал. Бібліятэкі і сігнатуры іх метадаў складаюць праграмны інтэрфейс (API). Цалкам зразумела, што API розных аперацыйных сістэм будуць адрознівацца адно ад аднаго і іх прамое выкарыстанне прывяло б да залежнасці Java ад той ці іншай платформы
Па гэтай прычыне асяроддзе выканання Java (JRE) уключае ў сябе, разам з віртуальнай машынай, яшчэ і свой асабісты API. Можна вылучыць тры асноўныя задачы, якія яно вырашае. Па-першае, гэта рэалізацыя каранёвых класаў, ад якіх наследуюцца ўсе астатнія (Object, Class, Enum, Exception, Thread...), а таксама рэалізацыя трывіальных праблем праграмавання, такіх як вылічэнне матэматычных функцый, праца з «доўгімі» лічбамі, сарціроўка масіваў і іншае. Па-другое, API Java высока абстрагуе задачы вельмі спецыфічныя для кожнай платформы. Напрыклад сістэмы ўвода-вывада, праца з сеткай і сеткавымі пратаколамі, выкарыстоўванне далучаных прылад. І па-трэцяе, калі ніжэйляжачая платформа не падтрымлівае тэхналогію, якую прадугледжвае Java, наўпрост, то сістэма павінна працягваць каррэктную працу, вынік якой павінен як мага менш адрознівацца ад сістэмы к сістэме
Кампаніяй Sun рэалізаваны тры асноўныя Java-платформы, якія, з пункту гледжання праграмавання, будуць адрозніваюцца сваім API. Базавай для трох платформай з'яўляецца Java SE (стандартнае выданне), на яе аснове пабудаваны Java EE (карпрацыйнае выданне) і Java ME (мікра выданне). Таксама ёсць і іншыя вельмі важныя платформы ці тэхналогіі (Java Card, JavaFX, JavaDB і інш.), API якіх накіравана на вырашэнне спецыфічных праблем сваёй галіны выкарыстання.
Платформа Java дазваляе выкарыстоўваць староннія бібліятэкі не толькі ў сваёй функцыянальнай частцы, але і ў рэалізацыі серады выканання. Усё, што праграмнаму забеспячэнню для гэтага патрэбна - прайсці серыю тэстаў кампаніі Sun на сумяшчальнасць з платформай.
Мовы праграмавання Першапачаткова на платформе Java працавала толькі адна мова праграмавання створаная для яе і названая ў яе гонар, але для віртуальнай машыны няма аніякай розніцы, на якой мове была першапачаткова напісана праграма - галоўнае, каб яна была скампілявана ў карэктны байт-код. Таму нарастаючая папулярнасць платформы прывяла да стварэння Java-кампілятараў для ўжо існуючых моў праграмавання, узнікнення крыху змененых моў праграмавання для лепшага ўжывання магчымасцей платформы, а таксама да стварэння новых моў, якія знаходзяць сваё выкарыстанне ў розных сферах праграмавання
Мова Java-версія Ada JGNAT AWK JawkJawk source forge project BBx BBj C C to Java Virtual Machine compilerssee for example AMPC project Cobol Micro Focus JVM Visual COBOL Veryant isCobol ColdFusion ColdFusionRailoOpen BlueDragon Common Lisp Armed Bear Common LispABCL projectCLforJavaJatha (Common LISP) Component Pascal Gardens Point Component Pascal Erlang Erjang Forth myForthmyForth project JavaScript Rhino LOGO jLogoJavaLogo projectXLogo Lua KahluaKahlua projectLuajLuajJillJill Oberon-2 Canterbury Oberon-2 for JVM Objective Caml (OCaml) OCaml-JavaOCaml-Java project Pascal Canterbury Pascal for JVMMIDletPascal PHP IBM WebSphere sMash PHP (P8)IBM WebSphere sMash PHP project Caucho QuercusCaucho Quercus project Python Jython Rexx IBM NetRexx Ruby JRuby Scheme BiglooKawaSISCJScheme Tcl JaclJTcl
Java і .NET Framework Платформа .NET Framework лічыцца адказам карпарацыі Microsoft на ўзрослую к канцу 90-х папулярнасць Java. Калі існаванне прамежкавага байт-кода ў Java было першапачаткова накіравана на падтрымку кросплатформавай канцэпцыі, то .NET Framework выкарыстоўвае CLI (агульная прамежкавая мова) для падтрымкі адной платформай адразу некалькіх моў праграмавання (клас мовы C# наследаваны ад класа Visual Basic.NET, к прыкладу, павінен быў стаць нармальнай практыкай). CLI - мова праграмавання зразумелая чалавеку, яе можна разглядаць як мову асэмблера для віртуальнай машыны .NET. Гэта палягчае задачу дэкампіляцыі, што можа быць выкарастана як у карысных мэтах, так і для раскрыцця камерцыйнай тайны.
Платформа .NET, распрацоўкай якой займаецца Microsoft, не з'яўляецца кросплатформавай або значна звужае функцыянал пры пераходзе на іншыя аперацыйныя сістэмы. Аднак існуе праект Mono, які займаецца распрацоўкай ліцэнзаванай Microsoft кросплатформавай версіяй .NET Framework, а таксама не ліцэнзаванымі кросплатформавымі версіямі WinForms, ADO.NET і ASP.NET
Visual J#, створаная для пераходу Java-праграмістаў на платформу.NET, не была сумяшчальнай са спецыфікацыяй Java і, з прычыны нізкай папулярнасці, цалкам перастала падтрымлівацца платформай у 2015 годзе.
Java Development Kit JDK - камплект распрацоўшчыка Java, створаны карпарацыяй Sun для патрэб праграмістаў. У яго склад уваходзіць кампілятар (javac), стандартны набор бібліятэк платформы, выканаўчае асяроддзе Java (JRE), а таксама дакументацыя, прыклады і больш за дваццаць утыліт, такіх як загрузчык праграм, адладчык, прагляднік аплетаў і інш. Усе сучасныя інтэграваныя асяроддзі распрацоўкі выкарыстоўваюць JDK для сваёй працы, таму патрабуюць каб JDK быў перадусталёваны, або пастаўляюцца разам з ім.
Большая частка кода JDK выйшла 8 мая 2007 года пад адкрытым ліцэнзійным пагадненнем GNU.
Гісторыя версій Гэта, натуральна, не поўны спіс тэхналогій, якія былі дадзены ў кожнай з версій Java
JDK 1.0 23 студзеня 1996 года Першая версія Java, стабільная версія 1.0.2 атрымала назву Java 1
JDK 1.1 19 лютага 1997 года Перагледжана мадэль апрацоўкі падзей у AWT. Дадана магчымасць стварэння ўключаных класаў. Рэалізованы тэхналогіі JDBC i RMI (падключэнне да баз дадзеных і выдалены выклік метадаў адпаведна)
J2SE 1.2 8 снежня 1998 года Пачынаючы з гэтай версіі, Java выходзіць пакетамі J2SE, J2EE, J2ME, дзе "2" сімвалізуе другое пакаленне платформы Выкарыстоўванне strictfp-класаў і метадаў дазволіла зрабіць рэзультаты аперацый з плаваючай коскай незалежнымі ад абранага працэсара. У JVM убудованы кампілятар часу выканання. Дададзены бібліятэкі для працы са стандартнымі калекцыямі дадзеных. Грунтоўна перагледжаны клас Thread (метады suspend(), stop() і resume(), да прыкладу, з тых пор лічацца састарэлымі)
J2SE 1.3 8 мая 2000 года З гэтага часу выкарыстоўваецца віртуальная машына HotSpot, якая кампілюе толькі кавалкі коду, якія будуць выкарыстоўвацца часцей за іншыя (Hot Spot - гарачыя месцы, у перакладзе)
J2SE 1.4 6 лютага 2002 года Новая канцэпцыя ланцуговых выключэнняў дазволіла захоўваць сістэмную інфармацыю часу ўзнікнення выключнай сітуацыі падчас перадачы выключэння па іерархіі вызываў. Даданы сінтаксічны аналізатар XML і падтрымка IPv6
J2SE 5 30 верасня 2004 года Даданы пераличэнні, цыкл for у стыле foreach, пераменныя зменнай колькасці. Рэалізавана аўтаабгортка скалярных тыпаў дадзеных, і ўведзены родавыя функцыі і класы
Java SE 6 11 снежня 2006 года Асноўныя намаганні накіраваны на павелічэнне хуткадзейнасці праз змены ў рэалізацыі каранёвых бібліятэк, кампілятара і зборшчыка смецця
Java SE 7 28 ліпеня 2011 года Падтрымка дынамічных моў вядзецца праз так званую шматмоўную віртуальную машыну ("машына Да Винчы" ад Sun). Даданы такія сінтаксічныя паляпшэнні як аўтавызначэнне тыпа пры стварэнні аб'ектаў родавых класаў, кіраванне рэсурсамі ў try-блоках і выкарстоўванне радковых тыпаў у switch-блоках
Выданне Java SE 8 анансавана на сакавік 2014 года
Выкарыстанне Выкарыстанне на персанальных камп'ютарах Паводле Sun, JRE выкарыстоўваецца зараз болей чым на 700 мільёнах персанальных камп’ютараў. Найбольшую папулярнасць набылі такія праграмныя прадукты створаныя з дапамогай Java як інтэграваныя асяроддзі праграмавання NetBeans і Eclipse, файлаабменныя праграмы LimeWire, Vuze. MATLAB і праграма для сумеснай працы Lotus Notes таксама выкарыстоўваюць Java.