在安卓系统上运行J2ME应用程序?

4

在安卓上运行Java SE或Java ME应用是否可能?

5个回答

5
如果你在谷歌上搜索“J2ME runner android”,你会发现一些项目声称可以让你在Android上运行J2ME项目,比如http://www.netmite.com/android/。在这种情况下,我不确定你所说的Java SE是什么意思。从技术上讲,Dalvik更接近于J2SE而不是J2ME。有很多API可用,并且代码很可能可以无问题地交叉编译。你甚至可以在你的项目中包含很多J2SE JAR文件,并使用构建工具将它们从字节码重新编译为DEX。

http://en.wikipedia.org/wiki/Dalvik_(software)

然而,基础架构有很大的不同,如果没有更改和重新编译,你是无法让为桌面编写/编译的应用程序在Android上运行。


2
为了准确了解Android支持哪些库,并且哪些被省略了,您可能需要查看“Java Libraries Supported by Android”(Android支持的Java库):http://www.zdnet.com/blog/burnette/java-vs-android-apis/504?tag=rbxccnbzd1 Ed Burnette在其中提到了以下内容:

Supported The following standard packages are supported in Android as of the latest release candidate. Consult the Java 2 Platform Standard Edition 5.0 API documentation for information on how to use them.

* java.io - File and stream I/O
* java.lang (except java.lang.management) - Language and exception
* support
* java.math - Big numbers, rounding, precision
* java.net - Network I/O, URLs, sockets
* java.nio - File and channel I/O
* java.security - Authorization, certificates, public keys
* java.sql - Database interfaces
* java.text - Formatting, natural language, collation
* java.util (including java.util.concurrent) - Lists, maps, sets, arrays, collections
* javax.crypto - Ciphers, public keys
* javax.net - Socket factories, SSL
* javax.security (except javax.security.auth.kerberos, javax.security.auth.spi, and javax.security.sasl)
* javax.sound - Music and sound effects
* javax.sql (except javax.sql.rowset) - More database interfaces
* javax.xml.parsers - XML parsing
* org.w3c.dom (but not sub-packages) - DOM nodes and elements
* org.xml.sax - Simple API for XML

Not supported These packages, normally a part of the Java 2 Platform Standard Edition, are not supported by Android.

* java.applet
* java.awt
* java.beans
* java.lang.management
* java.rmi
* javax.accessibility
* javax.activity
* javax.imageio
* javax.management
* javax.naming
* javax.print
* javax.rmi
* javax.security.auth.kerberos
* javax.security.auth.spi
* javax.security.sasl
* javax.swing
* javax.transaction
* javax.xml (except javax.xml.parsers)
* org.ietf.*
* org.omg.*
* org.w3c.dom.* (sub-packages)

Third party libraries In addition to the standard libraries listed above, The Android SDK comes with a number of third-party libraries for your convenience.

* org.apache.commons.codec - Utilities for encoding and decoding
* org.apache.commons.httpclient - HTTP authentication, cookies, methods, and protocol
* org.bluez - Bluetooth support
* org.json - JavaScript Object Notation

2
同样有趣的是,标准库是时间快照的标准库。例如,Httpclient基于一个版本的beta版,而这两个库已经稍微有所不同。在大多数情况下,它们基本上是兼容的,但如果您的代码依赖于Httpclient,则可能需要进行一些更改。 - mbafford

2

不,没有Java ME支持。您需要更改用户界面以在Android上运行。

然而,Java SE的基础库大多得到了支持,但也有例外(例如没有Swing)。您仍需要为应用程序提供视图和意图,否则系统将无法启动它(没有内置的“控制台模式”)。


0

你可以很容易地做到这一点,因为有许多在Android上运行Java应用程序的方法。一个叫做Java模拟器的特定应用程序可以很轻松地完成这项工作。

Android上最流行的四种Java模拟器分别是JBED、PhoneME、Jblend和NetMite。它们按优先顺序排列。你可以在未root的设备上使用phoneme,但如果你的设备已经root了,请尝试使用另外三个应用程序中的任意一个。

要了解如何安装和配置所有这些应用程序,请参考链接:http://androiddelta.com/run-java-apps-android-using-best-java-emulators/


0

我知道这是一个旧帖子,但是由于我在这里花了很长时间寻找自己的解决方案,所以我想分享给那些通过谷歌找到这个帖子的人。

我也尝试了像Jbed和Netmite J2ME Runner等上面的建议,并且运气不太好。

后来我发现了PhoneME: http://davy.preuveneers.be/phoneme/?q=node/28

在我看来,这是Android上最好的JavaME模拟器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接