Java đang làm chậm sự phát triển của Android và Kotlin không phải là câu trả lời

kotlin_800x320

Tôi đang ngồi nghiên cứu, trong căn phòng tối và hoàn toàn tĩnh lặng. Tôi đang chìm đắm trong dòng chảy sáng tạo, gõ những dòng code cuối cùng cho trò chơi Chromecast mới của tôi. Tôi bấm build và một âm thanh lạ kỳ phủ đầy căn phòng. Cái âm thanh kỳ lạ ấy khiến nhiều người lầm tưởng rằng tôi sắp làm một cú đột phá trong lĩnh vực vật lý phân tử. Nhưng sự thật đó là con Macbook Air của tôi đang cố gắng build 200 dòng code riêng biệt được bao bọc bởi hàng trăm, hàng ngàn megabyte của thư viện Android. Dòng chảy ấy biến mất, để lại mình tôi với những hồi tưởng về sự phát triển của Android 5 năm về trước.

Tôi nhớ rằng đã có lúc rất là bình thường khi phải chờ đến tận 7 phút để máy ảo Android khởi động xong và giữ cho nó chạy bằng mọi giá. Khi mà bạn đã tốn ngần ấy thời gian để chờ đợi, thì thêm 2 hoặc 4 phút để builld ứng dụng có vẻ khá là hợp lý. Mọi thứ được cải thiện hơn khi mà tôi thật sự có khả năng mua một thiết bị (android) để mà phát triển ứng dụng. Nhưng đó là của 5 năm trước. Bây giờ là 2017, chúng ta có những chiếc xe tự lái và Web Assembly được triển khai trên tất cả các trình duyệt lớn. Google đã đặt mục tiêu tiếp cận hàng tỷ người dùng, nhưng cái giá để bắt đầu cho những lập trình viên mới có vẻ cao hơn bao giờ hết. Nếu bạn hỏi tôi, tôi nghĩ rằng Java đang làm chậm sự phát triển của Androids và Kotlin cũng chẳng thể làm mọi thứ tốt hơn.

Java thật rườm rà

Tôi đã cố gắng đọc tài liệu Android về implement Cast Remote Display Service và In-App purchases. Tôi đã đầu hàng ngay sau đó và chỉ copy/pasted code từ ứng dụng demo. Bản chất thật sự của cái mà tôi đang cố implement thường thì được giấu trong việc chỉ gọi 2 phương thức. Nhưng để làm theo “cách của Java”, trước hết tôi cần phải OOP cmn hóa solution của mình và chạy code generation, bởi vì thậm chí Google cho rằng đó là cách duy nhất để làm In-App purchase API. Khi mà bạn sử dụng một ngôn ngữ mà bạn không thể implement một callback mà không phải tạo ra một class và một nền tảng (platform) mà phải hoàn toàn dựa vào hành vi bất đồng bộ (asynchronous behavior), bạn sẽ nhận được một đống hỗn tạp trôi nổi lềnh bềnh.

Tôi nghĩ, Kotlin thực sự giúp giải quyết sự dài dòng của code bằng cấu trúc của một ngôn ngữ hiện đại, nhưng giải pháp này chỉ là một phần. Android APIs vẫn được xây dựng để được dùng bởi Java. Công bằng mà nói, Google đang làm việc một cách tích cực để hỗ trợ Java 8 và Android Studio 3.0, nhưng chắc sẽ mất hàng năm trời trước khi nền tảng Android hoàn toàn sử dụng được các tính năng của Java 8.

Bản chất chậm chạp của Java đã ảnh hướng đến vòng đời của các ứng dụng được phát triển kỹ lưỡng

Android activity/fragment/service lifecycle events quả thực rất phức tạp. Các lập trình viên không hiểu được chúng và bạn không thể trông chờ mọi người bỏ thời gian ra để mà implement nó một cách đúng đắn. Không có nó, câu chuyện hoàn hảo về một nền tảng hiệu quả – nơi mà mọi ứng dụng được cố gắng để giảm đến mực tối thiểu năng lượng tiêu thụ –  vỡ vụn. Nếu không phải Java, Android có thể đã kết thúc với các sự kiện vòng đời đơn giản hơn giống như iOS hoặc Windows Phone.

