2012-06-20 45 views
51

Một ngày khác, tôi đã bắt gặp một triển khai Python được gọi là Jython.
Với Jython bạn có thể viết các ứng dụng Java bằng Python và biên dịch chúng sang Java thuần túy.Lập trình ứng dụng Android trong jython

Tôi đã tự hỏi: Lập trình Android được thực hiện với Java.
Vì vậy, có thể tạo ứng dụng Android bằng Jython không?

+1

Python không có khả năng tương tác tuyệt vời với java. Nếu bạn muốn ui bản địa và đẹp, bạn buộc phải sử dụng java/scala. Nếu bạn là ok với non ui bản địa, bạn có thể sử dụng qt cho android + python wrapper + viết code trong python. – logcat

+0

Tôi hiểu ... Vì vậy, bạn không thể làm bất cứ điều gì bạn có thể làm trong java với jython? –

+7

@tabbykitten rằng interop giữa Python và Java chính xác là những gì Jython * * cung cấp. – lvc

Trả lời

37

Jython không biên dịch thành "pure java", nó biên dịch thành bytecode java - tức là, tới *.class tệp. Để phát triển cho Android, tiếp tục biên dịch bytecode java sang Dalvik bytecode. Điều này có nghĩa là, có, Jython có thể cho phép bạn sử dụng Python để phát triển Android, tùy thuộc vào việc bạn sử dụng nó với Android SDK (tôi đã không cố gắng này, vì vậy tôi không biết nó thực sự khó khăn như thế nào) - bạn do cần đảm bảo bạn không phụ thuộc vào bất kỳ API Java nào mà Android không cung cấp và có thể cần có một số tệp API Android .class xung quanh khi bạn chạy jython. Bên cạnh những niggles, ý tưởng cốt lõi của bạn sẽ làm việc - Jython, thực sự, hãy viết mã bằng Python tương tác với bất cứ thứ gì khác chạy trên JVM.

+2

theo https://wiki.python.org/jython/JythonFaq/GeneralInfo#Can_I_use_Jython_to_make_apps_for_mobile_phones.3F jython yêu cầu JME thay vì JSE và không có cổng nào trước đây. Vậy câu trả lời này có phải là lý thuyết thuần túy hay có thực sự được thực hiện bởi bất kỳ ai không? –

+2

@TobiasKienzler câu trả lời phần lớn là lý thuyết - tôi nói trong câu trả lời rằng tôi đã không thử điều này, và rằng nhận được Jython và các công cụ Android để làm việc cùng nhau có thể là một vấn đề. Điều đó nói rằng, tôi không nghĩ rằng sự khác biệt JME/JSE quan trọng ở đây, kể từ khi bước Java bytecode bytecode sẽ được thực hiện * trên máy phát triển *, không phải trên thiết bị Android. Java SE khả dụng trên mọi nền tảng được Android SDK hỗ trợ và Android Studio mới hơn. – lvc

+0

cảm ơn câu trả lời của bạn - tình cờ tôi _was_ hy vọng sẽ sử dụng jython để phát triển Android gốc ... –

3

Miễn là nó biên dịch sang java thuần túy (với một số ràng buộc, vì một số API không có sẵn), nhưng tôi nghi ngờ rằng python sẽ được sử dụng nhiều trong phát triển các công cụ cụ thể như hoạt động và mã thao tác UI.

Bạn cũng phải quản lý kích thước ứng dụng - đó là hạn chế nghiêm trọng cho phát triển thiết bị di động.

+0

Xét rằng đầu ra dựa trên javac của mã jython không bao gồm thời gian chạy python, nhưng chỉ có mã jvm, thì sao? Nói về kích thước ứng dụng. – jheld

-3

Không thể thực hiện được. Bạn không thể sử dụng jython với android vì DVM không hiểu nó. DVM không phải là JVM.

+0

Cảm ơn @Burhan Khalid Tôi sẽ cẩn thận về những điều nhỏ nhặt nhưng quan trọng này trong các bài đăng tương lai của tôi có trong StackOverFlow. –

+0

Tôi đã thừa nhận những sai lầm bằng văn bản tiếng Anh của mình nhưng ai đó đã bỏ phiếu cho tôi ngay cả bây giờ. –

+0

Các ứng dụng đang sử dụng "jythonroid" tức là Jython cho Android ... Làm thế nào đến; ai đó đến chỉ ra khỏi không có nơi và xuống phiếu bạn cho một cái gì đó anh ta không biết gì ... hehehe :-p. –

1

Có và không. Với jython bạn có thể sử dụng các lớp java để biên dịch cho JVM. Nhưng Android sử dụng DVM (Máy ảo Dalvik) và mã được biên dịch là khác nhau. Bạn phải sử dụng các công cụ để chuyển đổi từ mã JVM sang DVM.

-3

đáng buồn số

Điện thoại di động chỉ có Java ME (Micro Edition) nhưng Jython yêu cầu Java SE (Standard Edition). Không có cổng Jython cho ME, và không có đủ sự quan tâm để làm cho nó xứng đáng với nỗ lực.

+1

Điều này không cung cấp câu trả lời cho câu hỏi. yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/pri vileges/comment). –

+1

@ A.J. Câu hỏi đặt ra là "có thể chạy Jython trong Android" hay không. Vì vậy, nó là một câu trả lời. Với lời giải thích hoàn toàn không chính xác, vâng, nhưng câu trả lời là vậy. – Gangnus

+0

@Gangnus, thành thật mà nói, bỏ phiếu gần đó là khá chung chung, tôi nói nhiều hơn vì không có bằng chứng hay lý luận, nó có thể dễ dàng được đóng gói trong một bình luận, mà OP không thể thực hiện, do đó bỏ phiếu gần. –

0

Scripting Layer for Android (SL4A) mang ngôn ngữ kịch bản sang Android bằng cách cho phép bạn chỉnh sửa và thực thi tập lệnh và trình thông dịch tương tác trực tiếp trên thiết bị Android.

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