Java (программная платформа)
Оригинальный автор(ы) | Джеймс Гослинг , Sun Microsystems |
---|---|
Разработчик(и) | Корпорация Oracle |
Первоначальный выпуск | 23 января 1996 г [1] [2] |
Стабильная версия | 22.0.1 (19 апреля 2024 г [±] 21.0.0 LTS (19 сентября 2023 г ) [±] | )
Написано в | Java , C++ , C , язык ассемблера [5] |
Операционная система | Microsoft Windows , Linux , MacOS , [6] и для старых версий: Солярис |
Платформа | x64 , ARMv8 и для старых версий: ARMv7 , IA-32 , SPARC (до Java 14) (Java 8 включает 32-разрядной поддержку версии Windows , хотя Oracle больше не поддерживается бесплатно для коммерческого использования) [6] |
Доступно в | Английский, китайский, французский, немецкий, итальянский, японский, корейский, португальский, испанский, шведский [7] |
Тип | Программная платформа |
Лицензия | Двойная лицензия: Стандартная общественная лицензия GNU версии 2 с исключением пути к классам, [8] и собственная лицензия. [9] |
Веб-сайт |
Java — это набор компьютерного программного обеспечения и спецификаций, который обеспечивает программную платформу для разработки прикладного программного обеспечения и его развертывания в кроссплатформенной вычислительной среде. Java используется в самых разных вычислительных платформах: от встроенных устройств и мобильных телефонов до корпоративных серверов и суперкомпьютеров . Java-апплеты , которые менее распространены, чем автономные приложения Java, обычно запускались в безопасных изолированных средах, чтобы обеспечить многие функции собственных приложений за счет внедрения в HTML- страницы.
Написание на языке программирования Java — это основной способ создания кода, который будет развернут в виде байт-кода на виртуальной машине Java (JVM); байт-кода компиляторы также доступны для других языков, включая Ada , JavaScript , Kotlin (предпочитаемый язык Google для Android), Python и Ruby . Кроме того, несколько языков были разработаны для встроенной работы в JVM, включая Clojure , Groovy и Scala . Синтаксис Java во многом заимствован из C и C++ , но объектно-ориентированные функции созданы по образцу Smalltalk и Objective-C . [10] Java избегает некоторых низкоуровневых конструкций, таких как указатели , и имеет очень простую модель памяти , в которой объекты размещаются в куче (в то время как некоторые реализации, например все, которые в настоящее время поддерживаются Oracle, могут вместо этого использовать оптимизацию escape-анализа для выделения в стеке ) и все переменные. типов объектов являются ссылками . Управление памятью осуществляется посредством встроенной автоматической сборки мусора , выполняемой JVM.
Последняя версия
[ редактировать ]Последней версией является Java 22, выпущенная в марте 2024 года, а последней версией с долгосрочной поддержкой (LTS) является Java 21, выпущенная в сентябре 2023 года, которая является одной из немногих версий LTS, которые все еще поддерживаются, вплоть до Java 8 LTS. Как платформа с открытым исходным кодом, Java имеет множество дистрибьюторов, включая Amazon , IBM , Azul Systems и AdoptOpenJDK . Дистрибутивы включают Amazon Corretto, Zulu, AdoptOpenJDK и Liberica. Что касается Oracle, то он распространяет Java 8, а также предоставляет доступ, например, к Java 11, которые в настоящее время также поддерживают версии LTS. Oracle (и другие) «настоятельно рекомендуют удалить более старые версии Java», чем Java 8, [11] из-за серьезных рисков из-за нерешенных проблем безопасности. [12] [13] [14] Поскольку Java 9 (а также версии 10, 12–16 и 18–20) больше не поддерживаются, Oracle советует своим пользователям «немедленно перейти» на поддерживаемую версию. Java 8 LTS , бесплатное для коммерческого использования Oracle выпустила последнее общедоступное обновление для устаревшей версии , в январе 2019 года и продолжит поддерживать Java 8 с помощью общедоступных обновлений для личного использования в течение неопределенного времени. Расширенная поддержка Oracle Java 6 закончилась в декабре 2018 года. [15]
Платформа
[ редактировать ]Платформа Java представляет собой набор программ, упрощающих разработку и запуск программ, написанных на языке программирования Java . Платформа Java включает в себя механизм выполнения (называемый виртуальной машиной ), компилятор и набор библиотек ; также могут быть дополнительные серверы и альтернативные библиотеки, которые зависят от требований. Платформы Java были реализованы для широкого спектра аппаратного обеспечения и операционных систем с целью обеспечить идентичную работу программ Java на всех из них.
Платформа Java состоит из нескольких программ, каждая из которых предоставляет часть своих общих возможностей. Например, компилятор Java , преобразующий исходный код Java в байт-код Java (промежуточный язык для JVM), предоставляется как часть Java Development Kit (JDK). Среда выполнения Java (JRE), дополняя JVM JIT -компилятором , на лету преобразует промежуточный байт-код в собственный машинный код. Платформа Java также включает обширный набор библиотек.
Основными компонентами платформы являются компилятор языка Java, библиотеки и среда выполнения, в которой исполняется промежуточный байт-код Java в соответствии с правилами, изложенными в спецификации виртуальной машины.
Домены приложений
[ редактировать ]Различные платформы ориентированы на разные классы устройств и домены приложений :
- Java Card : технология, позволяющая небольшие Java-приложения ( апплеты безопасно запускать ) на смарт-картах и аналогичных устройствах с небольшим объемом памяти.
- Java ME (Micro Edition): определяет несколько различных наборов библиотек (известных как профили) для устройств с ограниченной емкостью памяти, дисплея и мощности. Его часто используют для разработки приложений для мобильных устройств, КПК, ТВ -приставок и принтеров.
- Java SE (Standard Edition): для общего использования на настольных ПК, серверах и аналогичных устройствах.
- Jakarta EE (Enterprise Edition): Java SE плюс различные API, полезные для многоуровневых клиент-серверных корпоративных приложений .
Ява SE
[ редактировать ]Платформа Java Standard Edition (Java SE) — это вычислительная платформа для разработки и развертывания переносимого кода для настольных и серверных сред. [16] Java SE ранее была известна как платформа Java 2 Standard Edition (J2SE).
Платформа использует язык программирования Java и является частью семейства программных платформ Java. Java SE определяет ряд API-интерфейсов общего назначения , таких как API-интерфейсы Java для библиотеки классов Java , а также включает спецификацию языка Java и спецификацию виртуальной машины Java . [17] OpenJDK является официальной эталонной реализацией начиная с версии 7. [18] [19] [20]Джакарта, EE
[ редактировать ]виртуальная машина Java
[ редактировать ]Сердцем платформы Java является «виртуальная машина», выполняющая программы с байт-кодом Java . Этот байт-код одинаков независимо от того, на каком оборудовании или в операционной системе работает программа. Однако в новых версиях, например для Java 10 (и более ранних), внесены небольшие изменения, а это означает, что байт-код, как правило, совместим только с прямой совместимостью . имеется JIT-компилятор (Just In Time) В виртуальной машине Java или JVM . JIT-компилятор преобразует байт-код Java в собственные инструкции процессора во время выполнения и кэширует собственный код в памяти во время выполнения.
Использование байт-кода в качестве промежуточного языка позволяет программам Java работать на любой платформе, где есть виртуальная машина. Использование JIT-компилятора означает, что приложения Java после небольшой задержки во время загрузки и после того, как они «разогрелись», полностью или частично скомпилированные JIT, имеют тенденцию работать примерно так же быстро, как собственные программы. [23] [24] [25] Начиная с версии JRE 1.2, реализация Sun JVM включает в себя JIT-компилятор вместо интерпретатора.
Хотя программы Java являются кросс-платформенными или независимыми от платформы, код виртуальных машин Java (JVM), которые выполняют эти программы, таковым не является. Каждая поддерживаемая операционная платформа имеет собственную JVM.
Комплект разработки Java
[ редактировать ]Java Development Kit (JDK) — это дистрибутив Java технологии корпорации Oracle . Он реализует спецификацию языка Java (JLS) и спецификацию виртуальной машины Java (JVMS), а также предоставляет стандартную версию (SE) интерфейса прикладного программирования Java (API). Это производная от OpenJDK, управляемого сообществом , которым управляет Oracle. [26] Он предоставляет программное обеспечение для работы с Java-приложениями. Примерами включенного программного обеспечения являются виртуальная машина Java, компилятор, инструменты мониторинга производительности, отладчик и другие утилиты, которые Oracle считает полезными для программистов Java.
Oracle выпускает текущую версию программного обеспечения в соответствии с лицензией Oracle No-Fee Rules and Conditions (NFTC). Oracle выпускает двоичные файлы для архитектуры x86-64 для операционных систем на базе Windows, macOS и Linux, а также для архитектуры aarch64 для macOS и Linux. Предыдущие версии поддерживали операционную систему Oracle Solaris и архитектуру SPARC .
Основная реализация JVMS от Oracle известна как HotSpot (виртуальная машина) .Среда выполнения Java
[ редактировать ]Java Runtime Environment (JRE), выпущенная Oracle, представляет собой свободно доступный дистрибутив программного обеспечения, содержащий автономную JVM (HotSpot), стандартную библиотеку Java ( Библиотека классов Java ), инструмент настройки и — до прекращения ее поддержки в JDK 9 — плагин для браузера. Это наиболее распространенная среда Java, устанавливаемая на персональные компьютеры ноутбука и настольного компьютера в форм-факторе . Мобильные телефоны , в том числе функциональные телефоны , и первые смартфоны , поставляемые с JVM, скорее всего, будут включать JVM, предназначенную для запуска приложений, предназначенных для Micro Edition платформы Java. Между тем, большинство современных смартфонов, планшетных компьютеров и других портативных ПК , на которых работают приложения Java, скорее всего, будут делать это за счет поддержки операционной системы Android , которая включает в себя виртуальную машину с открытым исходным кодом, несовместимую со спецификацией JVM. (Вместо этого инструменты разработки Google для Android используют программы Java в качестве входного и выходного байт-кода Dalvik , который является собственным форматом ввода для виртуальной машины на устройствах Android.)Последняя версия JRE с обновлением критического пути с соглашением Oracle BCL. [27] был 8u201, а последняя версия обновления набора исправлений с той же лицензией была 8u202. [28] [29] Последней реализацией Oracle JRE, независимо от схемы лицензирования, была версия 9.0.4. [30] Начиная с Java Platform SE 9, вся платформа также была сгруппирована по модулям . [31] Модульность реализаций Java SE позволяет разработчикам объединять свои приложения со всеми используемыми ими модулями, вместо того, чтобы полагаться исключительно на наличие подходящей реализации Java SE на пользовательском устройстве. [32] [33] [34] [35]
Библиотеки классов
[ редактировать ]В большинстве современных операционных систем (ОС) предусмотрен большой объем многократно используемого кода, упрощающий работу программиста. Этот код обычно предоставляется в виде набора динамически загружаемых библиотек , которые приложения могут вызывать во время выполнения. Поскольку платформа Java не зависит от какой-либо конкретной операционной системы, приложения не могут полагаться ни на одну из ранее существовавших библиотек ОС. Вместо этого платформа Java предоставляет полный набор собственных стандартных библиотек классов, содержащих многие из тех же повторно используемых функций, которые обычно встречаются в современных операционных системах. Большая часть системной библиотеки также написана на Java. Например, библиотека Swing рисует пользовательский интерфейс и сама обрабатывает события, устраняя множество тонких различий между тем, как разные платформы обрабатывают компоненты.
Библиотеки классов Java служат трем целям на платформе Java. Во-первых, как и другие стандартные библиотеки кода, библиотеки Java предоставляют программисту хорошо известный набор функций для выполнения общих задач, таких как ведение списков элементов или выполнение сложного анализа строк. Во-вторых, библиотеки классов предоставляют абстрактный интерфейс для задач, которые обычно сильно зависят от оборудования и операционной системы. Такие задачи, как доступ к сети и доступ к файлам, часто тесно переплетаются с различными реализациями каждой платформы. java.net
и java.io
библиотеки реализуют уровень абстракции в собственном коде ОС, а затем предоставляют стандартный интерфейс для приложений Java для выполнения этих задач. Наконец, когда какая-то базовая платформа не поддерживает все функции, ожидаемые Java-приложением, библиотеки классов работают над корректной обработкой отсутствующих компонентов либо путем эмуляции, предоставляя замену, либо, по крайней мере, предоставляя последовательный способ проверки наличия компонентов. определенной особенности.
Языки
[ редактировать ]Само слово «Java» обычно относится к языку программирования Java, который был разработан для использования с платформой Java. Языки программирования обычно выходят за рамки термина «платформа», хотя язык программирования Java числился в качестве основной части платформы Java до Java 7. Поэтому язык и среда выполнения обычно считались одной единицей. Однако в спецификации Java 7 была предпринята попытка более четко рассматривать язык Java и виртуальную машину Java как отдельные объекты, чтобы они больше не считались единым целым. [36]
Третьи стороны выпустили множество компиляторов и интерпретаторов , предназначенных для JVM. Некоторые из них предназначены для существующих языков, а другие — для расширений языка Java. К ним относятся:
- BeanShell — легкий язык сценариев для Java. [37] (см. также JShell )
- Ceylon - объектно-ориентированный, строго и статически типизированный язык программирования с упором на неизменяемость (больше не поддерживается с 2023 года).
- Clojure — современный, динамичный и функциональный диалект языка программирования Lisp на платформе Java.
- Gosu — язык программирования общего назначения на основе JVM, выпущенный по лицензии Apache 2.0.
- Groovy — полностью совместимый с Java, совместимый с синтаксисом Java, статический и динамический язык с функциями Python, Ruby, Perl и Smalltalk.
- JRuby — Ruby интерпретатор
- Jython — Python интерпретатор
- Kotlin — язык программирования для JVM (и не-JVM, например, для настольных компьютеров и iOS) с полной совместимостью с Java (предпочитаемый язык Google для Android, его JVM, вместо Java, который там также все еще поддерживается и ранее продвигался)
- Rhino — JavaScript интерпретатор
- Scala - многопарадигмальный язык программирования с несовместимым с Java синтаксисом, разработанный как «лучшая Java».
Похожие платформы
[ редактировать ]Успех Java и ее концепции «написать один раз и запускать где угодно » привел к другим аналогичным усилиям, в частности к .NET Framework , появившейся с 2002 года и вобравшей в себя многие успешные аспекты Java. .NET был создан с нуля для поддержки нескольких языков программирования, в то время как платформа Java изначально была создана для поддержки только языка Java, хотя с тех пор для JVM было создано множество других языков. Как и Java, языки .NET компилируются в байтовый код и выполняются средой Common Language Runtime (CLR), которая по назначению аналогична JVM. Как и JVM, CLR обеспечивает управление памятью посредством автоматической сборки мусора и позволяет запускать байт-код .NET в нескольких операционных системах.
.NET включал в себя Java-подобный язык, сначала названный J++ , а затем Visual J#, который был несовместим со спецификацией Java. Его выпуск был прекращен в 2007 году, а поддержка закончилась в 2015 году.
Производительность
[ редактировать ]Спецификация JVM дает разработчикам большую свободу действий в отношении деталей реализации. Начиная с Java 1.3, JRE от Oracle содержит JVM под названием HotSpot. Он был разработан как высокопроизводительная JVM.
Чтобы ускорить выполнение кода, HotSpot использует своевременную компиляцию. Чтобы ускорить выделение объектов и сбор мусора, HotSpot использует кучу поколений.
Куча поколений
[ редактировать ]Куча виртуальной машины Java — это область памяти, используемая JVM для динамического распределения памяти . [38]
В HotSpot куча разделена на поколения :
- Молодое поколение недолговечные предметы и тут же убирает мусор. хранит созданные
- Объекты, которые сохраняются дольше, перемещаются в старое поколение (также называемое постоянным поколением ). Эта память разделена на (два) пространства Survivors, где хранятся объекты, пережившие первую и следующую сборку мусора.
Постоянное поколение (или permgen ) использовалось для определений классов и связанных метаданных до Java 8. Постоянное поколение не было частью кучи. [39] [40] Постоянное поколение было удалено из Java 8. [41]
Первоначально не было постоянной генерации, и объекты и классы хранились вместе в одной области. Но поскольку выгрузка классов происходит гораздо реже, чем сбор объектов, перемещение структур классов в определенную область позволило значительно повысить производительность. [39]
Безопасность
[ редактировать ]Java JRE установлена на большом количестве компьютеров. Поэтому конечные пользователи с устаревшей версией JRE уязвимы для многих известных атак. Это привело к широко распространенному мнению, что Java по своей сути небезопасна. [42] Начиная с Java 1.7, Oracle JRE для Windows включает функцию автоматического обновления.
До прекращения поддержки подключаемого модуля браузера Java на любой веб-странице потенциально мог быть запущен Java-апплет, который обеспечивал легкодоступную поверхность атаки для вредоносных веб-сайтов. В 2013 году «Лаборатория Касперского» сообщила, что компьютерные преступники предпочитают использовать плагин Java. Эксплойты Java включены во многие пакеты эксплойтов, которые хакеры развертывают на взломанных веб-сайтах. [43] Java-апплеты были удалены в версии Java 11, выпущенной 25 сентября 2018 г.
Java-версии
[ редактировать ]Ява версия | Год | Изменения |
---|---|---|
17 | 2021 | Версия долгосрочной поддержки (LTS) имеет несколько улучшений, обеспечивает сопоставление шаблонов для операторов переключения и запечатанных классов. |
16 | 2021 | Введены классы записей , сопоставление с образцом и запечатанные классы для расширенных возможностей моделирования данных. |
15 | 2020 | Введены текстовые блоки , запечатанные классы в качестве функций предварительного просмотра, улучшена обработка строк и классов. |
14 | 2020 | Введены новые функции классов записи и сопоставления шаблонов для экземпляров в качестве функций предварительного просмотра. |
13 | 2019 | Включены улучшения, текстовые блоки , повторная реализация устаревшего API Socket. |
12 | 2019 | Представлены выражения переключения , новый Shenandoah. сборщик мусора |
11 | 2018 | В выпуске LTS представлен новый HTTP-клиент , удалены модули Java EE и CORBA. |
10 | 2018 | Представлен вывод типа локальной переменной (var), позволяющий объявлять локальные переменные без указания типа. |
9 | 2017 | Представлена система модулей платформы Java (JPMS) для модульной разработки приложений, JShell. интерактивный Java REPL |
8 | 2014 | Основной выпуск: представлены лямбда-выражения , новый API даты и времени для повышения производительности. |
7 | 2011 | Представлены try-with-resources , Switch on String , Diamond Operation , расширена обработка исключений, новая библиотека файлового ввода-вывода (NIO.2). |
6 | 2006 | Представлена поддержка языка сценариев (JSR 223), улучшения веб-служб , предоставлен JDBC 4.0 с поддержкой SQL XML. |
5 | 2004 | Значительный выпуск, включая Generics , Enhanced for Loop , Autoboxing/Unboxing , Static Import , Varargs , Enumerations , Annotations. |
4 | 2002 | Представлены регулярные выражения , цепочка исключений , новый набор API-интерфейсов ввода-вывода под названием NIO (новый ввод-вывод), новый API-интерфейс ведения журнала. |
3 | 2000 | Включена новая Sun JVM под названием HotSpot , представлен интерфейс именования и каталогов Java (JNDI), архитектура отладчика платформы Java (JPDA). |
2 | 1998 | Представлены Collections Framework , строковая карта памяти Java для констант , JIT-компилятор и Swing API для графических интерфейсов. |
1.1 | 1997 | Представлены внутренние классы , Reflection , Java Beans , JDBC API для доступа к базе данных. |
1.0 | 1996 | Первая версия языка программирования Java представила объектно-ориентированное программирование и байт-код на Java, что сделало Java кроссплатформенным. |
История
[ редактировать ]Платформа и язык Java начались как внутренний проект Sun Microsystems в декабре 1990 года и стали альтернативой языкам программирования C++/ C . Инженер Патрик Нотон все больше разочаровывался в состоянии интерфейсов и инструментов прикладного программирования (API) C++ и C компании Sun, а также в том, как NeWS организация реализовала проект . Нотон сообщил Скотту МакНили о своем плане покинуть Sun и перейти в NeXT ; Макнили попросил его притвориться Богом и отправить ему электронное письмо с объяснением, как исправить ситуацию в компании. Нотон предполагал создать небольшую команду, которая могла бы работать автономно, без бюрократии, которая тормозила другие проекты Sun. Макнили переслал сообщение другим важным людям в Sun, и проект «Стелс» начался. [44]
Проект «Стелс» вскоре был переименован в « Зеленый проект» , и к Нотону присоединились Джеймс Гослинг и Майк Шеридан. Вместе с другими инженерами они начали работу в небольшом офисе на Сэнд-Хилл-роуд в Менло-Парке, Калифорния . Они стремились разработать новую технологию программирования интеллектуальных устройств следующего поколения, которая, как ожидала Sun, откроет новые большие возможности. [45]
Первоначально команда рассматривала возможность использования C++, но отказалась от этого по нескольким причинам. Поскольку они разрабатывали встраиваемую систему с ограниченными ресурсами, они решили, что C++ требует слишком много памяти и что ее сложность приводит к ошибкам разработчиков. Отсутствие в языке сборки мусора означало, что программистам приходилось вручную управлять системной памятью — сложная задача, подверженная ошибкам. Команду также беспокоило отсутствие в языке C++ переносимых средств безопасности, распределенного программирования и многопоточности . Наконец, им нужна была платформа, которую можно было бы легко портировать на все типы устройств.
Билл Джой задумал новый язык, сочетающий Mesa и C. В статье под названием «Далее » он предложил компании Sun, чтобы ее инженеры создали объектно-ориентированную среду на основе C++. Первоначально Гослинг пытался модифицировать и расширить C++ (предложенную разработку, которую он называл «C++++ --»), но вскоре отказался от этого в пользу создания нового языка, который он назвал Oak , в честь дерева, стоявшего сразу за ним. его офис. [46]
К лету 1992 года команда смогла продемонстрировать части новой платформы, включая Green OS , язык Oak, библиотеки и аппаратное обеспечение. Их первая демонстрация, состоявшаяся 3 сентября 1992 года, была посвящена созданию персонального цифрового помощника (КПК) под названием Star7. [1] у которого был графический интерфейс и умный агент по имени «Дюк», который помогал пользователю. В ноябре того же года Green Project был выделен в Firstperson , дочернюю компанию Sun Microsystems, и команда переехала в Пало-Альто, Калифорния . [47] Команда Firstperson была заинтересована в создании высокоинтерактивных устройств, и когда Time Warner опубликовала запрос предложений (RFP) на приставку , Firstperson изменила свою цель и ответила предложением по платформе для приставки. Однако представители кабельной индустрии посчитали, что их платформа дает пользователю слишком много контроля, поэтому Firstperson проиграла свою заявку SGI . Дополнительная сделка с The 3DO Company на приставку также не состоялась. Не имея возможности вызвать интерес в телеиндустрии, компания снова была переведена в Sun.
Java встречается с Интернетом
[ редактировать ]В июне и июле 1994 года – после трех дней мозгового штурма с Джоном Гейджем (директором по науке Sun), Гослингом, Джой, Нотоном, Уэйном Розингом и Эриком Шмидтом – команда переориентировала платформу на Всемирную паутину . Они чувствовали, что с появлением графических веб-браузеров , таких как Mosaic, Интернет может превратиться в ту же высокоинтерактивную среду, которую они представляли для кабельного телевидения. В качестве прототипа Нотон написал небольшой браузер WebRunner (названный в честь фильма « Бегущий по лезвию »), переименованный в HotJava. [45] в 1995 году.
Sun переименовала язык Oak в Java после того, как поиск товарных знаков показал, что Oak Technology использовала название Oak . [48] Чтобы завоевать долю рынка, Sun установила цены на лицензии Java ниже себестоимости. [49] Хотя Java 1.0a стала доступна для загрузки в 1994 году, первая публичная версия Java, Java 1.0a2 с браузером HotJava, вышла 23 мая 1995 года, о чем Гейдж объявил на конференции SunWorld . Сопровождая заявление Гейджа, Марк Андриссен , исполнительный вице-президент Netscape Communications Corporation , неожиданно объявил, что браузеры Netscape будут включать поддержку Java. 9 января 1996 года Sun Microsystems сформировала группу JavaSoft для разработки этой технологии. [50]
Хотя так называемые Java-апплеты для веб-браузеров больше не являются самым популярным использованием Java (например, он чаще используется на стороне сервера) или самым популярным способом запуска кода на стороне клиента (JavaScript стал более популярным), он по-прежнему можно запускать Java (или другие языки JVM, такие как Kotlin) в веб-браузерах, даже после того, как в них была прекращена поддержка JVM, используя, например, TeaVM .
Стандартная общественная лицензия GNU
[ редактировать ]13 ноября 2006 г. компания Sun Microsystems предоставила большую часть своей реализации Java под лицензией GNU General Public License (GPL). [51] [52]
История версий
[ редактировать ]Язык Java претерпел несколько изменений с момента выпуска JDK ( Java Development Kit ) 1.0 23 января 1996 года, а также многочисленных добавлений классов и пакетов в стандартную библиотеку . Начиная с J2SE 1.4, процесс сообщества Java (JCP) определял развитие языка Java. JCP использует запросы спецификации Java (JSR) для предложения и указания дополнений и изменений в платформе Java. Спецификация языка Java (JLS) определяет язык; изменения в JLS управляются согласно JSR 901. [53]
Sun выпустила JDK 1.1 19 февраля 1997 года. Основные дополнения включали обширную переработку модели событий Abstract Window Toolkit (AWT), добавление внутренних классов в язык, JavaBeans и Java Database Connectivity (JDBC).
J2SE 1.2 (8 декабря 1998 г.) — Codename Playground . Этот и последующие выпуски J2SE 5.0 были переименованы в Java 2 , а название версии «J2SE» ( платформа Java 2, Standard Edition ) заменило JDK, чтобы отличать базовую платформу от J2EE ( платформа Java 2, Enterprise Edition ) и J2ME ( платформа Java 2, Enterprise Edition). Микроиздание ). Основные дополнения включали в себя отражение , структуру коллекций , Java IDL ( реализация языка описания интерфейса для взаимодействия CORBA ) и интеграцию графического API Swing в основные классы. , Был выпущен подключаемый модуль Java а JVM Sun была оснащена JIT-компилятором впервые .
J2SE 1.3 (8 мая 2000 г.) — кодовое имя Kestrel . Заметные изменения включали объединение HotSpot JVM (HotSpot JVM был впервые выпущен в апреле 1999 года для J2SE 1.2 JVM), JavaSound , интерфейса именования и каталогов Java (JNDI) и архитектуры отладчика платформы Java (JPDA).
J2SE 1.4 (6 февраля 2002 г.) — кодовое имя «Мерлин» . Это стал первый выпуск платформы Java, разработанной в рамках процесса сообщества Java под названием JSR 59. [54] Основные изменения включали регулярные выражения, смоделированные по образцу Perl , цепочку исключений , интегрированный парсер XML и процессор XSLT ( JAXP ), а также Java Web Start .
J2SE 5.0 (30 сентября 2004 г.) — кодовое имя Tiger . Первоначально он имел номер 1.5, который до сих пор используется в качестве внутреннего номера версии. [55] Разработанный в рамках JSR 176, Tiger добавил несколько важных новых функций языка, включая цикл for-each , дженерики , автобокс и var-args . [56]
Java SE 6 (11 декабря 2006 г.) — кодовое имя Mustang . Он поставлялся в комплекте с менеджером баз данных и облегчает использование языков сценариев с JVM (например, JavaScript с использованием Mozilla от движка Rhino ). В этой версии Sun заменила имя «J2SE» на Java SE и исключила «.0» из номера версии. [57] Другие важные изменения включают поддержку подключаемых аннотаций ( JSR 269 ), множество улучшений графического пользовательского интерфейса , включая улучшения собственного пользовательского интерфейса для поддержки внешнего вида Windows Vista , а также улучшения архитектуры отладчика платформы Java (JPDA) и интерфейса инструментов JVM для лучшего мониторинга и Поиск неисправностей.
Java SE 7 (28 июля 2011 г.) — кодовое имя Dolphin . Эта версия разработана под номером JSR 336. [58] Он добавил множество небольших языковых изменений, включая строки в переключателе, попытку с ресурсами и вывод типа для создания общего экземпляра. JVM была расширена за счет поддержки динамических языков, а библиотека классов была расширена, среди прочего, за счет структуры соединения/разветвления. [59] улучшенная новая библиотека файлового ввода-вывода и поддержка новых сетевых протоколов, таких как SCTP . Обновление Java 7 Update 76 было выпущено в январе 2015 г., срок его действия истекает 14 апреля 2015 г. [60]
В июне 2016 года, после последнего публичного обновления Java 7, [61] Было объявлено об « удаленно эксплуатируемых » ошибках безопасности в Java 6, 7 и 8. [13]
Java SE 8 (18 марта 2014 г.) — кодовое имя Kenai . Заметные изменения включают поддержку на уровне языка лямбда-выражений ( замыканий ) и методов по умолчанию, среду выполнения JavaScript Project Nashorn, новый API даты и времени, вдохновленный Joda Time, и удаление PermGen. Эта версия официально не поддерживается на платформе Windows XP . [62] но известно, что он там работает. Таким образом, в связи с окончанием жизненного цикла Java 7, эта версия рекомендуется для пользователей XP. Ранее для Windows XP SP3 был описан только неофициальный метод установки вручную. Это относится к JDK8, платформе разработки Java, которая также включает в себя полнофункциональную среду выполнения Java . [63] Java 8 поддерживается в Windows Server 2008 R2 SP1, Windows Vista SP2 и Windows 7 SP1, Ubuntu 12.04 LTS и более поздних версиях (и некоторых других ОС). [64]
Java SE 9 и 10 имеют более высокие системные требования, т.е. Windows 7 или Server 2012 (и минимальный сертифицированный веб-браузер повышен до Internet Explorer 11 или других веб-браузеров), а Oracle отказалась от 32-битной совместимости для всех платформ, т.е. только для Oracle " 64 -битные виртуальные машины Java (JVM) сертифицированы». [65]
Java SE 11 LTS была выпущена в сентябре 2018 года. Это первая LTS версия с момента принятия модели быстрого выпуска , начиная с версии 9. Впервые OpenJDK 11 представляет полный исходный код для платформы Java под лицензией GNU General Public License, и хотя Oracle по-прежнему лицензирует его дважды с дополнительной проприетарной лицензией, нет никаких различий в коде или модулей, уникальных для версии с проприетарной лицензией. [66] Функции Java 11 включают две новые реализации сборщика мусора, Flight Recorder для устранения серьезных проблем, новый HTTP-клиент, включающий WebSocket . поддержку [67]
Java SE 12 была выпущена в марте 2019 года. [68]
Java SE 13 была выпущена в сентябре 2019 года. [69]
Java SE 14 была выпущена в марте 2020 года. [70]
Java SE 15 была выпущена в сентябре 2020 года.
Java SE 16 была выпущена в марте 2021 года.
Java SE 17 LTS была выпущена в сентябре 2021 года.
Java SE 18 была выпущена в марте 2022 года.
Java SE 19 была выпущена в сентябре 2022 года.
Java SE 20 была выпущена в марте 2023 года.
Java SE 21 LTS была выпущена в сентябре 2023 года.
Java SE 22 была выпущена в марте 2024 года.
Помимо языковых изменений, за прошедшие годы значительные изменения были внесены в библиотеку классов Java, которая выросла с нескольких сотен классов в JDK 1.0 до более трех тысяч в J2SE 5.0. целые новые API, такие как Swing и Java 2D Развились , и многие исходные классы и методы JDK 1.0 устарели (в том числе некоторые из них «окончательно устарели»), например, в связи с финализацией. [71]
По крайней мере, один очень редко используемый API (для многопоточности) был удален из Java 22. [72] [73]
Использование
[ редактировать ]Использование рабочего стола
[ редактировать ]Текущая версия Java поддерживается в 64-разрядной версии Windows 10 (и Server 2016) и более поздних версиях, 64-разрядной версии macOS 13.x и более поздних версиях, а также в 64-разрядной версии Linux (например, Oracle Enterprise Linux). Другие не поддерживаются Oracle (для сборки, но могут быть IBM, SAP и т. д.), хотя известно, что они работают, например, AIX, Ubuntu, RHEL и Alphine/ musl . Поддержка 32-разрядной версии Windows устарела с версии Java 22 (а 32-разрядная JVM больше не собирается без параметров, отличных от значений по умолчанию).
По данным Oracle, в 2010 году среда выполнения Java была обнаружена на более чем 850 миллионах компьютеров. [74] Microsoft не включила среду выполнения Java (JRE) в свои операционные системы с тех пор, как Sun Microsystems подала в суд на Microsoft за добавление классов, специфичных для Windows, в связанную среду выполнения Java и за обеспечение доступности новых классов через Visual J++ . [ нужна ссылка ] Apple больше не включает среду выполнения Java в OS X , начиная с версии 10.7 , но система предлагает пользователю загрузить и установить ее при первом запуске приложения, требующего JRE. [ нужна ссылка ] Многие дистрибутивы Linux включают среду выполнения OpenJDK в качестве виртуальной машины по умолчанию, что исключает необходимость загрузки проприетарной Oracle JRE. [75]
Некоторые Java-приложения довольно широко используются на настольных компьютерах, включая NetBeans и Eclipse интегрированные среды разработки , а также клиенты для обмена файлами, такие как LimeWire и Vuze . Java также используется в среде математического программирования MATLAB как для визуализации пользовательского интерфейса , так и как часть базовой системы. Java предоставляет кросс-платформенный пользовательский интерфейс для некоторых высокопроизводительных приложений для совместной работы, таких как Lotus Notes .
Oracle планирует сначала объявить устаревшим отдельно устанавливаемый плагин браузера Java из среды выполнения Java в JDK 9, а затем полностью удалить его из будущего выпуска, что вынудит веб-разработчиков использовать альтернативную технологию. [76]
Талисман
[ редактировать ]Явы Герцог — талисман . [77]
Когда Sun объявила, что Java SE и Java ME будут выпущены под лицензией свободного программного обеспечения ( GNU General Public License выпустили графику Duke под свободной лицензией BSD . ), они одновременно [78] Каждый год создается новая личность герцога. [79] Например, в июле 2011 года «Future Tech Duke» имел нос большего размера, реактивный ранец и синие крылья. [80]
Лицензирование
[ редактировать ]Исходный код реализаций Java от Sun (т.е. де-факто эталонная реализация) был доступен в течение некоторого времени, но до недавнего времени [81] условия лицензии строго ограничивали то, что можно было с ним делать без подписания (и, как правило, оплаты) контракта с Sun. Как таковые, эти условия не удовлетворяли требованиям ни Open Source Initiative , ни Free Software Foundation , чтобы считаться программным обеспечением с открытым исходным кодом или свободным, и поэтому Sun Java была проприетарной платформой. [82]
В то время как несколько сторонних проектов (например, GNU Classpath и Apache Harmony ) создали частичные реализации Java бесплатного программного обеспечения , большой размер библиотек Sun в сочетании с использованием методов «чистой комнаты» означал, что их реализации библиотек Java (компилятор и виртуальная машина) сравнительно небольшие и четко определенные) были неполными и не полностью совместимыми. Эти реализации также имели тенденцию быть гораздо менее оптимизированными, чем у Sun. [ нужна ссылка ]
Бесплатное программное обеспечение
[ редактировать ]Sun объявила на JavaOne 2006, что Java станет бесплатным программным обеспечением с открытым исходным кодом . [83] а 25 октября 2006 г. на конференции Oracle OpenWorld Джонатан И. Шварц заявил, что компания собирается объявить о выпуске базовой платформы Java в качестве бесплатного программного обеспечения с открытым исходным кодом в течение 30–60 дней. [84]
13 ноября 2006 г. компания Sun выпустила виртуальную машину и компилятор Java HotSpot как бесплатное программное обеспечение под лицензией GNU General Public License , пообещав, что остальная часть JDK (включая JRE) будет переведена под лицензию GPL к марту 2007 г. (« за исключением нескольких компонентов, которые Sun не имеет права публиковать в виде распространяемого исходного кода под лицензией GPL»). [85] По словам Ричарда Столлмана , это означало бы конец «ловушки Java». [86] Марк Шаттлворт назвал первое заявление для прессы «настоящей вехой для сообщества свободного программного обеспечения ». [87]
Sun выпустила исходный код библиотеки классов под лицензией GPL 8 мая 2007 года, за исключением некоторых ограниченных частей, которые были лицензированы Sun у третьих лиц, которые не хотели, чтобы их код выпускался под лицензией свободного программного обеспечения и открытого исходного кода. [88] Некоторые из обремененных частей оказались довольно ключевыми частями платформы, такими как рендеринг шрифтов и 2D-растрирование, но позже Sun выпустила их с открытым исходным кодом (см. Библиотеку классов OpenJDK ).
Целью Sun было заменить части, которые остаются проприетарными и закрытыми, альтернативными реализациями и сделать библиотеку классов полностью бесплатной и с открытым исходным кодом. Тем временем сторонний проект под названием IcedTea создал совершенно бесплатный и очень удобный JDK, заменив обремененный код либо заглушками, либо кодом из GNU Classpath . Однако с тех пор OpenJDK можно собрать без обремененных частей (из OpenJDK 6 b10 [89] ) и стал средой выполнения по умолчанию для большинства дистрибутивов Linux. [90] [91] [92] [93]
В июне 2008 года было объявлено, что IcedTea 6 (как упакованная версия OpenJDK в Fedora 9 ) прошла тесты Technology Compatibility Kit и может претендовать на звание полностью совместимой реализации Java 6. [94]
Поскольку OpenJDK находится под лицензией GPL, можно распространять пользовательскую версию JRE непосредственно с программными приложениями. [95] [96] вместо того, чтобы требовать от конечного пользователя (или его системного администратора) самостоятельно загрузить и установить правильную версию проприетарной Oracle JRE на каждую из своих систем.
Критика
[ редактировать ]В большинстве случаев поддержка Java в веб-браузерах не требуется, и эксперты по безопасности рекомендуют не запускать ее в браузере без крайней необходимости. [97] Было предложено [ кем? ] что, если Java требуется для нескольких веб-сайтов, пользователям следует установить отдельный браузер специально для этих сайтов. [ нужна ссылка ]
Дженерики
[ редактировать ]Когда дженерики были добавлены в Java 5.0, уже существовала большая структура классов (многие из которых уже устарели ), поэтому дженерики были выбраны для реализации с использованием стирания, чтобы обеспечить совместимость миграции и повторное использование этих существующих классов. Это ограничивало возможности, которые могло быть предоставлено этим дополнением по сравнению с некоторыми другими языками. [98] [99] Добавление подстановочных знаков типов сделало Java неработоспособной. [100]
Беззнаковые целочисленные типы
[ редактировать ]В Java отсутствуют собственные целочисленные типы без знака. Беззнаковые данные часто генерируются из программ, написанных на C , и отсутствие этих типов препятствует прямому обмену данными между C и Java. Беззнаковые большие числа также используются во многих областях числовой обработки, включая криптографию, что может сделать Java менее удобным для использования для этих задач. [101] Хотя эту проблему можно частично обойти с помощью кода преобразования и использования более крупных типов данных, это делает использование Java громоздким для обработки беззнаковых данных. Хотя 32-битное целое число со знаком можно относительно легко использовать для хранения 16-битного значения без знака, для 32-битного значения без знака потребуется 64-битное целое число со знаком. Кроме того, 64-битное беззнаковое значение не может быть сохранено с использованием любого целочисленного типа в Java, поскольку в языке Java не существует типов размером более 64 бит. Если абстрагироваться с помощью функций, вызовы функций становятся необходимыми для многих операций, которые являются родными для некоторых других языков. В качестве альтернативы можно использовать целые числа со знаком Java для эмуляции целых чисел без знака того же размера, но это требует детальных знаний сложных побитовых операций. [102]
Арифметика с плавающей запятой
[ редактировать ] в Java Хотя арифметика с плавающей запятой во многом основана на стандарте IEEE 754 ( стандарт двоичной арифметики с плавающей запятой ), некоторые функции не поддерживаются даже при использовании strictfp
модификатор, такой как флаги исключений и направленные округления — возможности, предусмотренные стандартом IEEE 754. Кроме того, типы с плавающей запятой повышенной точности, разрешенные в 754 и присутствующие во многих процессорах, не разрешены в Java. [103] [104]
Производительность
[ редактировать ]На заре развития Java (до того, как HotSpot VM была реализована в Java 1.3 в 2000 году) существовала некоторая критика в отношении производительности. Тесты обычно сообщали, что Java примерно на 50% медленнее, чем C (язык, который компилируется в собственный код). [105] [106] [107]
Производительность Java существенно улучшилась по сравнению с ранними версиями. [23] В некоторых оптимизированных тестах производительность JIT-компиляторов по сравнению с собственными компиляторами оказалась весьма схожей. [23] [24] [25]
Байт-код Java может либо интерпретироваться во время выполнения виртуальной машиной, либо скомпилироваться во время загрузки или во время выполнения в собственный код, который запускается непосредственно на оборудовании компьютера. Интерпретация медленнее, чем собственное выполнение, а компиляция во время загрузки или во время выполнения имеет начальное снижение производительности компиляции. Все современные высокопроизводительные реализации JVM используют подход компиляции, поэтому после начального запуска производительность эквивалентна машинному коду.
Безопасность
[ редактировать ]Платформа Java обеспечивает архитектуру безопасности. [108] который предназначен для того, чтобы позволить пользователю запускать ненадежный байт-код в «песочнице» для защиты от вредоносного или плохо написанного программного обеспечения. Эта функция «песочницы» предназначена для защиты пользователя путем ограничения доступа к определенным функциям платформы и API, которые могут быть использованы вредоносными программами , например, доступ к локальной файловой системе, выполнение произвольных команд или доступ к сетям связи.
В последние годы исследователи обнаружили многочисленные недостатки безопасности в некоторых широко используемых реализациях Java, в том числе в Oracle, которые позволяют ненадежному коду обходить механизм «песочницы», подвергая пользователей вредоносным атакам. Эти недостатки затрагивают только приложения Java, которые выполняют произвольный ненадежный байт-код, например плагины веб-браузера, которые запускают апплеты Java, загруженные с общедоступных веб-сайтов. Приложения, которым пользователь доверяет и имеет полный контроль над всем выполняемым кодом, не затрагиваются.
31 августа 2012 года было обнаружено, что Java 6 и 7 (обе поддерживались на тот момент) в Microsoft Windows, OS X и Linux имеют серьезный недостаток безопасности, который позволял удаленный эксплойт путем простой загрузки вредоносной веб-страницы. использовать [109] Позже выяснилось, что Java 5 также имеет недостатки. [110]
10 января 2013 года трое компьютерных специалистов выступили против Java, заявив агентству Reuters , что она небезопасна и что людям следует отключать Java. Хайме Бласко, менеджер лаборатории AlienVault Labs, заявил, что «Java — это бардак. Она небезопасна. Вам придется ее отключить». [111] Эта уязвимость затрагивает Java 7 , но неясно, влияет ли она на Java 6 , поэтому потребителям предлагается отключить ее. [112] [113] Предупреждения безопасности от Oracle сообщают о расписании критических обновлений, связанных с безопасностью, для Java. [114]
14 января 2013 г. эксперты по безопасности заявили, что обновление по-прежнему не смогло защитить компьютеры от атак. [115] Эта дыра вызвала ответ Министерства внутренней безопасности США, призывающий пользователей отключить или удалить Java. [14] Apple внесла Java в черный список в ограниченном порядке для всех компьютеров под управлением своей операционной системы OS X с помощью программы защиты от вирусов. [116]
В 2014 году, отвечая на недавние проблемы безопасности и уязвимости Java, блоггер по безопасности Брайан Кребс призвал пользователей удалить как минимум плагин браузера Java, а также все программное обеспечение. «Я с нетерпением жду мира без плагина Java (и отсутствия необходимости напоминать читателям о ежеквартальных обновлениях обновлений), но, вероятно, пройдут годы, прежде чем различные версии этого плагина будут в основном удалены из систем конечных пользователей по всему миру». [117] «Когда-то многообещающий, он изжил себя в браузере и превратился в кошмар, который радует киберпреступников за счет пользователей компьютеров». [118] «Я думаю, что каждый должен удалить Java со всех своих ПК и Mac, а затем тщательно подумать, нужно ли добавлять ее обратно. Если вы типичный домашний пользователь, вы, вероятно, можете обойтись без нее. Если вы бизнес-пользователь, вы может не быть выбора». [119]
Рекламное ПО
[ редактировать ]Распределенная Oracle среда выполнения Java имеет историю объединения спонсируемого программного обеспечения, которое устанавливается по умолчанию во время установки и во время обновлений, которые выпускаются примерно раз в месяц. Сюда входит « панель инструментов Ask.com », которая перенаправляет поисковые запросы браузера на рекламу, и «McAfee Security Scan Plus». [120] Эти предложения можно заблокировать с помощью настройки панели управления Java, хотя это неочевидно. Этот параметр находится на вкладке «Дополнительно» панели управления Java под заголовком «Разное», где этот параметр помечен как параметр для подавления «спонсорских предложений».
Обновление системы
[ редактировать ]Java еще не выпустила автоматическое средство обновления, не требующее вмешательства пользователя и прав администратора. [121] в отличие от Google Chrome [122] и флеш-плеер. [123]
См. также
[ редактировать ]- Список API Java
- Платформа ведения журналов Java
- Производительность Java
- JavaFX
- Жазель
- Java ConcurrentMap
- Сравнение платформ Java и .NET
- Список языков JVM
- Список компьютерных талисманов
Ссылки
[ редактировать ]- ^ «JavaSoft выпускает Java 1.0» (пресс-релиз). Архивировано из оригинала 5 февраля 2008 года . Проверено 9 февраля 2016 г.
- ^ Ортис, К. Энрике; Жигер, Эрик (2001). Профиль мобильного информационного устройства для Java 2 Micro Edition: Руководство разработчика (PDF) . Джон Уайли и сыновья . ISBN 978-0471034650 . Проверено 30 мая 2012 г.
- ^ «Релизы JDK» . Корпорация Оракл . Проверено 9 декабря 2022 г.
- ^ «Релизы JDK» . Корпорация Оракл . Проверено 17 января 2024 г.
- ^ «Группа ХотСпот» . Openjdk.java.net . Проверено 9 февраля 2016 г.
- ^ Перейти обратно: а б «Содержание конфигураций сертифицированных систем Oracle JDK 8 и JRE 8» . Oracle.com . 8 апреля 2014 года . Проверено 9 февраля 2016 г.
- ^ «Локали, поддерживаемые Java SE 7» . Oracle.com . Проверено 9 февраля 2016 г.
- ^ «OpenJDK: GPLv2 + исключение пути к классам» . Openjdk.java.net. 1 апреля 1989 года . Проверено 9 февраля 2016 г.
- ^ «BCL для Java SE» . Oracle.com. 2 апреля 2013 года . Проверено 9 февраля 2016 г.
- ^ Нотон, Патрик. «На Java сильно повлиял Objective-C» . Виртуальная школа . Архивировано из оригинала 13 августа 2012 года.
- ^ «Почему мне следует удалять старые версии Java из моей системы?» . www.java.com . Архивировано из оригинала 12 февраля 2018 года . Проверено 6 февраля 2018 г.
- ^ «Почему мне следует удалять старые версии Java из моей системы?» . Оракул . Проверено 9 сентября 2016 г.
- ^ Перейти обратно: а б «Обновление критического исправления Oracle — июль 2016 г.» . www.oracle.com .
- ^ Перейти обратно: а б Уиттакер, Зак (11 января 2013 г.). «Национальная безопасность предупреждает об отключении Java из-за уязвимости нулевого дня» . ЗДНет . Проверено 9 февраля 2016 г.
- ^ Александр, Кристофер. «Java SE 6 Расширенный» . www.oracle.com . Проверено 20 мая 2018 г.
- ^ «Обзор Java SE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
- ^ «Содержание выпуска Java SE 6» . Корпорация Oracle и/или ее дочерние компании . Проверено 1 января 2013 г.
- ^ Переход на OpenJDK в качестве официальной эталонной реализации Java SE 7.
- ^ Платформа Java, Справочные реализации Standard Edition 7
- ^ «Платформа Java, стандартная версия 8, эталонные реализации» . Архивировано из оригинала 21 ноября 2015 года.
- ^ «Различия между Java EE и Java SE — ваш первый кубок: введение в платформу Java EE» . Документы.oracle.com. 1 апреля 2012 года . Проверено 18 июля 2012 г.
- ^ «Обзор Java EE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
- ^ Перейти обратно: а б с Льюис, JP; Нойманн, Ульрих. «Производительность Java по сравнению с C++» . Лаборатория графики и иммерсивных технологий, Университет Южной Калифорнии .
- ^ Перейти обратно: а б «Бенчмарк Java быстрее, чем C++» . Кано.нет. 14 ноября 2003 года . Проверено 9 февраля 2016 г.
- ^ Перейти обратно: а б FreeTTS - Пример производительности, заархивировано 25 марта 2009 г. в Wayback Machine , Уилли Уокер, Пол Ламере, Филип Квок.
- ^ «Часто задаваемые вопросы по OpenJDK» . OpenJDK . Проверено 23 октября 2021 г.
- ^ «BCL для Java SE» . Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.
- ^ «Описание выпусков Java CPU и PSU» . Архивировано из оригинала 3 ноября 2014 года.
- ^ «Архивная копия» . Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Архивная копия» . Архивировано из оригинала 10 августа 2022 года . Проверено 14 августа 2022 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Понимание модулей Java 9» . Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.
- ^ «Java-модули» .
- ^ «Структурные изменения Java 9 в JDK и JRE» . 30 октября 2017 г.
- ^ «Разработчик IBM» .
- ^ «Руководство по модульности Java 9 | Baeldung» . 18 апреля 2018 г.
- ^ «Глава 1. Введение» . docs.oracle.com .
- ^ www
.beanshell .org - ^ «Часто задаваемые вопросы о сборке мусора в виртуальной машине Java Hotspot» . Сан Микросистемс . 6 февраля 2003 года . Проверено 7 февраля 2009 г.
- ^ Перейти обратно: а б Масамицу, Джон (28 ноября 2006 г.). «Представляя постоянное поколение» . Архивировано из оригинала 25 августа 2016 года . Проверено 7 февраля 2009 г.
- ^ Наттер, Чарльз (11 сентября 2008 г.). «Первый опыт InvokeDynamic» . Проверено 7 февраля 2009 г.
- ^ «JEP 122: Удалить постоянное поколение» . Корпорация Оракл . 4 декабря 2012 года . Проверено 23 марта 2014 г.
- ^ «Что такое Java, небезопасна ли она и стоит ли ее использовать?» . Lifehacker.com. 14 января 2013 года . Проверено 26 июня 2015 г.
- ^ «Есть ли защита от Java-эксплойтов? | Лаборатория Касперского» . Касперский.com. 9 сентября 2013. Архивировано из оригинала 4 апреля 2015 года . Проверено 26 июня 2015 г.
- ^ Саутвик, Карен (1999). Ровно в полдень: внутренняя история Скотта МакНили и подъема Sun Microsystems . Нью-Йорк [ua]: Уайли. стр. 120–122 . ISBN 0471297135 .
- ^ Перейти обратно: а б Байус, Джон (апрель 2003 г.). «Технология Java: первые годы» . Сан Микросистемс . Архивировано из оригинала 30 мая 2008 года . Проверено 2 августа 2009 г.
- ^ Саутвик, Карен (1999). Ровно в полдень: внутренняя история Скотта МакНили и подъема Sun Microsystems . Нью-Йорк [ua]: Уайли. п. 124 . ISBN 0471297135 .
- ^ Уолрат, Кэти (21 декабря 2001 г.). «Предисловие» . Сан Микросистемс . Проверено 2 августа 2009 г.
- ^ Мерфи, Кирон (4 октября 1996 г.). «Так почему же они решили назвать его Java?» . JavaWorld . Проверено 15 июля 2020 г.
«Юристы сказали нам, что мы не можем использовать название «OAK», потому что [оно уже было торговой маркой] Oak Technologies», — сказал Фрэнк Йеллин, старший инженер Sun. «Итак, был проведен мозговой штурм, чтобы придумать идеи для нового названия».
- ^ Банк, Дэвид (1 декабря 1995 г.). «Явская сага» . Проводной . Проверено 4 октября 2022 г.
«Цена ниже нашей себестоимости», — говорит Шмидт. «Это приведет к потере денег в лицензионном бизнесе в обозримом будущем. Это стратегическая инвестиция в долю рынка».
- ^ «Sun Microsystems объявляет о создании JavaSoft» (Пресс-релиз). Сан Микросистемс. 9 января 1996 г. Архивировано из оригинала 10 февраля 2008 г.
- ^ «Солнце открывает Яву» . Сан Микросистемс. 13 ноября 2006 г. Архивировано из оригинала 13 мая 2008 г.
- ^ О'Хэйр, Келли (декабрь 2010 г.). «Удалена логика двоичных плагинов OpenJDK7 и OpenJDK6» . Корпорация Оракл . Проверено 25 ноября 2011 г.
- ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 63» . Jcp.org . Проверено 9 февраля 2016 г.
- ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 59» . Jcp.org . Проверено 9 февраля 2016 г.
- ^ «Версия 1.5.0 или 5.0?» . Java.sun.com . Проверено 9 февраля 2016 г.
- ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 176» . Jcp.org . Проверено 9 февраля 2016 г.
- ^ «Именование Java» . Java.com . Оракул . Проверено 25 августа 2011 г.
- ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 336» . Jcp.org . Проверено 9 февраля 2016 г.
- ^ Леа, Дуг (13 сентября 2004 г.). «JSR: запросы спецификации Java: JSR 166: утилиты параллелизма» . Процесс сообщества Java . Корпорация Оракл.
- ^ «Примечания к выпуску обновления 76 пакета разработки Java™ SE 7» . Oracle.com . Проверено 9 февраля 2016 г.
- ^ «Выпуски Java 7 и Java 8 по дате» . www.java.com .
- ^ «Windows XP и Java» . Java.com. 8 апреля 2014 года . Проверено 9 февраля 2016 г.
- ^ «Java — установка JDK8 в Windows XP — ошибка advapi32.dll» . Переполнение стека .
- ^ «Сертифицированные системные конфигурации Oracle JDK 8 и JRE 8» . www.oracle.com .
- ^ «Конфигурации системы, сертифицированные Oracle JDK 10» . www.oracle.com . Проверено 27 марта 2018 г.
Поддерживается только режим X.org. Режим Wayland не поддерживается.
- ^ «Дорожная карта поддержки Oracle Java SE» . Корпорация Оракл . 25 сентября 2018 г. Проверено 25 сентября 2018 г.
- ^ «ДжДК 11» . Корпорация Оракл . 25 сентября 2018 г. Проверено 26 сентября 2018 г.
- ^ «ДжДК 12» . OpenJDK . Проверено 22 марта 2019 г.
- ^ «JDK 13» . OpenJDK . Проверено 17 сентября 2019 г.
- ^ «JDK 14» . OpenJDK . Проверено 25 марта 2020 г.
- ^ «Устаревший список (Java SE 22)» . cr.openjdk.org . Проверено 16 апреля 2024 г.
- ^ «Удалить Thread.countStackFrames» . bugs.openjdk.org . Проверено 16 апреля 2024 г.
- ^ «Java SE 22 (JSR 397)» . cr.openjdk.org . Проверено 16 апреля 2024 г.
- ^ «Что такое технология Java и зачем она мне?» . Архивировано из оригинала 25 сентября 2010 года . Проверено 15 декабря 2011 г.
Java работает на более чем 850 миллионах персональных компьютеров по всему миру и на миллиардах устройств по всему миру, включая мобильные и телевизионные устройства.
- ^ «Java — Wiki проекта Fedora» . Fedoraproject.org .
- ^ Тема, Далибор (27 января 2016 г.). «Переход к сети без плагинов» . Оракул.
- ^ «Герцог, талисман Явы» . Оракул . Проверено 18 марта 2019 г.
- ^ «герцог: Домашняя страница проекта» . Сан Микросистемс . Архивировано из оригинала 18 июня 2007 года . Проверено 18 марта 2007 г.
- ^ «Герцог, талисман Явы» .
- ^ «Будущий технологический герцог (Источник Java)» . Тори Вилдт. Архивировано из оригинала 20 августа 2011 года . Проверено 17 августа 2011 г.
- ^ Смит, Дональд (11 сентября 2018 г.). «Выпуски Oracle JDK для Java 11 и более поздних версий» .
- ^ Столлман, Ричард (24 мая 2006 г.). «Загадочное явление Солнца в ночное время» . Гроклав .
- ^ Шварц, Джонатан. "?" . Блог Джонатана Шварца . Сан Микросистемс. Архивировано из оригинала 15 июля 2006 года.
- ^ «Oracle OpenWorld: UnBreakable Linux/5015.2 не на горизонте | Блог Formtek» . Formtek.com. 26 октября 2006 года . Проверено 9 февраля 2016 г.
- ^ «Oracle и Sun Microsystems | Стратегические приобретения | Oracle» . Сан.ком . Проверено 9 февраля 2016 г.
- ^ «Свободный, но скованный – Ловушка Java – Проект GNU – Фонд свободного программного обеспечения» . Гну.орг. 12 апреля 2004 года . Проверено 9 февраля 2016 г.
- ^ «Sun выпускает Java для всего мира» . Новости Би-би-си . 13 ноября 2006 года . Проверено 6 мая 2010 г.
- ^ «Открытый JDK уже здесь!» . Сан Микросистемс. 8 мая 2007 года . Проверено 9 мая 2007 г.
- ^ Вилаард, Марк (30 мая 2007 г.). «Опубликован исходный код OpenJDK6 b10» . Проверено 12 июля 2008 г.
- ^ «Редхат Ява» .
- ^ «Федора Java» .
- ^ «Дебиан Ява» .
- ^ «Убунту Ява» .
- ^ Шарплс, Рич (19 июня 2008 г.). «Java наконец стала свободной и открытой» . Архивировано из оригинала 20 июня 2008 года.
- ^ libgdx (9 декабря 2013 г.). «Объединение jre · libgdx/libgdx Wiki · GitHub» . Гитхаб.com . Проверено 9 февраля 2016 г.
- ^ «Вопрос о комплектации пользовательского OpenJDK» . Java-Gaming.org. Архивировано из оригинала 4 марта 2016 года . Проверено 9 февраля 2016 г.
- ^ Клюли, Грэм (15 января 2013 г.). « Если нет абсолютной необходимости запускать Java в веб-браузерах, отключите его», — говорит команда CERT, спонсируемая DHS – Naked Security» . Nakedsecurity.sophos.com . Проверено 9 февраля 2016 г.
- ^ «Дженериксы в Java» . Object Computing, Inc. Архивировано из оригинала 2 января 2007 года . Проверено 9 декабря 2006 г.
- ^ «Что не так с Java: стирание типов» . 6 декабря 2006. Архивировано из оригинала 22 июля 2012 года . Проверено 9 декабря 2006 г.
- ^ «Системы типов Java и Scala ненадежны» (PDF) .
- ^ «Библиотеки Java должны обеспечивать поддержку целочисленной арифметики без знака» . База данных ошибок, Sun Developer Network . Оракул . Проверено 18 января 2011 г.
- ^ Оуэнс, Шон Р. (5 ноября 2009 г.). «Java и unsigned int, unsigned short, unsigned byte, unsigned long и т.д. (вернее, их отсутствие)» . darksleep.com . Проверено 9 октября 2010 г.
- ^ Кахан, В.; Дарси, Джозеф Д. (1 марта 1998 г.). «Как числа с плавающей запятой в Java вредят всем и повсюду» (PDF) . Проверено 9 декабря 2006 г.
- ^ «Типы, значения и переменные» . Сан Микросистемс . Проверено 9 декабря 2006 г.
- ^ Какие языки программирования самые быстрые? | Игра с тестами компьютерного языка. Архивировано 14 августа 2011 г. на Wayback Machine.
- ^ скорость ÷ Скорость C++ GNU g++ | Игра с тестами компьютерного языка. Архивировано 26 сентября 2011 г. на Wayback Machine.
- ^ «Производительность C++ и Java; ничья! | Блог Кристиана Фельде» . Блог.cfelde.com. 27 июня 2010 года . Проверено 9 февраля 2016 г.
- ^ «Архитектура безопасности Java: Содержание» . Документы.oracle.com. 2 октября 1998 года . Проверено 9 февраля 2016 г.
- ^ Горовиц, Майкл (31 августа 2012 г.). «Недостаток безопасности Java: да яда яда | Computerworld» . Блоги.computerworld.com. Архивировано из оригинала 24 июля 2014 года . Проверено 9 февраля 2016 г.
- ^ Брук, Крис. «Первая остановка новостей безопасности» . Угроза. Архивировано из оригинала 8 марта 2013 года . Проверено 9 февраля 2016 г.
- ^ «Почему и как сейчас отключить Java на вашем компьютере — Технологии и наука — Инновации» . Новости Эн-Би-Си. 12 января 2013 года . Проверено 9 февраля 2016 г.
- ^ «Министерство внутренней безопасности США призывает пользователей компьютеров отключить Java» . Форбс.com . Проверено 9 февраля 2016 г.
- ^ Брук, Крис. «Первая остановка новостей безопасности» . Угроза. Архивировано из оригинала 9 апреля 2013 года . Проверено 9 февраля 2016 г.
- ^ «Критические обновления исправлений и предупреждения безопасности» . Oracle.com . Проверено 9 февраля 2016 г.
- ^ Финкл, Джим (14 января 2013 г.). «Экстренный патч для Java не закрывает дыры в киберпреступности, предупреждают эксперты» . Независимый.т.е . Проверено 9 февраля 2016 г.
- ^ Келли, Меган (14 января 2013 г.). «Устранены проблемы Oracle с эксплойтом Java после того, как DHS предупредило о его дырах» . ВенчурБит . Проверено 9 февраля 2016 г.
- ^ Кребс, Брайан (16 февраля 2016 г.). «Скатертью дорога к плагину Oracle Java» . КребсОнСекьюрити .
- ^ Гонсалвес, Антоне (5 сентября 2012 г.). «Java больше не нужна. Извлеките плагин» . ЧитатьЗапись . Носимый мир.
- ^ «Java: стоит ли его удалить?» . Хранитель . 8 февраля 2013 г.
- ^ Ботт, Эд. «Внимательный взгляд на то, как Oracle устанавливает мошенническое программное обеспечение вместе с обновлениями Java» . ZDNet.com . ЗДНет . Проверено 14 декабря 2014 г.
- ^ «Windows 7 – Как обновить Java из учетной записи без прав администратора?» . Супер пользователь .
- ^ «Обновление Google Chrome – Компьютер – Справка Google Chrome» . support.google.com .
- ^ «Бюллетень по безопасности Adobe» . helpx.adobe.com .
Внешние ссылки
[ редактировать ]- «Как появилась спецификация JVM» . infoq.com . - Презентация Джеймса Гослинга о происхождении Java на саммите JVM Languages Summit 2008.
- Организация Java-форумов
- Введение в Java , 14 мая 2014 г., Блог Java77