stringtranslate.com

Java (программная платформа)

TuxGuitar — программа на языке Java.

Java — это набор компьютерного программного обеспечения и спецификаций, который обеспечивает программную платформу для разработки прикладного программного обеспечения и его развертывания в кроссплатформенной вычислительной среде. Java используется в самых разных вычислительных платформах : от встроенных устройств и мобильных телефонов до корпоративных серверов и суперкомпьютеров . Java-апплеты , которые менее распространены, чем автономные приложения Java, обычно запускались в безопасных изолированных средах, чтобы обеспечить многие функции собственных приложений за счет внедрения в HTML- страницы.

Написание на языке программирования Java — это основной способ создания кода, который будет развернут в виде байт-кода на виртуальной машине Java (JVM); компиляторы байт-кода также доступны для других языков, включая Ada , JavaScript , Python и Ruby . Кроме того, несколько языков были разработаны для встроенной работы в JVM, включая Clojure , Groovy и Scala . Синтаксис Java во многом заимствован из C и C++ , но объектно-ориентированные функции созданы по образцу Smalltalk и Objective-C . [10] Java избегает некоторых низкоуровневых конструкций, таких как указатели , и имеет очень простую модель памяти , в которой объекты размещаются в куче (в то время как некоторые реализации, например все, которые в настоящее время поддерживаются Oracle, могут вместо этого использовать оптимизацию escape-анализа для распределения в стеке ). и все переменные типов объектов являются ссылками . Управление памятью осуществляется посредством встроенной автоматической сборки мусора , выполняемой JVM.

Последняя версия

Последней версией является Java 21 , версия с долгосрочной поддержкой (LTS), выпущенная в сентябре 2023 года, а также поддерживается Java 17, выпущенная в сентябре 2021 года, одна из немногих старых версий 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 советует своим пользователям «немедленно перейти» на поддерживаемую версию. Oracle выпустила последнее публичное обновление для устаревшей версии Java 8 LTS , бесплатное для коммерческого использования , в январе 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 в соответствии с правилами, изложенными в спецификации виртуальной машины.

Домены приложений

Различные платформы ориентированы на разные классы устройств и домены приложений :

Ява 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

Jakarta EE , ранее известная как Java Platform, Enterprise Edition (Java EE) и Java 2 Platform, Enterprise Edition (J2EE), представляет собой набор спецификаций, расширяющий Java SE [21] спецификациями для корпоративных функций, таких как распределенные вычисления и веб-сервисы . [22] Приложения Jakarta EE запускаются в эталонных средах выполнения , которые могут представлять собой микросервисы или серверы приложений , которые обрабатывают транзакции, безопасность, масштабируемость, параллелизм и управление развертываемыми ими компонентами.

виртуальная машина Java

Сердцем платформы Java является «виртуальная машина», выполняющая программы с байт-кодом Java . Этот байт-код одинаков независимо от того, на каком оборудовании или в операционной системе работает программа. Однако в новых версиях, таких как Java 10 (и более ранние), внесены небольшие изменения, а это означает, что байт-код, как правило, совместим только с прямой совместимостью . В виртуальной машине Java или JVM имеется JIT-компилятор (Just In Time) . 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. К ним относятся:

Похожие платформы

Успех 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 куча разделена на поколения :

Постоянное поколение (или 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 г.)

Java 17, версия с долгосрочной поддержкой (LTS), содержит несколько улучшений. Он обеспечивает сопоставление шаблонов для операторов переключения и закрытых классов .

Ява 16 (2021 г.)

В Java 16 представлены классы записей , сопоставление с образцом и запечатанные классы для расширенных возможностей моделирования данных.

Ява 15 (2020 г.)

В Java 15 в качестве функций предварительного просмотра были представлены текстовые блоки и запечатанные классы , что улучшило обработку строк и классов.

Ява 14 (2020 г.)

В Java 14 появились новые функции, такие как классы записей и сопоставление шаблонов для экземпляров в качестве функций предварительного просмотра.

Ява 13 (2019 г.)

Java 13 включала такие улучшения, как текстовые блоки и повторную реализацию устаревшего API Socket .

Ява 12 (2019 г.)

В Java 12 появились выражения переключения и новый сборщик мусора Shenandoah .

Ява 11 (2018 г.)

В Java 11, выпуске LTS, представлен новый HTTP-клиент . Также были удалены модули Java EE и CORBA.

Ява 10 (2018 г.)

В Java 10 появилась функция вывода типа локальной переменной (var), которая позволяет разработчикам объявлять локальные переменные без указания их типа.

Ява 9 (2017 г.)

В Java 9 появилась система модулей платформы Java (JPMS) для модульной разработки приложений и JShell , интерактивный Java REPL.

Ява 8 (2014 г.)

Java 8 — это основной выпуск, в котором представлены лямбда-выражения и новый API даты и времени для повышения производительности.

Ява 7 (2011 г.)

