Java package організовує Java-класи у просторах імен, надаючи унікальний простір імен для кожного класу, який він містить. Класи в одному пакеті можуть отримувати доступ до приватних і захищених членів пакету. Java package можуть зберігатися у стислих файлах, з розширенням JAR.
В основному, пакет може містити такі типи даних: класи, інтерфейси, перерахування та анотації. Пакет дозволяє розробнику групувати класи (і інтерфейси) разом. Всі ці класи будуть пов'язані певним чином — всі вони матимуть відношення до конкретної програми або будуть виконувати певний набір завдань. Програмісти також зазвичай використовують пакети для організації класів, що належать до однієї категорії, або для забезпечення подібної функціональності.
Використання пакетів
У джерельному файлі Java, package, до якого належать клас або класи цього файлу, задається зарезервованим словом package
. Це ключове слово зазвичай є першим. У джерельному файлі може бути присутня лише одна декларація пакета.
package java.awt.event;
Для використання класів Java package у файлі Java-програми зручно імпортувати класи за допомогою зарезервованого слова import
. Наступний рядок коду
import java.awt.event.*;
імпортує всі класи з пакета java.awt.event
, а цей рядок
import java.awt.event.ActionEvent;
імпортує з пакета тільки клас ActionEvent
. Після будь-якого типу імпорту, клас ActionEvent
можна використовувати за допомогою його імені:
ActionEvent myEvent = new ActionEvent();
Класи також можна використовувати безпосередньо без імпорту, використовуючи повне ім'я класу. Наприклад,
java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
не вимагає попереднього імпортування.
Пакет без назви
Зауважте, якщо декларація пакета відсутня, то клас потрапляє в безіменний пакет. Класи в безіменному пакеті не можуть бути імпортовані як класи в будь-якому іншому пакеті.
Офіційний навчальний посібник Java радить цього не робити: Взагалі кажучи, безіменний пакет призначений лише для невеликих або тимчасових програм, або для найперших стадій розробки програми. В іншому випадку класи і інтерфейси належать до іменованих пакетів.
Захист доступу до пакета
Публічні члени та класи є видимими всюди, а приватні члени видимі тільки в одному класі. Класи всередині пакета можуть отримати доступ до класів і членів, які отримали модифікатор доступу за замовчуванням (private
), так само як і до членів класу, оголошених з модифікатором доступу protected
. Доступ за замовчуванням (private
) застосовується, коли клас або член не були оголошені з модифікаторами public
, protected
або private
. На відміну від цього, класи в інших пакетах не можуть отримати доступ до класів і членів, оголошених з доступом за замовчуванням. Проте, учасники класу, оголошені як protected
можуть бути доступні з класів в одному пакеті, а також з класами в інших пакетах, які є підкласами цих класів.
Створення файлів JAR
Файли JAR створюються за допомогою командного рядка jar. Команда
jar cf myPackage.jar * .class
стискає всі .class файли в JAR-файл myPackage.jar . Опція 'c' вказує на «створення нового архіву». Опція 'f' повідомляє йому про створення файлу. Назва файлу вказується перед вмістом файлу JAR.
Узгодження про іменування пакетів
Пакети, як правило, визначаються за допомогою ієрархічного шаблону іменування, причому деякі рівні в ієрархії розділені періодами (.
, Вимовляється «крапка»). Хоча пакети нижчих в ієрархії імен часто називають «підпакетами» відповідних пакетів вище в ієрархії. Специфікація мови Java встановлює правила іменування пакетів, щоб уникнути можливості двох опублікованих пакетів з однаковою назвою. Узгодження про найменування описує, як створювати унікальні назви пакетів, так, щоб пакети, які широко вживаються, мали унікальні простори імен. Це дозволяє легко і автоматично встановлювати і каталогізувати пакети незалежно від інших пакетів.
Загалом, назва пакета починається з імені домену верхнього рівня організації, а потім домену організації, а потім будь-яких субдоменів, перерахованих у зворотному порядку. Організація може потім вибрати певне ім'я для свого пакета. Наступні компоненти імені пакету змінюються відповідно до власних внутрішніх правил організації.
Наприклад, якщо організація в Канаді, яка називається MySoft, створює пакет для роботи з дробовими числами, іменування пакета ca.mysoft.fractions відрізняє пакет дробів від іншого подібного пакета, створеного іншою компанією. Якщо німецька компанія MySoft також створює пакет дробів, вона називає її de.mysoft.fractions, тому класи цих двох пакетів визначаються в унікальному і окремому просторі імен.
Всі домовленості щодо визначення неоднозначності імен пакетів і правил їх іменування, коли ім'я Інтернет домену не може бути безпосередньо використано як ім'я пакета, описані в розділі 7.7 специфікації мови Java.
Основні пакети в Java SE 8
java.lang | — основний функціонал та базові типи мови Java |
java.util | — Включає в себе багато допоміжних класів для роботи зі структурами даних, математичними функціями. А також для генерації випадкових чисел та роботи з датою та часом |
java.io | — забезпечує роботу з файлами |
java.math | — операції зі збільшеною точністю |
java.nio | — [en] для Java для високопродуктивних операцій введення-виведення |
java.net | — мережеві операції, сокети, … |
java.security | — генерація ключів, шифрування та дешифрування |
java.sql | — Java Database Connectivity (JDBC) для доступу до баз даних |
java.awt | — основна ієрархія пакетів для первинних компонентів графічного інтерфейсу |
java.text | — Забезпечує класи та інтерфейси для обробки тексту, дат, чисел і повідомлень, незалежно від звичайних мов |
java.rmi | — Надає пакет RMI. |
java.time | — Головний API для дати, часу,. . . |
java.beans | — Пакет java.beans містить класи та інтерфейси, пов'язані з компонентами JavaBeans. |
java.Applet | — Цей пакет надає класи та методи для створення та спілкування з аплетами. |
Пакет java.lang доступний без імпорту.
Модулі
В Java 9, [en] — вид збірки пакетів, створений в рамках проекту Jigsaw; модулі раніше називалися «суперпакетами» і спочатку планувалися для Java 7.
Модулі описують свої залежності в декларації модуля, яка розміщена у файлі з ім'ям module-info.java в корені ієрархії вихідних файлів модуля. JDK перевіряє їх як під час компіляції, так і під час виконання. Сам JDK був введений в Java 9.
Див. також
- Java SE
- [en]
Примітки
- Джеймс Гослінг, Біл Джой, Гай Стіл, Гілад Брача, специфікація мови Java, третє видання
- . Docs.oracle.com. Архів оригіналу за 8 грудня 2018. Процитовано 15 вересня 2013.
- . Архів оригіналу за 22 лютого 2019. Процитовано 26 березня 2019.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 9 березня 2019. Процитовано 26 березня 2019.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 26 березня 2019. Процитовано 26 березня 2019.
- . Архів оригіналу за 11 січня 2019. Процитовано 26 березня 2019.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Oracle Corporation. 23 жовтня 2015. Архів оригіналу за 8 грудня 2015. Процитовано 29 листопада 2015.
Посилання
- Java SE 10 API Javadocs [ 27 квітня 2019 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Java package organizovuye Java klasi u prostorah imen nadayuchi unikalnij prostir imen dlya kozhnogo klasu yakij vin mistit Klasi v odnomu paketi mozhut otrimuvati dostup do privatnih i zahishenih chleniv paketu Java package mozhut zberigatisya u stislih fajlah z rozshirennyam JAR V osnovnomu paket mozhe mistiti taki tipi danih klasi interfejsi pererahuvannya ta anotaciyi Paket dozvolyaye rozrobniku grupuvati klasi i interfejsi razom Vsi ci klasi budut pov yazani pevnim chinom vsi voni matimut vidnoshennya do konkretnoyi programi abo budut vikonuvati pevnij nabir zavdan Programisti takozh zazvichaj vikoristovuyut paketi dlya organizaciyi klasiv sho nalezhat do odniyeyi kategoriyi abo dlya zabezpechennya podibnoyi funkcionalnosti Vikoristannya paketivU dzherelnomu fajli Java package do yakogo nalezhat klas abo klasi cogo fajlu zadayetsya zarezervovanim slovom package Ce klyuchove slovo zazvichaj ye pershim U dzherelnomu fajli mozhe buti prisutnya lishe odna deklaraciya paketa package java awt event Dlya vikoristannya klasiv Java package u fajli Java programi zruchno importuvati klasi za dopomogoyu zarezervovanogo slova import Nastupnij ryadok koduimport java awt event importuye vsi klasi z paketa java awt event a cej ryadokimport java awt event ActionEvent importuye z paketa tilki klas ActionEvent Pislya bud yakogo tipu importu klas ActionEvent mozhna vikoristovuvati za dopomogoyu jogo imeni ActionEvent myEvent new ActionEvent Klasi takozh mozhna vikoristovuvati bezposeredno bez importu vikoristovuyuchi povne im ya klasu Napriklad java awt event ActionEvent myEvent new java awt event ActionEvent ne vimagaye poperednogo importuvannya Paket bez nazvi Zauvazhte yaksho deklaraciya paketa vidsutnya to klas potraplyaye v bezimennij paket Klasi v bezimennomu paketi ne mozhut buti importovani yak klasi v bud yakomu inshomu paketi Oficijnij navchalnij posibnik Java radit cogo ne robiti Vzagali kazhuchi bezimennij paket priznachenij lishe dlya nevelikih abo timchasovih program abo dlya najpershih stadij rozrobki programi V inshomu vipadku klasi i interfejsi nalezhat do imenovanih paketiv Zahist dostupu do paketaPublichni chleni ta klasi ye vidimimi vsyudi a privatni chleni vidimi tilki v odnomu klasi Klasi vseredini paketa mozhut otrimati dostup do klasiv i chleniv yaki otrimali modifikator dostupu za zamovchuvannyam private tak samo yak i do chleniv klasu ogoloshenih z modifikatorom dostupu protected Dostup za zamovchuvannyam private zastosovuyetsya koli klas abo chlen ne buli ogolosheni z modifikatorami public protected abo private Na vidminu vid cogo klasi v inshih paketah ne mozhut otrimati dostup do klasiv i chleniv ogoloshenih z dostupom za zamovchuvannyam Prote uchasniki klasu ogolosheni yak protected mozhut buti dostupni z klasiv v odnomu paketi a takozh z klasami v inshih paketah yaki ye pidklasami cih klasiv Stvorennya fajliv JARFajli JAR stvoryuyutsya za dopomogoyu komandnogo ryadka jar Komanda jar cf myPackage jar class stiskaye vsi class fajli v JAR fajl myPackage jar Opciya c vkazuye na stvorennya novogo arhivu Opciya f povidomlyaye jomu pro stvorennya fajlu Nazva fajlu vkazuyetsya pered vmistom fajlu JAR Uzgodzhennya pro imenuvannya paketivPaketi yak pravilo viznachayutsya za dopomogoyu iyerarhichnogo shablonu imenuvannya prichomu deyaki rivni v iyerarhiyi rozdileni periodami Vimovlyayetsya krapka Hocha paketi nizhchih v iyerarhiyi imen chasto nazivayut pidpaketami vidpovidnih paketiv vishe v iyerarhiyi Specifikaciya movi Java vstanovlyuye pravila imenuvannya paketiv shob uniknuti mozhlivosti dvoh opublikovanih paketiv z odnakovoyu nazvoyu Uzgodzhennya pro najmenuvannya opisuye yak stvoryuvati unikalni nazvi paketiv tak shob paketi yaki shiroko vzhivayutsya mali unikalni prostori imen Ce dozvolyaye legko i avtomatichno vstanovlyuvati i katalogizuvati paketi nezalezhno vid inshih paketiv Zagalom nazva paketa pochinayetsya z imeni domenu verhnogo rivnya organizaciyi a potim domenu organizaciyi a potim bud yakih subdomeniv pererahovanih u zvorotnomu poryadku Organizaciya mozhe potim vibrati pevne im ya dlya svogo paketa Nastupni komponenti imeni paketu zminyuyutsya vidpovidno do vlasnih vnutrishnih pravil organizaciyi Napriklad yaksho organizaciya v Kanadi yaka nazivayetsya MySoft stvoryuye paket dlya roboti z drobovimi chislami imenuvannya paketa ca mysoft fractions vidriznyaye paket drobiv vid inshogo podibnogo paketa stvorenogo inshoyu kompaniyeyu Yaksho nimecka kompaniya MySoft takozh stvoryuye paket drobiv vona nazivaye yiyi de mysoft fractions tomu klasi cih dvoh paketiv viznachayutsya v unikalnomu i okremomu prostori imen Vsi domovlenosti shodo viznachennya neodnoznachnosti imen paketiv i pravil yih imenuvannya koli im ya Internet domenu ne mozhe buti bezposeredno vikoristano yak im ya paketa opisani v rozdili 7 7 specifikaciyi movi Java Osnovni paketi v Java SE 8java lang osnovnij funkcional ta bazovi tipi movi Javajava util Vklyuchaye v sebe bagato dopomizhnih klasiv dlya roboti zi strukturami danih matematichnimi funkciyami A takozh dlya generaciyi vipadkovih chisel ta roboti z datoyu ta chasomjava io zabezpechuye robotu z fajlamijava math operaciyi zi zbilshenoyu tochnistyujava nio en dlya Java dlya visokoproduktivnih operacij vvedennya vivedennyajava net merezhevi operaciyi soketi java security generaciya klyuchiv shifruvannya ta deshifruvannyajava sql Java Database Connectivity JDBC dlya dostupu do baz danihjava awt osnovna iyerarhiya paketiv dlya pervinnih komponentiv grafichnogo interfejsujava text Zabezpechuye klasi ta interfejsi dlya obrobki tekstu dat chisel i povidomlen nezalezhno vid zvichajnih movjava rmi Nadaye paket RMI java time Golovnij API dlya dati chasu java beans Paket java beans mistit klasi ta interfejsi pov yazani z komponentami JavaBeans java Applet Cej paket nadaye klasi ta metodi dlya stvorennya ta spilkuvannya z apletami Paket java lang dostupnij bez importu ModuliV Java 9 en vid zbirki paketiv stvorenij v ramkah proektu Jigsaw moduli ranishe nazivalisya superpaketami i spochatku planuvalisya dlya Java 7 Moduli opisuyut svoyi zalezhnosti v deklaraciyi modulya yaka rozmishena u fajli z im yam module info java v koreni iyerarhiyi vihidnih fajliv modulya JDK pereviryaye yih yak pid chas kompilyaciyi tak i pid chas vikonannya Sam JDK buv vvedenij v Java 9 Div takozhJava SE en PrimitkiDzhejms Gosling Bil Dzhoj Gaj Stil Gilad Bracha specifikaciya movi Java tretye vidannya Docs oracle com Arhiv originalu za 8 grudnya 2018 Procitovano 15 veresnya 2013 Arhiv originalu za 22 lyutogo 2019 Procitovano 26 bereznya 2019 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 9 bereznya 2019 Procitovano 26 bereznya 2019 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 26 bereznya 2019 Procitovano 26 bereznya 2019 Arhiv originalu za 11 sichnya 2019 Procitovano 26 bereznya 2019 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Oracle Corporation 23 zhovtnya 2015 Arhiv originalu za 8 grudnya 2015 Procitovano 29 listopada 2015 PosilannyaJava SE 10 API Javadocs 27 kvitnya 2019 u Wayback Machine