Платформа Java, стандартная версия
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2018 г. ) |
платформы Java Редакции |
---|
![]() |
|
Java Platform, Standard Edition ( Java SE ) — это вычислительная платформа для разработки и развертывания переносимого кода для настольных и серверных сред. [ 1 ] Java SE ранее была известна как платформа Java 2 Standard Edition ( J2SE ).
Платформа использует язык программирования Java и является частью семейства программных платформ Java . Java SE определяет ряд API-интерфейсов общего назначения , таких как API-интерфейсы Java для библиотеки классов Java , а также включает спецификацию языка Java и спецификацию виртуальной машины Java . [ 2 ] OpenJDK является официальной эталонной реализацией начиная с версии 7. [ 3 ] [ 4 ] [ 5 ]
Номенклатура, стандарты и спецификации
[ редактировать ]Платформа была известна как Java 2 Platform, Standard Edition или J2SE с версии 1.2, пока название не было изменено на Java Platform, Standard Edition или Java SE в версии 1.5. «SE» используется для отличия базовой платформы от платформ Enterprise Edition ( Java EE ) и Micro Edition ( Java ME ). «2» изначально предназначалось для того, чтобы подчеркнуть основные изменения, внесенные в версию 1.2, но было удалено в версии 1.6. Соглашение об именах менялось несколько раз за историю версий Java . Начиная с J2SE 1.4 (Merlin), Java SE разрабатывается в рамках процесса сообщества Java , который создает описания предлагаемых и окончательных спецификаций для платформы Java, называемых запросами спецификации Java (JSR) . [ 6 ] JSR 59 был базовой спецификацией для J2SE 1.4, а JSR 176 определял J2SE 5.0 (Tiger). Java SE 6 (Mustang) была выпущена под номером JSR 270.
Платформа Java Enterprise Edition (Java EE) — это связанная спецификация, включающая все классы Java SE, а также ряд классов, которые более полезны для программ, работающих на серверах , а не на рабочих станциях .
Платформа Java, Micro Edition (Java ME) — это связанная спецификация, предназначенная для предоставления сертифицированного набора API-интерфейсов Java для разработки программного обеспечения для небольших устройств с ограниченными ресурсами, таких как сотовые телефоны , КПК и телеприставки .
Среда выполнения Java (JRE) и пакет разработки Java (JDK) — это фактические файлы, загружаемые и устанавливаемые на компьютер для запуска или разработки программ Java соответственно.
Пакеты общего назначения
[ редактировать ]java.lang
[ редактировать ]Пакет Java java.lang
содержит фундаментальные классы и интерфейсы, тесно связанные с языком и системой времени выполнения . Сюда входят корневые классы, образующие иерархию классов , типы, привязанные к определению языка, базовые исключения , математические функции, многопоточность , функции безопасности, а также некоторая информация о базовой собственной системе. Этот пакет содержит 22 из 32 Error
классы, представленные в JDK 6.
Основные классы и интерфейсы в java.lang
являются:
Object
– класс, который является корнем любой иерархии классов.Enum
– базовый класс для классов перечисления (начиная с J2SE 5.0).Class
– класс, который является корнем системы отражения Java .Throwable
– класс, который является базовым классом иерархии классов исключений.Error
,Exception
, иRuntimeException
– базовые классы для каждого типа исключений.Thread
– класс, который позволяет выполнять операции с потоками.String
– класс для строк и строковых литералов .StringBuffer
иStringBuilder
— классы для выполнения манипуляций со строками (StringBuilder
начиная с J2SE 5.0).Comparable
– интерфейс, который позволяет выполнять общее сравнение и упорядочивание объектов (начиная с J2SE 1.2).Iterable
– интерфейс, позволяющий выполнять общие итерации с использованием расширенногоfor
цикл (начиная с J2SE 5.0).ClassLoader
,Process
,Runtime
,SecurityManager
, иSystem
– классы, которые обеспечивают «системные операции», которые управляют динамической загрузкой классов, созданием внешних процессов , запросами среды хоста, такими как время суток, и соблюдением политик безопасности .Math
иStrictMath
– классы, предоставляющие базовые математические функции, такие как синус , косинус и квадратный корень (StrictMath
начиная с J2SE 1.3).- Примитивные классы-оболочки , инкапсулирующие примитивные типы в виде объектов .
- Базовые классы исключений, создаваемые для языковых и других распространенных исключений.
Занятия в java.lang
автоматически импортируются в каждый исходный файл .
java.lang.ref
[ редактировать ]The java.lang.ref
Пакет предоставляет более гибкие типы ссылок, чем доступные в противном случае, что позволяет ограниченное взаимодействие между приложением и виртуальной машины Java (JVM) сборщиком мусора . Это важный пакет, достаточно важный для языка, чтобы разработчики языка могли дать ему имя, начинающееся с «java.lang», но он в некоторой степени специализированный и не используется многими разработчиками. Этот пакет был добавлен в J2SE 1.2.
Java имеет выразительную систему ссылок и допускает особое поведение при сборке мусора. Обычная ссылка в Java называется «сильной ссылкой». java.lang.ref
Пакет определяет три других типа ссылок — мягкие, слабые и фантомные ссылки. Каждый тип ссылки предназначен для конкретного использования.
- А
SoftReference
может использоваться для реализации кэша . Объект, который недоступен по сильной ссылке (то есть не является строго достижимым), но на который ссылается мягкая ссылка, называется «мягко достижимым». Мягко доступный объект может быть убран сборщиком мусора по усмотрению сборщика мусора. Обычно это означает, что мягко доступные объекты собираются мусором только тогда, когда свободной памяти мало, но опять же, это на усмотрение сборщика мусора. Семантически мягкая ссылка означает: «Сохраняйте этот объект, когда на него больше ничего не ссылается, если только память не требуется». - А
WeakReference
используется для реализации слабых карт. Объект, который не является строго или мягко достижимым, но на который ссылается слабая ссылка, называется « слабо достижимым ». Слабо достижимый объект — это мусор, собранный в следующем цикле сбора. Такое поведение используется в классеjava.util.WeakHashMap
. Слабая карта позволяет программисту помещать в карту пары ключ/значение и не беспокоиться об объектах, занимающих память, когда ключ больше нигде не доступен. Другое возможное применение слабых ссылок — это пул строковых интернов . Семантически слабая ссылка означает «избавиться от этого объекта, когда ничто другое не ссылается на него при следующей сборке мусора». - А
PhantomReference
используется для ссылки на объекты, которые были помечены для сборки мусора и были финализированы , но еще не были очищены. Объект, который не является сильно, мягко или слабо достижимым, но на который ссылается фантомная ссылка, называется «фантомно достижимым». Это обеспечивает более гибкую очистку, чем это возможно при использовании только механизма финализации. Семантически фантомная ссылка означает «этот объект больше не нужен и был завершен при подготовке к сбору».
Каждый из этих ссылочных типов расширяет возможности Reference
класс, который обеспечивает get()
метод для возврата сильной ссылки на референтный объект (или null
если ссылка была очищена или если тип ссылки является фантомным), и clear()
метод очистки ссылки.
The java.lang.ref
также определяет класс ReferenceQueue
, который можно использовать в каждом из обсуждавшихся выше приложений для отслеживания объектов, изменивших тип ссылки. Когда Reference
создается, он дополнительно регистрируется в эталонной очереди. Приложение опрашивает очередь ссылок, чтобы получить ссылки, которые изменили состояние доступности.
java.lang.reflect
[ редактировать ]Отражение — это составная часть Java API, которая позволяет коду Java проверять и «размышлять» над компонентами Java во время выполнения и использовать отраженные члены. Занятия в java.lang.reflect
пакет вместе с java.lang.Class
и java.lang.Package
подходят для таких приложений, как отладчики , интерпретаторы , инспекторы объектов, браузеры классов и службы, такие как сериализация объектов и JavaBeans , которым требуется доступ либо к общедоступным членам целевого объекта (на основе его класса времени выполнения), либо к членам, объявленным данным классом. Этот пакет был добавлен в JDK 1.1.
Отражение используется для создания экземпляров классов и вызова методов с использованием их имен — концепция, позволяющая осуществлять динамическое программирование. Классы, интерфейсы, методы, поля и конструкторы можно обнаружить и использовать во время выполнения. Отражение поддерживается метаданными , которые JVM имеет о программе.
Техники
[ редактировать ]Существуют основные приемы рефлексии:
- Обнаружение. Это включает в себя взятие объекта или класса и обнаружение членов, суперклассов, реализованных интерфейсов, а затем, возможно, использование обнаруженных элементов.
- Использование по имени — предполагает начало с символического имени элемента и использование именованного элемента.
Открытие
[ редактировать ]Обнаружение обычно начинается с объекта и вызова Object.getClass()
метод для получения объекта Class
. Class
объект имеет несколько методов для обнаружения содержимого класса, например:
getMethods()
– возвращает массивMethod
объекты, представляющие все общедоступные методы класса или интерфейсаgetConstructors()
– возвращает массивConstructor
объекты, представляющие все открытые конструкторы классаgetFields()
– возвращает массивField
объекты, представляющие все общедоступные поля класса или интерфейсаgetClasses()
– возвращает массивClass
объекты, представляющие все общедоступные классы и интерфейсы, которые являются членами (например, внутренние классы ) класса или интерфейсаgetSuperclass()
– возвращаетClass
объект, представляющий суперкласс класса или интерфейса (null
возвращается для интерфейсов)getInterfaces()
– возвращает массивClass
объекты, представляющие все интерфейсы, реализованные классом или интерфейсом
Использовать по имени
[ редактировать ]The Class
объект можно получить либо путем открытия, используя литерал класса (например, MyClass.class
) или используя имя класса (например, Class.forName("mypackage.MyClass")
). С Class
объект, член Method
, Constructor
, или Field
объекты можно получить, используя символическое имя члена. Например:
getMethod("methodName", Class...)
– возвращаетMethod
объект, представляющий общедоступный метод с именем «methodName» класса или интерфейса, который принимает параметры, указанные вClass...
параметры.getConstructor(Class...)
– возвращаетConstructor
объект, представляющий общедоступный конструктор класса, который принимает параметры, указанные вClass...
параметры.getField("fieldName")
– возвращаетField
объект, представляющий общедоступное поле с именем «fieldName» класса или интерфейса.
Method
, Constructor
, и Field
объекты могут использоваться для динамического доступа к представленному члену класса. Например:
Field.get(Object)
– возвращаетObject
содержащее значение поля из экземпляра объекта, переданного вget()
. (ЕслиField
объект представляет статическое поле, тогдаObject
параметр игнорируется и может бытьnull
.)Method.invoke(Object, Object...)
– возвращаетObject
содержащий результат вызова метода для экземпляра первогоObject
параметр, переданный вinvoke()
. ОстальныеObject...
параметры передаются в метод. (ЕслиMethod
объект представляет статический метод , тогда первыйObject
параметр игнорируется и может бытьnull
.)Constructor.newInstance(Object...)
– возвращает новоеObject
экземпляр от вызова конструктора.Object...
параметры передаются конструктору. (Обратите внимание, что конструктор без параметров для класса также можно вызвать, вызвавnewInstance()
.)
Массивы и прокси
[ редактировать ]The java.lang.reflect
пакет также предоставляет Array
класс, содержащий статические методы для создания объектов массива и управления ими, а начиная с J2SE 1.3, Proxy
класс, который поддерживает динамическое создание прокси-классов, реализующих указанные интерфейсы.
Осуществление Proxy
класс предоставляется предоставленным объектом, который реализует InvocationHandler
интерфейс. InvocationHandler
's invoke(Object, Method, Object[])
метод вызывается для каждого метода, вызванного для прокси-объекта: первый параметр — это прокси-объект, второй параметр — это Method
объект, представляющий метод интерфейса, реализованный прокси, а третий параметр — это массив параметров, передаваемых методу интерфейса. invoke()
метод возвращает Object
result, содержащий результат, возвращенный в код, вызвавший метод прокси-интерфейса.
java.io
[ редактировать ]The java.io
пакет содержит классы, поддерживающие ввод и вывод . Классы в пакете в основном ориентированы на потоки ; класс для произвольного доступа файлов однако также предусмотрен . Центральными классами пакета являются InputStream
и OutputStream
, которые являются абстрактными базовыми классами для чтения и записи в потоки байтов соответственно. Связанные классы Reader
и Writer
представляют собой абстрактные базовые классы для чтения и записи в потоки символов соответственно. В пакете также есть несколько разных классов для поддержки взаимодействия с файловой системой хоста .
Потоки
[ редактировать ]Классы потока следуют шаблону декоратора , расширяя базовый подкласс для добавления функций к классам потока. Подклассы классов базового потока обычно называются по одному из следующих атрибутов:
- источник/назначение потока данных
- тип данных, записываемых/читаемых из потока
- дополнительная обработка или фильтрация, выполняемая над данными потока
Подклассы потока именуются с использованием шаблона именования. XxxStreamType
где Xxx
это имя, описывающее функцию и StreamType
является одним из InputStream
, OutputStream
, Reader
, или Writer
.
В следующей таблице показаны источники/назначения, поддерживаемые непосредственно java.io
упаковка:
Источник/Назначение | Имя | Типы потоков | Вход/выход | Классы |
---|---|---|---|---|
byte множество ( byte[] ) |
ByteArray |
byte |
вход, выход | ByteArrayInputStream , ByteArrayOutputStream
|
char множество ( char[] ) |
CharArray |
char |
вход, выход | CharArrayReader , CharArrayWriter
|
файл | File |
byte , char |
вход, выход | FileInputStream , FileOutputStream , FileReader , FileWriter
|
нить ( StringBuffer ) |
String |
char |
вход, выход | StringReader , StringWriter
|
нить ( Thread ) |
Piped |
byte , char |
вход, выход | PipedInputStream , PipedOutputStream , PipedReader , PipedWriter
|
Другие пакеты стандартной библиотеки предоставляют реализации потоков для других направлений, например InputStream
возвращенный java.net.Socket.getInputStream()
метод или Java EE javax.servlet.ServletOutputStream
сорт.
Обработка типов данных и обработка или фильтрация потоковых данных выполняются с помощью потоковых фильтров . Все классы фильтров принимают другой совместимый объект потока в качестве параметра конструктора и украшают вложенный поток дополнительными функциями. Фильтры создаются путем расширения одного из базовых классов фильтров. FilterInputStream
, FilterOutputStream
, FilterReader
, или FilterWriter
.
The Reader
и Writer
классы на самом деле представляют собой просто потоки байтов с дополнительной обработкой потока данных для преобразования байтов в символы. Они используют кодировку символов по умолчанию для платформы, которая, начиная с J2SE 5.0, представлена Charset
возвращенный java.nio.charset.Charset.defaultCharset()
статический метод. InputStreamReader
класс преобразует InputStream
к Reader
и OutputStreamWriter
класс преобразует OutputStream
к Writer
. Оба этих класса имеют конструкторы, которые поддерживают указание используемой кодировки символов. Если кодировка не указана, программа использует кодировку по умолчанию для платформы.
В следующей таблице показаны другие процессы и фильтры, которые java.io
пакет напрямую поддерживает. Все эти классы расширяют соответствующие Filter
сорт.
Операция | Имя | Типы потоков | Вход/выход | Классы |
---|---|---|---|---|
буферизация | Buffered |
byte , char |
вход, выход | BufferedInputStream , BufferedOutputStream , BufferedReader , BufferedWriter
|
«отодвинуть назад» последнее прочитанное значение | Pushback |
byte , char |
в | PushbackInputStream , PushbackReader
|
чтение/запись примитивных типов | Data |
byte |
вход, выход | DataInputStream , DataOutputStream
|
сериализация объектов (объекты чтения/записи) | Object |
байт | вход, выход | ObjectInputStream , ObjectOutputStream
|
Произвольный доступ
[ редактировать ]The RandomAccessFile
класс поддерживает с произвольным доступом чтение и запись файлов . Класс использует указатель файла , который представляет смещение в байтах внутри файла для следующей операции чтения или записи. Указатель файла перемещается неявно при чтении или записи и явно при вызове метода. seek(long)
или skipBytes(int)
методы. Текущая позиция указателя файла возвращается функцией getFilePointer()
метод.
Файловая система
[ редактировать ]The File
Класс представляет к файлу или каталогу путь в файловой системе . File
объекты поддерживают создание, удаление и переименование файлов и каталогов, а также манипулирование атрибутами файлов, такими как «только для чтения» и временная метка последнего изменения . File
объекты, представляющие каталоги, можно использовать для получения списка всех содержащихся в них файлов и каталогов.
The FileDescriptor
Класс — это файловый дескриптор , который представляет источник или приемник (назначение) байтов. Обычно это файл, но также может быть консольный или сетевой сокет . FileDescriptor
объекты используются для создания File
потоки. Они получены из File
ручьи и java.net
сокеты и дейтаграммные сокеты.
java.nio
[ редактировать ]В J2SE 1.4 пакет java.nio
(NIO или неблокирующий ввод-вывод) был добавлен для поддержки ввода-вывода с отображением в памяти , что облегчает операции ввода-вывода ближе к базовому оборудованию с иногда значительно большей производительностью. java.nio
пакет обеспечивает поддержку ряда типов буферов. Подпакет java.nio.charset
обеспечивает поддержку различных кодировок символов для символьных данных. Подпакет java.nio.channels
обеспечивает поддержку каналов, которые представляют соединения с объектами, способными выполнять операции ввода-вывода, такими как файлы и сокеты. java.nio.channels
Пакет также обеспечивает поддержку детальной блокировки файлов.
java.math
[ редактировать ]The java.math
Пакет поддерживает арифметику с множественной точностью (включая модульные арифметические операции) и предоставляет генераторы простых чисел с множественной точностью, используемые для генерации криптографических ключей. Основные классы пакета:
BigDecimal
– предоставляет десятичные числа со знаком произвольной точности.BigDecimal
дает пользователю контроль над поведением округления посредствомRoundingMode
.BigInteger
– предоставляет целые числа произвольной точности. Операции надBigInteger
не переполняйте и не теряйте точность. В дополнение к стандартным арифметическим операциям он обеспечивает модульную арифметику , НОД вычисление , проверку простоты , простых чисел генерацию , манипуляции с битами и другие разные операции.MathContext
– инкапсулировать настройки контекста, описывающие определенные правила для числовых операторов.RoundingMode
– перечисление, обеспечивающее восемь вариантов округления.
java.net
[ редактировать ]The java.net
Пакет предоставляет специальные процедуры ввода-вывода для сетей, позволяющие выполнять HTTP- запросы, а также другие распространенные транзакции.
java.текст
[ редактировать ]The java.text
Пакет реализует процедуры синтаксического анализа строк и поддерживает различные удобочитаемые языки и синтаксический анализ с учетом локали.
java.util
[ редактировать ]Структуры данных , объединяющие объекты, находятся в центре внимания. java.util
упаковка. В пакет включен API коллекций — организованная иерархия структур данных, на которую во многом влияют соображения шаблонов проектирования .
Пакеты специального назначения
[ редактировать ]Java.апплет
[ редактировать ]Созданный для поддержки Java-апплетов , создания java.applet
Пакет позволяет загружать приложения по сети и запускать их в защищенной песочнице. Ограничения безопасности легко накладываются на песочницу. Например, разработчик может применить цифровую подпись к апплету , тем самым пометив его как безопасный. Это позволяет пользователю предоставить апплету разрешение на выполнение ограниченных операций (например, доступ к локальному жесткому диску) и снимает некоторые или все ограничения изолированной программной среды. Цифровые сертификаты выдаются центрами сертификации .
java.beans
[ редактировать ]Включено в java.beans
Пакет — это различные классы для разработки и управления bean-компонентами, повторно используемые компоненты, определенные архитектурой JavaBeans . Архитектура предоставляет механизмы для управления свойствами компонентов и запуска событий при изменении этих свойств.
API в java.beans
предназначены для использования инструментом редактирования bean-компонентов, с помощью которого bean-компоненты можно комбинировать, настраивать и манипулировать ими. Одним из типов редактора компонентов является конструктор графического интерфейса в интегрированной среде разработки .
java.aut
[ редактировать ]The java.awt
или Abstract Window Toolkit, обеспечивает доступ к базовому набору виджетов графического пользовательского интерфейса на основе набора виджетов базовой собственной платформы, ядра подсистемы событий графического пользовательского интерфейса и интерфейса между собственной оконной системой и приложением Java. Он также предоставляет несколько базовых менеджеров макетов , пакет передачи данных для использования с буфером обмена и перетаскиванием , интерфейс для устройств ввода, таких как мыши и клавиатуры , а также доступ к панели задач на поддерживающих системах. Этот пакет вместе с javax.swing
содержит наибольшее количество перечислений (всего 7) в JDK 6.
java.rmi
[ редактировать ]The java.rmi
Пакет обеспечивает удаленный вызов методов Java для поддержки удаленных вызовов процедур между двумя Java-приложениями, работающими в разных JVM .
java.security
[ редактировать ]Поддержка безопасности, включая алгоритм дайджеста сообщений, включена в состав java.security
упаковка.
java.sql
[ редактировать ]Реализация JDBC API (используемая для доступа к SQL базам данных ) сгруппирована в java.sql
упаковка.
javax.rmi
[ редактировать ]The javax.rmi
пакет обеспечивал поддержку удаленной связи между приложениями с использованием протокола RMI over IIOP. Этот протокол сочетает в себе функции RMI и CORBA.
Основные технологии Java SE — CORBA/RMI-IIOP
javax.swing
[ редактировать ]Swing — это набор подпрограмм, основанных на java.awt
предоставить независимый от платформы набор инструментов виджетов . javax.swing
использует процедуры 2D-рисования для визуализации компонентов пользовательского интерфейса вместо того, чтобы полагаться на базовую поддержку графического интерфейса операционной системы .
Этот пакет содержит наибольшее количество классов (всего 133) в JDK 6. Этот пакет вместе с java.awt
также содержит наибольшее количество перечислений (всего 7) в JDK 6. Он поддерживает подключаемые внешний вид (PLAF), так что виджеты в графическом интерфейсе могут имитировать виджеты из базовой собственной системы. Шаблоны проектирования пронизывают систему, особенно модификация шаблона модель-представление-контроллер , которая ослабляет связь между функцией и внешним видом. Одно несоответствие заключается в том, что (начиная с J2SE 1.3) шрифты рисуются базовой собственной системой, а не Java, что ограничивает переносимость текста. Существуют обходные пути, такие как использование растровых шрифтов. В общем, используются «макеты», которые сохраняют элементы в эстетически согласованном графическом интерфейсе на разных платформах.
javax.swing.text.html.parser
[ редактировать ]The javax.swing.text.html.parser
Пакет предоставляет устойчивый к ошибкам анализатор HTML, который используется для написания различных веб-браузеров и веб-ботов.
javax.xml.bind.annotation
[ редактировать ]The javax.xml.bind.annotation
Пакет содержал наибольшее количество типов аннотаций (всего 30) в JDK 6. Он определяет аннотации для настройки элементов программы Java для сопоставления схемы XML.
ОМГ пакеты
[ редактировать ]org.omg.CORBA
[ редактировать ]The org.omg.CORBA
Пакет обеспечивает поддержку удаленной связи между приложениями с использованием протокола General Inter-ORB и поддерживает другие функции архитектуры брокера общих запросов объектов . Как и RMI и RMI-IIOP , этот пакет предназначен для удаленного вызова методов объектов на других виртуальных машинах (обычно через сеть).
В этом пакете содержалось наибольшее количество Exception
классы (всего 45) в JDK 6. Из всех коммуникационных возможностей CORBA переносима между различными языками; однако с этим возникает дополнительная сложность.
Эти пакеты устарели в Java 9 и были удалены из Java 11. [ 7 ]
org.omg.PortableInterceptor
[ редактировать ]The org.omg.PortableInterceptor
Пакет содержал наибольшее количество интерфейсов (всего 39) в JDK 6. Он предоставляет механизм регистрации перехватчиков ORB, с помощью которых службы ORB перехватывают нормальный поток выполнения ORB.
Безопасность
[ редактировать ]Сообщалось о нескольких критических уязвимостях безопасности. [ 8 ] [ 9 ] В предупреждениях безопасности от Oracle сообщается о критических исправлениях, связанных с безопасностью, для Java SE. [ 10 ]
Ссылки
[ редактировать ]- ^ «Обзор Java SE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
- ^ «Содержание выпуска Java SE 6» . Корпорация Oracle и/или ее дочерние компании . Проверено 1 января 2013 г.
- ^ Переход на OpenJDK в качестве официальной эталонной реализации Java SE 7.
- ^ Платформа Java, Справочные реализации Standard Edition 7
- ^ «Платформа Java, стандартная версия 8, эталонные реализации» . Архивировано из оригинала 21 ноября 2015 года.
- ^ «Обзор запросов спецификации Java» . Корпорация Oracle и/или ее дочерние компании . Проверено 1 января 2013 г.
- ^ «JEP 320: Удаление модулей Java EE и CORBA» . Openjdk.java.net. 23 мая 2019 г. Проверено 20 марта 2022 г.
- ^ Опасная уязвимость в последней версии Java The H Security, 10 января 2013 г.
- ^ Дарлин Сторм (25 сентября 2012 г.). «Еще одна критическая уязвимость Java подвергает риску 1 миллиард пользователей» . Computerworld Блог по безопасности . Архивировано из оригинала 13 января 2013 года . Проверено 11 января 2013 г.
- ^ «Критические обновления исправлений, предупреждения безопасности и сторонние бюллетени» . Оракул.