Написать пост

Исследование Java-сообщества: 74% разработчиков хотят упрощения синтаксиса

Аватар Пётр Соковых

Обложка поста Исследование Java-сообщества: 74% разработчиков хотят упрощения синтаксиса

Одно из предложений JEP (JDK Enhancement Proposal), а именно JEP 286, вызвало бурный отклик у сообщества Java. Предложение состоит в том, чтобы упростить синтаксис языка с помощью таких ключевых конструкций, как var и val. В этой статье мы постарались разобраться, что же это значит, и как на это реагируют сами программисты.

Коротко о сути предложения

Речь об автоматическом выведении типов (Local Variable Type Inference) — синтаксическом сахаре, который позволит декларировать переменные не указывая их тип. Выглядеть это будет примерно так:

			var list = new ArrayList<String>();
val stream = getStream();
		

Тогда как сейчас нужно писать следующим образом:

			List<String> list = new ArrayList<String>();
final Stream<String> stream = getStream();
		

Как вы можете видеть, автоматический вывод типов позволит писать вместо конкретного типа переменной ключевое слово var.

Java всегда была достаточно громоздким языком, что, в общем-то, не так уж плохо, когда вы хотите прочитать чужой код и понять, что же было у разработчика на уме, когда он его писал. Но для тех, кто всегда считал конструкции Java слишком утомительными для написания это предложение — большой сдвиг. К сожалению, в Java 9 этот JEP реализован не будет.

Так введут или не введут?

Браян Гоец, архитектор языка Java в Oracle, опубликовал результаты исследования, касательно этого предложения. Главный вопрос звучал так: “Что вы думаете, по поводу предложения добавить в язык автоматическое выведение типов?”. В исследовании приняли участие 2453 разработчика, и большинство ответило на вопрос положительно:

Исследование Java-сообщества: 74% разработчиков хотят упрощения синтаксиса 1

Вторая часть исследования была посвящена будущему синтаксису. Опрашиваемым предлагалось на выбор 4 варианта, заимствованных из других языков, таких как C#, Scala, Swift, C++, либо использование let. Победил вариант с var и val:

Исследование Java-сообщества: 74% разработчиков хотят упрощения синтаксиса 2

Подробнее о планах

Согласно задумке, новую синтаксическую конструкцию можно будет использовать:

  • Локальных переменных с инициализаторами;
  • Индексов во вложенных циклах for;
  • Локальных переменных внутри обычного цикла for.

И точно нельзя будет использовать для:

  • Параметров метода или конструктора;
  • Возвращаемых значений метода;
  • Полей.

Если вы точно не определились со своим отношением к этой задумке, вы можете воспользоваться неофициальным билдом OpenJDK, который её реализует.

На странице JEP 286 есть следующее замечание от Oracle:

Java остаётся буквально единственным популярным статически типизированным языком, в который эта возможность ещё не введена; таким образом, это предложение уже не является спорным.

Тем не менее, до конца не ясно, будет ли это предложение реализовано, и если будет, то когда.

Следите за новыми постами
Следите за новыми постами по любимым темам
7К открытий7К показов