Как версия Java для Android связана с версией Java SE?
Мне постоянно интересно, как версия Java, используемая для разработки Android, связана с версией Java SE. Например, сегодня я читал о "Выводе типов и общих методах", который является функцией, добавленной в Java SE 7. Мне интересно, "Могу ли я использовать это в коде Android?"
Конечно, я мог бы напечатать код в проекте Android и посмотреть, скомпилируется ли он, но я был бы счастлив, если бы в моей голове было какое-то отображение.
Я пробовал поискать эту информацию в Google, проверять документы по Android и т. Д., Но не могу найти ответ.
Изменить: меня больше интересуют языковые функции, например, как версия синтаксиса Java для Android связана с синтаксисом Java SE.
2 ответа
Версия Android не имеет прямого отношения к Java SE, хотя она использует подмножество библиотек и инструментов Apache Harmony SE 6. Команда Android решит, будет ли и когда поддерживать / требовать версию Harmony SE 7.
Редактировать Похоже, что в KitKat Android поддерживает функции языка Java SE 7. Смотрите комментарии ниже.
Прямого отображения нет:
- Некоторые части API (например, JAXB, который существует как минимум с Java 6) никогда не были доступны на Android.
- Когда вводятся функции новой версии Java, это может происходить постепенно в нескольких версиях.
- Некоторые новые функции Java доступны для более старых, уже выпущенных версий в виде резервных копий.
В прошлом Google требовалось около 2–3 лет, чтобы начать внедрение новой версии Java. Функции Java 7 начали появляться вокруг API 19 (KitKat). Функции Java 8 были запущены в API 26 (Nougat), но доступен механизм, называемый дешугарингом , чтобы сделать определенные функции Java 8 доступными в более ранних версиях Android, независимо от их уровня API.
Так что, вообще говоря, если вы хотите узнать, доступна ли конкретная функция API Java на Android, найдите ее в справочнике разработчиков Android и проверьте минимальную версию API.