2012-01-17 25 views
31

Tôi đã viết một số ứng dụng đơn giản trong Android bằng Java.
Nhưng sau đó tôi thấy điều này:Android: Java, C hoặc C++?

Nó cung cấp tiêu đề và thư viện cho phép bạn xây dựng các hoạt động, xử lý người dùng nhập vào, cảm biến sử dụng phần cứng, tài nguyên ứng dụng truy cập, và nhiều hơn nữa, khi lập trình trong C hoặc C++. (Source)

Làm thế nào là nó liên quan đến điều này:

các ứng dụng Android được viết bằng ngôn ngữ lập trình Java. (Source)

Có phải cả ba ngôn ngữ đều có thể?
Xin lỗi vì câu hỏi ngớ ngẩn.

Trả lời

33

Bài viết bạn liên kết có thông tin tốt. Nó cũng liên kết đến http://developer.android.com/sdk/ndk/overview.html có nội dung:

NDK sẽ không có lợi cho hầu hết các ứng dụng. Là một nhà phát triển, bạn cần để cân bằng lợi ích của nó so với những hạn chế của nó; đáng chú ý, việc sử dụng mã gốc không dẫn đến tăng hiệu suất tự động, nhưng luôn luôn làm tăng mức độ phức tạp của ứng dụng. Nói chung, bạn chỉ nên sử dụng mã gốc nếu nó cần thiết cho ứng dụng của bạn, không chỉ vì bạn muốn lập trình bằng C/C++.

Ứng cử viên tiêu biểu cho NDK là độc lập, hoạt động chuyên sâu của CPU không phân bổ nhiều bộ nhớ, chẳng hạn như xử lý tín hiệu, mô phỏng vật lý, v.v. Đơn giản chỉ cần mã hóa lại một phương thức để chạy trong C thường không dẫn đến tăng hiệu suất lớn. Khi kiểm tra xem bạn có nên phát triển theo mã gốc hay không, hãy suy nghĩ về các yêu cầu của bạn và xem API khung Android có cung cấp chức năng bạn cần hay không . NDK có thể, tuy nhiên, có thể là cách hiệu quả để sử dụng lại một kho văn bản lớn của mã C/C++ hiện có.

4

Java luôn cho phép bạn gọi các thành phần "mã gốc". Tuy nhiên, bạn muốn tránh chúng nếu có thể vì chúng có thể giới thiệu các lỗi nhỏ và phụ thuộc nền tảng vào mã của bạn.

Tôi không tin rằng bạn có thể mã toàn bộ ứng dụng cho Android trong C/C++ tuy nhiên - bạn phải có trình bao bọc Java ít nhất.

3

Đây là câu hỏi hay, AFAIK, c hoặc C++ được đưa vào ảnh khi bạn thực sự muốn lập trình một tính năng lõi dalvik so với sử dụng API Android như được chỉ định cho bạn, một cái gì đó giống như các tính năng hoặc phần cứng liên quan đến cảm biến.

Nếu bạn muốn xây dựng ứng dụng bằng API, ứng dụng sẽ chủ yếu là trong Java/XML.

+0

Dalvik chủ yếu được viết bằng C++, nhưng làm việc trên JVM không thực sự bằng ứng dụng viết cho android. Các api C++ là nhiều hơn hạn chế hơn so với java - Tôi thậm chí không chắc chắn có tồn tại một API bản địa cho các cảm biến .. có rõ ràng là một cho Java mặc dù. – Voo

5

Android là Linux bên dưới để bạn có thể chạy bất kỳ ngôn ngữ nào trên đó. Tôi đã chạy kịch bản Perl trên điện thoại Android để giải trí. Từ quan điểm phát triển ứng dụng thực tế, việc triển khai Java của Google chạy trên Dalvik sẽ là con đường điển hình để thực hiện.

2

Viết lại một trong những "hoạt động chuyên sâu CPU độc lập không phân bổ nhiều bộ nhớ" trong C có thể cải thiện hiệu suất/tuổi thọ pin theo hệ số 17 theo this investigation. This article thấy rằng chạy CCTOOLS Fortran thậm chí còn nhanh hơn. Vì vậy, các ngôn ngữ thay thế cũng đáng xem xét.