Кіріспе

Java Platform, Standard Edition (Java SE) – десктоп және серверлік орталар үшін портативті кодты әзірлеу және жұмысқа қоюға арналған есептеу платформасы. Java SE бұрын Java 2 Platform, Standard Edition (J2SE) деп аталған. Платформа Java бағдарламалау тілін пайдаланады және Java бағдарламалық платформалар отбасының бір бөлігі болып табылады. Java SE Java Class Library сияқты жалпы мақсаттағы API-лерді анықтайды, сондай-ақ Java тілінің сипаттамасы мен Java Virtual Machine сипаттамасын қамтиды. OpenJDK 7 нұсқасынан бастап ресми анықтамалық іске асырылым болып табылады.

Номенклатура, стандарттар мен спецификациялар

Java платформасы 1.2 нұсқасынан бастап Java 2 Platform, Standard Edition немесе J2SE деп аталды, ал 1.5 нұсқасында Java Platform, Standard Edition немесе Java SE деп өзгертілді. "SE" атауы негізгі платформаны Enterprise Edition (Java EE) және Micro Edition (Java ME) платформаларынан ажырату үшін қолданылады. "2" саны бастапқыда 1.2 нұсқасында енгізілген маңызды өзгерістерді көрсету үшін қосылған, бірақ 1.6 нұсқасында алынып тасталды. Java нұсқаларының тарихында атау беру ережесі бірнеше рет өзгерді. J2SE 1.4 (Merlin) нұсқасынан бастап Java SE Java Community Process аясында дамытылды, ол Java платформасы үшін ұсынылған және бекітілген спецификациялардың сипаттамаларын жасайтын Java Specification Requests (JSR) құжаттарын шығарады. JSR 59 – J2SE 1.4 нұсқасының, ал JSR 176 – J2SE 5.0 (Tiger) нұсқасының жалпы сипаттамасы болды. Java SE 6 (Mustang) JSR 270 бойынша жарияланды. Java Platform, Enterprise Edition (Java EE) – бұл Java SE-дегі барлық кластарды қамтитын және серверлерде жұмыс істейтін бағдарламалар үшін жұмыс станцияларындағыдан гөрі пайдалырақ қосымша кластарды ұсынатын байланысты спецификация. Java Platform, Micro Edition (Java ME) – ұялы телефондар, жеке цифрлық көмекшілер (PDA) және топ-бокс сияқты кіші, шектеулі ресурстарға ие құрылғылар үшін бағдарламалық жасақтаманы жасауға арналған Java API-лерінің сертификатталған жинағын ұсынатын байланысты спецификация. Java Runtime Environment (JRE) және Java Development Kit (JDK) – Java бағдарламаларын орындау немесе жасау үшін компьютерге жүктеп орнатылатын нақты файлдар.

java.lang (жазбаша)

Java пакеті тіл мен орындалу уақыты жүйесімен тығыз байланысты негізгі кластар мен интерфейстерді қамтиды. Бұл сынып иерархиясын құрайтын түбір кластарды, тіл анықтамасымен байланысты типтерді, негізгі қателіктерді, математикалық функцияларды, жіптерді, қауіпсіздік функцияларын, сондай-ақ негізгі жүйе туралы ақпаратты қамтиды. Бұл пакетке JDK 6-да ұсынылған 32 қателік класының 22-сі кіреді. java.lang пакетіндегі негізгі кластар мен интерфейстер:

