Ëæ×ÅJava¿ª·¢¹¤¾ß°ü(JDK)9µÄ·¢²¼£¬´óÁ¿µÄ×¢ÒâÁ¦¶¼¼¯ÖÐÔÚJavaµÄ×îÐÂÌØÐÔÉÏ£¬°üÀ¨ÒýÈëÄ£¿é(ͨ¹ý¼¯³ÉÏîÄ¿Jigsaw)¡£¾¡¹Ü×î½üµÄºÜ¶à¹Ø×¢¶¼¼¯ÖÐÔÚÕâЩǿ´óµÄй¦ÄÜÉÏ£¬µ«ÏÂÒ»¸ö°æ±¾µÄJava:JDK 10ÒѾ¿ªÊ¼×¼±¸ÁË¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«´ÖÂԵؽéÉÜÒ»ÏÂJDK 10µÄÖ÷ÒªÌØÐÔ£¬²¢Ì½ÌÖJDK 10ÖпÉÄÜ°üº¬µÄһЩÌØÐÔ¡£
Çë×¢Ò⣬±¾ÎÄÖÐËù°üº¬µÄÐÅÏ¢ÔÚд±¾ÎÄʱÊÇ׼ȷµÄ¡£µ«Êǵ½·¢²¼Ê±£¬JDK 10ÌØÐÔ×éÔ¤¼Æ½«»áÔö¼Ó¡£
й¦ÄÜ
Óë֮ǰµÄJDK°æ±¾Ò»Ñù£¬¶ÔÓÚ¼´½«µ½À´µÄJDK 10Ò²ÓÐһЩÖ÷ÒªÌØÐÔ¡£ÕâЩÌØÐÔ¿ÉÒÔ·ÖΪÁ½¸öÖ÷ÒªÀà±ð:(1)Ä¿±ê·¢²¼£¬(2)½¨Òé·¢²¼¡£Ç°Õß±íʾijЩÌØÐÔÒѼƻ®ÔÚJDK 10Öз¢²¼£¬ºóÒ»ÖÖÀàÐͱíʾÕâЩÌØÐÔ»¹ÐèÒªÔö¼ÓÖ§³ÖºÍ³ÉÊì¶È¡£Ò»µ©Ìõ¼þÔÊÐí£¬Ëü¾Í¿ÉÒÔÉý¼¶ÎªÒ»¸öÄ¿±ê·¢²¼×´Ì¬¡£
Ä¿±ê·¢²¼
Ä¿Ç°ÓÐÁ½¸öÖ÷Òª¹¦ÄÜÕë¶ÔJDK 10:
¾Ö²¿±äÁ¿ÀàÐÍÍƶÏ,Õ⽫ɾ³ý´ó²¿·Ö¶ÔÏóʵÀý»¯ËùÐèµÄÈß³¤µÄ°üº¬ÊÖ¶¯ÀàÐÍÐÅÏ¢
ÕûºÏÔ´Ê÷source treeµÄJDK¿â,¼´²»Í¬µÄJDK¿â½«±»ºÏ²¢³ÉÒ»¸öµ¥Ò»µÄ´æ´¢¿â¡£
1. ¾Ö²¿±äÁ¿ÀàÐÍÍƶÏ
Ç¿ÀàÐͱà³ÌÓïÑÔÓкܶàÓŵ㣬°üÀ¨ÔÚ±àÒëʱ·¢ÏÖÀàÐÍ´íÎ󣬵«ÊÇËüÃÇÒ²ÒýÈëÁË´óÁ¿µÄÑù°å´úÂ룬ÌرðÊÇÔÚ¶¨Òå¾Ö²¿±äÁ¿Ê±¡£ÀýÈ磬µ±ÎÒÃÇÏ£ÍûʵÀý»¯Ò»¸ö¶ÔÏóʱ£¬ÎÒÃDZ»ÆÈÔÚ¸³ÖµµÄ×ó²àÌṩÏÔʽÀàÐÍ£¬²¢ÔÚ¸³ÖµµÄÓÒ±ßÌṩʵÏÖÀàÐÍ£¬ÈçÏÂÃæµÄƬ¶ÎËùʾ:
MyObject value = new MyObject();
µ«ÊÇ£¬µ±Õâ¸ö¹ý³ÌÖظ´³öÏÖ´óÁ¿ÈÎÎñʱ£¬¶ÔÏóʵÀý»¯¿ÉÄܱäµÃÁîÈ˾ÚÉ¥ºÍ·¦Î¶¡£Ðí¶à×îÁ÷ÐеÄÇ¿ÀàÐ͵ıà³ÌÓïÑÔ,±ÈÈçC++, C#ÒÔ¼°Go,ÔÚ¶¨Òå¹ý³ÌÖУ¬ÌṩһÖÖ¾Ö²¿±äÁ¿ÀàÐÍÍƶϵŦÄÜ(ÀýÈçC++ÌṩÁËauto ¹Ø¼ü×Ö£¬C#Ìṩvar¹Ø¼ü×Ö)¡£µ«ÊÇ£¬JavaÈÔȱ·¦ÕâÑùµÄ¹¦ÄÜ,ËüÒªÇ󿪷¢ÈËÔ±ÏÔʽÉùÃ÷±äÁ¿µÄÔ¤ÆÚÇåµ¥ÀàÐÍ¡£
ΪÁ˽â¾öÕâ¸öÎÊÌâ,Java¿ª·¢¹¤¾ß°ü(JDK)¸Ä½ø½¨Òé(JEP)286Ìá³öÁËÒ»¸öÉÏÏÂÎÄÃô¸ÐµÄ¹Ø¼ü×Övar£¬ÔÊÐí¾Ö²¿±äÁ¿±»ÒÔÏ·½Ê½³õʼ»¯£º
var value = new MyObject();
var list = new ArrayList
ÓÉÓÚvar¹Ø¼ü×ÖÊÇÉÏÏÂÎÄÃô¸ÐµÄ£¬ËüµÄʹÓÃÓÐÏÂÃæµÄ¹æÔò¶¨Òå:
´úÂëʹÓÃvar×÷Ϊһ¸ö±äÁ¿¡¢·½·¨»ò°üÃû³Æʱ½«²»ÊÜÓ°Ïì;¶øʹÓÃvar×÷ΪÀà»ò½Ó¿ÚÃû³ÆµÄ´úÂ뽫Êܵ½Ó°Ïì¡£
ͬÑù£¬ÀàÐÍÍƶϽ«Êܵ½ÒÔÏ·½Ê½µÄÔ¼Êø£º
ÍƶÏÀàÐͽ«±»ÏÞÖÆÔÚ¾Ö²¿±äÁ¿µÄ³õʼ»¯,ÔöÇ¿µÄforÑ»·Ë÷Òý,ÒÔ¼°´«Í³µÄforÑ»·ÖÐÉùÃ÷;Ëü(½«)²»ÓÃÓÚ·½·¨ÐÎʽ¡¢¹¹Ô캯ÊýÐÎʽ¡¢·½·¨·µ»ØÀàÐÍ¡¢×ֶΡ¢²¶»ñÐÎʽ£¬»òÈκÎÆäËûÀàÐ͵ıäÁ¿ÉùÃ÷¡£
¿¼Âǵ½ËùÓеÄÏÞÖƺÍϸ΢²î±ð£¬Õâ¸öÌØÐÔ½«ÓÐÖúÓÚÔÚ¿ª·¢ÈËÔ±´´½¨µÄÓ¦ÓóÌÐòJava´úÂëÖмõÇá´óÁ¿µÄµ¥µ÷ÎÞÁĵĶ¯×÷£¬²¢¼ò»¯JDK´úÂë¿â¡£¸ü¶àÐÅÏ¢¿ÉÒÔÔÚ¹Ù·½µÄJEP 286¹æ·¶ÖÐÕÒµ½¡£
2. ÕûºÏµÄJDK¿â
Ä¿Ç°£¬ÓÐ8¸ö²»Í¬µÄMercurial´æ´¢¿âÓÃÓÚ´æ´¢°üº¬JDKµÄ´óÁ¿Ô´´úÂë:
root
corba
hotspot
jaxp
jaxws
JDK
langtools
nashorn
ËäÈ»¹ý¶àµÄ´æ´¢¿âÌṩÁ˶Ô×é³ÉJDKµÄ¸÷ÖÖ×é¼þ²¢ÇåÎú·ÖÀ룬µ«¹ÜÀí¶à¸ö´æ´¢¿â´æÔÚһЩÖ÷ÒªµÄȱµã¡£
ÆäÖÐ×îÖØÒªµÄÒ»µãÊÇ£¬ÔÚJDKµÄÁ½¸ö²»Í¬²¿·Ö£¬µ¥¸ö´íÎóÐÞ¸´³ÌÐò²»Äܱ»Ô×Ó¸ú×Ù¡£ÀýÈ磬Èç¹ûÒ»¸öbugÐÞ¸´ÐèÒª¶Ô¶ÀÁ¢´æ´¢¿âÖаüº¬µÄϵͳµÄÁ½¸ö²¿·Ö½øÐиü¸Ä£¬ÄÇô±ØÐëÌá½»Á½¸öÌá½»:ÿ¸ö´æ´¢¿âÖÐÒ»¸ö¡£ÕâÖÖ²»Á¬ÐøÐÔºÜÈÝÒ׵ؽµµÍÏîÄ¿ºÍÔ´´úÂë¹ÜÀí¹¤¾ßµÄ¿É¸ú×ÙÐԺ͸´ÔÓÐÔ¡£
ΪÁ˽â¾öÕâ¸öÎÊÌ⣬JEP 296½¨Ò齫ËùÓÐÏÖÓд洢¿âºÏ²¢µ½Ò»¸öMercurial´æ´¢¿âÖС£ÕâÖֺϲ¢µÄÒ»¸ö´ÎÉúЧӦÊÇ£¬Õâ¸öµ¥Ò»µÄMercurial´æ´¢¿â±ÈÏÖÓеÄ8¸ö´æ´¢¿âÒª¸üÈÝÒ׵ı»¾µÏñ(×÷Ϊһ¸öGit´æ´¢¿â)¡£
ËäÈ»ÔÚÕâ¸öÕûºÏ¹ý³ÌÖУ¬Íⲿ¿ª·¢ÈËÔ±ÓÐһЩ×èÁ¦£¬µ«ÊÇJDK¿ª·¢ÍŶÓËƺõÒѾÖÂÁ¦ÓÚʹÕâÒ»¸ü¸Ä³ÉΪJDK 10µÄÒ»²¿·Ö¡£Óйظü¶àÐÅÏ¢£¬Çë²Î¼ûJEP 296£¬²¢ÌáÒéÕûºÏÓÉMichael Redlich·¢²¼µÄJDK 10 OpenJDK Mercurial´æ´¢¿âÉùÃ÷¡£
½¨Òé·¢²¼
³ýÁËÁ½¸öÄ¿±êÌØÐÔÖ®Í⣬JDK 10Ä¿Ç°»¹ÓÐÈý¸ö½¨Ò飬ÆäÖÐÁ½¸öÖ÷ÒªÊǶÔJDKµÄÀ¬»øÊÕ¼¯Æ÷²¿·Ö½øÐÐÉý¼¶£¬ÁíÒ»¸ö²àÖØÓÚ¶ÔJDKµÄ±¾µØÏ̹߳¦ÄܽøÐÐÉý¼¶¡£
1 .ÇåÀíÀ¬»øÊÕ¼¯½Ó¿Ú
ÔÚµ±Ç°µÄJDK½á¹¹ÖУ¬×é³ÉÀ¬»øÊÕ¼¯Æ÷(GC)ʵÏÖµÄ×é¼þ·ÖÉ¢ÔÚ´úÂë¿âµÄ¸÷¸ö²¿·Ö¡£¾¡¹ÜÕâЩ¹ßÀý¶ÔÓÚʹÓÃGC¼Æ»®µÄJDK¿ª·¢Õ߱ȽÏÊìϤ£¬µ«¶ÔеĿª·¢ÈËÔ±À´Ëµ£¬¶ÔÓÚÌض¨GCµÄÔ´´úÂ룬»òÕß´´½¨Ò»¸öеÄGC³£³£»á¸Ðµ½À§»ó¡£¸üÖØÒªµÄÊÇ£¬Ëæ×ÅJava modulesµÄ³öÏÖ£¬ÎÒÃÇÏ£ÍûÔÚ¹¹½¨¹ý³ÌÖÐÅųý²»ÐèÒªµÄGC£¬µ«ÊÇGC½Ó¿ÚµÄµ±Ç°ºáÇнṹÅųýÁËÕâÖÖÔöÇ¿¡£
JEP 304±»Éè¼ÆΪ½â¾ö´ËÎÊÌâµÄ·½°¸£¬²¢½¨ÒéÕûºÏ²¢ÇåÀíGC½Ó¿Ú£¬ÒÔ±ã¸üÈÝÒ×µØʵÏÖеÄGC£¬²¢¸üºÃµØά»¤ÏÖÓеÄGC¡£±¾½¨ÒéÍê³Éºó£¬GCÖ´Ðн«¸ºÔðÌṩÒÔÏÂÄÚÈÝ:
heap£¬CollectedHeapµÄ×ÓÀà
barrier set£¬BarrierSetµÄ×ÓÀ࣬ËüʵÏÖÁËÔËÐÐʱµÄ¸÷ÖÖÕÏ°
Ò»¸öCollectorPolicyµÄʵÏÖ
GCInterpreterSupportµÄʵÏÖ£¬ËüʵÏÖÁ˽âÊÍÆ÷µÄGCµÄ¸÷ÖÖÕÏ°(ʹÓûã±àÖ¸Áî)
GCC1SupportµÄʵÏÖ£¬ËüΪC1±àÒëÆ÷ʵÏÖÁËGCµÄ¸÷ÖÖÕÏ°
GCC2SupportµÄʵÏÖ£¬ËüΪC2±àÒëÆ÷ʵÏÖÁËGCµÄ¸÷ÖÖÕÏ°
×îÖÕGCÌض¨²ÎÊýµÄ³õʼ»¯
ÉèÖÃMemoryService¡¢Ïà¹ØµÄÄÚ´æ³Ø¡¢ÄÚ´æ¹ÜÀíÆ÷µÈ¡£
2. G1À¬»øÊÕ¼¯Æ÷²¢Ðл¯
Ëæ×ÅJDK 9µÄ·¢²¼£¬Garbage-First(G1)GCÈ¡´úÁËParallel Collector×÷ΪĬÈÏGC¡£ÎªÁ˼õÉÙJDK 9Ö®ÍâµÄJDK°æ±¾ÖÐÀ¬»øÊÕ¼¯µÄÓ°Ï죬G1ÊÕ¼¯Æ÷½«±»²¢Ðл¯(ÒÔÆ¥Åä²¢ÐÐÊÕ¼¯Æ÷µÄÌØÕ÷)¡£ËäȻĿǰ»¹Ã»ÓйØÓÚÕâ¸ö²¢Ðл¯µÄʵÏÖϸ½ÚµÄÐÅÏ¢£¬µ«ÊÇ¿ÉÒÔÔÚJEP 307¹æ·¶ÖÐÕÒµ½¹ØÓڴ˸ü¸ÄµÄ¸ü¶àϸ½Ú¡£
ÓйØGCʵÏֵĸü¶àÐÅÏ¢£¬Çë²ÎÔÄOracleµÄG1Ö¸ÄϺͲ¢ÐÐÊÕ¼¯Æ÷Ö¸ÄÏ¡£
3. ÏîÄ¿Ïֲ߳̾¿ÎÕÊÖ
µ±Ç°£¬Í£Ö¹JavaÏß³ÌÊÇÒ»¸ö¡°È«²¿»òûÓС±µÄ¹ý³Ì£¬ÐèÒªÒ»¸öJavaÐéÄâ»ú(JVM)µÄ°²È«µã£¬ÒÔʹһ¸öÏß³ÌÍ£Ö¹¡£ÎªÁËÈõ¥¶ÀµÄÏß³ÌÍ£Ö¹£¬JEP 312ÌáÒ齫»Øµ÷°üº¬µ½Ïß³ÌÖС£ÕâÒ»¸ü¸ÄÊܵ½ÁËÏÞÖÆ£¬ÒòΪËüÏÔÖøµØÌá¸ßÁËÏÖÓÐJVM¹¦ÄܵÄÐÔÄÜ¿ªÏú£¬²¢ÇҸıäÁ˵½´ïJVMÈ«¾Ö°²È«µãµÄÏÖÓÐʱ¼äÓïÒå¡£
½áÂÛ
¾¡¹ÜJDK 9¶ÔÓÚÐí¶àJava¿ª·¢ÈËÔ±·Ç³£ÐÂÏÊ£¬µ«ËüµÄ·¢Õ¹²¢Ã»ÓÐÍ£Ö¹¡£ÌرðÊÇ£¬JDK 10³ÐŵΪ¾Ö²¿±äÁ¿ÊµÀý»¯ÒýÈëÀàÐÍÍƶϻúÖÆ£¬²¢½«ÏÖÓеÄJDK´æ´¢¿âºÏ²¢µ½Ò»¸öMercurial´æ´¢¿âÖС£
´ËÍ⣬ÔÚ¸ü³ÉÊìºÍ¸üÖ§³ÖµÄÇé¿öÏ£¬JDK 10»¹¿ÉÄÜ°üÀ¨Ò»Ð©ÖØÒªµÄÉý¼¶µ½GC½Ó¿ÚºÍĬÈϵÄGCʵÏÖ£¬ÒÔ¼°Éý¼¶µ½JVMÖе¥¸öÏ̵߳ĿÉÑ°Ö·ÄÜÁ¦¡£ËäÈ»JDK 10µÄ·¢²¼ÔÚδÀ´ÈÔÈ»Ïà¶Ô½ÏÔ¶£¬¶øÇÒ°üº¬µÄÌØÐԺܿÉÄÜ»á³ÉΪJavaʱ¼äÖáÉϵÄÒ»¸öÖØÒªÀï³Ì±®¡£