История Java и разница между Oracle JDK и OpenJDK
1. Краткий обзор истории Java
Java был создан James Gosling и его коллегами в Sun Microsystems в 1991 году. Первоначально идея была программирование для управления и не быть зависимым от вида CPU для электронных устройств как телевизор, стиральная машина,микроволновые печи и т.д... Поэтому, они приступили к созданию быстрого, компактного, эффективного, независимого языка и так родился язык “Oak”, потом он был переименован в Java.

James Gosling
Сначала Java был назван "Oak" (Дуб), потому что дуб является распространенным деревом, посаженным в Америке, Германии, Румынии,... и считается символом этой страны, символ силы. Так же вокруг офиса у James Gosling посажено очень много дубов.

Oak tree
В 1995 году, Oak был переименован в Java, так как название Oak было зарегистрированно до этого другой компанией с названием Oak Technologies. Это так же год создания первой версии Java. Таким образом, чтобы получить первую версию Java инженеры Sun Microsystems усердно работали в течении 4 лет, с 1991 по 1995 год. В течении этого времени они работали днем и ночью, пили очень много кофе и чая. Эти напитки во многом им помогли и всегда имеются кружки на их рабочем месте.
Почему было выбрано название Java?
Было очень много названий для выбора членов команды, такие как Dynamic, Revolutionary, Silk, Jolt, DNA, … Они хотели название, которое отражало истинную природу технологии, является революционной, динамичной, едиственной и легко для произношения...
Java это остров в Indonesia (Индонезия), здесь производили первый кофе (называется java coffee), тем более кофе был вместе с инженерами на протяжении всех 4-х лет работы для создания первой версии Java. Это причина почему члены команды выбрали название Java и почему логотипом Java является чашка дымящегося ароматного кофе.

Согласно James Gosling, то Java является одним из лучших вариантов наряду с Silk. Но, так как Java имеет больше уникальности, почти все члены команды выбрали Java.
2. JVM и слоган у Java
Главная цель Java это как написать программу, которая будет работать на разных платформах. Известный слоган Java это "Write Once and Run Anywhere - WORA" (Напиши один раз, запускай везде).
Перед тем как появился Java, программа написанная и компилированная (compile) в машинный код (machine code) работающий на операционной системе Windows не может работать на операционной системе Linux, так имеется слишком много различий.

Инженеры Sun Microsystems создали JVM (Java Virtual Machine) (Виртуальная машина Java), чтобы установить на разных платформах (platform), такие как Windows, Linux, Mac,.

Программы написанные с помощью языка Java компилированы (compile) в Byte Code, специальный код, который может работать в среде JVM. JVM помогая переводить Byte Code в код хост машины(host machine). Это и есть принцип почему Java может запускаться на разных платформах.
3. Что такое JDK, JRE?
JRE

JRE является аббревиатурой Java Runtime Environment (Среда выполнения для Java), которая включает JVM (Виртуальная Машина Java) и некоторые библиотеки Java помогающие выполнить программы написанные языком Java.
JDK

