¼ÓÔØ¡¢Á´½ÓºÍ³õʼ»¯£¨java¸ß¼¶±à³Ì1.2.5£©
JVM£º¼ÓÔØ¡¢Á´½ÓºÍ³õʼ»¯
JVMÒª½âÊÍJava×Ö½ÚÂ룬¾Í±ØÐë¶ÔËùÐèµÄÀàºÍ½Ó¿ÚÖ´ÐÐÈçÏÂ3²½²Ù×÷£º
(1) ¼ÓÔØ£ºJVMÔÚ¼ÓÔØÀàʱ£¬»á²éÕÒ¸ÃÀà»ò¸Ã½Ó¿ÚµÄ¶þ½øÖƱíʾ£¬²¢¸ù¾ÝÕÒµ½µÄ¶þ½øÖƱíʾ(ͨ³£ÊÇÓÉJava±àÒëÆ÷´´½¨µÄÀàÎļþ)´´½¨Ò»¸öClass¶ÔÏ󡣸ÃClass¶ÔÏóÖзâ×°ÁËÀà»ò½Ó¿ÚµÄÔËÐÐʱ״̬¡£
(2) Á´½Ó£ºÁ´½ÓÕâÒ»¹ý³ÌÊÇָȡµÃÒѼÓÔØµÄÀà»ò½Ó¿Ú¡¢½áºÏJVMÔËÐÐʱ»·¾³¡¢×¼±¸Ö´ÐиÃÀà»ò¸Ã½Ó¿Ú¡£
(3) ³õʼ»¯£º³õʼ»¯ÊÇÖ¸JVMµ÷ÓøÃÀà»ò¸Ã½Ó¿ÚµÄ³õʼ»¯·½·¨¡£
1. µÚÒ»²½
Æô¶¯Ò»¸öµ¥»úJava³ÌÐòʱ£¬JVMÊ×ÏÈ×öµÄÊÇÁíÍâ´´½¨Ò»¸öClass¶ÔÏó£¬ÓÃÓÚ±íʾ°üº¬public static void main(String
[ ] args)·½·¨µÄJavaÀࡣȻºóJVM»áÁ´½Ó²¢³õʼ»¯¸ÃJavaÀ࣬µ÷ÓÃmain()·½·¨£¬²¢ÓÃmain()·½·¨Çý¶¯ËùÒýÓÃµÄÆäËûÀàºÍ½Ó¿ÚµÄ¼ÓÔØ¡¢Á´½ÓºÍ³õʼ»¯¹ý³Ì¡£
2. ¼ÓÔØ
¼ÓÔØ¹ý³ÌÊÇÓÉÀà¼ÓÔØÆ÷Íê³ÉµÄ£¬¸Ã¼ÓÔØÆ÷ÊÇClassLoaderµÄ×ÓÀ࣬²¢ÇÒ¸ÃÀà¼ÓÔØÆ÷»á¶ÔËù¼ÓÔØµÄÀà»ò½Ó¿Ú½øÐÐһЩУÑé¼ì²é¡£µ±±íʾÒѱàÒëÀà»ò½Ó¿ÚµÄ¶þ½øÖÆÊý¾ÝÓÐ´í£¬ÔòÀà»ò½Ó¿ÚʹÓõÄÀàÎļþ¸ñʽ°æ±¾²»±»Ö§³Ö£¬Àà¼ÓÔØÆ÷ÕÒ²»µ½Àà»ò½Ó¿ÚµÄ¶¨Ò壬»òÕßÈç¹û³öÏÖÀàÑ»·£¬¶¼»áÅ׳öÒì³£¡£ÀàÑ»·ÊÇÖ¸Àà»ò½Ó¿ÚµÄ¸¸ÀàÊÇÆä×ÔÉíµÄÇé¿ö¡£
Àà¼ÓÔØÆ÷Ò»°ãÓÐÁ½ÖÖÀàÐÍ£ºÓÉJVMÌṩµÄÒýµ¼Àà¼ÓÔØÆ÷(bootstrap
class loader)ºÍÓû§¶¨ÒåµÄÀà¼ÓÔØÆ÷¡£Óû§¶¨ÒåµÄÀà¼ÓÔØÆ÷Ò²ÊÇJavaµÄClassLoaderÀàµÄ×ÓÀ࣬ÓÃÓڴӷDZê×¼µÄ¡¢Óû§¶¨ÒåµÄÔ´´´½¨Class¶ÔÏó£¬ÒÔ±ãÌá¸ß°²È«ÐÔ¡£ÀýÈ磬´Ó¼ÓÃÜÎļþÖÐÌáÈ¡Class¶ÔÏó¡£Ò»¸ö¼ÓÔØÆ÷¿ÉÒÔ½«²¿·ÖÉõÖÁÕû¸ö¼ÓÔØ¹ý³ÌίÍиøÁíÒ»¸ö¼ÓÔØÆ÷¡£×îÖÕÉú³ÉClass¶ÔÏóµÄ¼ÓÔØÆ÷³ÆÎª¶¨Òå¼ÓÔØÆ÷(defining loader)£¬¶ø¿ªÊ¼¸Ã¼ÓÔØ¹ý³ÌµÄ¼ÓÔØÆ÷³ÆÎªÆô¶¯¼ÓÔØÆ÷(initiating
loader)¡£
ʹÓÃĬÈÏÒýµ¼Àà¼ÓÔØÆ÷µÄ¼ÓÔØ¹ý³ÌÈçÏ£º¸ù¾ÝËùÒª¼ÓÔØµÄÀàÎļþ£¬Òýµ¼Àà¼ÓÔØÆ÷»áÅжÏ×ÔÉíÊÇ·ñÒѾ³ÉΪ¸ÃÀàµÄÆô¶¯¼ÓÔØÆ÷¡£Èç¹ûÊÇ£¬ÔòClass¶ÔÏó´æÔÚ£¬¼ÓÔØÆ÷Í£Ö¹(×¢Ò⣬¼ÓÔØÒ»¸öÀಢ²»µÈÓÚ´´½¨¸ÃÀàµÄÒ»¸öʵÀý£¬ÕâÒ»²½Öè½ö½öÊÇÔÚJVMÖмÓÈë¸ÃÀà)¡£Èç¹ûÀ໹ûÓмÓÔØ£¬Ôò¼ÓÔØÆ÷»áËÑË÷¶ÔÓ¦µÄÀàÎļþ£¬²¢ÔÚÕÒµ½ºó¸ù¾Ý¸ÃÀàÎļþ´´½¨Class¶ÔÏó¡£Èç¹ûÕÒ²»µ½ÀàÎļþ£¬ÄÇô¾Í»á²úÉúNoClassDefFoundErrorÒì³£¡£
ʹÓÃÓû§¶¨ÒåÀà¼ÓÔØÆ÷ʱ£¬Õû¸ö¼ÓÔØ¹ý³ÌÉÔÓв»Í¬¡£ÓëÒýµ¼¼ÓÔØÆ÷Ò»Ñù£¬Óû§¶¨ÒåµÄ¼ÓÔØÆ÷Ê×ÏÈÅжÏ×ÔÉíÊÇ·ñÒѾ³ÉΪĿ±êÀàÎļþµÄÆô¶¯¼ÓÔØÆ÷¡£Èç¹ûÊÇ£¬ÔòClass¶ÔÏóÒѾ´æÔÚ£¬¼ÓÔØÆ÷Í£Ö¹£¬¶øÈç¹û²»ÊÇ£¬Óû§¶¨ÒåµÄ¼ÓÔØÆ÷»áµ÷ÓÃloadClass()·½·¨¡£loadClass()·½·¨·µ»ØËùÐèµÄÀàÎļþ²¢½«±íʾÀàµÄ
Ïà¹ØÎĵµ£º
ºËÐÄ˼Ï룺°Ñº¬main·½·¨µÄÈë¿ÚÀàÌí¼Óµ½MANIFEST.MFÎļþÖС£
²½Ö裺
¼ÙÉèÓÐÁ½¸öÀàÎļþÒª´ò°ü£¬ËüÃÇ·Ö±ðÊôÓÚ²»Í¬µÄpackage¡£
package com.test.jar;
import java.awt.*;
import javax.swing.*;
public class Jar extends JFrame
{ ......
Java™ ÓïÑÔ°üº¬Á½ÖÖÄÚÔÚµÄͬ²½»úÖÆ£ºÍ¬²½¿é£¨»ò·½·¨£©ºÍ volatile ±äÁ¿¡£ÕâÁ½ÖÖ»úÖÆµÄÌá³ö¶¼ÊÇΪÁËʵÏÖ´úÂëÏ̵߳ݲȫÐÔ¡£ÆäÖÐ Volatile ±äÁ¿µÄͬ²½ÐԽϲµ«ÓÐʱËü¸ü¼òµ¥²¢ÇÒ¿ªÏú¸üµÍ£©£¬¶øÇÒÆäʹÓÃÒ²¸üÈÝÒ׳ö´í¡£ÔÚÕâÆÚµÄ Java ÀíÂÛÓëʵ¼ù
ÖУ¬Brian Goetz ½«½éÉܼ¸ÖÖÕýȷʹÓà volatile ±äÁ¿µÄģʽ£¬²¢Õë¶ÔÆäÊÊÓ ......
MonoRailÊǾµäµÄMVCģʽ,ËùÒÔÆäÖÐÒ²¾ßÓÐÈý¸öÔªËØModel,Controller,View,ÆäÖÐMonoRailÊÇͨ¹ýUrlµØÖ·À´½âÎö
ÏàÓ¦µÄ²Ù×÷µÄ,Èçµ±Äã·ÃÎÊ:/home/index.rail,¶ÔÓ¦»áÖ´ÐÐHomeControllerÀàÖеÄIndex·½·¨,¶øÇÒ¿ÉÒÔ×Ô¶¯°ó¶¨²ÎÊýºÍ
RequestµÄÊý¾Ý,Èç·ÃÎÊ:/home/index.rail?id=1,Äã¿ÉÒÔÔÚHomeControllerÀàÖеÄIndex·½·¨Öж¨ÒåÒ»¸ö²ÎÊý ......
µÚÒ»²¿·Ö. Ìáʾ
ÎÒÐèÒª¶ÁÕâÆªÎÄÕÂÂð£¿
JavaÀà¼ÓÔØÆ÷¶ÔJavaϵͳµÄÔËÐÐÊÇÖÁ¹ØÖØÒªµÄ£¬µ«ÊÇÈ´³£³£±»ÎÒÃǺöÂÔ¡£JavaÀà¼ÓÔØÆ÷¸ºÔØ
ÔÚÔËÐÐʱ²éÕҺͼÓÔØÀà¡£×Ô¶¨ÒåÀà¼ÓÔØÆ÷¿ÉÒÔÍêÈ«¸Ä±äÀàµÄ¼ÓÔØ·½Ê½£¬ÒÔ×Ô¼ºÏ²»¶µÄ·½Ê½À´
¸öÐÔ»¯ÄãµÄJavaÐéÄâ»ú¡£±¾ÎļòÒªµÄ½éÉÜJavaÀà¼ÓÔØÆ÷£¬È»ºóͨ¹ýÒ»¸ö¹¹Ôì×Ô¶¨ÒåÀà¼ÓÔØÆ÷
µÄÀý×ÓÀ´ËµÃ÷£¬Õâ ......