– әр сынып иерархиясының түбірі болып табылатын класы.
– санау кластары үшін базалық класы (J2SE 5.0 нұсқасынан бастап).
– Java рефлексия жүйесінің түбірі болып табылатын класы.
– қателік кластары иерархиясының негізгі класы болып табылатын класы.
, , және – әрбір қателік түрі үшін базалық кластар.
– жіптермен операцияларды жүзеге асыратын класы.
– жолдар мен жол мәндері үшін класы.
және – жолдарды өңдеуге арналған кластар (J2SE 5.0 нұсқасынан бастап StringBuilder).
– нысандарды жалпы салыстыруға және реттеуге мүмкіндік беретін интерфейс (J2SE 1.2 нұсқасынан бастап).
– күшейтілген for циклын (J2SE 5.0 нұсқасынан бастап) пайдалана отырып, жалпы итерацияны жүзеге асыратын интерфейс.
, , , , және – кластардың динамикалық жүктелуін, сыртқы процестерді құруды, күннің уақыты сияқты хост ортасы туралы сұрауларды және қауіпсіздік саясатын жүзеге асыруды басқаратын «жүйелік операцияларды» қамтамасыз етеді.
және – синус, косинус және квадрат түбір сияқты негізгі математикалық функцияларды қамтамасыз ететін кластар (J2SE 1.3 нұсқасынан бастап StrictMath). Бастапқы типтерді нысан ретінде орап тұратын бастапқы орауыш кластар. Тіл деңгейі мен басқа да жалпы қателіктер үшін тасталған негізгі қателік кластары. java.lang пакетіндегі кластар әрбір бастапқы файлға автоматты түрде импортталады.

java.lang.ref

Бұл пакет басқа нұсқаларға қарағанда сілтемелердің неғұрлым икемді түрлерін ұсынады, бұл қолданба мен Java Virtual Machine (JVM) қоқыс жинағышы арасындағы шектеулі өзара әрекеттесуге мүмкіндік береді. Бұл маңызды пакет, тіл дизайнерлері оған "java.lang" деп басталатын атау беру үшін тілдің орталық бөлігі санайды, бірақ ол ерекше мақсатқа арналған және көптеген әзірлеушілер қолданбайды. Бұл пакет J2SE 1.2 нұсқасында енгізілді. Java-да сілтемелердің бай жүйесі бар және қоқыс жинау үшін арнайы мінез-құлықтарға мүмкіндік береді. Java-дағы қалыпты сілтеме "күшті сілтеме" деп аталады. java.lang.ref пакеті үш басқа сілтеме түрін анықтайды: жұмсақ, әлсіз және фантомдық сілтемелер. Әрбір сілтеме түрі нақты мақсат үшін жасалған. Кэшті жүзеге асыру үшін жұмсақ сілтеме қолданылуы мүмкін. Қатты сілтемемен қолжетімді емес (яғни, күшті түрде қолжетімді емес), бірақ жұмсақ сілтемемен сілтемеленген объекті "жұмсақ түрде қолжетімді" деп аталады. Жұмсақ түрде қолжетімді объекті қоқыс жинағыш қалауынша жиналынуы мүмкін. Әдетте, бұл жұмсақ түрде қолжетімді объектілер бос жад аз болғанда ғана жиналады, бірақ бұл қоқыс жинағыштың қалауына байланысты. Семантикалық тұрғыдан алғанда, жұмсақ сілтеме "басқа ештеңе сілтеме жасамаса, осы объектіні сақтаңыз, егер жад қажет болмаса" дегенді білдіреді. Әлсіз сілтеме әлсіз карталарды жүзеге асыру үшін қолданылады. Қатты немесе жұмсақ түрде қолжетімді емес, бірақ әлсіз сілтемемен сілтемеленген объекті "әлсіз түрде қолжетімді" деп аталады. Әлсіз түрде қолжетімді объекті келесі жинау циклында қоқыс жиналады. Бұл мінез-құлық сыныпта қолданылады. Әлсіз карта бағдарламашыға картаға кілт/мәнді жұптарды қоюға және кілт басқа жерде қолжетімді болмағанда объектілер жадты алатыны туралы уайымдамауға мүмкіндік береді. Әлсіз сілтемелердің тағы бір мүмкін қолданылуы – тізбектік ішкі жиын. Семантикалық тұрғыдан алғанда, әлсіз сілтеме "келесі қоқыс жинау кезінде басқа ештеңе сілтеме жасамағанда осы объектіден арылыңыз" дегенді білдіреді. Фантомдық сілтеме қоқыс жинау үшін белгіленген және аяқталған, бірақ әлі қалпына келтірілмеген объектілерді сілтемелеу үшін қолданылады. Қатты, жұмсақ немесе әлсіз түрде қолжетімді емес, бірақ фантомдық сілтемемен сілтемеленген объекті "фантомдық түрде қолжетімді" деп аталады. Бұл тек қана түпкілікті механизммен салыстырғанда, тазалауды икемдірек етуге мүмкіндік береді. Семантикалық тұрғыдан алғанда, фантомдық сілтеме "бұл объекті енді қажет емес және оны жинау үшін дайындық барысында аяқталды" дегенді білдіреді. Осы сілтеме түрлерінің әрқайсысы Reference класын кеңейтеді, ол сілтемеленген объектіге күшті сілтеме қайтару әдісін (немесе сілтеме өшірілген болса немесе сілтеме түрі фантомдық болса null) және сілтемені өшіру әдісін ұсынады. java.lang.ref сонымен қатар ReferenceQueue класын анықтайды, оны жоғарыда талқыланған қолданбалардың әрқайсысында сілтеме түрін өзгерткен объектілерді бақылау үшін пайдалануға болады. Reference құрылған кезде ол нұсқамалық кезекпен тіркеледі. Қолданба қолжетімділік күйін өзгерткен сілтемелерді алу үшін нұсқамалық кезекке сұраныс жібереді.