В Java 7 появились try-with-resources , Switch on String и Diamond Operation . Он также включал расширенную обработку исключений и новую библиотеку файлового ввода-вывода (NIO.2).

Ява 6 (2006 г.)

В Java 6 появилась поддержка языка сценариев (JSR 223) и улучшения веб-сервисов . Он также предоставил JDBC 4.0 поддержку SQL XML.

Ява 5 (2004 г.)

Java 5 была значительным выпуском, который включал Generics , Enhanced for Loop , Autoboxing/Unboxing , Static Import , Varargs , Enumerations и Annotations .

Ява 4 (2002 г.)

В Java 4 появились регулярные выражения , цепочка исключений и новый набор API-интерфейсов ввода-вывода, известный как NIO (новый ввод-вывод). Он также включал новый API ведения журналов .

Ява 3 (2000)

Java 3 включала новую JVM от Sun, известную как HotSpot . Он также представил интерфейс именования и каталогов Java (JNDI) и архитектуру отладчика платформы Java (JPDA).

Ява 2 (1998)

В Java 2 представлены Collections Framework , строковая карта памяти Java для констант , JIT-компилятор и Swing API для графических интерфейсов .

Ява 1.1 (1997 г.)

В Java 1.1 появились внутренние классы , отражение , Java Beans и API JDBC для доступа к базе данных.

Ява 1.0 (1996 г.)

Java 1.0 была первой версией языка программирования 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 определял процесс сообщества Java (JCP). 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 с использованием движка Rhino от Mozilla ). В этой версии 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 была выпущена в сентябре 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 была выпущена в сентябре 2021 года.

Java SE 18 была выпущена в марте 2022 года.

Java SE 19 была выпущена в сентябре 2022 года.

Java SE 20 была выпущена в марте 2023 года.

Помимо языковых изменений, за прошедшие годы значительные изменения были внесены в библиотеку классов Java, которая выросла с нескольких сотен классов в JDK 1.0 до более трех тысяч в J2SE 5.0. Были разработаны целые новые API, такие как Swing и Java 2D , а многие исходные классы и методы JDK 1.0 устарели .

Применение

Использование рабочего стола

Программа Java, работающая на настольном компьютере с Windows Vista (поддерживается Java 8, но официально не поддерживается более поздними версиями, такими как Java 11).

По данным Oracle, в 2010 году среда выполнения Java была обнаружена на более чем 850 миллионах компьютеров. [71] Microsoft не включила среду выполнения Java (JRE) в свои операционные системы с тех пор, как Sun Microsystems подала в суд на Microsoft за добавление классов, специфичных для Windows, в связанную среду выполнения Java, а также за обеспечение доступности новых классов через Visual J++ . [ необходима цитата ] Apple больше не включает среду выполнения Java в OS X начиная с версии 10.7 , но система предлагает пользователю загрузить и установить ее при первом запуске приложения, требующего JRE. [ нужна цитация ] Многие дистрибутивы Linux включают среду выполнения OpenJDK в качестве виртуальной машины по умолчанию, что исключает необходимость загрузки проприетарной Oracle JRE. [72]

Некоторые Java-приложения довольно широко используются на настольных компьютерах, включая интегрированные среды разработки NetBeans и Eclipse , а также клиенты для обмена файлами, такие как LimeWire и Vuze . Java также используется в среде математического программирования MATLAB как для визуализации пользовательского интерфейса , так и как часть базовой системы. Java предоставляет кросс-платформенный пользовательский интерфейс для некоторых высокопроизводительных приложений для совместной работы, таких как Lotus Notes .

Oracle планирует сначала объявить устаревшим отдельно устанавливаемый плагин браузера Java из среды выполнения Java в JDK 9, а затем полностью удалить его из будущего выпуска, что вынудит веб-разработчиков использовать альтернативную технологию. [73]

Талисман

Старый добрый герцог

Герцог — талисман Явы . [74]

Когда Sun объявила, что Java SE и Java ME будут выпущены под лицензией свободного программного обеспечения ( GNU General Public License ), они одновременно выпустили графику Duke под свободной лицензией BSD . [75] Каждый год создается новая личность герцога. [76] Например, в июле 2011 года «Future Tech Duke» имел нос большего размера, реактивный ранец и синие крылья. [77]

Лицензирование

Исходный код для реализаций Java от Sun (т.е. де-факто эталонная реализация) был доступен в течение некоторого времени, но до недавнего времени [78] условия лицензии строго ограничивали то, что можно было сделать с ним без подписания (и, как правило, оплаты) контракт с компанией Sun. Как таковые, эти условия не удовлетворяли требованиям ни Open Source Initiative , ни Free Software Foundation , чтобы считаться программным обеспечением с открытым исходным кодом или свободным, и поэтому Sun Java была проприетарной платформой. [79]