Kotlin thêm nhiều chi phí đầu vào cho thời gian chạy hơn, do đó sẽ đòi hỏi nhiều kỹ thuật hơn để bù đắp. Nhưng có thể những “thư viện Android Reactive” với việc xử lý vòng đời của ứng dụng một cách tự động sẽ là công nghệ vượt trội mà chúng ta đang chờ đợi.

Quá trình build nặng nề làm cho việc lặp lại nhanh chóng là không thể và ngăn cản Android trở nên thật sự mở và dễ dàng tiếp cận tới mọi người.

Nếu bạn muốn ứng dụng của mình tận dụng được Google APIs, Firebase và một vài thư viện bên thứ ba và vẫn giữ được tốc độ lặp lại tốt, nên tìm một máy trạm với CPU mạnh mẽ và ổ SSD. Google vẫn đang liên tục đầu tư vào việc tối ưu hóa quá trình build Java và cải thiện live app reload, nhưng vẫn không đủ tốt để sử dụng cho phần cứng hiện tại. Thật dễ dàng để đẩy sự nặng nề của nên tảng tới các lập trình viên và mong đợi rằng họ sẽ mua phần cứng mới nhất để bắt kịp tốc độ. Nhưng điều này lại dẫn tới việc cổ vũ cho một nền tảng xa xỉ nơi mà chỉ những người có đặc quyền mới có thể tạo ra nội dung còn những người khác phải ra ria (nhìn vào Apple mà xem). Theo ý kiến của tôi, những gã khổng lồ về phần mềm không nên khiến cho những người ở các nước đang phát triển phải chờ đợi một giải pháp phần mềm được tạo ra cho họ. Những gã khổng lổ ấy nên cắt giảm chi phí để trở thành một người sáng tạo, để mọi ngưới có thể bắt đầu tạo ra phần mềm mà họ thật sự cần.

Các thư viện hỗ trợ Kotlin cũng có chi phí phát triển chứ. Các thư viện đó sẽ là một thứ nữa chúng ta cần phát triển và tối ưu. Ít nhất bây giờ, Google đã có những đóng góp cho quy trình tối ưu ấy.

Ứng dụng Web FTW!

Giả định lớn ở đây là những ứng dụng Android Native vẫn còn có liên quan. Tôi có một niềm tin mãnh liệt vào những ứng dụng mobile web và cảm thấy rát vui mừng khi được thấy thông báo về việc tích hợp Web App trên Android trong sự kiện Google I/O. Tôi nghĩ, Google đang nhận ra rằng chiến lược khóa cứng nền tảng không còn hiệu quả nữa. Để mà duy trì sự tăng trưởng của Android, Google phải hoàn toàn tích hợp Web Apps trên Android.

Tôi chỉ đơn giản là không thấy được một tương lai, nơi mà chúng ta vẫn viết ứng dụng bằng Java hay Kotlin. Nhưng trong cùng thời gian đó, tôi hiểu những đóng góp của Google trong cộng đồng lập trình viên để hỗ trợ và cải thiện những công cụ hiện có mà hoàn toàn không phá vỡ sự ổn định. Tôi chỉ có thể hy vọng rằng bước ngoặc cho Web App sẽ xảy ra không sớm thì muộn. Bởi vì mọi người với một chiếc Raspberry Pi cũng có thể trở thành một lập trình viên ứng dụng Android trong một thế giới của Web Apps.”


Đăng tải lần đầu tiên tại www.agilesaturday.com

Tác giả: Tomas Grubliauskas

Dịch bởi: Bùi Minh Đức 

Chia sẻ bởi: Duy Nguyễn

Liên kết gốc: Java is slowing Android’s growth and Kotlin is not the answer

Advertisements

One thought on “Java đang làm chậm sự phát triển của Android và Kotlin không phải là câu trả lời

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s