
Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.
Одна з пропозицій JEP (JDK Enhancement Proposal), а саме: JEP 286, викликала бурхливий відгук у співтовариства Java. Пропозиція полягає в тому, щоб спростити синтаксис мови за допомогою таких ключових конструкцій, як var
і val
. У цій статті ми спробуємо розібратися, що ж це означає, і як на це реагують самі програмісти.
Стисло про суть пропозиції
Мова про автоматичне виведення типів (Local Variable Type Inference) – синтаксичний цукор, який дозволить декларувати змінні не вказуючи їх тип. Виглядати це буде приблизно так:
var list = new ArrayList();val stream = getStream ();
Тоді треба писати таким чином:
List list = new ArrayList();final Stream stream = getStream ();
Як Ви можете бачити, автоматичне виведення типів дозволить писати замість конкретного типу змінної ключове слово var
.
Java – громіздка мова, що, загалом, не так вже погано, коли Ви хочете прочитати чужий код і зрозуміти, що ж було у розробника на умі, коли він його писав. Але для тих, хто завжди вважав конструкції Java занадто стомливими для написання, ця пропозиція – велике зрушення. На жаль, в Java 9 цей JEP реалізований не буде.
Так введуть або не введуть?
Браян Гоец, архітектор мови Java в Oracle, опублікував результати дослідження, щодо цієї пропозиції. Головне запитання: “Що Ви думаєте з приводу пропозиції додати в мову автоматичне виведення типів?”. У дослідженні взяли участь 2453 розробники, і більшість відповіли на запитання позитивно:
“Що Ви думаєте з приводу введення в мову автоматичного виведення типів?”
Друга частина дослідження була присвячена майбутньому синтаксису. Опитуваним пропонувалися на вибір 4 варіанти, запозичених з інших мов, таких як C#, Scala, Swift, C++, або використання let. Переміг варіант з var
і val
:
Результати опитування щодо нового синтаксису
Детальніше про плани
Згідно із задумом, нову синтаксичну конструкцію можна буде використати для:
- локальних змінних з ініціалізаторами;
- індексів у вкладених циклах
for
; - локальних змінних усередині звичайного циклу
for
.
І точно не можна буде використати для:
- параметрів методу або конструктора;
- повертаних значень методу;
- полів.
Якщо Ви точно не визначилися зі своїм ставленням до цього задуму, то можете скористатися неофіційним білдом OpenJDK, який її реалізує.
На сторінці JEP 286 є зауваження від Oracle:
Java залишається буквально єдиною популярною мовою, що статично типізується, в яку ця можливість ще не введена; таким чином, ця пропозиція вже не є спірною.
Проте до кінця не ясно, чи буде ця пропозиція реалізованою, і якщо так, то коли?
Джерело: blog.takipi.com
Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?