Java SE: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Створено шляхом перекладу сторінки «Java Platform, Standard Edition»
Створено шляхом перекладу сторінки «Java Platform, Standard Edition»
Рядок 139:
| PipedInputStream, PipedOutputStream, PipedReader, PipedWriter
|}
Інші стандартні пакети бібліотеки забезпечують реалізацію потоку для інших напрямків, наприклад <code>InputStream</code> повертається <code>java.net</code>. <code>Socket.getInputStream()</code> або Java EE <code>javax.servlet</code>. Клас <code>ServletOutputStream</code> .
 
Обробка та обробка або фільтрація даних потоку даних здійснюється за допомогою [[Фільтр (програмне забезпечення)|фільтрів]] потоку. Класи фільтрів приймають інший об'єкт сумісного потоку як параметр до конструктора і ''прикрашають'' вкладений потік додатковими функціями. Фільтри створюються шляхом розширення одного з класів базового фільтра FilterInputStream, <code>FilterOutputStream</code>, <code>FilterReader</code> або <code>FilterWriter</code>. {{Reflist|30em}}
 
Класи <code>Reader</code> і <code>Writer</code> - це просто байтові потоки з додатковою обробкою на потоці даних для перетворення байтів у символи. Вони використовують [[кодування символів]] за замовчуванням для платформи, яка в J2SE 5.0 представлена <code>Charset</code> [[Кодування символів|символів,]] повернутим <code>java.nio.charset</code>. <code>Charset.defaultCharset()</code> Клас <code>InputStreamReader</code> перетворює <code>InputStream</code> в <code>Reader</code> а клас OutputStreamWriter перетворює <code>OutputStream</code> в <code>Writer</code> . Обидва ці класи мають конструктори, які підтримують визначення кодування символів для використання. Якщо не вказано кодування, програма використовує кодування за умовчанням для платформи.
{| class="wikitable"
! Операція
! Ім'я
! Типи потоків
! In out
! Класи
|-
| [[Буфер (інформатика)|буферизація]]
| <code>Buffered</code>
| <code>byte</code>, <code>char</code>
| in out
| BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
|-
| "відсунути" останнє значення читання
| <code>Pushback</code>
| <code>byte</code>, <code>char</code>
| в
| PushbackInputStream, PushbackReader
|-
| читання / запис примітивних типів
| <code>Data</code>
| <code>byte</code>
| in out
| DataInputStream, DataOutputStream
|-
| [[Серіалізація|серіалізація об'єктів]] (об'єкти читання / запису)
| <code>Object</code>
| байт
| in out
| ObjectInputStream, ObjectOutputStream
|}
 
==== Випадковий доступ ====
Клас <code>RandomAccessFile</code> підтримує читання і записування файлів у ''випадковому доступі'' . Клас використовує ''покажчик файлу,'' який представляє зміщення байта у файлі для наступної операції читання або запису. Покажчик файлу переміщується неявно читанням або записом і явно викликом методів <code>seek(long)</code> або <code>skipBytes(int)</code> . Поточна позиція покажчика файлу повертається методом <code>getFilePointer()</code> .
 
==== Файлова система ====
Клас <code>File</code> являє собою [[файл]] або [[Шлях файлу|шлях]] до [[Каталог (файлова система)|каталогу]] у [[Файлова система|файловій системі]] . Об'єкти <code>File</code> підтримують створення, видалення і перейменування файлів і каталогів, а також маніпуляції з [[Атрибут файлу|атрибутами файлів,]] наприклад, ''тільки для читання'' і ''останньої модифікації'' . Об'єкти <code>File</code> які представляють каталоги, можна використовувати для отримання списку всіх файлів і каталогів, що містяться.
 
Клас <code>FileDescriptor</code> - це [[Файловий дескриптор|дескриптор файлу,]] який представляє джерело або поглинач (призначення) байтів. Зазвичай це файл, але також може бути [[Консоль (інформатика)|консольним]] або [[Сокет|мережевим сокетом]] . Об'єкти <code>FileDescriptor</code> використовуються для створення потоків <code>File</code> . Вони отримуються з потоків <code>File</code> і сокетів <code>java.net</code> і сокетів дейтаграм.
 
=== java.nio ===
У J2SE 1.4, пакет <code>java.nio</code> (NIO або неблокуючий ввід / вивід) був доданий для підтримки вводу-виводу зі списком пам'яті, що полегшує операції [[Ввід/вивід|введення-виведення]] ближче до основного обладнання, іноді значно краще. Пакет <code>java.nio</code> забезпечує підтримку ряду типів буферів. Підпакет <code>java.nio.charset</code> підтримує різні [[кодування символів]] для символьних даних. Підпакет <code>java.nio.channels</code> забезпечує підтримку ''каналів,'' які представляють з'єднання з об'єктами, які здатні виконувати операції вводу-виводу, такі як файли і сокети. Пакет <code>java.nio.channels</code> також надає підтримку дрібного блокування файлів.
 
=== java.math ===
java.math пакет підтримує [[Довга арифметика|multiprecision арифметику]] ( в тому числі модульних арифметичних операцій) і забезпечує multiprecision простого числа генераторів, що використовуються для криптографічного генерації ключів. Основними класами пакета є:
 
* <code>BigDecimal</code> - забезпечує довільну точність підписаних десяткових чисел. <code>BigDecimal</code> надає користувачеві можливість керувати поведінкою округлення за допомогою <code>RoundingMode</code> .
* <code>BigInteger</code> - забезпечує цілі числа довільної точності. Операції на <code>BigInteger</code> не [[Програмне переповнення|переповнюються]] або втрачають точність. На додаток до стандартних арифметичних операцій, він забезпечує [[Модульна арифметика|модульну арифметику]], розрахунок [[Найбільший спільний дільник|GCD]], [[Тест простоти|тестування простоти]], генерацію [[Просте число|простого числа]], маніпуляцію [[Біт|бітами]] та інші різноманітні операції.
* <code>MathContext</code> - інкапсулює параметри контексту, які описують певні правила для числових операторів.
* <code>RoundingMode</code> - перерахування, що забезпечує вісім варіантів округлення.
 
=== java.net ===
Пакет java.net надає спеціальні процедури java.net виводу для мереж, що дозволяють [[HTTP|HTTP-]] запити, а також інші спільні операції.
 
=== java.text ===
Пакет java.text впроваджує java.text розбору для рядків і підтримує різні мови, що читаються людиною, і синтаксичний аналіз.
 
=== java.util ===
[[Структура даних|Структури даних,]] які об'єднують об'єкти, є осередком пакета <code>java.util</code> . До пакету входить [[Collections|API Collections]], організована ієрархія структури даних, на яку сильно впливають міркування [[Шаблони проектування програмного забезпечення|моделей проектування]] .
 
== Спеціальні пакети ==
 
=== java.applet ===
Створений для підтримки створення Java-аплетів, пакет java.applet дозволяє програмам завантажуватися через мережу і запускатися в java.applet пісочниці. Обмеження безпеки легко накладаються на пісочницю. Розробник, наприклад, може застосувати [[Електронний цифровий підпис|цифровий підпис]] до аплету, тим самим позначаючи його як безпечний. Це дозволяє користувачеві надавати дозвіл аплету на виконання обмежених операцій (наприклад, доступ до локальних жорстких дисків), а також видаляє деякі або всі обмеження пісочниці. Цифрові сертифікати видаються органами [[Акредитований центр сертифікації ключів|сертифікації]] .
 
=== java.beans ===
У пакет <code>java.beans</code> входять різні класи для розробки та маніпулювання компонентами, повторно використовувані компоненти, визначені [[JavaBeans|архітектурою JavaBeans]] . Архітектура забезпечує механізми маніпулювання властивостями компонентів і подій стрільби, коли ці властивості змінюються.
 
API в <code>java.beans</code> призначені для використання засобом редагування bean, в якому beans можна комбінувати, налаштовувати і маніпулювати. Один тип редактора bean - це дизайнер [[Графічний інтерфейс користувача|GUI]] в [[Інтегроване середовище розробки|інтегрованому середовищі розробки]] .
 
=== java.awt ===
Інструментарій <code>java.awt</code> або Abstract Window Toolkit надає доступ до базового набору [[Графічний інтерфейс користувача|графічних]] елементів, що базуються на базовому наборі віджетів вітчизняної платформи, ядрі підсистеми подій графічного інтерфейсу і інтерфейсі між власною системою вікна та програмою Java. Вона також надає кілька базових менеджерів компонування, пакет передачі [[Пристрій введення|даних]] для використання з [[Буфер обміну|буфером обміну]] і [[Drag-and-drop|перетягування]], інтерфейс для [[Пристрій введення|пристроїв введення,]] таких як [[Комп'ютерна миша|миші]] та [[Комп'ютерна клавіатура|клавіатури]], а також доступ до системного лотка на підтримуючих системах. Цей пакет разом з <code>javax.swing</code> містить найбільшу кількість переліків (усього 7) у JDK 6.
 
=== java.rmi ===
Пакет <code>java.rmi</code> забезпечує [[RMI|виклик віддалених методів Java]] для підтримки [[Виклик віддалених процедур|віддалених викликів процедур]] між двома додатками java, запущеними в різних [[Віртуальна машина Java|JVM]] .
 
=== java.security ===
Підтримка безпеки, включаючи алгоритм дайджесту повідомлень, включена в пакет java.security .
 
=== java.sql ===
Реалізація [[Java Database Connectivity|JDBC]] API (використовується для доступу до [[SQL|баз]] [[База даних|даних]] [[SQL]] ) згрупована в пакет java.sql .
 
=== javax.rmi ===
Пакет <code>javax.rmi</code> надає підтримку віддаленого зв'язку між додатками, використовуючи протокол RMI через IIOP. Цей протокол поєднує функції RMI і CORBA.
 
[http://java.sun.com/javase/technologies/core/corba/index.jsp Основні технології Java SE - CORBA / RMI-IIOP]
 
=== javax.swing ===
[[Swing (Java)|Swing]] - це набір процедур, які побудовані на <code>java.awt</code> щоб забезпечити незалежний від платформи набір інструментів . <code>javax.swing</code> використовує підпрограми 2D, щоб відобразити компоненти інтерфейсу користувача замість того, щоб покладатися на базову підтримку графічного інтерфейсу [[Операційна система|операційної системи]] .
 
Цей пакет містить найбільшу кількість класів (всього 133) у JDK 6. Цей пакет разом з <code>java.awt</code> також містить найбільшу кількість переліків (усього 7) у JDK 6. Він підтримує підключаються зовнішній вигляд і відчуває (PLAFs), так що віджети в графічному інтерфейсі можуть імітувати ті з базової системи. Моделі проектування пронизують систему, особливо модифікацію [[Модель-вид-контролер|моделі модельного виду-контролера]], яка розхитує [[Зв'язність (програмування)|зв'язок]] між функцією і зовнішнім виглядом. Одна з непослідовностей полягає в тому, що шрифти (починаючи з J2SE 1.3) малюються базовою системою, а не Java, обмежуючи переносимість тексту. Існують обхідні шляхи, наприклад, використання бітових шрифтів. Загалом, "макети" використовуються і зберігають елементи в межах естетично узгодженого графічного інтерфейсу на різних платформах.
 
=== javax.swing.text.html.parser ===
Пакет <code>javax.swing.text.html.parser</code> надає HTML-синтаксичний аналізатор, javax.swing.text.html.parser помилки, який використовується для написання різних веб-браузерів і веб-ботів.
 
=== javax.xml.bind.annotation ===
Пакет <code>javax.xml.bind.annotation</code> містить найбільшу кількість типів анотацій (всього 30) у JDK 6. Він визначає анотації для налаштування елементів програми Java до відображення XML-схеми.
 
== Пакети OMG ==
 
=== org.omg. CORBA ===
<code>org.omg.</code> Пакет CORBA надає підтримку віддаленого зв'язку між додатками за допомогою протоколу General Inter-ORB і підтримує інші особливості [[CORBA|спільної архітектури брокера запитів об'єктів]] . Те ж, що і [[RMI]] і RMI-IIOP, цей пакет призначений для виклику віддалених методів об'єктів на інших віртуальних машинах (зазвичай через мережу).
 
