Kotlin coroutines “thử nghiệm” có thể được sử dụng trong sản xuất không?


Câu trả lời:


112

CẬP NHẬT : Kotlin coroutines không còn thử nghiệm kể từ Kotlin 1.3.

Kotlin coroutines có thể và nên được sử dụng trong sản xuất. Đó là lý do chính để chính thức phát hành chúng trong Kotlin 1.1. Sau khi phát hành chúng, nhóm JetBrains đã cam kết duy trì khả năng tương thích ngược đối với bất kỳ thay đổi nào được giới thiệu trong các bản phát hành nhỏ khi chúng phát triển, đồng thời cho phép mọi người thử chúng một cách an toàn trong các ứng dụng sản xuất phức tạp.

Nói tóm lại, sự khác biệt giữa các tính năng “thử nghiệm” và “bình thường” là đối với các tính năng Kotlin thông thường không thể thêm nội dung mới trong các bản cập nhật nhỏ, vì có đảm bảo "tương thích hoàn toàn", trong khi đối với các tính năng thử nghiệm, công cụ mới có thể được thêm vào, nhưng không thể loại bỏ được gì (vì đảm bảo tính tương thích ngược).

Các coroutines thử nghiệm sử dụng một kotlin.coroutines.experimentaltên gói riêng biệt , để khi thiết kế coroutines được hoàn thiện và chúng chuyển sang kotlin.coroutinesgói, mã đã biên dịch cũ sẽ không bị hỏng, nhưng sẽ tiếp tục hoạt động thông qua một thư viện hỗ trợ riêng.

Thảo luận thêm (đọc lâu) về lý do tại sao chúng là "thử nghiệm" và điều này có nghĩa là gì có thể được tìm thấy trong bài đăng trên diễn đàn này của Andrey Breslav.

Câu hỏi tương tự cũng áp dụng cho các thư viện hỗ trợ coroutines.

Phiên bản hiện tại của kotlinx.coroutinesđược thiết kế để sử dụng trong sản xuất. Nó được bao phủ khá tốt với các bài kiểm tra, rất nhiều thứ đã được tối ưu hóa, tất cả các thay đổi được thực hiện xem xét các vấn đề về khả năng tương thích ngược với mã đã biên dịch trước đó. Nó chắc chắn đóng vai trò là giường kiểm tra cho nhiều thứ dựa trên quy trình khác nhau, vì vậy có một số phần được đánh dấu rõ ràng là "đang tiến hành" hoặc "không ổn định" trong tài liệu của các hàm và lớp tương ứng. Tuy nhiên, theo mặc định, tất cả các API công khai trong kotlinx.coroutinesđược coi là ổn định và đang được phát triển, nếu cần, với các hỗ trợ di chuyển thích hợp.


5
Nó vẫn làm cho tôi lo lắng khi tôi nhìn thấy những cảnh báo được đánh dấu vào chức năng chúng tôi sử dụng ví dụ như khởi động, trong đó nêu The feature "coroutines" is experimental (see more here)và liên kết đến kotlinlang.org/docs/diagnostics/experimental-coroutines.html
Elye

4
Nó hơi giống Catch-22, phải không? Làm thế nào chúng sẽ được thử nghiệm chiến đấu nếu không ai thử chúng :) Mặt khác, kinh nghiệm của tôi với các tính năng "thử nghiệm" của JetBrains hơn nhiều so với trải nghiệm với các bản phát hành "chất lượng sản xuất" từ nhiều nhà cung cấp khác. Cụ thể, tôi hoàn toàn không gặp vấn đề gì với việc thực hiện các quy trình; "trục trặc" duy nhất mà tôi thấy là về một số chi tiết trong việc xử lý chúng bằng hệ thống kiểu tĩnh, không có tác động trở lại trong thời gian chạy. Họ đã vượt qua các bài kiểm tra căng thẳng và điểm chuẩn khá nghiêm trọng trong Hazelcast Jet, với màu sắc bay.
Marko Topolnik

Các phần của câu trả lời này là sai nghiêm trọng. Các toàn bộ gói là thực nghiệm, chứ không phải một số bộ phận của nó.
Jean de Klerk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.