Java version

JDK 1.0 - 1996

J2SE 5.0 - 2004:

    • enum,
    • @anotatoin,
    • generics,***
    • Методы с неопределённым числом параметров,
    • Autoboxing/Unboxing(преобразование между int — Integer),***
    • foreach,
    • Javadoc

Java SE 6 - 2006:

    • Коллекции,
    • повысилась скорость вычислений на 70 %

Java SE 7 - 2011:

    • Изменение синтаксиса языка Java (Project Coin)
      • String в блоке switch
      • Закрытие используемых ресурсов в блоке try (try-with-resources) — работает при использовании интерфейса AutoCloseable.
      • перечисление обрабатываемых исключений в catch (… | … | …)
    • JDBC 4.1 и Rowset 1.1 (Кроме того, объекты данного типа могут использоваться при отсутствии постоянного соединения с базой данных. При этом объект типа RowSet будет автоматически соединяться с базой при необходимости получения из нее данных.)

https://ru.wikipedia.org/wiki/Java

Java SE 8

  • Полноценная поддержка лямбда-выражений
  • Ключевое слово default в интерфейсах
  • Ссылки на методы и конструкторы
  • Встроенные функциональные интерфейсы
  • Функциональные интерфейсы
    • Предикаты
    • Функции
    • Поставщики
    • Потребители
    • Компараторы
    • Опциональные значения
  • Потоки (stream) для работы с коллекциями
    • Filter
    • Sorted
    • Map
    • Match
    • Count
    • Reduce
      • Параллельные потоки (последовательная/параллельная сортировка)
  • Ассоциативные массивы - новые хорошие методы для работы с map
    • putIfAbsent
    • forEach
      • ...
  • API для работы с датами

(see full information in original https://habrahabr.ru/post/216431/)

*** - Часто задаваемые вопросы