JDK является аббревиатурой Java Development Kit (Комплект разработчика Java), включает 2 компонента JRE и Java Development Tools (Инструменты разработки Java).
JDK нужно для программистов, так как Java Development Tools предоставляет инструменты для разработки приложения Java, например Javac помогает компилировать (compile) исходные коды программистов в Byte Code,.. потом использует JRE, чтобы запустить приложение в процессе разработки.
4. OpenJDK vs Oracle JDK
Ниже является таблица описания истории версий Java.
Version | Release
date | End of Free
Public Updates | Extended
Support Until |
JDK Beta | 1995 | ? | ? |
JDK 1.0 | January 1996 | ? | ? |
JDK 1.1 | February 1997 | ? | ? |
J2SE 1.2 | December 1998 | ? | ? |
J2SE 1.3 | May 2000 | ? | ? |
J2SE 1.4 | February 2002 | October 2008 | February 2013 |
J2SE 5.0 | September 2004 | November 2009 | April 2015 |
Java SE 6 | December 2006 | April 2013 | December 2018 |
Java SE 7 | July 2011 | April 2015 | July 2022 |
Java SE 8 (LTS) | March 2014 | January 2019 for Oracle (commercial) December 2020 for Oracle (personal use) At least September 2023 for AdoptOpenJDK At least June 2023 for Amazon Corretto | December 2030 |
Java SE 9 | September 2017 | March 2018 for OpenJDK | N/A |
Java SE 10 | March 2018 | September 2018 for OpenJDK | N/A |
Java SE 11 (LTS) | September 2018 | At least August 2024 for Amazon Corretto
September 2022 for AdoptOpenJDK | September 2026 |
Java SE 12 | March 2019 | September 2019 for OpenJDK | N/A |
Java SE 13 | September 2019 | March 2020 for OpenJDK | N/A |
Java SE 14 | March 2020 | September 2020 for OpenJDK | N/A |
Java SE 15 | September 2020 | March 2021 for OpenJDK | N/A |
Java SE 16 | March 2021 | September 2021 for OpenJDK | N/A |
Java SE 17 (LTS) | September 2021 | TBA | TBA |
Большое событие произошло в Октябре 2009 года, Oracle купил Sun Microsystem, таким образом Java официально сменил своего владельца. Обратите внимание на период до и после 2009 года.
Версии Java от 1 до 6 были разработаны с помощью Sun Microsystem, они открыли исходный код Java для всего мира.
В Июле 2011 года, Oracle выпустил Java 7, они выпустили 2 разных варианта JDK это Oracle JDK и OpenJDK. На то время исходный код данных 2-х вариантов не имели много различий, так как они были унаследованы от JDK 6.
OpenJDK
OpenJDK смог открыть исходный код, он был поддержан и разработан с помощью Oracle, но позволяет сообществу и другим компания принимать участие в этой разработке. Например Red Hat, Azul Systems, IBM, Apple Inc... OpenJDK являются и продуктом JDK и спецификацией (specification). Любая компания, организация желающая использовать OpenJDK для создания нового варианта, должна соответствовать этим спецификациям.
OpenJDK разработан с помощью Oracle и сообществом. Иногда мы встречаем неполадки со стабильностью, основываясь на отзывы пользователь он будет обновляться для улучшения. OpenJDK постоянно обновляет, примерно раз в 6 месяцев.
Oracle JDK
Oracle JDK поддержан и разработан с помощью Oracle и соотвествует спецификациям OpenJDK, но это не открытый исходный код. Oracle JDK намного лучше в плане отзывчивости и производительности JVM. Он больше фокусируется на стабильности из-за своей важности для корпоративных клиентов.
Возможно вы спрашиваете "Что такое спецификация (specification)?", посмотрим пример. Организация определила размер шины колеса велосипеда - это спецификация, и производители должны соответствовать этим спецификациям, при этом их не волнует каким образом производители сделают шины.
OpenJDK был выпущен по лицензии "GPL v2", в то время как Oracle JDK был выпущен по "Oracle Binary Code License Agreement".
Java Basic
- Настройте java compiler для обработки вашего Annotation (Annotation Processing Tool)
- Программирование на Java для группы с помощью Eclipse и SVN
- Руководство Java WeakReference
- Руководство Java PhantomReference
- Сжатие и декомпрессия в Java
- Настройка Eclipse для использования JDK вместо JRE
- Методы String.format() и printf() в Java
- Синтаксис и новые функции в Java 8
- Регулярные выражения Java
- Руководство Java Multithreading Programming
- Библиотеки Java JDBC Driver для различных типов баз данных
- Руководство Java JDBC
- Получить значения столбцов, автоматически возрастающих при вставлении (Insert) записи, используя JDBC
- Руководство Java Stream
- Руководство Java Functional Interface
- Введение в Raspberry Pi
- Руководство Java Predicate
- Абстрактный класс и Interface в Java
- Модификатор доступа (Access modifiers) в Java
- Руководство Java Enum
- Руководство Java Annotation
- Сравнение и Сортировка в Java
- Руководство Java String, StringBuffer и StringBuilder
- Обработка исключений Java - Java Exception Handling
- Руководство Java Generics
- Манипулирование файлами и каталогами в Java
- Руководство Java BiPredicate
- Руководство Java Consumer
- Руководство Java BiConsumer
- Что мне нужно для начала работы с Java?
- История Java и разница между Oracle JDK и OpenJDK
- Установить Java в Windows
- Установите Java в Ubuntu
- Установите OpenJDK в Ubuntu
- Установить Eclipse
- Установите Eclipse в Ubuntu
- Быстрое изучение Java для начинающих
- История бит и байтов в информатике
- Типы данных в java
- Битовые операции
- Команда if else в Java
- команды switch в Java
- Циклы в Java
- Массивы (Array) в Java
- JDK Javadoc в формате CHM
- Наследование и полиморфизм в Java
- Руководство Java Function
- Руководство Java BiFunction
- Пример Java encoding и decoding с использованием Apache Base64
- Руководство Java Reflection
- Java Удаленный вызов методов - Java RMI
- Руководство Программирование Java Socket
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Руководство Java Commons IO
- Руководство Java Commons Email
- Руководство Java Commons Logging
- Понимание Java System.identityHashCode, Object.hashCode и Object.equals
- Руководство Java SoftReference
- Руководство Java Supplier
- Аспектно-ориентированное программирование Java с помощью AspectJ (AOP)
Show More
- Руководства Java Servlet/JSP
- Руководства Java Collections Framework
- Java API для HTML, XML
- Руководства Java IO
- Руководства Java Date Time
- Руководства Spring Boot
- Руководства Maven
- Руководства Gradle
- Руководства Java Web Services
- Руководства Java SWT
- Руководства JavaFX
- Руководства Oracle Java ADF
- Руководства Struts2 Framework
- Руководства Spring Cloud