首先看一下可行性。java的字节码规范是一样的,但是两个平台的类库有很多不同,好在程序执行的入口点不同,并且对于根本不会执行到的死代码,里面有什么无所谓。下面看一下具体过程:
首先生成一个midlet
- import javax.microedition.midlet.*;
- import javax.microedition.lcdui.*;
- public
class
Midlet extends MIDlet { -
public
void
startApp() { - Display.getDisplay(
this
).setCurrent(
new
Form(
"DM on Mobile"
)); - }
-
public
void
pauseApp() { - }
-
public
void
destroyApp(boolean unconditional) { - }
- }
然后生成一个Swing程序
- import javax.swing.JFrame;
- public
class
Main extends JFrame{ -
public
Main() { - super(
"DM on Desktop"
); - setSize(240, 320);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setVisible(
true
); - }
-
public
static
void
main(String[] args) { -
new
Main(); - }
- }
得到两个jar,假设为mdip.jar和pc.jar。用zip类软件打开两个jar,把pc.jar里面的Main.class复制到第一个jar里(如果使用了package要注意路径),修改midp.jar里面的MAINFEST.MF,在最后一行加上Main-Class: Main(实际上就是从pc.jar里面的MAINFEST.MF的Main-Class那行复制过来)。这样得到的jar就可以同时在PC和手机上运行了。
虽然这个例子很简单,但是稍加衍生,就能得到更为广阔的应用。