java.lang.reflect дегенді көрсету

Жазбашалық – Java API құрамына кіретін мүмкіндік, ол Java кодына Java компоненттерін орындау кезінде қарастыруға және "жазбашалық" етуге, сондай-ақ олардың мүшелерін пайдалануға мүмкіндік береді. java.lang.Class класымен бірге, бұл пакетке кіретін кластар, отладчиктер, интерпретаторлар, объект инспекторлары, сынып браузерлері сияқты қосымшаларды және объект сериализациясы мен JavaBeans сияқты, мақсатты объектінің (оның орындалу класына сәйкес) немесе белгілі бір сыныптың жарияланған мүшелеріне қол жеткізуді қажет ететін қызметтерді қолдауға арналған. Бұл пакет JDK 1.1 нұсқасында қосылған. Жазбашалық, кластарды экземплярлау және олардың аттарын пайдаланып әдістерді шақыру үшін қолданылады, бұл динамикалық бағдарламалауға мүмкіндік беретін ұғым. Сыныптар, интерфейстер, әдістер, өрістер және конструкторлардың барлығы орындалу кезінде анықталып, пайдаланылуы мүмкін. Жазбашалыққа қолдау JVM-де бағдарлама туралы метадеректер арқылы қамтамасыз етіледі.

Атауы бойынша пайдалану

Сынып объектісін табу арқылы, сыныптың тура мәнін пайдалану арқылы (мысалы, MyClass.class) немесе сыныптың атауын қолдану арқылы алуға болады. Сынып объектісімен мүшелік әдіс, конструктор немесе өріс объектілерін мүшелік символды атау арқылы алуға болады. Мысалы:
– `getMethod()` әдісі, `Class` параметрлерімен көрсетілген параметрлерді қабылдайтын кластың немесе интерфейстің "methodName" атауымен ашық әдісті білдіретін `Method` объектісін қайтарады.
– `getConstructor()` әдісі, `Class` параметрлерімен көрсетілген параметрлерді қабылдайтын кластың қоғамдық конструкторын көрсететін `Constructor` объектісін қайтарады.
– `getField()` әдісі, кластың немесе интерфейстің "fieldName" атауымен ашық өрісті білдіретін `Field` объектісін қайтарады.
`Method`, `Constructor` және `Field` объектілері сыныптың ұсынылған мүшесіне динамикалық қатынау үшін пайдаланылуы мүмкін. Мысалы:
– `get()` әдісі, берілген объектінің инстанциясынан өрістің мәнін қамтитын `Object` қайтарады (Егер `Field` объектісі статикалық өрісті білдірсе, онда `Object` параметрі елемей қалдырылады және нөл болуы мүмкін).
– `invoke()` әдісі, берілген бірінші `Object` параметрінің инстанциясы үшін әдісті шақыру нәтижесі бар `Object` қайтарады. Қалған `Object` параметрлері әдіске беріледі. (Егер `Method` объектісі статикалық әдісті білдірсе, онда бірінші `Object` параметрі ескерілмейді және нөл болуы мүмкін.)
– `newInstance()` әдісі, конструкторды шақырудан жаңа `Object` инстанциясын қайтарады. `Object` параметрлері конструкторға беріледі. (Еске сала кетейік, кластың параметрсіз конструкторына `newInstance()` арқылы да шақыруға болады.)

