Сейчас версией с долгосрочной поддержкой является Java 21
Разберемся в изданиях Java:
Java Platform Standard Edition (Java SE) - стандартная редакция Java, которая использует для разработки простых приложений
Java Platform Enterprise Edition (Java EE) - редакция для предприятий
Java Platform Micro Edition (Java ME) - редакция для разработки ПО на микроконтроллерах, мобильные платформы и т.д.
Комитет Java Community Process определяет, как будут выглядеть будущие спецификации Java
Классы в Java как правило объединены в пакеты. По умолчанию, стандартная библиотека Java содержит пакеты java.lang, java.io, java.util и другие. Организация классов в пакеты позволяет избежать коллизии имен.
В Java все коллекции представлены в Java Collections Framework наследуются от интерфейса java.util.Collection. Сам интерфейс java.util.Collection наследуется от интерфейса java.util.Iterable, позволяющий итерироваться по коллекции.
В Java в качестве динамического списка используют ArrayList (с произвольным доступом по индексу) и LinkedList (с последовательный доступом)
Vector в Java работает так же, как и ArrayList, но Vector потокобезопасный. Также Vector расширяется вдвое, а ArrayList в 1,5 раза
Помимо них есть:
Stack - стек, реализованный на Vector
Queue - односторонняя очередь
Deque - двухсторонняя очередь
Set - множество; реализации на хеш-таблице HashSet и на дереве TreeSet
Map - словарь; реализации на хеш-таблице HashMap и на дереве TreeMap
В java.util.concurrent существуют потокобезопасные версии коллекций

Помимо Java Collections Framework другие фреймворки, такие как Google Guava и Apache Commons Collections, реализуют свои коллекции
Чтобы обрабатывать коллекции, в Java есть Stream API. Работает он как LINQ в C#:
Создаем поток из коллекции: list.stream()
Применяем промежуточные методы, такие как filter(), map(), sorted()
Применяем терминальный метод, например, count(), findFirst(), toList()
Пример:
list
.stream()
.filter(x -> x.toString().length() == 3)
.forEach(System.out::println);
list.stream().forEach(x -> System.out.println(x));