µÚÒ»²¿·Ö£ºJavaµÄ°²È«»ù´¡----ÐéÄâ»úºÍ×Ö½ÚÂ밲ȫ
¸ÅÂÛ£º°²È«ÎÊÌâ¶ÔºÜ¶àÊýÈËÀ´Ëµ¶¼·Ç³£ÖØÒª¡£´ÓÆäÀúÊ·¿´£¬Java°²È«Ö÷ÒªÒâζ×ÅÐéÄâ»úºÍ×Ö½ÚÂ밲ȫ¡£È»¶øÕâ¸ö¿´·¨ºöÂÔÁËÁ½¸öÖØÒª·½Ãæ--Ó¦ÓóÌÐòºÍÍøÂ簲ȫ¡£ÔÚÏÂÃæһϵÁÐÎÄÕÂÖУ¬Todd Sundsted½²½âÁËJAVAÐéÄâ»ú°²È«£¬Ó¦ÓóÌÐò°²È«£¬ÍøÂ簲ȫ£¬½âÊÍÁËÓ¦¸Ã²ÉȡʲôÑùµÄ´ëÊ©À´È«Ãæ¹®¹ÌÄãµÄJava°²È«¡£ÔÚÕâµÚÒ»²¿·Ö£¬ËûÏòÎÒÃǽâÊÍÁËJava°²È«µÄ»ù´¡£ºÐéÄâ»úºÍ×Ö½ÚÂ밲ȫ¡£
¡°Ëƺõ»¹Ã»ÓÐÈËÔøÒòΪд³öÁ˲»°²È«µÄJava´úÂë¶øÔâ½â¹Í¡±¡£Õâ¾ä»°ÊÇÎÒ¶ÔÄǾäÁ÷ÐÐÓûÈËÔøÒò¹ºÂòÁËIBM¶øÔâ½â¹Í¡±µÄÐÞÕý°æ±¾¡£ÄÇЩ¸ü¹ØÐÄÍøÂçËٶȺÍÄÇЩ¸üÓÐÐËȤΪ¼òÀúÌí¼Ó¸ü¶àÓмÛÖµÏîÄ¿µÄ¹ÍÔ±³£³£·¸Ï°²È«ÎÊÌâ¡£
ÔÙÀ´¿´¿´ÁíÒ»¸öÁîÈ˵£ÐĵÄÏÖÏó£ºÔÚÎÒͬ¹ÜÀíÈËÔ±ºÍ¹¤³Ì¼¼ÊõÈËԱ̸ÂÛ°²È«ÎÊÌâʱ£¬ÎÒ³£³£·¢ÏÖËûÃǶÔ×Ô¼ºµÄÐÐΪ´æÔÚһЩÎó½â£¬ËûÃÇÈÏΪ²»±Ø¿¼ÂÇ°²È«ÎÊÌ⣬ÒòΪ¡°Java±¾Éí¾ÍµÈÓÚ°²È«¡±¡£ÔÚÕâÑù´íÎó¹ÛÄîµÄÖ¸ÒýÏ£¬¹¤³ÌʦÃÇûÓÐÈ¥¿¼ÂÇÒÔÏÂÈý¸ö·½ÃæµÄ°²È«ÎÊÌ⣺ÐéÄâ»ú°²È«£¬Ó¦ÓóÌÐò°²È«£¬ÍøÂ簲ȫ¡£
ÔÚÒÔÏÂһϵÁÐÎÄÕÂÖУ¬ÎһᾡÁ¦ÐÞÕýÕâÖÖ´íÎó¼û½â¡£½ÓÏÂÀ´£¬ÎÒ½«¾ÍÈý·½ÃæµÄÎÊÌâÀ´¶ÔJava°²È«½øÐÐÌÖÂÛ£¬²¢¾ÙÁÐ˵Ã÷Ò»°ã°²È«ÎÊÌâÊÇÔõÑùÇÔÈëµÄ¡£ÁíÍâÎÒÒ²»á½éÉÜһЩ°ì·¨À´´´½¨°²È«µÄÓ¦ÓóÌÐò¡£
?ÈýÖÖ°²È«ÎÊÌ⣺
ÔÚJava³õ´Î¶Ãæʱ£¬¿ª·¢Õߣ¬Ñо¿ÈËÔ±£¬ÐÂÎÅýÌå½ç¶ÔÆ䰲ȫÎÊÌâ¾Í·´Ïì¾çÁÒ¡£ÔÚÔçÇ°µÄʱºò£¬Java°²È«¾ÍÊÇÒâζ×Å×Ö½ÚÂ밲ȫºÍÐéÄâ»ú°²È«¡£ÓÉÓÚJava¹ýÈ¥Ö÷ÒªÊÇ×÷ΪÏÂÔص½±¾µØÖ´ÐеÄСӦÓóÌÐò¿ª·¢ÓïÑÔ£¬ÏÂÔØÏÂÀ´µÄ´úÂëµÄ°²È«ÐÔºÍÖ´Ðл·¾³¾ÍÊÇÒì³£ÖØÒªµÄÊÂÇé¡£ÕâÖÖÇé¿öϵݲȫÒâζ×ÅÕýÈ·°²×°Àà×°ÔØÆ÷ºÍ°²È«¹ÜÀíÆ÷ÒÔ¼°ÑéÖ¤ÏÂÔصĴúÂë¡£
ÔÚÎÒÒÔÇ°¿ª·¢C/C++³ÌÐòµÄÊýÄêÀÎÒ´Óûµ£ÐĹýÐéÄâ»ú°²È«ÎÊÌâ--Õâ¸öÎÊÌâÍêÈ«ÊÇËæ×ÅJava¶ø³ÉÁËÈËÃǹØ×¢µÄÖÐÐÄ¡£Ì¸µ½°²È«ÎÊÌ⣬ÎÒµ£ÐĵÄ×ÜÊÇÓ¦ÓóÌÐò©¶´»òÊÇΣ¼°³ÌÐò»òϵͳ°²È«µÄÖ´ÐÐÇé¿ö¡£ÔÚC++ÁìÓò£¬Ó¦ÓóÌÐòÉϵݲȫ°üÀ¨ÏÞÖÆ¡°setuid¡±´úÂ뷶Χ£¨ÔÚUnix»·¾³£¬setuid´úÂëÊÇ×÷ΪÁíÍâµÄÓû§½ø³ÌÀ´ÔËÐÐ--µäÐ͵ÄÇé¿öÊdz¬¼¶Óû§£©²¢Á¦Í¼±ÜÃ⻺³åÒç³ö¼°ÆäËüÀàÐ͵ĶÑÕ»ÎÊÌâ¡£
¶ø·Ö²¼Ê½Ó¦ÓóÌÐòµÄÒýÈëÔò´øÀ´ÁËÁíÍâһЩ·½ÃæµÄÎÊÌâ¡£ÕýÈçÆäÃû×ÖËùʾ£¬·Ö²¼Ê½³ÌÐòÓɶà¸ö²¿·Ö×é³É£¬Ã¿¸ö²¿·Ö¶¼×¤ÁôÔÚËü×Ô¼ºµÄ»úÆ÷ÉÏ£¬²¢Í¨¹ý¹«¹²ÍøÂçºÍÆäËü²¿·ÖͨÐÅ¡£Ò»¸öWebÓ¦ÓþÍÊǵäÐ͵ÄÁÐ×Ó¡£ÔÚÍøÂçÒâÒåÉϵݲȫÔòÒâζ×ÅÇ©Ãû£¬ÊÚȨ£¬Ó¦ÓóÌÐò×é¼þ£¬¼ÓÃÜͨÐŹܵÀµÈ¡£
Ðí¶à¿ª·¢ÈËÔ±²¢²»Çå³þÒÔÉϼ¸·½ÃæµÄ²»Í¬£¬²¢ÒÔΪJavaÔÚÐéÄâ»úÒ»²ã°²È«ÁË£¬ÄÇôÕû¸öÓ¦ÓóÌÐò¾Í°²È«ÁË¡£ÎÒºÜÏ£Íû¸Ä±äÕâÖÖ¹ÛÄî¡£ÏÂÃæ¾Í¿ªÊ¼À´ÌÖÂÛJavaµÄÐéÄâ»ú°²È«¡£
?°²È«»ù´¡£ºÐéÄâ»ú°²È«
ÐéÄâ»ú°²È«£¬³¤ÆÚÒÔÀ´Ò»Ö±ÊÇ¿ª·¢ÈËÔ±×¢ÒâµÄ½¹µã£¬¼¸ºõÖ±µ½ÏÖÔÚÒ²»¹ÊÇûÓнá¹û¡£
ÎÒ×î³õ¶ÔÌÖÂÛÐéÄâ»ú°²È«¸Ðµ½ÓÐÐËȤÊÇÔÚתÏòÓ¦ÓóÌÐòºÍÍøÂ簲ȫ֮ǰ¡£ÎÒ¾ö¶¨¸øÓèËüͬÁíÁ½¸ö²¿·ÖͬÑù¹«Æ½µÄʱ¼äÀ´ÌÖÂÛ£¬Õâ³öÓÚÁ½¸öÀíÓÉ£ºÊ×ÏÈ£¬ÓÅÐãµÄ±à³Ì½Ì²ÄÒò¸Ã°üº¬¹ýÈ¥6ÄêÀ´·¢ÏÖ¹ýµÄ´óÁ¿Â©¶´£¬µÚ¶þ£¬ºÜ¶à°²È«ÎÊÌâ¿çÔ½ÁËÎÒÒªÌÖÂÛµÄÈý¸ö·½Ã档ΪÁËÄÜ͸³¹Àí½â£¬Äã±ØÐëҪȫÃæÊìϤÈý¸ö·½Ã棬°üÀ¨JavaÐéÄâ»ú°²È«¡£
Èç¹ûÄã¼ì²é¹ýÈ¥6Äê·¢Ïֵĸ÷ÖÖ°²È«ÎÊÌ⣨¿´http://www.javaworld.com/javaworld/jw-06-2001/jw-0615-howto.html#resourcesµÄ¹Ù·½Çåµ¥£©£¬Ä㽫·¢ÏÖËüÃDZ»·Ö³ÉһϵÁÐĿ¼¡£¾ÍËù¹Ø×¢µÄÐéÄâ»ú°²È«À´½²£¬×îÖØÒªµÄÁ½ÖÖ°²È«Â©¶´¶¼ÊÇΧÈÆ×Åδ±»ÑéÖ¤ºÍ¿ÉÄÜ·Ç·¨µÄ×Ö½ÚÂëÒÔ¼°JavaÀàÐÍϵͳÆÆ»µÀ´Õ¹¿ª¡£ÔÚʵ¼Ê¿ª·¢ÖУ¬ÕâÁ½Õß¾³£ÊǹØÁªÔÚÒ»Æð
?δÑéÖ¤´úÂë̽ÃØ
ÔÚJVMͨ¹ýÍøÂç´Ó·þÎñÆ÷ÉÏÏÂÔØÀà´úÂëʱ£¬Ëü²¢Ã»Óа취֪µÀÕâЩ×Ö½ÚÂëÊÇ·ñÄÜ°²È«Ö´ÐС£°²È«µÄ×Ö½ÚÂëÓÀ²»»áָʾÐéÄâ»úÖ´ÐÐÈÃJavaÔËÐÐʱ´¦ÓÚ²»Ð¸µ÷ºÍÎÞЧµÄ״̬¡£
ͨ³££¬Java±àÒëÆ÷¿ÉÒÔÈ·±£´´½¨µÄÀàÎļþÀïµÄ×Ö½ÚÂëÊÇ°²È«µÄ¡£È»¶øÒ²¿ÉÒÔÊÖ¹¤Ð´³öJava±àÒëÆ÷²»ÔÊÐíµÄ×Ö½ÚÂë¡£JavaУÑéÆ÷ÒÔһϵÁм«¸»ÏëÏñÁ¦µÄ·½·¨¼ì²éËùÓÐÕâÑùµÄ×Ö½ÚÂë²¢ÑéÖ¤ÄÇЩ²»ºÏ¹æ·¶µÄ´úÂë¡£Ò»µ©Ð£ÑéÍê³É£¬JVM±ãÖªµÀ³ÌÐò´úÂëÊÇ°²È«µÄ--ֻҪУÑéÆ÷Õý³£¹¤×÷¡£
ÏÂÃæÈÃÎÒÃÇÀ´¿´¿´Ò»¸öÁÐ×Ó£¬ÒÔ¸üºÃµÄÀí½âУÑéÆ÷Ëù°çÑݵĽÇÉ«£¬²¢¿´¿´Ò»µ©Ð£ÑéÆ÷ʧЧ»á²úÉúʲôºó¹û¡£
¿¼ÂÇÒ»ÏÂÏÂÃæÕâ¸öÀࣺ
public¡¡class Test1
{
public¡¡static¡¡void¡¡main(String [] arstring)
{
Float a = new Float(56.78);
Integer b = new Integer(1234);
System.out.println(a.toString());
}
¡¡£ý
µ±ÄãдÍêËü²¢ÔËÐУ¬³ÌÐò½«ÏòÆÁÄ»´òÓ¡³ö×Ö·û´®¡°56.78¡±¡£ÕâÊǸöÔÚÀàÀï·ÖÅäµÄÒ»¸ö¸¡µãÐͱäÁ¿¡£ÎÒÃǼ´½«ÐÞ¸ÄÒ»´¦´úÂ룬ÆÛÆÐéÄâ»úÔÚÕûÐͱäÁ¿Éϼ¤»îtoString()·½·¨¶ø²»ÊǸ¡µãÐͱäÁ¿£¨Äã¿ÉÒÔ´ÓÍøÖ·ÏÂÔز¢ÐÞ¸ÄÔ´´úhttp://www.javaworld.com/javaworld/jw-06-2001/jw-0615-howto.html#resources£©¡£
ÔÙÀ´¿´¿´Õâ¶Î¾·´±àÒëºóµÄ´úÂëµÄÊä³ö£º
Method void main(java.lang.String[])
0 new #3
3 dup
4 ldc2_w #13
7 invokespecial #8
10 astore_1
11 new #4
14 dup
15 sipush 1234
18 invokespecial #9
21 astore_2
22 getstatic #10
25 aload_1
26 invokevirtual #12
29 invokevirtual #11
32 return
ÉÏÃæµÄ´úÂë°üº¬ÁËmain()º¯ÊýµÄ·´±àÒëÊä³ö¡£ÔÚÕâ¸ö·½·¨µÄµØÖ·Æ«ÒÆÁ¿25´¦£¬ÐéÄâ»úÔØÈëÓÚÆ«ÒÆ0µ½10´¦´´½¨µÄ¸¡µãÐͱäÁ¿µÄÒ»¸öÒýÓá£Õâ¾ÍÊÇÎÒÃÇÒªÐ޸ĵĵط½¡£
ÏÂÃæ¾ÍÊǾÐ޸ĺóµÄ·´±àÒë´úÂ룺
Method void main(java.lang.String[])
0 new #3
3 dup
4 ldc2_w #13
7 invokespecial #8
10 astore_1
11 new #4
14 dup
15 sipush 1234
18 invokespecial #9
21 astore_2
22 getstatic #10
25 aload_2
26 invokevirtual #12
29 invokevirtual #11
32 return
Õâ¸öÀàÔÚÆ«ÒÆÁ¿25´¦µÄ×Ö½ÚÂëÊÇÍêÈ«ÏàͬµÄ£¬ÔØÈëÒ»¸öÕûÐͱäÁ¿µÄÒýÓá£
×¢Òâ¿´¿´£¬Ð޸ĺóµÄ´úÂëÈÔÈ»ÊÇ°²È«µÄ£¬Õâ·Ç³£ÖØÒª£¬ÕâÒâζ×ÅJVMÈÔÈ»½«Ö´ÐдúÂë¶ø²»»á±ÀÀ£»òÊǽ«´íÎó´úÂë¸ôÀ뿪¡£È»¶øУÑéÆ÷ÈÔÈ»ÄÜ·Ö±æ³öÕâЩ±ä»¯¡£ÔÚÎÒµÄϵͳÀÔÚÎÒÔËÐÐÕâƬ´úÂëʱ£¬³öÏÖ´íÎó£º
¡¡Exception in thread "main" java.lang.VerifyError:
(class: Test1, method: main signature: ([Ljava/lang/String;)V)
Incompatible object argument for function call
Èç¹ûÄã¹ØµôУÑéÆ÷»òÊÇÄãÕÒµ½Ò»´¦ÐéÄâ»ú©¶´²¢·Ç³£¹æµØͨ¹ýÁËУÑéÆ÷µÄ¼ì²é£¬ÄÇ·Ç·¨´úÂë¾ÍÒªÆô¶¯ÁË¡£Ö´ÐÐÏÂÃæµÄÃüÁÎÒ½ÓÊÕµ½Öµ£º1234--ÕûÐͱäÁ¿Öµ¡£
java -noverify Test1
Õâ¸öÁÐ×Ó²¢ÎÞ¶à´óº¦´¦£¬µ«Ç±ÔÚµÄΣº¦È·ÊǾ޴óµÄ¡£ÒÔÉÏÕâÑùµÄ¼¼ÊõÈç¹ûͬÐéÄâ»ú©¶´ÁªÏµÆðÀ´£¬Ôì³Éδ±»¼ì²éµÄ´úÂëµÃÒÔÖ´ÐУ¬ÄÇôÕ⽫Ôì³ÉÑÏÖصÄÀàÐÍ»ìÂÒ¡£
?ÀàÐÍ»ìÂÒ
ÀàÐ͵ĸÅÄî¶Ôjava±à³ÌÓïÑÔÀ´ËµÊÇ»ëȻһÌåµÄ¡£Ã¿¸öÖµ¶¼Í¬Ò»ÖÖÀàÐÍÏà¹ØÁª£¬JVM¾ÍÊÇÓÃÖµµÄÀàÐÍÀ´¾ö¶¨Ê²Ã´ÑùµÄ²Ù×÷¿ÉÒÔ×÷ÓÃÔÚʲôÑùµÄÖµÉÏ¡£
³ÌÐòµÄÀàÐÍÐÅÏ¢¶ÔÓÚÐéÄâ»ú°²È«ÊÇÖÁ¹ØÖØÒªµÄ¡£Ò»¸ö±»¶ñÒâµÄ£¬Î´¾ÑéÖ¤µÄ´úÂëÆô¶¯µÄÀàÐÍ»ìÏý¹¥»÷»áÊÔͼÈÃJVMÏàÐÅαװ³ÉΪһ¸öÀàʵÁеÄÄÚ´æ¿éȷʵÊÇÊÇÁíÒ»¸öÀàµÄʵÁУ¬ÒԴ˽øÐй¥»÷¡£Èç¹û¹¥»÷³É¹¦£¬³ÌÐò¾Í»áÒÔÉè¼ÆÕßÒâÏë²»µ½µÄ·½Ê½À´²Ù×÷ÀàʵÁС£ÕâÖÖ¹¥»÷³ÆΪ¡°ÀàÐÍ»ìÏý¹¥»÷¡±£¬ÒòΪÐéÄâ»úÒѾÄÖ²»Çå±»Ð޸ĵÄÀàµÄÀàÐÍ¡£
Èç¹ûÀྐྵýÁËÍêÈ«µÄÑéÖ¤£¬ÄÇô¡°ÀàÐÍ»ìÏý¹¥»÷¡±ÊDz»»á·¢ÉúµÄ¡£ÔÚÉÏÃæµÄµÚ¶þ¸öÁбíÖУ¬Ð£ÑéÆ÷²¶»ñÁËÕâ¸öÆóͼ²¢Å׳öÁËÒì³£¡£Ò²¾ÍÊÇ˵£¬Ö»ÒªÐ£ÑéÆ÷ûÓб»¹Ø±Õ»òÊDZ»Èƹý£¬ÄÇô°²È«¾ÍÊÇÄܹ»±£Õϵġ£
ÐÒÔ˵ÄÊÇ£¬ÎÒËùµ£ÐĵÄJava×Ö½ÚÂëУÑéÆ÷×îºóµÄÒ»¸ö©¶´ÔÚ1999ÄêÄ©±»·¢ÏÖ¡£»ùÓÚÕâ¸öÊÂʵ£¬Äã¿ÉÄÜ»áÈÏΪ×Ô¼º²»»áÔÚÏÝÈëΣÏÕÖУ¬È»¶ø£¬Õâ¹ýÓÚÊèºö´óÒâÁË¡£
ËäȻ©¶´Ô½À´Ô½ÉÙ£¬µ«»¹ÊÇÓгä×ãµÄ»ú»áÁô¸ø½Æ»«µÄ´úÂë»ìÈë³ÌÐòÖ®ÖС£¼Çס£¬Äã¿ÉÒÔÊÖ¹¤¹Ø±ÕУÑéÆ÷¼ìÑé¡£ÔÚ½ÓÏÂÀ´µÄÎÄÕÂÖÐÖУ¬ÎÒÁоٳöÈýÖÖÖ÷ÒªµÄjava³ÌÐò£¬ÒÔÏò´ó¼ÒʾÁÐÔÚÔõÑùµÄ»·¾³Ï¹صôУÑéÆ÷¡£ÆäÖÐÒ»¸ö³ÌÐòÓÐÒ»¸öÖØÒªµÄRMI£¨Ô¶³Ì·½·¨µ÷Óã©×é¼þ£¨ÈçÄãÒÔºó½«ÒªÑ§µ½µÄ£¬RMI¿ÉÒÔÈÃÀàͨ¹ýÍøÂçÔØÈëµ½³ÌÐòÖУ¬²¢ÈÃÄãµÄ³ÌÐòʧ¿Ø£©¡£Èç¹ûÄãÄܱÜÃâÕâÖÖÇé¿ö·¢Éú£¬¾Í²»Òª¹ØµôУÑéÆ÷ÑéÖ¤¡£
JVM°²È«ÊÇjava°²È«ÌåϵÖзdz£ÖØÒªµÄÒ»·½Ãæ¡£ÕâЩδÑéÖ¤´úÂëºÍÀàÐÍ»ìÏý·½ÃæµÄÌÖÂÛ½«ÓÐÖúÓÚÄãÀí½âΪʲô¡£¶ÔÓÚÏÂÔØ´úÂëºÍÀàÐÍϵͳÀ´Ëµ£¬Ã»ÓÐÊʵ±µÄУÑé±£Ö¤£¬°²È«¼ÆË㽫³ÉΪһ¾ä¿Õ»°¡£
Ï´Σ¬ÎÒÃǽ«Ì½Ë÷ÁíÒ»·½ÃæµÄjava°²È«£ºÓ¦ÓóÌÐò°²È«¡£