Массивтер мен проксилер

Жаваның. Ланг. reflect пакеті массивтік объектілерді құру және манипуляциялау үшін статикалық әдістерді қамтитын сыныпты, сондай-ақ J2SE 1.3 нұсқасынан бастап, белгілі бір интерфейстерді іске асыратын прокси-кластарды динамикалық түрде құруға мүмкіндік беретін сыныпты ұсынады. Прокси класының іске асырылуы интерфейсті іске асыратын берілген объектімен қамтамасыз етіледі. InvocationHandler интерфейсінің invoke әдісі прокси объектісінде шақырылған әрбір әдіс үшін шақырылады – бірінші параметр прокси объектісі, екінші параметр прокси арқылы іске асырылған интерфейстен әдісті көрсететін Method объектісі, ал үшінші параметр интерфейс әдісіне жіберілген параметрлер массиві. invoke әдісі прокси интерфейс әдісін шақырған кодқа қайтарылған нәтижені қамтитын Object нәтижесін қайтарады.

java.io

Пакет кіріс және шығысты қолдайтын кластарды қамтиды. Пакеттегі кластар негізінен ағымдарға бағытталған; алайда, кездейсоқ қолжетімділік файлдары үшін кластар да ұсынылады. Пакеттегі негізгі кластар – және , олар сәйкесінше байт ағындарын оқу және жазу үшін абстрактілі базалық кластар. Байланысты кластар – және , олар сәйкесінше таңба ағындарын оқу және жазу үшін абстрактілі базалық кластар. Пакетте хост файлдық жүйемен өзара әрекеттесуді қолдау үшін де бірнеше қосымша кластар бар.

Кездейсоқ қатынас

Сынып файлдарды кездейсоқ оқу және жазуды қолдайды. Сынып келесі оқу немесе жазу операциясы үшін файл ішіндегі байттық ығысуды көрсететін файл көрсеткішін пайдаланады. Файл көрсеткіші оқу немесе жазу арқылы түсіндіріледі, ал немесе әдістерін шақыру арқылы тікелей жылжытылады. Файл көрсеткішінің ағымдағы орны әдіс арқылы қайтарылады.

Файл жүйесі

Сынып файлдық жүйедегі файл немесе каталогтың жолын көрсетеді. Файл объектілері файлдар мен каталогтарды құру, жою және атауын өзгерту, сондай-ақ тек оқуға арналған және соңғы өңделу уақыты сияқты файл атрибуттарын басқаруды қолдайды. Каталогты білдіретін файл объектілері оның ішіндегі барлық файлдар мен каталогтардың тізімін алу үшін пайдаланылуы мүмкін. Сынып – байттардың көзін немесе тұтынушысын (мақсатын) көрсететін файл дескрипторы. Әдетте, бұл файл, бірақ консоль немесе желілік сокет те болуы мүмкін. FileDescriptor нысандары файл ағындарын құру үшін қолданылады. Олар файл ағындарынан, java.net желілік сокеттерінен және деректердік сокеттерден алынады.

java.nio

J2SE 1.4 бағдарламасында жадқа бейнелеу арқылы I/O-ны қолдау үшін NIO немесе Non-blocking I/O (блоктаусыз I/O) пакеті қосылды, бұл I/O операцияларын негізгі аппараттық құралға жақындатып, кейде өнімділікті күрт жақсартады. java.nio пакеті түрлі буфер түрлерін қолдайды. Кіші пакеті таңбалы деректер үшін әртүрлі таңба кодтамаларын қолдайды. Кіші пакеті I/O операцияларын орындай алатын, мысалы файлдар мен сокеттер сияқты объектілерге қосылыстарды көрсететін арналарды қолдайды. java.nio.channels пакеті файлдарды дәлдікпен құлыптауды да қолдайды.