Цей пакет містить найбільшу кількість класів <code>Exception</code> (всього 45) у JDK 6. З усіх можливостей спілкування CORBA переноситься між різними мовами; однак, з цим приходить більш складність.
 
=== org.omg. PortableInterceptor ===
org.omg. Пакет PortableInterceptor містить найбільшу кількість інтерфейсів (всього 39) в JDK 6. Вона забезпечує механізм реєстрації гаків ORB, через які послуги ORB перехоплюють нормальний потік виконання ORB.
 
== Безпека ==
Було повідомлено про декілька критичних уразливостей безпеки, найостанніші у січні 2013 року. <ref>[http://www.h-online.com/security/news/item/Dangerous-vulnerability-in-latest-Java-version-1781156.html Dangerous vulnerability in latest Java version] The H Security, Jan. 10, 2013</ref> <ref>{{Cite web|url=http://blogs.computerworld.com/malware-and-vulnerabilities/21056/another-critical-java-vulnerability-puts-1-billion-users-risk|title=Another critical Java vulnerability puts 1 billion users at risk|website=[[Computerworld]] Security Blog|date=September 25, 2012|last=Darlene Storm}}</ref> Оповіщення безпеки від Oracle оголошують про критичні для системи безпеки виправлення для Java SE. <ref>{{Cite web|url=http://www.oracle.com/technetwork/topics/security/alerts-086861.html|publisher=Oracle|title=Critical Patch Updates, Security Alerts and Third Party Bulletin}}</ref> {{Reflist|30em}}
 
== зовнішні посилання ==