闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掆偓杩濋梺閫炲苯澧撮柡灞剧〒閳ь剨缍嗛崑鍛暦瀹€鍕厸鐎光偓閳ь剟宕伴弽顓溾偓浣糕槈濡嘲鐗氶梺鍛婂姉閸嬫挸袙婢跺绻嗛柣鎰典簻閳ь剚鍨垮畷鏇熺節濮橆剛顔嗛梺璺ㄥ櫐閹凤拷 (0) +1 闂傚倸鍊搁崐宄懊归崶褏鏆﹂柛顭戝亝閸欏繒鈧箍鍎遍幏瀣触鐎n喗鐓曢柍鈺佸枤濞堛垹霉绾攱瀚� (0) +1 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂撮檷閸嬫垿鎮楀☉娆嬬細妞も晜鐓¢弻锝夊箣閿濆棭妫勭紓浣哄閸ㄥ爼寮婚妸鈺傚亞闁稿本绋戦锟� (0) +1
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掆偓杩濋梺閫炲苯澧撮柡灞剧〒閳ь剨缍嗛崑鍛暦瀹€鍕厸鐎光偓閳ь剟宕伴弽顓溾偓浣糕槈濡嘲鐗氶梺鍛婂姉閸嬫挸袙婢跺绻嗛柣鎰典簻閳ь剚鍨垮畷鏇㈠蓟閵夈儱鐎梺绉嗗嫷娈旈柦鍐枛閺岋綁寮崶銉㈠亾閳ь剟鏌涚€n偅灏柍钘夘槸閳诲秹顢樿缁ㄥジ鏌熸笟鍨鐎规洘鍎奸ˇ顕€鏌¢埀顒勬嚍閵夛絼绨婚梺鍝勬川閸嬬偤藟閻愮儤鍊垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸℃ぞ绮℃俊鐐€栭崝褏绮婚幋鐘差棜闁秆勵殕閻撴洟鏌熼柇锕€鐏遍柛銈咁儔閺屻倝寮堕幐搴′淮闂佸搫鏈粙鎴﹀煡婢跺ň鏋庨柟閭﹀枤閳诲繒绱撻崒姘偓椋庢媼閺屻儱鐤鹃柣妯款嚙閽冪喖鏌i弮鍌楁嫛闁轰礁绉电换婵囩節閸屾碍鐏撻梺鍝勬-閸樺ジ鈥旈崘顔嘉ч柛鎰╁妼婵兘姊洪悷鏉挎闁瑰嚖鎷�>>

正在阅读:打造个性化Java启动器打造个性化Java启动器

2004-04-05 10:08 出处:中国计算机报 作者:俞伟明 责任编辑:sdq

  在启动类的标识符中使用的分隔符是斜杠,而不是句点,即我们用“javabunny/JavaBunny”表示启动类,而不是用“javabunny.JavaBunny”的形式。这是因为,FindClass()是一个虚拟机调用,而虚拟机内部用斜杠作为分隔符。随便说明一下,这个例子把启动类的名字(和其他一些配置选项)直接写进了代码之中(称为“硬编码”),对于提供给最终用户使用的产品,这种做法有其优点;但对于开发环境来说,这些值最好拿出来放在某个配置文件中。

  Java程序启动后执行的第一个方法称为启动方法,通常是main()。本例通过JNI调用GetStaticMethodID()获得启动方法的ID。GetStaticMethodID()要求指定方法的名字(“main”)和方法的类型描述符(“([Ljava/lang/String;)V”)。这个类型描述符表示方法的参数是一个字符串的数组,返回值类型是void。有关类型描述符的更详细的说明,请参见JVM相关资料。注意,从这里可以看出,在使用定制启动器时,Java程序的启动方法不必一定是static void的main方法,可以用任何方法作为Java程序中第一个执行的方法,甚至包括实例方法或构造函数。

  示例程序中最后一个需要注意的地方是jvm->DestroyJavaVM()调用。从表面看起来,这个语句似乎是程序执行后进行清理工作的方法,可有可无。其实不然,如果Java程序是多线程的,在调用这个方法时程序仍旧在运行。例如,对于一个运行着的Swing程序,如果它的main方法结束,DestroyJavaVM()的执行将被阻塞,直至所有非守护线程都执行完毕,所以这行代码是必不可少的。如果省略这行代码,则当主线程执行完毕,即使其他线程(例如Swing GUI的事件循环)仍旧在运行,整个程序也会立即退出。

  三、配置和使用

  如前所述,这个启动器以硬编码的方式指定了启动类的名字,但是没有一个路径是硬编码的。这是定制启动器的优点之一,由于所有的路径都是相对的,用户可以把整个Java应用从一个文件夹拖到另一个驱动器(或另一台机器)的文件夹,程序的运行不会出现任何问题。本文的启动器假定JRE总是在应用软件所在目录的一个子目录下,也就是说,JRE应当随同应用软件一起发布。这样做的好处是使得应用软件完全不依赖于用户的环境,确保了JRE与应用程序的兼容姓。即使用户系统中原来已经有JRE,增加一个额外的JRE也只不过稍微占用了一点磁盘空间,但却能有效地保证应用软件的稳定姓。

  在某些场合,你可能需要将一些配置参数移出程序,例如放入一个配置文件,特别是在需要频繁改动启动方式的开发阶段。建议移出程序之外的配置选项包括:启动类,类的路径,某些VM参数,例如“-verbose”。


察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗ù锝堟缁€濠傗攽閻樻彃鈧绱撳杈ㄥ枑闁哄啫鐗勯埀顑跨窔瀵粙顢橀悙鑼垛偓鍨攽閿涘嫬浠х紒顕呭灦瀵偊鎮╃紒妯锋嫼闂備緡鍋嗛崑娑㈡嚐椤栨稒娅犻柟缁㈠枟閻撴瑦銇勯弮鈧娆忈缚閹扮増鐓欑€瑰嫮澧楅崵鍥┾偓瑙勬磸閸斿秶鎹㈠┑瀣<婵炲棙鍔栭埢鏇熺節閻㈤潧啸妞わ綀妫勫嵄闁告稒娼欑壕濠氭煙閹规劦鍤欑紒鐙€鍨堕弻銊╂偆閸屾稑顏�闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏇炲€哥粻鏍煕椤愶絾绀€缁炬儳娼¢弻鐔煎箚閻楀牜妫勭紒鎯у⒔缁垳鎹㈠☉銏犵婵炲棗绻掓禒濂告⒑閸濆嫬顏ラ柛搴f暬楠炲啫顫滈埀顒勫箖濞嗘挸绾ч柛顭戝枤瑜版垵鈹戦悙鑼憼缂侇喖绉堕崚鎺楀箻鐠囪尪鎽曞┑鐐村灟閸╁嫰寮崘顔界叆婵犻潧妫欓ˉ鐘炽亜閿斿搫鍔︽慨濠冩そ瀹曘劍绻濋崘鐐棝闂備胶鎳撻崵鏍箯閿燂拷