java.math

Бұл жиынтық көп дәлдік арифметиканы (модульдік арифметика операцияларын қоса алғанда) қолдайды және криптографиялық кілттерді жасау үшін қолданылатын көп дәлдік жай сан генераторларын ұсынады. Пакеттің негізгі сыныптары:

– кез келген дәлдіктегі таңбалы ондық сандарды ұсынады. BigDecimal пайдаланушыға RoundingMode арқылы дөңгелектеу мінез-құлқын басқару мүмкіндігін береді. – кез келген дәлдіктегі бүтін сандарды ұсынады. BigInteger-дегі операциялар ағып кетпейді немесе дәлдік жоғалтпайды. Стандартты арифметикалық операциялардан басқа, модульдік арифметика, ЕБҚ (GCD) есептеу, жай сан тексеру, жай сандарды генерациялау, биттерді өңдеу және басқа да қосымша операцияларды қамтиды. – сандық операторлар үшін белгілі бір ережелерді сипаттайтын контекст параметрлерін қамтиды. – сегіз дөңгелектеу мінез-құлқын ұсынатын санама.

java.net

Бұл пакет желілер үшін арнайы кіріс-шығыс процедураларын қамтамасыз етеді, HTTP сұраныстарын және басқа да жиі қолданылатын операцияларды жүргізуге мүмкіндік береді.

java.text дегенді

Бұл пакет жолдарды талдау процедураларын іске асырады және әртүрлі адам оқи алатын тілдерді, сондай-ақ жергілікті тілдерге қатысты талдауды қолдайды.

java.util

Объектілерді жинақтайтын дерек құрылымдары осы пакеттің негізгі тақырыбы болып табылады. Пакетке Collections API кіреді, ол жобалау үлгілерінің ескерулеріне негізделген ұйымдастырылған дерек құрылымының иерархиясы.

java.applet (жазбаша)

Java апплеттерін жасауды қолдау үшін құрылған бұл пакет, бағдарламалардың желі арқылы жүктеліп, қауіпсіздігі қамтамасыз етілген ортада (құмдық) іске қосылуына мүмкіндік береді. Құмдыққа қауіпсіздік шектеулерін орнату оңай. Мысалы, әзірлеуші апплетке цифрлық қолтаңба қою арқылы оны қауіпсіз деп тануға болады. Бұл пайдаланушыға апплетке шектеулі операцияларды орындауға (мысалы, жергілікті дискіге қол жеткізу) рұқсат беруге және құмдықтың кейбір немесе барлық шектеулерін жоюға мүмкіндік береді. Цифрлық сертификаттарды сертификаттау орталықтары шығарады.

Жава бұршағы

Пакетке JavaBeans архитектурасымен анықталған, қайта пайдалануға болатын компоненттер, яғни бұршақтарды әзірлеу және өңдеуге арналған әртүрлі кластар кіреді. Архитектура компоненттердің қасиеттерін өңдеу және осы қасиеттер өзгерген кезде оқиғаларды тудыру механизмдерін ұсынады. java.beans пакетіндегі API-лар бұршақтарды өңдеу құралымен пайдалану үшін көзделген, онда бұршақтарды біріктіруге, бейімдеуге және өңдеуге болады. Мұндай бұршақ өңдеу құралының бір түрі – интеграцияланған даму ортасындағы графикалық интерфейс дизайнері.

java.awt

Abstract Window Toolkit, немесе AWT, негізгі операциялық жүйенің виджеттеріне негізделген GUI элементтерінің негізгі жиынтығына қол жеткізуді, GUI оқиғалар жүйесінің ядросын және жергілікті терезе жүйесі мен Java қолданбасы арасындағы интерфейсті қамтамасыз етеді. Ол сонымен қатар бірнеше қарапайым орналасу басқарушыларын, Құсқауылтақта (Clipboard) және Сүйреп тастау (Drag and Drop) функцияларымен жұмыс істеуге арналған деректерді беру пакетін, тышқан мен пернетақта сияқты енгізу құрылғыларына интерфейсті, сондай-ақ қолдау көрсетілетін жүйелердегі жүйелік тақтаға (system tray) кіруді ұсынады. Бұл пакет, javax.swing пакетімен бірге, JDK 6-дағы ең көп санды (барлығы 7) enum-ды қамтиды.