В то время как несколько сторонних проектов (например, GNU Classpath и Apache Harmony ) создали частичные реализации Java бесплатного программного обеспечения , большой размер библиотек Sun в сочетании с использованием методов «чистой комнаты » означал, что их реализации библиотек Java (компилятор и виртуальная машина) сравнительно небольшие и четко определенные) были неполными и не полностью совместимыми. Эти реализации также имели тенденцию быть гораздо менее оптимизированными, чем у Sun. [ нужна цитата ]

Бесплатно программное обеспечение

Джонатан И. Шварц

На конференции JavaOne 2006 компания Sun объявила , что Java станет бесплатным программным обеспечением с открытым исходным кодом , [80] а 25 октября 2006 года на конференции Oracle OpenWorld Джонатан И. Шварц заявил, что компания собирается объявить о выпуске базовой версии Java. Платформа как бесплатное программное обеспечение с открытым исходным кодом в течение 30–60 дней. [81]

13 ноября 2006 г. компания Sun выпустила виртуальную машину и компилятор Java HotSpot как бесплатное программное обеспечение под лицензией GNU General Public License , пообещав, что остальная часть JDK (включая JRE) будет переведена под лицензию GPL к марту 2007 г. (« за исключением нескольких компонентов, которые Sun не имеет права публиковать в виде распространяемого исходного кода под лицензией GPL»). [82] По мнению Ричарда Столлмана , это означало бы конец «ловушки Java». [83] Марк Шаттлворт назвал первое заявление для прессы «настоящей вехой для сообщества свободного программного обеспечения ». [84]

Sun выпустила исходный код библиотеки классов под лицензией GPL 8 мая 2007 года, за исключением некоторых ограниченных частей, которые были лицензированы Sun у третьих сторон, которые не хотели, чтобы их код выпускался под лицензией свободного программного обеспечения и открытого исходного кода. [85] Некоторые из обремененных частей оказались довольно ключевыми частями платформы, такими как рендеринг шрифтов и 2D-растрирование, но позже Sun выпустила их с открытым исходным кодом (см. Библиотеку классов OpenJDK ).

Целью Sun было заменить части, которые остаются проприетарными и закрытыми, альтернативными реализациями и сделать библиотеку классов полностью бесплатной и с открытым исходным кодом. Тем временем сторонний проект под названием IcedTea создал совершенно бесплатный и очень удобный JDK, заменив обремененный код либо заглушками, либо кодом из GNU Classpath . Однако с тех пор OpenJDK можно собирать без обременительных частей (начиная с OpenJDK 6 b10 [86] ) и он стал средой выполнения по умолчанию для большинства дистрибутивов Linux. [87] [88] [89] [90]

В июне 2008 года было объявлено, что IcedTea 6 (как упакованная версия OpenJDK в Fedora 9 ) прошла тесты Technology Compatibility Kit и может претендовать на звание полностью совместимой реализации Java 6. [91]

Поскольку OpenJDK находится под лицензией GPL, можно распространять пользовательскую версию JRE непосредственно с программными приложениями [92] [93] вместо того, чтобы требовать от конечного пользователя (или его системного администратора) загрузки и установки правильной версии проприетарного Oracle. JRE на каждую из своих систем.

Критика

В большинстве случаев поддержка Java в веб-браузерах не требуется, и эксперты по безопасности рекомендуют не запускать ее в браузере без крайней необходимости. [94] Это было предложено [ кем? ] что, если Java требуется для нескольких веб-сайтов, пользователям следует установить отдельный браузер специально для этих сайтов. [ нужна цитата ]

Дженерики

Когда дженерики были добавлены в Java 5.0, уже существовала большая структура классов (многие из которых уже устарели ), поэтому дженерики были выбраны для реализации с использованием стирания , чтобы обеспечить совместимость миграции и повторное использование этих существующих классов. Это ограничивало возможности, которые могло быть предоставлено этим дополнением по сравнению с некоторыми другими языками. [95] [96] Добавление подстановочных знаков типов сделало Java неработоспособной. [97]

Беззнаковые целочисленные типы

В Java отсутствуют собственные целочисленные типы без знака. Беззнаковые данные часто генерируются из программ, написанных на C , и отсутствие этих типов препятствует прямому обмену данными между C и Java. Большие числа без знака также используются во многих областях числовой обработки, включая криптографию, что может сделать Java менее удобным для использования для этих задач. [98] Хотя эту проблему можно частично обойти с помощью кода преобразования и использования более крупных типов данных, это делает использование Java громоздким для обработки беззнаковых данных. Хотя 32-битное целое число со знаком можно относительно легко использовать для хранения 16-битного значения без знака, для 32-битного значения без знака потребуется 64-битное целое число со знаком. Кроме того, 64-битное беззнаковое значение не может быть сохранено с использованием любого целочисленного типа в Java, поскольку в языке Java не существует типов размером более 64 бит. Если абстрагироваться с помощью функций, вызовы функций становятся необходимыми для многих операций, которые являются родными для некоторых других языков. В качестве альтернативы можно использовать целые числа со знаком Java для эмуляции целых чисел без знака того же размера, но это требует детальных знаний сложных побитовых операций. [99]

