Tên mã một cách tiếp cận rất cân bằng với tính di động. Tôi muốn thêm một bình luận thực dụng.
Từ phía giao diện người dùng, CN1 vẽ tất cả giao diện người dùng của nó trên canvas được nền tảng cung cấp. Nó cố gắng bắt chước giao diện của nền tảng bản địa, nếu bạn chọn nó, nhưng có nhiều thành công như Swing có "giao diện nền tảng tự nhiên" của nó, bởi vì nền tảng gốc liên tục thay đổi, và "native l & f" luôn thiếu sót và trong hầu hết các trường hợp, cảm thấy không hoàn toàn đúng.
Tuy nhiên, nếu bạn chọn giao diện độc lập nền tảng (đó là loại xu hướng hiện nay), bạn không bị hạn chế bởi bộ thành phần mặc định của Codenameone theo bất kỳ cách nào: nó giống như Swing với giao diện nền tảng của nó và cảm nhận ("Kim loại" vv). Cái nào tốt.
Từ phía ngôn ngữ: trên iOS, java được biên dịch thành C, sau đó được gắn với Objective-C viết tay và không bó VM, chỉ lớp di động. Điều quan trọng nhất ở đây là thực tế là java được biên dịch thành C và không phải Objective-C, mà làm cho nó nhanh hơn sau đó mã Objective-C thành ngữ, vì nó thực hiện ảo hoặc thường xuyên hơn, gọi phương thức trực tiếp thay vì gửi thông điệp Objective C chậm. Cái nào tốt.
Nó cũng có thể có vẻ nhanh hơn một chút trên Android, bởi vì, trong khi sử dụng Dalvik/Art, nó không sử dụng giao diện người dùng gốc của Android mà cồng kềnh so với CN1. Điều này có thể làm cho việc tạo UI động nhanh hơn trong thời gian chạy, điều này là tốt.
Một trong những điểm mạnh nhất của phương pháp CN1 là trình giả lập của nó (được triển khai trên canvas JavaFX trên máy tính để bàn) mà bạn sử dụng để phát triển phần mềm. Trình giả lập sử dụng cùng một mã giao diện người dùng và các API di động như trên các nền tảng di động và cho phép bạn sử dụng IDE để chọn gỡ lỗi. Nó khởi động lại một cách nhanh chóng và chu trình biên dịch chạy rất bền vững so với Android. Cái nào tốt.
Điểm mạnh thứ hai (chính là điểm mạnh!) là bản chất mở của thư viện giao diện người dùng của họ, tất cả mã nguồn gốc và dịch giả bytecode-to-C. Nếu bạn dành chút nỗ lực, bạn có thể tránh việc xây dựng các cổng Android/iOS trên trang trại của họ và tự tháo gỡ bản thân khỏi bản sửa đổi sản phẩm cụ thể của họ (nhưng không phải từ một số dịch vụ giá trị gia tăng mà họ cung cấp, vốn không phải là nguồn mở!). Tùy thuộc vào tình hình của bạn, điều này có thể (hoặc có thể không!) Khá tốt cho bạn!
Điểm yếu của Codenameone là độ chín ít lý tưởng, có nghĩa là bạn có thể dễ dàng chụp chân bằng các thành phần UI cơ bản, nếu bạn sử dụng chúng theo cách mà chúng không được sử dụng. Ngoài ra nó có nghĩa là lớp java portability của nó không đủ lớn (và có lỗ hổng trong nó) để đáp ứng nhu cầu của mọi người, và bạn có thể phải sử dụng bản địa ở một số nơi, và cổng các thư viện java thuần túy khác.
Ngoài ra, trạng thái hiện tại của hiệu suất đồ họa là không tối ưu; nếu bạn nhận được bó văn bản trên màn hình, bạn sẽ dễ dàng bỏ lỡ 16msec hoạt ảnh/thời gian quét lại, điều này có thể được thực hiện xung quanh bằng cách đệm đôi, nhưng nó cũng có giới hạn của nó. May mắn thay, vẫn còn chỗ để tối ưu hóa việc triển khai trên cả hai nền tảng chính, hy vọng họ sẽ cải thiện nó.
Nhìn chung, Codenameone có khả năng thích hợp tốt như một khung công tác đa nền tảng cho một số lớp ứng dụng; bạn cũng có thể tìm thấy giá trị trong dịch vụ của họ.
Cảm ơn sự quan tâm của bạn, Shai! Tôi nghĩ rằng bạn nên đặt nó trong FAQ của bạn, chúng tôi biết không có ma thuật _real_ xảy ra và muốn biết làm thế nào các phép thuật _perceived_ hoạt động. Tôi có thể sẽ thử nó trong giai đoạn đánh giá! –
Không có giai đoạn đánh giá cho Codename One, ý định của chúng tôi là luôn có tùy chọn miễn phí hợp lý cho các nhà phát triển không có chuỗi đính kèm. Vì sản phẩm là nguồn mở, điều quan trọng là chúng ta phải mang theo một số quyền tự do đó vào các dịch vụ SaaS. –
Xin lỗi, tôi đã thể hiện sai: P Tôi hiện chỉ đang tìm kiếm các giải pháp thay thế, sau đó chúng tôi sẽ có một giai đoạn đánh giá, để xem cách các công nghệ đáp ứng nhu cầu của chúng tôi. –