2010-05-14 35 views
12

Tôi chỉ có bản thân mình là điện thoại Android và tôi sắp chết để bắt đầu mã hóa trên đó! Tuy nhiên tôi không phải là một fan hâm mộ java lớn, mặc dù tôi có thể sống với điều đó, tôi muốn biết nếu có lựa chọn thay thế hợp lý cho máy ảo android. Tôi đã thực hiện một dự án có kích thước trung bình bằng cách sử dụng clojure, tuy nhiên từ các bài đánh giá tôi đọc, nó rất chậm khi chạy trên Android. Làm thế nào về scala? Tôi đọc rằng một số người đã làm thí nghiệm với nó trong android, có phải là "đủ nhanh" không? Đường cong học tập lớn đến mức nào?Lựa chọn thay thế cho java trên android

Chúc mừng, Ze Maria

Trả lời

4

Có NDK cho phép bạn viết phần của chương trình của bạn trong C hoặc C++.

Có ASE cho phép bạn viết tập lệnh bằng python và có thể là các ngôn ngữ khác. Không có trình biên dịch python mặc dù bạn có thể nghe thấy khác.

Tôi đã đọc điều gì đó về scala nhưng vì tôi không thực sự quan tâm nên tôi không chú ý.

+1

NDK chỉ tạo mã cho ARM tại thời điểm này. Vì vậy, các thiết bị với các CPU khác bị bỏ qua. Giống như WeTab. – stesch

4

Chắc chắn có khá nhiều người đang phát triển Android ở Scala. Thông báo cụ thể, thậm chí còn có plugin cho SBT, trình tạo ưu tiên cho các dự án Scala, với các mục tiêu cụ thể cho Android.

Đối với đường cong học tập, tôi không thể nói cho phát triển Android chính nó, như tôi đã không làm điều đó. Đối với Scala, bạn có thể sản xuất rất nhanh, nhưng việc học tất cả các đặc tính của ngôn ngữ cần có thời gian. Bạn không cần để tìm hiểu tất cả các đặc điểm - Tôi đã thấy mọi người viết các chương trình không đồ chơi với hầu như không có kinh nghiệm - nhưng một số người không thể chịu được việc không biết gì về ngôn ngữ họ đang sử dụng.

Ngoài ra, rất nhiều mã Scala ra có rất khai báo. Ví dụ, nếu bạn xem các tệp xây dựng SBT, chúng hầu hết là khai báo. Một số người rất khó chịu vì lý do đó.

Tôi đoán những gì tôi đang cố gắng nói là nó phụ thuộc chủ yếu vào bạn như thế nào bạn sẽ đưa đến Scala.

Đối với tốc độ, mã Scala có thể nhanh như mã Java, mặc dù có thể kêu gọi tránh trừu tượng mức cao hơn để đổi lấy mã xấu hơn, nhưng nhanh hơn. Nó phụ thuộc rất nhiều loại tính toán bạn đang làm, mặc dù.

3

Android 2.2 thêm jit vào máy ảo được cho là làm cho các chương trình tải Clojure hiệu quả hơn nhiều. Clojure tạo ra rất nhiều lớp học nhỏ cần một thời gian để tải khi chương trình Android khởi động. điều này nên được giảm bớt với các enw android mặc dù không thể chấp nhận của nó bây giờ.

+4

Và mã Clojure dựa trên một GC tốt, mà dalvik không thể cung cấp. JIT hay không. – stesch

0

"đủ nhanh" - bạn đang chạy các ứng dụng trên điện thoại di động có câu hỏi liên quan đến những gì bạn mong đợi.

Hiệu suất của java cũng tăng lên qua các năm. Nhưng cũng chạy bạn chỉ là viết mã trong java. Google đã tạo ra một công cụ lấy mã byte java và chuyển đổi nó thành .dex (Dalvik Executables).Dalvik VM thực hiện mà java sử dụng được tối ưu hóa cho nền tảng này. Điều đó có nghĩa là bạn có thể lập trình bằng một ngôn ngữ cấp cao như java, cung cấp nhiều lớp trợ giúp có nghĩa là bạn sẽ làm việc hiệu quả hơn.

Họ có NDK nhưng tôi tin rằng bạn vẫn phải có giao diện người dùng java và yêu cầu mã java của bạn gọi mã NDK khi cần. Bạn khá nhiều chỉ muốn viết mã gốc khi bạn thực sự cần tối ưu hóa. Rất nhiều các lớp java như java nio và các lớp opengl chỉ là các trình bao bọc cho các cuộc gọi đòn bẩy thấp sử dụng tài nguyên phần cứng trực tiếp.

Tôi có thể đã trả lời câu hỏi của bạn một chút.

1

Có một cổng của JRuby cho Android, cũng như, mà tôi đã chơi với và có vẻ thú vị. http://ruboto.org/

0

Ngoài ra còn có Lua, bạn có thể sử dụng với Corona SDK.