Согласно опубликованному в марте новому плану развития OpenJDK (открытый набор средств разработчика для Java, аналог официальной версии Java SE 9 от Oracle), в ближайшем будущем у разработчиков появится возможность наряду с существующим механизмом статических переменных использовать также переменный тип локальных данных. В документе говорится, что жесткое статическое описание типов является важным механизмом создания надежного ПО, но во многих случая такое требование является излишним и программисты должны получить возможность упрощения написания кода с отсутствием обязательного описания типа данных.

Вопрос о допустимости использования переменных произвольного типа так же стар, как вся тема языков программирования. Классические принципы программирования требуют применять только статическое, жестко определенное описание переменных, мотивируя это необходимостью повышения надежности кода. Но это, конечно, усложняет сам процесс написания кода, особенно когда требуется производить преобразование типа данных (например, из числового вида в символьный). Соответственно, языки, появляющиеся под лозунгом упрощения программирования, своим достоинством (вполне справедливо) считают как раз использованием свободных типов данных.

В целом же в теории программирования уже давно есть консенсус по данному вопросу: статическое описание считается необходимым для создания профессиональными разработчиками сложных, больших и ответственных программ, свободное описание применяется для более простого ПО, в том числе программистами-любителями. Но поскольку грани между простым и сложным ПО, между профессионалами и любителями являются весьма условными и каждая система программирования хочет расширить сферу своей применения, то отчетливо видна тенденция: языки расширяют возможности выбора варианта описания переменных за счет «конкурирующих» идей. Так, языки, изначально базирующиеся на принципах статического описания (C++, Scala, Go), уже включают некоторые варианты свободных типов данных для локальных переменных. А «простые» языки прирастают возможностями жесткого описание (например, в случае перехода от JavaScript к TypeScript). Теперь «послабления» в написании кода будут доступны и Java-программистам.

Версия для печати