首先看一下可行性。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和手机上运行了。
虽然这个例子很简单,但是稍加衍生,就能得到更为广阔的应用。