Да, я сначала не нашел энумы, (в курсе, который я смотрю, автор везде делает класс utils с кучей static final констант) и не нашел LINQ, но потом погуглил и выяснил, что в Java 8 сделали аналог - Stream API.
Вот чего точно не нашел:
В Java нет var. В C# можно написать var list = new List<String>(), он сам распознает тип, в Джаве так нельзя.
В Java нет async/await, есть только хэндлеры, и есть AsyncTask, которая ограничена по количеству одновременных задач.
Ещё мне не понравилось, что одним словом final помечаются и константы, и запечатанные классы, и запрещенные к переопределению методы. В C# это соответственно readonly, sealed и virtual/override.
В Java нет делегатов, то есть, ты не можешь написать свой метод типа
public void DoSomething(System.Action callback) { // что-то делаем callback(); }
и в него подставить лямбду.
И соответственно, нет events с подпиской и отпиской, приходится писать классы, которые имплементируют Listener'ы.
Нет свойств.
Нет методов расширения.