java.rmi

Бұл пакет екі түрлі JVM-де іске қосылған Java қолданбалары арасында қашықтан процедура шақыруларын қолдау үшін Java қашықтан әдіс шақыруын ұсынады.

java.security (жава.көзқарас)

Қауіпсіздік қолдауы, соның ішінде хабардың дайджест алгоритмі, пакетке енгізілген.

java.sql

JDBC API-нің (SQL дерекқорларына қол жеткізу үшін қолданылатын) іске асырылуы пакетке топтастырылған.

javax.swing

Swing – Java негізінде құрылған процедуралар жиынтығы, ол платформаға тәуелсіз виджет құралдар жиынтығын ұсынады. Пайдаланушы интерфейсі компоненттерін көрсету үшін 2D сызу процедураларын пайдаланады, негізгі операциялық жүйенің GUI қолдауына сүйенудің орнына. Бұл жиынтықта JDK 6-дағы ең көп санды сыныптар бар (барлығы 133). Бұл пакет, java.awt пакетімен бірге, JDK 6-дағы ең көп санды enum-дарды (барлығы 7) қамтиды. Ол плагиндік көрініс және сезімдерді (PLAF) қолдайды, соның арқасында GUI виджеттері негізгі жүйедегі виджеттерді имитациялай алады. Дизайн үлгілері жүйеге енген, әсіресе модель-көрініс-бақылаушы (Model-View-Controller) үлгісінің өңделген түрі, функция мен сыртқы түрі арасындағы байланысты әлсіретеді. Бір қайшылық – (J2SE 1.3 нұсқасы бойынша) қаріптер Java емес, негізгі жүйемен салынады, бұл мәтіндік деректердің портативтілігін шектейді. Биттік карта қаріптерін пайдалану сияқты шешімдер де бар. Жалпы, "макеттер" (layouts) қолданылады және элементтерді платформалар бойынша эстетикалық тұрғыдан үйлесімді GUI-де сақтайды.

javax.swing.text.html.parser (жазбаларды талдау)

Бұл пакет әртүрлі веб-браузерлер мен веб-боттарды жасау үшін қолданылатын, қателерге төзімді HTML талдаушысын қамтамасыз етеді.

javax.xml.bind.com-ның белгісі

javax.xml.bind.annotation пакеті JDK 6-да ең көп (барлығы 30) Аннотация түрлерін қамтыды. Ол Java бағдарлама элементтерін XML схемасына бейімдеу үшін түсініктемелерді анықтайды.

орга.мг.CORBA

Ұйым. omg. CORBA пакеті General Inter ORB протоколын қолдана отырып, қосымшалар арасындағы қашықтықтан байланыс үшін қолдау көрсетті және ортақ объект сұранысы брокері архитектурасының басқа мүмкіндіктерін де қолдайды. RMI және RMI IIOP сияқты, бұл пакет басқа виртуалды машиналардағы объектілердің қашықтағы әдістерін шақыруға арналған (әдетте желі арқылы). Бұл пакет JDK 6-да ең көп (барлығы 45) ерекше жағдай кластарын қамтыды. Барлық байланыс мүмкіндіктерінің ішінде CORBA әртүрлі тілдерде қолданылуға қабілетті; алайда, бұл оны күрделі етеді. Бұл пакеттер Java 9-да ескірген деп белгіленді және Java 11-ден алынып тасталды.

Портативті интерцептор

Ұйым. omg. PortableInterceptor пакеті JDK 6-да ең көп интерфейстерді (барлығы 39) қамтыды. Ол ORB ілмектерін тіркеу арқылы ORB қызметтерінің ORB-ның қалыпты орындалу ағынын тоқтатуына мүмкіндік береді.

Қауіпсіздік

Бірнеше маңызды қауіпсіздік көйкештері анықталды. Oracle компаниясы Java SE үшін қауіпсіздікке қатысты маңызды түзетулер туралы ескертулер жариялады.