Java як мова чи є відмінності між розробкою для android і java se

  • Java як мова чи є відмінності між розробкою для android і java se
  • Java
  • Android OS
  • Android Development

В рамках завдання навчитися створювати додатки для Android задався питанням освоїти необхідний інструментарій, в першу чергу сама мова Java.
Прочитавши вступну книжку по Java, орієнтовану в першу чергу на використання Java SE, зауважив, що мова активно розвивається, і в ньому постійно з'являються різні нові конструкції. Наприклад, в Java 8 з'явилися лямбда.

У зв'язку з цим питання: саме як мова. тобто сукупність синтаксису і граматики, а також програмних конструкцій, ними описуються, чи є "канонічаская" Java від Oracle ідентичною тієї мови, на якому пишуться програми для Android? Умовно кажучи, всі ці дженерики, лямбда і анотації, чи доступні вони Android-розробникам в тому ж самому вигляді, що і "звичайним" Java-програмістам?

Окреме питання - версійність мови. Наскільки я зрозумів, в "звичайній" Java все впирається в версію JVM, тобто при написанні коду доступний синтаксис визначається тією версією віртуальної машини, на якій він буде виконуватися.
А що на Android? Все впирається в версію ОС? Тоді, наприклад, якщо я створюю додаток, що підтримує Android починаючи з версії 2.1, то мені не тільки є лише те API, яке існувало на той момент, а й актуальний на той момент синтаксис мови, тобто, в моєму прикладі, без лямбда ? Або ж обмеження стосуються лише API, а компілятор автоматично генерує за новим початкового тексту байткод, який зможе зрозуміти навіть стара версія Dalvik?

Буду вдячний всім, хто зуміє прояснити це питання.