Арифметика с плавающей запятой

Хотя арифметика с плавающей запятой в Java в значительной степени основана на IEEE 754 ( стандарт для двоичной арифметики с плавающей запятой ), некоторые функции не поддерживаются даже при использовании strictfpмодификатора, такие как флаги исключений и направленные округления – возможности, предусмотренные стандартом IEEE 754. Кроме того, Типы с плавающей запятой расширенной точности, разрешенные в 754 и присутствующие во многих процессорах, не разрешены в Java. [100] [101]

Производительность

На заре развития Java (до того, как HotSpot VM была реализована в Java 1.3 в 2000 году) существовала некоторая критика в отношении производительности. Тесты обычно сообщали, что Java примерно на 50% медленнее, чем C (язык, который компилируется в собственный код). [102] [103] [104]

Производительность Java существенно улучшилась по сравнению с ранними версиями. [23] В некоторых оптимизированных тестах производительность JIT-компиляторов по сравнению с собственными компиляторами оказалась весьма схожей. [23] [24] [25]

Байт-код Java может либо интерпретироваться во время выполнения виртуальной машиной, либо скомпилироваться во время загрузки или во время выполнения в собственный код, который запускается непосредственно на оборудовании компьютера. Интерпретация медленнее, чем собственное выполнение, а компиляция во время загрузки или во время выполнения имеет начальное снижение производительности компиляции. Все современные высокопроизводительные реализации JVM используют подход компиляции, поэтому после начального запуска производительность эквивалентна машинному коду.

Безопасность

Платформа Java обеспечивает архитектуру безопасности [105] , которая предназначена для того, чтобы позволить пользователю запускать ненадежный байт-код в «песочнице» для защиты от вредоносного или плохо написанного программного обеспечения. Эта функция «песочницы» предназначена для защиты пользователя путем ограничения доступа к определенным функциям платформы и API, которые могут быть использованы вредоносным ПО , например, доступ к локальной файловой системе, выполнение произвольных команд или доступ к сетям связи.

В последние годы исследователи обнаружили многочисленные недостатки безопасности в некоторых широко используемых реализациях Java, в том числе в Oracle, которые позволяют ненадежному коду обходить механизм изолированной программной среды, подвергая пользователей вредоносным атакам. Эти недостатки затрагивают только приложения Java, которые выполняют произвольный ненадежный байт-код, например плагины веб-браузера, которые запускают апплеты Java, загруженные с общедоступных веб-сайтов. Приложения, которым пользователь доверяет и имеет полный контроль над всем выполняемым кодом, не затрагиваются.

31 августа 2012 года было обнаружено, что Java 6 и 7 (обе поддерживались на тот момент) в Microsoft Windows, OS X и Linux имеют серьезный недостаток безопасности, который позволял использовать удаленный эксплойт путем простой загрузки вредоносной веб-страницы. [106] Позже выяснилось, что Java 5 также имеет недостатки. [107]

10 января 2013 года трое компьютерных специалистов выступили против Java, заявив Reuters , что она небезопасна и что людям следует отключать Java. Хайме Бласко, менеджер лаборатории AlienVault Labs, заявил, что «Java — это бардак. Она небезопасна. Вам придется ее отключить». [108] Эта уязвимость затрагивает Java 7 , но неясно, влияет ли она на Java 6 , поэтому потребителям предлагается отключить ее. [109] [110] В предупреждениях безопасности от Oracle объявляются графики выхода критических обновлений, связанных с безопасностью, для Java. [111]

14 января 2013 г. эксперты по безопасности заявили, что обновление по-прежнему не смогло защитить компьютеры от атак. [112] Эта дыра вызвала реакцию Министерства внутренней безопасности США , призывающую пользователей отключить или удалить Java. [14] Apple внесла Java в черный список в ограниченном порядке для всех компьютеров под управлением операционной системы OS X с помощью программы защиты от вирусов. [113]

В 2014 году, отвечая на недавние проблемы безопасности и уязвимости Java, блоггер по безопасности Брайан Кребс призвал пользователей удалить как минимум плагин браузера Java, а также все программное обеспечение. «Я с нетерпением жду мира без плагина Java (и отсутствия необходимости напоминать читателям о ежеквартальных обновлениях обновлений), но, вероятно, пройдут годы, прежде чем различные версии этого плагина будут в основном удалены из систем конечных пользователей по всему миру». [114] «Когда-то многообещающий, он изжил себя в браузере и превратился в кошмар, который радует киберпреступников за счет пользователей компьютеров». [115] «Я думаю, что каждый должен удалить Java со всех своих ПК и Mac, а затем тщательно подумать, нужно ли добавлять ее обратно. Если вы типичный домашний пользователь, вы, вероятно, можете обойтись без нее. Если вы представляете бизнес пользователь, у тебя может не быть выбора». [116]

