Как версия 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.

Другие вопросы по тегам