2010-07-13 45 views
25

Sau khi thực hiện toàn bộ chương trình "doanh nghiệp" trong một thời gian, tôi vô cùng thất vọng vì ngôn ngữ đó và luôn cảm thấy khá bị cản trở nếu tôi phải quay lại. Kích thước dự án của ứng dụng Android trung bình của bạn không quá đáng sợ và các thư viện thực sự khá tốt về kiểu mã hóa của chúng, nhưng nếu tôi có thể tránh Java, tôi chắc chắn sẽ làm.Android mà không cần Java

Vì vậy, đó là câu hỏi: Tôi có thể tránh nó không? Mặc dù có rất nhiều ngôn ngữ JVM sẽ là một tùy chọn trên máy tính để bàn và máy chủ, máy ảo Dalvik và các thiết bị tự đặt ra một số giới hạn. Điều này có vẻ là một chút tốt hơn trong 2.2 với JIT, nhưng hạn chế bản thân mình để cắt cạnh sẽ là một quyết định khá khắc nghiệt.

Cách thay thế duy nhất tôi biết được sử dụng phần nào có vẻ là Scala. Có khả năng nào tôi bị mất không? Clojure dường như chạy chính xác những vấn đề tôi đã minh họa ở trên với Dalvik, nhưng khi AppInventor được xây dựng trên Kawa có thể có hy vọng cho một Lisp trên nền tảng di động?

Ngôn ngữ nào khác đã có thể sử dụng được hoặc thực hiện các bước tiến hướng tới điều đó?

+2