Рекламное ПО

Распределенная Oracle среда выполнения Java имеет историю объединения спонсируемого программного обеспечения, которое устанавливается по умолчанию во время установки и во время обновлений, которые выпускаются примерно раз в месяц. Сюда входит « панель инструментов Ask.com », которая перенаправляет поисковые запросы браузера на рекламу, и «McAfee Security Scan Plus». [117] Эти предложения можно заблокировать с помощью настройки панели управления Java, хотя это неочевидно. Этот параметр находится на вкладке «Дополнительно» панели управления Java под заголовком «Разное», где этот параметр помечен как параметр для подавления «спонсорских предложений».

Обновление системы

Java еще не выпустила средство автоматического обновления, не требующее вмешательства пользователя и прав администратора [118] в отличие от Google Chrome [119] и Flash player. [120]

Смотрите также

Рекомендации

  1. ^ «JavaSoft выпускает Java 1.0» (пресс-релиз). Архивировано из оригинала 5 февраля 2008 года . Проверено 9 февраля 2016 г.
  2. ^ Ортис, К. Энрике; Жигер, Эрик (2001). Профиль мобильного информационного устройства для Java 2 Micro Edition: Руководство разработчика (PDF) . Джон Уайли и сыновья . ISBN  978-0471034650. Проверено 30 мая 2012 г.
  3. ^ «Выпуски JDK» . Корпорация Оракл . Проверено 9 декабря 2022 г.
  4. ^ «Выпуски JDK» . Корпорация Оракл . Проверено 17 января 2024 г.
  5. ^ "Группа горячих точек" . Openjdk.java.net . Проверено 9 февраля 2016 г.
  6. ^ ab «Содержание сертифицированных системных конфигураций Oracle JDK 8 и JRE 8» . Oracle.com . 8 апреля 2014 года . Проверено 9 февраля 2016 г.
  7. ^ «Локали, поддерживаемые Java SE 7» . Oracle.com . Проверено 9 февраля 2016 г.
  8. ^ «OpenJDK: GPLv2 + исключение пути к классам» . Openjdk.java.net. 1 апреля 1989 года . Проверено 9 февраля 2016 г.
  9. ^ «BCL для Java SE». Oracle.com. 2 апреля 2013 года . Проверено 9 февраля 2016 г.
  10. ^ Нотон, Патрик. «На Java сильно повлиял Objective-C». Виртуальная школа . Архивировано из оригинала 13 августа 2012 года.
  11. ^ «Почему мне следует удалять старые версии Java из моей системы?». www.java.com . Архивировано из оригинала 12 февраля 2018 года . Проверено 6 февраля 2018 г.
  12. ^ «Почему мне следует удалять старые версии Java из моей системы?». Оракул . Проверено 9 сентября 2016 г.
  13. ^ ab «Обновление критического исправления Oracle — июль 2016 г.» . www.oracle.com .
  14. ↑ Аб Уиттакер, Зак (11 января 2013 г.). «Национальная безопасность предупреждает об отключении Java из-за уязвимости нулевого дня» . ЗДНет . Проверено 9 февраля 2016 г.
  15. ^ Александр, Кристофер. «Java SE 6 Advanced». www.oracle.com . Проверено 20 мая 2018 г.
  16. ^ «Обзор Java SE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
  17. ^ «Содержание выпуска Java SE 6» . Корпорация Oracle и/или ее дочерние компании . Проверено 1 января 2013 г.
  18. ^ Переход на OpenJDK в качестве официальной эталонной реализации Java SE 7.
  19. ^ Платформа Java, Справочные реализации Standard Edition 7
  20. ^ «Платформа Java, эталонные реализации Standard Edition 8» . Архивировано из оригинала 21 ноября 2015 года.
  21. ^ «Различия между Java EE и Java SE — ваш первый кубок: введение в платформу Java EE». Документы.oracle.com. 1 апреля 2012 года . Проверено 18 июля 2012 г.
  22. ^ «Обзор Java EE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
  23. ^ abc Льюис, JP; Нойманн, Ульрих. «Производительность Java по сравнению с C++». Лаборатория графики и иммерсивных технологий, Университет Южной Калифорнии .
  24. ^ ab «Бенчмарк Java быстрее, чем C++». Кано.нет. 14 ноября 2003 года . Проверено 9 февраля 2016 г.
  25. ^ ab FreeTTS - Пример производительности, заархивировано 25 марта 2009 г. в Wayback Machine , Уилли Уокер, Пол Ламере, Филип Квок.
  26. ^ «Часто задаваемые вопросы по OpenJDK» . OpenJDK . Проверено 23 октября 2021 г.
  27. ^ «BCL для Java SE». Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.
  28. ^ «Описание выпусков процессоров и блоков питания Java» . Архивировано из оригинала 3 ноября 2014 года.
  29. ^ «Архивная копия». Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.{{cite web}}: CS1 maint: archived copy as title (link)
  30. ^ «Архивная копия». Архивировано из оригинала 10 августа 2022 года . Проверено 14 августа 2022 г.{{cite web}}: CS1 maint: archived copy as title (link)
  31. ^ «Понимание модулей Java 9» . Архивировано из оригинала 14 августа 2022 года . Проверено 14 августа 2022 г.
  32. ^ «Модули Java».
  33. ^ «Структурные изменения Java 9 в JDK и JRE» . 30 октября 2017 г.
  34. ^ «Разработчик IBM».
  35. ^ «Руководство по модульности Java 9 | Baeldung» . 18 апреля 2018 г.
  36. ^ «Глава 1. Введение». docs.oracle.com .
  37. ^ www.beanshell.org
  38. ^ «Часто задаваемые вопросы о сборке мусора в виртуальной машине Java Hotspot» . Сан Микросистемс . 6 февраля 2003 года . Проверено 7 февраля 2009 г.
  39. ↑ Аб Масамицу, Джон (28 ноября 2006 г.). «Представляя постоянное поколение». Архивировано из оригинала 25 августа 2016 года . Проверено 7 февраля 2009 г.
  40. Наттер, Чарльз (11 сентября 2008 г.). «Первый опыт InvokeDynamic» . Проверено 7 февраля 2009 г.
  41. ^ «JEP 122: Удалить постоянное поколение» . Корпорация Оракл . 4 декабря 2012 года . Проверено 23 марта 2014 г.
  42. ^ «Что такое Java, небезопасна ли она и стоит ли мне ее использовать?» Lifehacker.com. 14 января 2013 года . Проверено 26 июня 2015 г.
  43. ^ «Есть ли защита от Java-эксплойтов? | Лаборатория Касперского». Касперский.com. 9 сентября 2013. Архивировано из оригинала 4 апреля 2015 года . Проверено 26 июня 2015 г.
  44. ^ Саутвик, Карен (1999). Ровно в полдень: внутренняя история Скотта МакНили и подъема Sun Microsystems . Нью-Йорк [ua]: Уайли. стр. 120–122. ISBN 0471297135.
  45. ^ аб Байус, Джон (апрель 2003 г.). «Технология Java: первые годы». Сан Микросистемс . Архивировано из оригинала 30 мая 2008 года . Проверено 2 августа 2009 г.
  46. ^ Саутвик, Карен (1999). Ровно в полдень: внутренняя история Скотта МакНили и подъема Sun Microsystems . Нью-Йорк [ua]: Уайли. п. 124. ИСБН 0471297135.
  47. Уолрат, Кэти (21 декабря 2001 г.). «Предисловие». Сан Микросистемс . Проверено 2 августа 2009 г.
  48. Мерфи, Кирон (4 октября 1996 г.). «Так почему же они решили назвать его Java?». JavaWorld . Проверено 15 июля 2020 г.«Юристы сказали нам, что мы не можем использовать название «OAK», потому что [оно уже было торговой маркой] Oak Technologies», — сказал Фрэнк Йеллин, старший инженер Sun. «Итак, был проведен мозговой штурм, чтобы придумать идеи для нового названия».
  49. Банк, Дэвид (1 декабря 1995 г.). «Явская сага». Проводной . Проверено 4 октября 2022 г.«Цена ниже нашей себестоимости», — говорит Шмидт. «Это приведет к потере денег в лицензионном бизнесе в обозримом будущем. Это стратегическая инвестиция в долю рынка».
  50. ^ «Sun Microsystems объявляет о создании JavaSoft» (пресс-релиз). Сан Микросистемс. 9 января 1996 г. Архивировано из оригинала 10 февраля 2008 г.
  51. ^ «Солнце открывает Java» . Сан Микросистемс. 13 ноября 2006 г. Архивировано из оригинала 13 мая 2008 г.
  52. ^ О'Хэйр, Келли (декабрь 2010 г.). «Удалена логика двоичных плагинов OpenJDK7 и OpenJDK6» . Корпорация Оракл . Проверено 25 ноября 2011 г.
  53. ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 63» . Jcp.org . Проверено 9 февраля 2016 г.
  54. ^ «Программа Java Community Process (SM) — JSR: запросы спецификаций Java — подробно JSR № 59» . Jcp.org . Проверено 9 февраля 2016 г.
  55. ^ «Версия 1.5.0 или 5.0?». Java.sun.com . Проверено 9 февраля 2016 г.
  56. ^ «Программа Java Community Process (SM) - JSR: запросы на спецификацию Java - подробно JSR № 176» . Jcp.org . Проверено 9 февраля 2016 г.
  57. ^ "Именование Java" . Java.com . Оракул . Проверено 25 августа 2011 г.
  58. ^ «Программа Java Community Process (SM) - JSR: запросы на спецификацию Java - подробно JSR № 336» . Jcp.org . Проверено 9 февраля 2016 г.
  59. ^ Леа, Дуг (13 сентября 2004 г.). «JSR: запросы спецификации Java: JSR 166: утилиты параллелизма». Процесс сообщества Java . Корпорация Оракл.
  60. ^ «Примечания к выпуску обновления 76 пакета разработки Java™ SE 7» . Oracle.com . Проверено 9 февраля 2016 г.
  61. ^ «Выпуски Java 7 и Java 8 по дате» . www.java.com .
  62. ^ «Windows XP и Java». Java.com. 8 апреля 2014 года . Проверено 9 февраля 2016 г.
  63. ^ «Java — установка JDK8 в Windows XP — ошибка advapi32.dll» . Переполнение стека .
  64. ^ «Сертифицированные системные конфигурации Oracle JDK 8 и JRE 8» . www.oracle.com .
  65. ^ «Конфигурации сертифицированной системы Oracle JDK 10» . www.oracle.com . Проверено 27 марта 2018 г. Поддерживается только режим X.org. Режим Wayland не поддерживается.
  66. ^ «Дорожная карта поддержки Oracle Java SE» . Корпорация Оракл . 25 сентября 2018 г. Проверено 25 сентября 2018 г.
  67. ^ "JDK 11" . Корпорация Оракл . 25 сентября 2018 г. Проверено 26 сентября 2018 г.
  68. ^ "JDK 12" . OpenJDK . Проверено 22 марта 2019 г.
  69. ^ "JDK 13" . OpenJDK . Проверено 17 сентября 2019 г.
  70. ^ "JDK 14" . OpenJDK . Проверено 25 марта 2020 г.
  71. ^ «Что такое технология Java и зачем она мне?». Архивировано из оригинала 25 сентября 2010 года . Проверено 15 декабря 2011 г. Java работает на более чем 850 миллионах персональных компьютеров по всему миру и на миллиардах устройств по всему миру, включая мобильные и телевизионные устройства.
  72. ^ "Java — Wiki проекта Fedora" . Fedoraproject.org .
  73. Тема, Далибор (27 января 2016 г.). «Переход к сети без плагинов». Оракул.
  74. ^ «Герцог, талисман Явы» . Оракул . Проверено 18 марта 2019 г.
  75. ^ «Герцог: Домашняя страница проекта» . Сан Микросистемс . Архивировано из оригинала 18 июня 2007 года . Проверено 18 марта 2007 г.
  76. ^ «Герцог, талисман Явы» .
  77. ^ «Будущий технический герцог (Источник Java)» . Тори Вилдт. Архивировано из оригинала 20 августа 2011 года . Проверено 17 августа 2011 г.
  78. Смит, Дональд (11 сентября 2018 г.). «Выпуски Oracle JDK для Java 11 и более поздних версий».
  79. Столлман, Ричард (24 мая 2006 г.). «Загадочное явление Солнца в ночное время». Гроклав .
  80. ^ Шварц, Джонатан. «?». Блог Джонатана Шварца . Сан Микросистемс. Архивировано из оригинала 15 июля 2006 года.
  81. ^ «Oracle OpenWorld: UnBreakable Linux / 5015.2 не на горизонте | Блог Formtek» . Formtek.com. 26 октября 2006 года . Проверено 9 февраля 2016 г.
  82. ^ «Oracle и Sun Microsystems | Стратегические приобретения | Oracle» . Сан.ком . Проверено 9 февраля 2016 г.
  83. ^ «Свободный, но скованный - Ловушка Java - Проект GNU - Фонд свободного программного обеспечения» . Гну.орг. 12 апреля 2004 года . Проверено 9 февраля 2016 г.
  84. ^ «Sun 'выпускает' Java миру» . Новости BBC . 13 ноября 2006 года . Проверено 6 мая 2010 г.
  85. ^ «Открытый JDK уже здесь!». Сан Микросистемс. 8 мая 2007 года . Проверено 9 мая 2007 г.
  86. Вилаард, Марк (30 мая 2007 г.). «Опубликован исходный код OpenJDK6 b10» . Проверено 12 июля 2008 г.
  87. ^ "Redhat Java".
  88. ^ "Федора Java".
  89. ^ "Debian Java".
  90. ^ «Убунту Java».
  91. Шарплс, Рич (19 июня 2008 г.). «Java наконец стала свободной и открытой». Архивировано из оригинала 20 июня 2008 года.
  92. ^ libgdx (9 декабря 2013 г.). «Объединение jre · libgdx/libgdx Wiki · GitHub». Гитхаб.com . Проверено 9 февраля 2016 г.
  93. ^ «Вопрос о комплектации пользовательского OpenJDK» . Java-Gaming.org. Архивировано из оригинала 4 марта 2016 года . Проверено 9 февраля 2016 г.
  94. Клюли, Грэм (15 января 2013 г.). «Если нет абсолютной необходимости запускать Java в веб-браузерах, отключите его», — говорит команда CERT, спонсируемая DHS – Naked Security». Nakedsecurity.sophos.com . Проверено 9 февраля 2016 г.
  95. ^ «Обобщенные шаблоны в Java». Object Computing, Inc. Архивировано из оригинала 2 января 2007 года . Проверено 9 декабря 2006 г.
  96. ^ «Что не так с Java: стирание типа» . 6 декабря 2006. Архивировано из оригинала 22 июля 2012 года . Проверено 9 декабря 2006 г.
  97. ^ «Системы типов Java и Scala ненадежны» (PDF) .
  98. ^ «Библиотеки Java должны обеспечивать поддержку целочисленной арифметики без знака» . База данных ошибок, Sun Developer Network . Оракул . Проверено 18 января 2011 г.
  99. Оуэнс, Шон Р. (5 ноября 2009 г.). «Java и unsigned int, unsigned short, unsigned byte, unsigned long и т. д. (вернее, их отсутствие)». darksleep.com . Проверено 9 октября 2010 г.
  100. ^ Кахан, В.; Дарси, Джозеф Д. (1 марта 1998 г.). «Как числа с плавающей запятой в Java вредят всем и повсюду» (PDF) . Проверено 9 декабря 2006 г.
  101. ^ «Типы, значения и переменные». Сан Микросистемс . Проверено 9 декабря 2006 г.
  102. ^ Какие языки программирования самые быстрые? | Игра с тестами компьютерного языка. Архивировано 14 августа 2011 г. на Wayback Machine.
  103. ^ скорость ÷ Скорость C++ GNU g++ | Игра с тестами компьютерного языка. Архивировано 26 сентября 2011 г. на Wayback Machine.
  104. ^ «Производительность C++ и Java; ничья! | Блог Кристиана Фельде» . Блог.cfelde.com. 27 июня 2010 года . Проверено 9 февраля 2016 г.
  105. ^ «Архитектура безопасности Java: Содержание» . Документы.oracle.com. 2 октября 1998 года . Проверено 9 февраля 2016 г.
  106. Горовиц, Майкл (31 августа 2012 г.). «Недостаток безопасности Java: да яда яда | Computerworld». Блоги.computerworld.com. Архивировано из оригинала 24 июля 2014 года . Проверено 9 февраля 2016 г.
  107. ^ Брук, Крис. «Первая остановка новостей безопасности». Угроза. Архивировано из оригинала 8 марта 2013 года . Проверено 9 февраля 2016 г.
  108. ^ «Почему и как сейчас отключить Java на вашем компьютере - Технологии и наука - Инновации» . Новости Эн-Би-Си. 12 января 2013 года . Проверено 9 февраля 2016 г.
  109. ^ «Министерство внутренней безопасности США призывает пользователей компьютеров отключить Java» . Форбс.com . Проверено 9 февраля 2016 г.
  110. ^ Брук, Крис. «Первая остановка новостей безопасности». Угроза. Архивировано из оригинала 9 апреля 2013 года . Проверено 9 февраля 2016 г.
  111. ^ «Критические обновления исправлений и предупреждения системы безопасности» . Oracle.com . Проверено 9 февраля 2016 г.
  112. Финкл, Джим (14 января 2013 г.). «Экстренный патч для Java не закрывает дыры в киберпреступности, предупреждают эксперты». Независимый.т.е . Проверено 9 февраля 2016 г.
  113. Келли, Меган (14 января 2013 г.). «Устранены проблемы Oracle с эксплойтом Java после того, как DHS предупредило о его дырах» . ВенчурБит . Проверено 9 февраля 2016 г.
  114. Кребс, Брайан (16 февраля 2016 г.). «Скатертью дорога к плагину Oracle Java». КребсОнСекьюрити .
  115. Гонсалвес, Антоне (5 сентября 2012 г.). «Java больше не нужна. Извлеките плагин». Читай пиши . Носимый мир.
  116. ^ «Java: стоит ли удалять?» Хранитель . 8 февраля 2013 г.
  117. ^ Ботт, Эд. «Внимательный взгляд на то, как Oracle устанавливает мошенническое программное обеспечение вместе с обновлениями Java». ZDNet.com . ЗДНет . Проверено 14 декабря 2014 г.
  118. ^ «Windows 7 — Как обновить Java из учетной записи без прав администратора?». Супер пользователь .
  119. ^ «Обновление Google Chrome — Компьютер — Справка Google Chrome» . support.google.com .
  120. ^ «Бюллетень по безопасности Adobe». helpx.adobe.com .

Внешние ссылки

Послушайте эту статью ( 42 минуты )
Разговорная иконка Википедии
Этот аудиофайл был создан на основе редакции этой статьи от 19 августа 2013 года и не отражает последующие изменения. (2013-08-19)