Чи можна використовувати у виробництві “експериментальні” програми Котліна?


Відповіді:


112

ОНОВЛЕННЯ : Програми Kotlin більше не є експериментальними станом на Kotlin 1.3.

Програми Kotlin можуть і повинні використовуватися у виробництві. Це було основною причиною офіційного звільнення їх у Kotlin 1.1. Випустивши їх, команда JetBrains пообіцяла підтримувати зворотну сумісність щодо будь-яких змін, що вносяться до них у незначні випуски в міру їх розвитку, дозволяючи людям безпечно випробувати їх у складних виробничих додатках.

Коротше кажучи, різниця між «експериментальними» та «звичайними» функціями полягає в тому, що для звичайних функцій Kotlin нові речі не можна додавати при незначних оновленнях, оскільки існує гарантія «повної сумісності», тоді як для експериментальних функцій можна додавати нові але нічого не можна видалити (через гарантію зворотної сумісності).

Експериментальні програми використовують окреме kotlin.coroutines.experimentalім'я пакета, так що, коли проектування програм буде завершено і вони перейдуть до kotlin.coroutinesпакету, старий скомпільований код не зламається, а продовжить працювати через окрему бібліотеку підтримки.

Подальше обговорення (довго читане) про те, чому вони є "експериментальними" і що це означає, можна знайти в цьому дописі на форумі Андрія Бреслава.

Те саме питання стосується бібліотек підтримки програм.

Поточна версія kotlinx.coroutinesпризначена для виробничого використання. Він досить добре покритий тестами, багато речей вже оптимізовано, всі зміни внесені з урахуванням питань зворотної сумісності з раніше складеним кодом. Це, безумовно, служить випробувальним стендом для різних речей, заснованих на корутині, тому є деякі частини, які чітко позначені як "незавершене виробництво" або "нестабільне" в документації відповідних функцій та класів. Однак за замовчуванням усі загальнодоступні API-інтерфейси kotlinx.coroutinesвважаються стабільними та розробляються, якщо потрібно, за допомогою відповідних засобів перенесення.


5
Мене все одно турбує, коли я бачу виділене попередження про функцію, яку ми використовуємо, наприклад, запуск, зазначення The feature "coroutines" is experimental (see more here)та посилання на kotlinlang.org/docs/diagnostics/experimental-coroutines.html
Елі,

4
Це трохи Catch-22, чи не так? Як вони пройдуть бойові випробування, якщо їх ніхто не випробує :) З іншого боку, мій досвід роботи з «експериментальними» функціями JetBrains на кілометри перевершує досвід випусків «якості виробництва» багатьох інших постачальників. Зокрема, у мене було абсолютно нуль проблем із впровадженням корутин; єдині "збої", які я бачив, стосувались деяких деталей у їх обробці системою статичного типу, які не мали наслідків для часу роботи. Вони пройшли досить серйозні стрес-тести та еталони в Hazelcast Jet, з яскравими кольорами.
Марко Топольник

Частини цієї відповіді явно неправильні. Весь пакет є експериментальним, а НЕ деякі його частини.
Жан де Клерк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.