bản sao có thể có của [Tôi có thể lập trình cho android bằng bất kỳ ngôn ngữ JVM nào không?] (Http://stackoverflow.com/questions/3002566/can-i-program-for-android-using-any-jvm-language) –

+1

Điều đó và các cuộc thảo luận khác đã đề cập đến rất nhiều ứng cử viên tiềm năng. Và nó thực sự không khó để có được bất kỳ ngôn ngữ JVM nào chạy trên Android, khả năng thực thi và hiệu suất là các vấn đề khác… – mhd

+0

Liên quan đến các khoản phí của Oracle đối với Android, nó có thể là một khả năng thực sự trong tương lai từ quan điểm của Google. ngôn ngữ khác là ngôn ngữ được hỗ trợ chính? (Có lẽ tôi nên đặt một câu hỏi thực sự liên quan đến điều này, không chỉ bình luận.) – pcjuzer

Trả lời

14

Cá nhân, tôi muốn nói rằng Scala là cược tốt nhất của bạn ngay bây giờ. Nó hoạt động thực sự tốt, với một nhược điểm là bạn được yêu cầu bao gồm Scala như là một phụ thuộc (mà sẽ tăng kích thước của ứng dụng của bạn).

+4

Kích thước của ứng dụng có thể được kiểm soát bằng ProGuard. – missingfaktor

+0

@missingfaktor đồng ý, sự khác biệt cuối cùng về kích thước apk có thể thấp tới ~ 500Kb –

1

This link có một số chi tiết về cách tải ứng dụng Scala hoạt động trên Android. Tôi chắc rằng bạn có thể làm một cái gì đó tương tự cho clojure hoặc các ngôn ngữ jvm khác.

Ruboto là nhằm mang lại JRuby trong.

9

Có một số khả năng tôi đang thiếu?

Tấn 'em!

Clojure dường như để chạy trong chính xác vấn đề tôi đã trình bày ở trên với Dalvik

Tôi không biết về điều này. Bất kỳ ngôn ngữ JVM nào là trình biên dịch trước thời gian (tức là, tạo ra bytecode Java trên PC của nhà phát triển) sẽ làm việc với Dalvik.

nhưng như AppInventor được xây dựng trên Kawa có thể có hy vọng cho một Lisp trên nền tảng di động

AFAIK, App Inventor là chỉ sử dụng Kawa cho thế hệ mã.

Ngôn ngữ nào khác đã là có thể sử dụng hoặc thực hiện các bước hướng tới điều đó?

Vâng, có HTML5 (Javascript), hoạt động OK ở chế độ ngoại tuyến.

Hoặc, có PhoneGap (HTML + CSS + Javascript).

Hoặc, có Rhodes (ứng dụng Rails-esque trong Ruby trên thiết bị).

Hoặc, có Titanium Appcelerator Mobile (HTML + Javascript, nhưng với các móc Javascript để hiển thị các tiện ích con giao diện người dùng gốc).

Hoặc, có Flash, ít nhất là cho Android 2.2 trở lên.

Hoặc, có AIR ... tốt, OK, vẫn còn trong bản phát hành trước.

Như Elfred đã lưu ý khi tôi viết bài này, có JRuby với Ruboto.

Có nền tảng, Corona, DroidScript, Flixel, MobiForms, MonoDroid, MoSync, Squeak và SuperWaba.

Có C/C++ thông qua NDK, mặc dù đó là chủ yếu để thêm thư viện tiện ích mở rộng vào ứng dụng Java nhiều hơn so với viết đầy đủ các ứng dụng mã gốc.

Có SL4A (trước đây là Môi trường tập lệnh Android hoặc ASE), là cửa ngõ của bạn với Python, Perl, Lua và các ngôn ngữ kịch bản khác. Tại thời điểm này, bạn không thể đóng gói các tập lệnh này dưới dạng APK nhưng chúng đang làm việc trên đó.

Bây giờ, không cái nào trong số này sẽ cung cấp cho bạn chính xác giao diện của ứng dụng Android "thông thường". Đối với những người, bạn cần một ngôn ngữ JVM với biên dịch trước thời gian. Và không có câu hỏi rằng các ứng dụng Java Android tiêu chuẩn bog rất xa và nhiều nhất. Nhưng không giống như một số hệ điều hành có hương vị trái cây chặn loại điều này, bạn có nhiều nơi để thử nghiệm các lựa chọn thay thế cho mã hóa Java truyền thống với Android.

Một số anh chàng bị hói đang viết một cuốn sách sẽ xem xét tất cả các tùy chọn này, nhưng nó chỉ sẵn sàng một phần ngay bây giờ.

+2

Ngay bây giờ tôi chủ yếu là nhìn vào các ứng dụng "bản địa". Và thông tin của tôi về Clojure có thể hơi cũ, nhưng tôi nhớ điều gì đó trong danh sách gửi thư cách đây vài tháng, nơi thời gian khởi động khá cấm. Chỉ cần nhận được một cái gì đó để chạy trên Dalvik/Android không phải là khó, nhưng thật khó để bán một cái gì đó mà hoạt động kém hiệu quả. – mhd

+1

"Clojure dường như chạy chính xác những vấn đề tôi đã minh họa ở trên với Dalvik" Các vấn đề với Clojure có nhiều việc phải làm với thời gian khởi động tồi tệ, nhiều kích thước trên đầu, và trình biên dịch JIT kém (so với Hotspot). Bản chất chức năng của Clojure cũng có nghĩa là nó phụ thuộc rất nhiều vào bộ thu gom rác, một khu vực khác mà Dalvik ở đằng sau Hotspot. – technomancy

11

Bạn đã nhìn Mirah? Nó cung cấp cho bạn một cú pháp giống như Ruby và biên dịch sang Java. Nó được dán nhãn CoffeeScript của Java.

+1

Mirah là lý tưởng vì nó bổ sung thêm nhiều tính năng hiện đại hơn như suy luận và đóng cửa nhưng bổ sung thêm chi phí thời gian chạy bằng không. Hãy xem Pindah: https://github.com/mirah/pindah một công cụ nhỏ để giúp xây dựng ứng dụng Mirah Android. Tiến sĩ Dobbs có một cái nhìn tổng quan về ngôn ngữ: http://drdobbs.com/java/229400307 – technomancy

+0

@technomancy, Phải, nhưng làm thế nào để bạn nhận được hỗ trợ IDE cho điều này? – Pacerier

0

Xamarin Studio cho phép bạn tạo trong C#/Mono và tạo ứng dụng cho cả Android và iOS. Bây giờ các lớp trình bày phải được thực hiện khác nhau trên cả hai nền tảng, nhưng đối với khả năng sử dụng C#, đó là một chiến thắng lớn.

0

Bạn có thể xây dựng một ứng dụng Android với kiến ​​thức về chỉ Html/css/Js. Vì vậy, không cần Java để tạo ra một ứng dụng Android. Truy cập vào đây để biết một số kiến ​​thức cơ bản. [1] http://www.chromeearth.com/requirements-cordova-platform/

1

DroidScript có lẽ là một trong những công cụ phát triển được đề cập ở trên dễ sử dụng nhất để phát triển Android. Giống như Cordova, bạn sử dụng JavaScript, nhưng không giống như Cordova, bạn có thể chọn sử dụng GUI hoặc HTML5 của Android để xây dựng giao diện Ứng dụng của bạn.

Ngoài ra, bạn vẫn có quyền truy cập vào tất cả các thiết bị cảm biến/phần cứng mà không cần phải nhập tải các plugin phức tạp. Ngoài ra, bạn sẽ nhận được tiền thưởng khi có thể phát triển trên thiết bị di động của mình nếu cần (thậm chí bạn có thể tạo APK và xuất bản chúng từ thiết bị của mình).

Tôi sẽ nói nó rất tốt cho người mới bắt đầu hoặc tạo mẫu nhưng có lẽ không đủ linh hoạt cho các nhà phát triển dày dạn kinh nghiệm.

0

Tôi chưa bao giờ sử dụng nó, nhưng Kotlin là một ngôn ngữ mới chạy trên JVM được phát triển bởi JetBrains (nhà sản xuất Android Studio) xứng đáng được đề cập đến. Trang web Kotlin tuyên bố rằng ngôn ngữ có thể tương thích 100% với Java và có hướng dẫn cho Getting started with Android and Kotlin và Android Studio giờ đây thực sự đi kèm với sự hỗ trợ của Kotlin.

Các vấn đề liên quan