Ò»¡¢½Å±¾½âÊÍÆ÷¸ÅÊö
ÔÚһЩJavaÓ¦ÓõÄÐèÇóÖУ¬¼¯³ÉijÖֽű¾ÓïÑÔµÄÖ§³ÖÄܹ»´øÀ´ºÜ´óµÄ·½±ã¡£ÀýÈ磬Óû§¿ÉÄÜÏëÒª±àд½Å±¾³ÌÐòÇý¶¯Ó¦Óá¢À©Õ¹Ó¦Ó㬻òΪÁ˼ò»¯²Ù×÷¶ø±àдѻ·ºÍÆäËûÁ÷³Ì¿ØÖÆÂß¼¡£ÔÚÕâЩÇé¿öÏ£¬Ò»ÖÖÀíÏëµÄ½â¾ö·½°¸ÊÇÔÚJavaÓ¦ÓÃÖÐÌṩ¶Ô½Å±¾ÓïÑÔ½âÊÍÆ÷µÄÖ§³Ö£¬Èýű¾ÓïÑÔ½âÊÍÆ÷¶ÁÈ¡Óû§±àдµÄ½Å±¾²¢ÔÚÓ¦ÓÃÌṩµÄÀàÉÏÔËÐÐÕâЩ½Å±¾¡£ÎªÁËʵÏÖÕâ¸öÄ¿±ê£¬Äã¿ÉÒÔÔÚJavaÓ¦ÓÃËùÔËÐеÄJVMÖУ¬ÔËÐÐÒ»¸ö»ùÓÚJavaµÄ½Å±¾ÓïÑÔ½âÊÍÆ÷¡£
һЩ֧³Ö¿â£¬ÀýÈçIBMµÄBean Scripting Framework£¬Äܹ»°ïÖúÄã°Ñ²»Í¬µÄ½Å±¾ÓïÑÔ¼¯³Éµ½Java³ÌÐò¡£ÕâЩ֧³Ö¿ò¼ÜÄܹ»ÈÃÄãµÄJavaÓ¦ÓÃÔÚ²»×÷´óÁ¿Ð޸ĵÄÇé¿öÏ£¬ÔËÐÐTcl¡¢PythonºÍÆäËûÓïÑÔ±àдµÄ½Å±¾¡£
ÔÚJavaÓ¦ÓÃÖм¯³ÉÁ˽ű¾½âÊÍÆ÷Ö®ºó£¬Óû§±àдµÄ½Å±¾Äܹ»Ö±½ÓÒýÓÃJavaÓ¦ÓõÄÀ࣬¾ÍÈçÕâЩ½Å±¾ÊôÓÚJava³ÌÐòµÄÒ»²¿·ÖÒ»Ñù¡£ÕâÖÖ˼·¼ÈÓÐÓŵãÒ²ÓÐȱµã¡£ÆäÓŵãÔÚÓÚ£¬Èç¹ûÄãÏëÒªÓýű¾Çý¶¯µÄ·½Ê½¶ÔÓ¦ÓýøÐлعé²âÊÔ£¬»òÕßÏëҪͨ¹ý½Å±¾¶ÔÓ¦ÓýøÐеͼ¶µ÷Óã¬ËüÄܹ»´øÀ´ºÜ´óµÄ·½±ã£»ÆäȱµãÔÚÓÚ£¬Èç¹ûÓû§µÄ½Å±¾Ö±½Ó²Ù×÷Java³ÌÐòµÄÄÚ²¿½á¹¹¶ø²»ÊǾ¹ýÈϿɵÄAPI£¬Ëü¿ÉÄÜÓ°ÏìJava³ÌÐòµÄÍêÕûÐÔºÍÓ¦Óõݲȫ¡£Òò´Ë£¬Ó¦µ±×ÐϸµØ¹æ»®ÄÇЩÔÊÐíÓû§Õë¶ÔÆä±àд½Å±¾µÄAPI£¬²¢ÉùÃ÷³ÌÐòµÄÆäÓಿ·Ö²»ÔÊÐíÓýű¾²Ù×÷¡£ÁíÍ⣬Ä㻹¿ÉÒÔ¶ÔÄÇЩ²»ÏëÈÃÓû§Õë¶ÔÆä½øÐнű¾±à³ÌµÄÀàºÍ·½·¨Ãû³Æ½øÐÐÄ£ºý´¦Àí£¬Ö»Áô³öÄÇЩÔÊÐí½Å±¾±à³ÌµÄAPIÀàºÍ·½·¨Ãû×Ö¡£ÕâÑù£¬Äã¾ÍÄܹ»ÓÐЧµØ½µµÍϲ»¶Ã°ÏÕµÄÓû§Ö±½ÓÓýű¾²Ù×÷Êܱ£»¤µÄÀàºÍ·½·¨µÄ¿ÉÄÜÐÔ¡£
ÔÚJava³ÌÐòÖÐÖ§³Ö¶àÖֽű¾ÓïÑÔÓÐ×Å·ÇͬѰ³£µÄÒâÒ壬µ«Èç¹ûÄãÕýÔÚ±àдµÄÊÇÒ»¸öÉÌÒµÓ¦Óã¬ÔòÓ¦µ±É÷ÖØ¿¼ÂÇ----¾¡¹ÜÄãΪÓû§ÌṩÁË×îÍêÉƵŦÄÜ£¬µ«Í¬Ê±Ò²´øÀ´ÁË×î¶àµÄ³ö´í»ú»á¡£±ØÐ뿼Âǵ½ÅäÖú͹ÜÀíÎÊÌ⣬ÒòΪÖÁÉÙÓÐÒ»²¿·ÖµÄ½Å±¾½âÊÍÆ÷ÔÚ¶¨ÆڵؽøÐÐÉý¼¶ºÍ¸üУ¬ÕâÑùÄã¾Í±ØÐ뻨ºÜ´óµÄÁ¦Æø¹ÜÀí¸÷¸ö½âÊÍÆ÷µÄÄÄЩ°æ±¾ÊʺÏÓÚJavaÓ¦ÓõÄÄÄЩ°æ±¾¡£Èç¹ûÓû§ÎªÁ˽â¾ö¾É½Å±¾½âÊÍÆ÷ÖдæÔÚµÄBUG£¬¶ÔÆäÖÐij¸ö½Å±¾½âÊÍÆ÷½øÐÐÁËÉý¼¶£¬ÄãµÄJavaÓ¦ÓþͻáÔËÐÐÔÚÒ»ÖÖδ¾ÍêÈ«²âÊÔµÄÅäÖÃÏ¡£ÊýÌì»òÊýÐÇÆÚÖ®ºó£¬Óû§Ò²Ðí»á·¢ÏÖÓÉÓڽű¾ÒýÇæÉý¼¶¶ø²úÉúµÄÎÊÌ⣬µ«ËûÃǺܿÉÄܲ»»á°Ñ½Å±¾ÒýÇæÉý¼¶µÄÊÂÇé¸æËßÄ㣬ÕâʱÄã¾ÍºÜÄÑÔÙ´ÎÖظ´ÊÔÑé³öÓû§±¨¸æµÄ´íÎóÁË¡£
ÁíÍ⣬Óû§ºÜ¿ÉÄܼá³ÖÈÏΪÄã±ØÐëΪJavaÓ¦ÓÃÖ§³ÖµÄ½Å±¾½âÊÍÆ÷Ìṩ²¹¶¡¡£Ò»Ð©½Å±¾½âÊÍÆ÷°´ÕÕÔ´´úÂ뿪·ÅµÄģʽ¼°Ê±½øÐÐά»¤ºÍ¸üУ»¶ÔÓÚÕâЩ½Å±¾½âÊÍÆ÷£¬¿ÉÄÜÓÐר¼Ò°ïÖúÄã½â¾öÎÊÌâ¡¢ÐÞ²¹½âÊÍÆ÷£¬»òÔÚеķ¢ÐаæÖÐÒýÈë²¹¶¡¡£ÕâÊǺÜÖØÒªµÄ£¬ÒòΪ½Å±¾½âÊÍÆ÷ÊÇÒ»¸öºÜ¸´ÔӵŤ¾ß£¬°üº¬´óÁ¿µÄ´úÂ룬Èç¹ûûÓÐר¼ÒµÄÖ§³Ö£¬¶ÔÓÚ×Ô¼ºÐ޸Ľű¾½âÊÍÆ÷ÕâÒ»ÁîÈË·³ÄÕµÄÈÎÎñ£¬ÄãºÜ¿ÉÄÜÊøÊÖÎ޲ߡ£
ΪÁ˱ÜÃâ³öÏÖÕâÖÖÎÊÌ⣬ÄãÓ¦¸Ã¶ÔÓÚÿһÖÖ×¼±¸ÔÚJavaÓ¦ÓÃÖÐÌṩ֧³ÖµÄ½Å±¾½âÊÍÆ÷½øÐÐÈ«ÃæµÄ²âÊÔ¡£¶ÔÓÚÿһÖÖ½âÊÍÆ÷£¬È·±£ËüÄܹ»Ë³ÀûµØ´¦Àí¾ø´ó¶àÊý³£¼ûµÄʹÓÃÇéÐΣ¬È·±£Ëü¼´Ê¹ÔÚ¼«¶Ë¿Á¿ÌµÄÌõ¼þÏÂÔËÐдóÁ¿µÄ½Å±¾Ò²²»»á³öÏÖ´óµÄÄڴ橶´£¬È·±£µ±Äã¶ÔJava³ÌÐòºÍ½Å±¾½âÊÍÆ÷½øÐÐÑϸñµÄBeta²âÊÔʱ²»»á³öÏÖÈκÎÒâÍâµÄÇé¿ö¡£µ±È»£¬ÕâÖÖÇ°ÆÚ²âÊÔÐèҪͶÈëʱ¼äºÍÆäËû×ÊÔ´£»µ«²»¹ÜÔõÑù£¬²âÊÔͶÈë×ÜÊÇÎïÓÐËùÖµµÄ¡£
¶þ¡¢±£³Öϵͳ¼ò½à
Èç¹ûÄã±ØÐëÔÚJavaÓ¦ÓÃÖÐÌṩ½Å±¾Ö§³Ö£¬Ê×ÏȱØÐëÑ¡ÔñÒ»¸ö×î·ûºÏÓ¦ÓÃÒªÇóºÍÓû§»ù´¡µÄ½Å±¾½âÊÍÆ÷¡£Ñ¡ÔñºÏÊʵĽâÊÍÆ÷Äܹ»¼ò»¯¼¯³É½âÊÍÆ÷µÄ´úÂ룬¼õÉÙ¿Í»§Ö§³Ö·½ÃæµÄÖ§³ö£¬ÒÔ¼°Ìá¸ßÓ¦ÓõÄÎȶ¨ÐÔ¡£×îÀ§ÄѵÄÎÊÌâÔÚÓÚ£ºÈç¹ûÖ»ÄÜÑ¡ÓÃÒ»ÖÖ½âÊÍÆ÷£¬Ó¦¸ÃÑ¡ÓÃÄÄÒ»ÖÖÄØ£¿
ÎұȽÏÁ˼¸Öֽű¾½âÊÍÆ÷£¬¿ªÊ¼Ê±¿¼ÂǵĽű¾ÓïÑÔ°üÀ¨Tcl¡¢Python¡¢Perl¡¢JavaScriptºÍBeanShell¡£½Ó×Å£¬ÔÚÉîÈë·ÖÎö֮ǰ£¬ÎÒ·ÅÆúÁËPerl¡£ÎªÊ²Ã´ÄØ£¿ÒòΪPerlûÓÐÓÃJavaдµÄ½âÊÍÆ÷¡£¼ÙÉèÄãÑ¡ÔñÁËÒ»¸öÓñ¾»ú´úÂëʵÏֵĽű¾½âÊÍÆ÷£¬ÀýÈçPerl£¬ÔòJavaÓ¦Óúͽű¾´úÂëÖ®¼äµÄ½»»¥¾Í²»ÔÙÖ±½Ó½øÐУ»ÁíÍ⣬¶ÔÓÚÿһ¸öÄãÏëÒªÖ§³ÖµÄ²Ù×÷ϵͳ£¬¶¼±ØÐëÌṩһ¸ö½Å±¾½âÊÍÆ÷µÄ¶þ½øÖÆ´úÂë¿â¡£ÓÉÓÚÐí¶à¿ª·¢ÕßÑ¡ÔñJavaÊÇÒòΪ¿´ÖÐÁËËüµÄ¿çƽ̨¿ÉÒÆÖ²ÐÔ£¬ÎªÁ˱£Ö¤JavaÓ¦ÓÃÓÐÕâÖÖÓŵ㣬ËùÒÔ×îºÃÑ¡ÔñÒ»ÖÖ²»ÒÀÀµÓÚ±¾»ú´úÂëµÄ½âÊÍÆ÷¡£ºÍPerl²»Í¬£¬Tcl¡¢Python¡¢JavaScriptºÍBeanShell¶¼ÓлùÓÚJavaµÄ½âÊÍÆ÷£¬ËùÒÔÕâЩÓïÑԵĴúÂë¿ÉÒÔÓëJavaÓ¦ÓÃÔÚͬһ¸öJVMºÍ½ø³ÌÖ®ÄÚÔËÐС£
»ùÓÚÒÔÉϱê×¼£¬²ÎÓë±¾ÎÄÆÀ²âµÄ½Å±¾½âÊÍÆ÷°üÀ¨£º
Jacl£ºTclµÄJavaʵÏÖ¡£
Jython£ºPythonµÄJavaʵÏÖ¡£
Rhino£ºJavaScriptµÄJavaʵÏÖ¡£
BeanShell£ºÒ»¸öÓÃJava±àдµÄJavaÔ´´úÂë½âÊÍÆ÷¡£
ÏÞ¶¨ÁË´ý±È½ÏµÄ½âÊÍÆ÷ÖÖÀàÖ®ºó£¬½ÓÏÂÀ´¾Í¿ÉÒÔ´Ó¸÷¸ö·½Ãæ¶ÔËüÃǽøÐбȽÏÁË¡£
Èý¡¢ÆÀ²âÖ®Ò»£º¿ÉÓÃÐÔ
µÚÒ»¸öÆÀ²âÏîÄ¿ÊÇ¿ÉÓÃÐÔ¡£ÕâÏîÆÀ²â·ÖÎöÁËÊÇ·ñ´æÔÚijÖÖ½âÊÍÆ÷²»¿ÉÓõÄÇéÐΡ£ÓÃÿһÖÖÓïÑÔ¸÷±àдһ¸ö¼òµ¥µÄ²âÊÔ³ÌÐò£¬È»ºó·Ö±ðÓÃÏàÓ¦µÄ½âÊÍÆ÷ÔËÐУ¬½á¹û·¢ÏÖ£¬ËùÓнâÊÍÆ÷¶¼Í¨¹ýÁ˲âÊÔ£¬Ã¿Ò»ÖÖ½âÊÍÆ÷¶¼Äܹ»Îȶ¨µØ¹¤×÷»òÄܹ»·½±ãµØÓëÖ®½»»¥¡£¼ÈȻÿһÖÖ½âÊÍÆ÷¶¼ÖµµÃ¿¼ÂÇ£¬ÄÇô£¬ÓÐÄÄЩÒòËØ¿ÉÄÜʹ¿ª·¢ÕßÆ«°®ÆäÖÐÒ»ÖÖÄØ£¿
Jacl£ºÈç¹ûÄãÏëÒªÔÚTk½Å±¾´úÂëÖд´½¨Óû§½çÃæÔªËØ£¬Çë·ÃÎÊSwank project£¬Ëü°ÑJavaµÄSwing²¿¼þ·â×°µ½ÁËTkÀïÃæ¡£·¢Ðа治°üº¬Jacl½Å±¾µÄµ÷ÊÔÆ÷¡£
Jython£ºÖ§³ÖÓÃPythonÓï·¨±àдµÄ½Å±¾¡£PythonÀûÓÃËõ½ø²ã´Î±íʾ´úÂë¿éµÄ½á¹¹£¬¶ø²»ÊÇÏóÆäËûÐí¶àÓïÑÔÒ»ÑùÓû¨À¨ºÅ»ò¿ªÊ¼-½áÊø·ûºÅ±íʾ¿ØÖÆÁ÷³Ì¡£ÖÁÓÚÕâÖָı便¾¹ÊǺÃÊ»¹ÊÇ»µÊ£¬Õâ¾ÍÒª¿´ÄãºÍÓû§µÄÏ°¹ßÁË¡£·¢Ðа治°üº¬Jython½Å±¾µÄµ÷ÊÔÆ÷¡£
Rhino£ºÐí¶à³ÌÐòÔ±×ÜÊÇ°ÑJavaScriptºÍWebÒ³Ãæ±à³Ì¹ØÁªÆðÀ´£¬µ«Õâ¸ö°æ±¾µÄJavaScript²»ÐèÒªÔÚä¯ÀÀÆ÷ÖÐÔËÐС£ÔÚʹÓùý³ÌÖУ¬ÎÒûÓз¢ÏÖÈκÎÎÊÌâ¡£ËüµÄ·¢Ðаæ´øÓÐÒ»¸ö¼òµ¥µ«ÊµÓõĽű¾µ÷ÊÔÆ÷¡£
BeanShell£ºJava³ÌÐòÔ±ºÜ¿ì»á¶ÔÕâ¸öÔ´´úÂë½âÊÍÆ÷²úÉúÒ»ÖÖÇ×Çеĸоõ¡£BeanShellµÄÎĵµÐ´µÃºÜ²»´í£¬µ«¿ª·¢×éºÜС¡£È»¶ø£¬Ö»Óе±BeanShellµÄ¿ª·¢Õ߸ıäÁËËûÃǵÄÐËȤ£¬È´ÓÖûÓÐÆäËûÈËÌî²¹ËûÃÇת»»ÐËȤºóÁôϵĿհ×ʱ£¬¿ª·¢×é̫С²Å»á³ÉΪһ¸öÎÊÌâ¡£ËüµÄ·¢Ðа治°üº¬BeanShell½Å±¾µ÷ÊÔÆ÷¡£
ËÄ¡¢ÆÀ²âÖ®¶þ£ºÐÔÄÜ
µÚ¶þ¸öÆÀ²âÏîÄ¿ÊÇÐÔÄÜ¡£ÕâÏî²âÊÔÊÇÒª·ÖÎö¸÷¸ö½Å±¾½âÊÍÆ÷Ö´ÐÐһЩ¼òµ¥³ÌÐòµÄËٶȡ£±¾´Î²âÊÔûÓÐÒªÇó½âÊÍÆ÷ÅÅÐò´óÐÍÊý×飬ҲûÓÐÖ´Ðи´ÔÓµÄÊýѧ¼ÆË㣬¶øÊÇÖ´ÐÐÁËһЩ¼òµ¥µÄ¡¢³£¼ûµÄ²Ù×÷£¬ÀýÈçÑ»·¡¢ÕûÊý±È½Ï£¬ÒÔ¼°·ÖÅäºÍ³õʼ»¯´óÐÍÊý×éºÍ¶þάÊý×é¡£²âÊÔ³ÌÐò¶¼ºÜ¼òµ¥£¬ÇÒÕâЩ²Ù×÷¶¼ÊÇÿһ¸öÉÌÒµÓ¦Óûò¶à»òÉÙÒªÓõ½µÄ¡£ÁíÍ⣬±¾Ïî²âÊÔ»¹·ÖÎöÁËÿһ¸ö½âÊÍÆ÷³õʼ»¯ºÍÖ´Ðмòµ¥½Å±¾ËùÐèÒªµÄÄÚ´æ¡£
ΪһÖÂÆð¼û£¬²âÊÔ³ÌÐòµÄÿһÖֽű¾ÓïÑԵİ汾¶¼¾¡Á¿µØÏàËÆ¡£²âÊÔÔÚһ̨Toshiba Tecra 8100±Ê¼Ç±¾ÉϽøÐУ¬CPUÊÇ700-MHzµÄPentium III´¦ÀíÆ÷£¬RAMÊÇ256 MB¡£µ÷ÓÃJVMʱ£¬¶ÑÕ»´óСʹÓÃĬÈÏÖµ¡£
ΪÁ˱ãÓÚÀí½âºÍ±È½Ï½Å±¾³ÌÐòµÄÖ´ÐÐËٶȣ¬±¾ÏîÆÀ²â»¹ÔÚJava 1.3.1ÏÂÔËÐÐÁËÀàËƹ¦ÄܵÄJava³ÌÐò£¬ÓÖÔÚTcl±¾»ú½âÊÍÆ÷ÄÚÔËÐÐÁËΪJacl½Å±¾½âÊÍÆ÷±àдµÄTcl½Å±¾¡£Òò´Ë£¬ÔÚÏÂÃæµÄ±í¸ñÖУ¬Ä㻹¿ÉÒÔ¿´µ½ÕâÁ½´Î²âÊԵĽá¹û¡£
±í¸ñÒ»£º´Ó1µ½1000000¼ÆÊýµÄforÑ»·£º
½âÊÍÆ÷ÀàÐÍ¡¡ ʱ¼ä
-----------------------
Java 10 ºÁÃë
Tcl 1.4 Ãë
Jacl 140 Ãë
Jython 1.2 Ãë
Rhino 5 Ãë
BeanShell 80 Ãë
--------------------
±í¸ñ¶þ£º±È½ÏÕûÊýÊÇ·ñÏàµÈ£¬1000000´Î£º
½âÊÍÆ÷ÀàÐÍ Ê±¼ä
-----------------------
Java 10 ºÁÃë
Tcl 2 Ãë
Jacl 300 Ãë
Jython 4 Ãë
Rhino 8 Ãë
BeanShell 80 Ãë
--------------------
±í¸ñÈý£º·ÖÅä²¢³õʼ»¯100000¸öÔªËصÄÊý×飺
½âÊÍÆ÷ÀàÐÍ Ê±¼ä
-----------------------
Java 10 ºÁÃë
Tcl .5 Ãë
Jacl 25 Ãë
Jython 1 Ãë
Rhino 1.3 Ãë
BeanShell 22 Ãë
--------------------
±í¸ñËÄ£º·ÖÅä²¢³õʼ»¯500 X 500 ¸öÔªËصÄÊý×飺
½âÊÍÆ÷ÀàÐÍ¡¡ ʱ¼ä
--------------------
Java 20 ºÁÃë
Tcl 2 Ãë
Jacl 45 Ãë
Jython 1 Ãë
Rhino 7 Ãë
BeanShell 18 Ãë
--------------------
±í¸ñÎ壺ÔÚJVMÄÚ³õʼ»¯½âÊÍÆ÷ËùÐèÒªµÄÄڴ棺
½âÊÍÆ÷ÀàÐÍ¡¡ ÄÚ´æÕ¼ÓÃ
----------------------
Jacl ´óÔ¼ 1 MB
Jython ´óÔ¼ 2 MB
Rhino ´óÔ¼ 1 MB
BeanShell ´óÔ¼ 1 MB
----------------------
±¾ÏîÆÀ²âÖ¤Ã÷Jython¾ßÓÐ×îºÃµÄÐÔÄÜ£¬ÓëÆäËû½âÊÍÆ÷À¿ªÁËÏ൱¿É¹ÛµÄ²î¾à£¬RhinoµÚ¶þ£¬BeanShellÉÔÂý£¬¶øJaclµæµ×¡£È»¶ø£¬¶ÔÓÚÄãÀ´Ëµ£¬ÕâЩÐÔÄÜÊý¾Ýµ½µ×Äܹ»²úÉú¶à´óµÄÓ°Ï죬ÕâÓëÄãÏëÒªÓýű¾ÓïÑÔÍê³ÉµÄÈÎÎñÃÜÇÐÏà¹Ø¡£Èç¹û½Å±¾º¯ÊýÖаüº¬´óÁ¿µÄµü´ú²Ù×÷£¬ÄÇôJacl»òBeanShell¿ÉÄÜÊÇÁîÈËÄÑÒÔ½ÓÊܵġ£Èç¹û½Å±¾³ÌÐòÖظ´Ö´ÐдúÂëµÄ»ú»áºÜÉÙ£¬ÄÇôÕâЩ½âÊÍÆ÷ÔÚËÙ¶ÈÉϵÄÏà¶Ô²îÒì¾Í²»ÄÇôÖØÒªÁË¡£ÖµµÃÖ¸³öµÄÊÇ£¬Jython¿´À´Ã»ÓÐΪÉùÃ÷¶þάÊý×éÌṩÄÚ½¨µÄÖ±½ÓÖ§³Ö£¬µ«Õâ¸öÎÊÌâ¿ÉÒÔͨ¹ýÒ»¸ö¡°Êý×éµÄÊý×顱½á¹¹½â¾ö¡£
Îå¡¢ÆÀ²âÖ®Èý£º¼¯³ÉµÄÄÑÒ׳̶È
±¾ÏîÆÀ²â°üº¬Á½¸öÈÎÎñ¡£µÚÒ»¸öÈÎÎñÊDZȽ϶Ը÷Öֽű¾ÓïÑÔ½âÊÍÆ÷½øÐÐʵÀý»¯Ê±ÐèÒª¶àÉÙ´úÂ룻µÚ¶þ¸öÈÎÎñÊDZàдһ¸öÍê³ÉÈçϲÙ×÷µÄ½Å±¾£ºÊµÀý»¯Ò»¸öJava JFrame£¬·ÅÈëÒ»¸öJTree£¬µ÷Õû´óС²¢ÏÔʾ³öJFrame¡£¾¡¹ÜÕâЩÈÎÎñ¶¼ºÜ¼òµ¥£¬µ«ÓÉ´ËÎÒÃÇ¿ÉÒÔ¿´³ö¿ªÊ¼Ê¹ÓÃÒ»¸ö½âÊÍÆ÷Òª×ö¶àÉÙ¹¤×÷£¬»¹¿ÉÒÔ¿´³öΪ½âÊÍÆ÷±àдµÄ½Å±¾´úÂëÔÚµ÷ÓÃJavaÀàʱµ½µ×ÊÇʲôÑù×Ó¡£
¡ö¡¡Jacl
Òª°ÑJacl¼¯³Éµ½JavaÓ¦Óã¬Ê×ÏÈÒª°ÑJaclµÄJarÎļþ¼ÓÈëµ½JavaµÄCLASSPATH£¬È»ºóÔÚÖ´Ðнű¾Ö®Ç°£¬´´½¨Jacl½âÊÍÆ÷µÄʵÀý¡£ÏÂÃæÊÇ´´½¨Jacl½âÊÍÆ÷ʵÀýµÄ´úÂ룺
import tcl.lang.*;public class SimpleEmbedded { public static void main(String args[]) { try { Interp interp = new Interp(); } catch (Exception e) { }}
ÏÂÃæµÄJacl½Å±¾´úÂëÏÔʾÁËÈçºÎ´´½¨Ò»¸öJTree£¬°ÑËü·ÅÈëJFrame£¬µ÷Õû´óС²¢ÏÔʾJFrame£º
package require javaset env(TCL_CLASSPATH) set mid [java::new javax.swing.JTree]set f [java::new javax.swing.JFrame]$f setSize 200 200set layout [java::new java.awt.BorderLayout]$f setLayout $layout$f add $mid $f show
¡ö¡¡Jython
Òª°ÑJython¼¯³Éµ½JavaÓ¦Óã¬Ê×ÏÈÒª°ÑJythonµÄJarÎļþ¼ÓÈëµ½JavaµÄCLASSPATH£¬È»ºóÔÚÖ´Ðнű¾Ö®Ç°£¬´´½¨Ò»¸öJython½âÊÍÆ÷µÄʵÀý¡£Íê³ÉÕâ¸öÈÎÎñµÄ´úÂëºÜ¼òµ¥£º
import org.python.util.PythonInterpreter;import org.python.core.*;public class SimpleEmbedded { public static void main(String []args) throws PyException { PythonInterpreter interp = new PythonInterpreter(); }}
ÏÂÃæµÄJython½Å±¾´úÂëÏÔʾÁËÈçºÎ´´½¨JTree£¬°ÑËü·ÅÈëJFrame£¬È»ºóÏÔʾ³öJFrame¡£ÏÂÃæµÄ´úÂë²»°üº¬µ÷Õû´óСµÄ²Ù×÷£º
from pawt import swingimport java, sysframe = swing.JFrame('Jython example', visible=1)tree = swing.JTree()frame.contentPane.add(tree)frame.pack()
¡ö¡¡Rhino
ºÍÆäËû½âÊÍÆ÷Ò»Ñù£¬¼¯³ÉRhinoʱÊ×ÏÈÒª°ÑRhinoµÄJarÎļþ¼ÓÈëµ½JavaµÄCLASSPATH£¬È»ºóÔÚÖ´Ðнű¾Ö®Ç°£¬´´½¨Rhino½âÊÍÆ÷µÄʵÀý£º
import org.mozilla.javascript.*;import org.mozilla.javascript.tools.ToolErrorReporter;public class SimpleEmbedded { public static void main(String args[]) { Context cx = Context.enter(); }}
ÏÂÃæ¼òµ¥µÄRhino½Å±¾ÏÔʾÁËÈçºÎ´´½¨JTree£¬°ÑËü·ÅÈëJFrame£¬µ÷Õû´óС²¢ÏÔʾ³öJFrame£º
importPackage(java.awt);importPackage(Packages.javax.swing);frame = new Frame("JavaScript");frame.setSize(new Dimension(200,200)); frame.setLayout(new BorderLayout());t = new JTree();frame.add(t, BorderLayout.CENTER);frame.pack();frame.show();
¡ö¡¡BeanShell
¼¯³ÉBeanShellÒ²ºÍ¼¯³ÉÆäËû½âÊÍÆ÷Ò»Ñù¼òµ¥¡£ÏÈ°ÑBeanShellµÄJarÎļþ¼ÓÈëµ½JavaµÄCLASSPATH£¬È»ºóÔÚÖ´Ðнű¾´úÂë֮ǰ´´½¨Ò»¸öBeanShell½âÊÍÆ÷µÄʵÀý£º
import bsh.Interpreter;public class SimpleEmbedded { public static void main(String []args) throws bsh.EvalError { Interpreter i = new Interpreter(); }}
ÏÂÃæµÄBeanShell½Å±¾´úÂëÏÔʾÁËÈçºÎ´´½¨Ò»¸öJTree£¬°ÑËü·ÅÈëJFrame£¬µ÷Õû´óС²¢ÏÔʾ³öJFrame¡£´úÂëºÜ¼òµ¥£¬ÇÒ¾ßÓÐÊìϤµÄJava·ç¸ñ£º
frame = new JFrame();tree = new JTree();frame.getContentPane().add(tree);frame.pack();frame.show();
´ÓÉÏÃæµÄ˵Ã÷¿ÉÒÔ¿´³ö£¬ÔÚJavaÓ¦ÓÃÖм¯³ÉÈκÎÒ»ÖÖ½âÊÍÆ÷¶¼ÊǺÜÈÝÒ׵ġ£Í¬Ê±£¬Ö»ÒªÄãÕÆÎÕÁ˽ű¾ÓïÑÔµÄÓï·¨£¬¾ÍÄܹ»¸ßЧµØ±àд³ö½Å±¾³ÌÐò¡£Ç°Ã漸¸ö¼òµ¥µÄÀý×ÓÏÔʾ³ö£¬ÓÃBeanShellºÍJavaScript±àдµÄ½Å±¾ÔÚ¸ñʽÉÏÓëJava×îÏàËÆ£¬¶øJaclºÍJythonÔòÏÔµÃÓÐЩ²»Í¬£¬µ«JaclºÍJython½Å±¾Ò²²»ÊÇÄÑÒÔÀí½âµÄ¡£ÕýÈçÉÏÃæΪ¸÷¸ö½Å±¾½âÊÍÆ÷±àдµÄ½Å±¾ËùÏÔʾµÄ£¬Ôڽű¾´úÂëºÍJavaÓ¦ÓõÄÀàÖ®¼ä²»´æÔÚÈκηÀ»ðǽ¡£Òò´Ë±ØÐë×¢Ò⣺½Å±¾´úÂëÖ±½ÓÔÚJavaÓ¦ÓõÄÀàµÄ»ù´¡ÉÏÔËÐС£Ó¦µ±È·ÐÅÕâ¾ÍÊÇÄãÏëÒªµÄЧ¹û¡£Èç¹ûÄãÏëÒªÔÚÔËÐÐʱ¶ÔÓ¦ÓõÄijЩ²¿·Ö½øÐб£»¤£¬±ÜÃâ½Å±¾´úÂë·ÃÎÊijЩ²¿·Ö£¬¾ÍÓ¦µ±²ÉÈ¡¶Ô·Ç¹«¿ªµÄ´úÂë½øÐÐÄ£ºý´¦ÀíÖ®ÀàµÄ´ëÊ©£¬±ÜÃâÈËÃÇÖ±½Ó¶Ô²»¹«¿ªµÄAPI½øÐбà³Ì¡£
Áù¡¢ÆÀ²âÖ®ËÄ£ºÖ§³ÖºÍÐí¿ÉÎÊÌâ
¾¡¹Ü¼¯³É½Å±¾½âÊÍÆ÷¸³ÓèJavaÓ¦ÓöîÍâµÄÄÜÁ¦£¬µ«Í¬Ê±ËüҲʹµÃJavaÓ¦ÓÃÒÀÀµÓÚÄÇЩ½Å±¾¿â¡£ÔÚÈ·¶¨Ñ¡ÓÃijһÖֽű¾½âÊÍÆ÷֮ǰ£¬¿¼ÂÇһϽ«À´µÄijһÌìÄã±ØÐëÐ޸ı»¼¯³ÉµÄ´úÂëµÄ»ú»á¡£Èç¹û½Å±¾½âÊÍÆ÷µÄ¿ª·¢ÕߺÜÉÙ¸üлòÉý¼¶½âÊÍÆ÷£¬Õâ²»ÊÇÒ»¸öºÃµÄ¼£Ïó¡£Ëü»òÕßÒâζ×ŵ±Ê±µÄ½âÊÍÆ÷ʵÏÖ´úÂëÒѾºÜÍêÃÀ£¬»òÕ߸ºÔðÕâЩ´úÂëµÄ¿ª·¢ÕßÒѾתÒƵ½ÆäËûÈí¼þÏîÄ¿ÉÏ¡£ÖÁÓÚÄÄÒ»ÖÖÇé¿öµÄ¿ÉÄÜÐԱȽϴ󣬴𰸷dz£Ã÷ÏÔ¡£
ÁíÍ⣬»¹ÓбØÒª¿´¿´ÊµÏÖ½âÊÍÆ÷ÐèÒª¶àÉÙÔ´´úÂë¡£ÊÔͼÕÆÎÕ½âÊÍÆ÷µÄÿһÐдúÂë²¢¶ÔËü½øÐÐÀ©Õ¹»ò¸Ä½øÊDz»ÇÐʵ¼ÊµÄ£¬ÒòΪ½âÊÍÆ÷µÄ´úÂë¹æģʵÔÚÌ«´óÁË¡£¾¡¹ÜÈç´Ë£¬Á˽â½âÊÍÆ÷µÄ¹æÄ£ÈÔÊDZØÒªµÄ£¬ÒòΪÔÚijЩʱºò£¬Äã¿ÉÄÜÐèÒªÐ޸ĽâÊÍÆ÷µÄÔ´´úÂ룬Ҳ¿ÉÄÜΪÁËÕÆÎÕ½âÊÍÆ÷µÄ¾ßÌ幤×÷ÔÀí¶øÐèÒª¶Ô½âÊÍÆ÷´úÂë×÷±È½ÏÉîÈëµÄÁ˽⡣
ÏÂÃæ¾ÍÀ´¿´¿´Ã¿Ò»ÖÖ½âÊÍÆ÷µÄ´úÂë¿âÖ§³ÖÎÊÌâ¡£
Jacl
JaclÓÐÒ»¸ö»îÔ¾µÄÖ§³ÖºÍ¿ª·¢×é¡£¾¡¹Ü¿ª·¢ÍøÕ¾ÉϵÄÏÂÔØÁ´½ÓÖ¸ÏòÁËÒ»¸öÊýÄêÇ°µÄ·¢Ðа棬µ«Ðµİ汾¿Éͨ¹ýCVS°æ±¾¿ØÖÆϵͳÕÒµ½¡£Jacl°üº¬Ô¼37000ÐÐJava´úÂë¡£
Jython
JythonµÄÖ§³Ö¡¢Î¬»¤ºÍ¸üп´ÆðÀ´¶¼ºÜ»îÔ¾¡£Jython´óÔ¼°üº¬55000ÐÐJava´úÂë¡£
Rhino
RhinoµÄ¸üкͷ¢Ðж¼±È½ÏƵ·±£¬Ëü´óÔ¼°üº¬44000ÐÐJava´úÂë¡£
BeanShell
BeanShellÒ²¶¨ÆڵؽøÐиüУ¬Ëü´óÔ¼°üº¬25000ÐÐJava´úÂ룬ÁíÍ⻹Óв»ÉÙBeanShell½Å±¾Ìṩ¡£
¿ÉÒÔ¿´³ö£¬ËùÓÐÕâЩ½âÊÍÆ÷¶¼ºÜÅÓ´ó¡£Èç¹ûÄãÄܹ»ÒÀÀµÓÚ½âÊÍÆ÷µÄ¿ª·¢ºÍÖ§³Ö×éÖ¯ÌṩµÄ¸Ä½øºÍBUG²¹¶¡£¬Äã×Ô¼ºµÄÂé·³¾Í»áÉÙһЩ¡£ÔÚÑ¡ÔñÒ»¸ö½âÊÍÆ÷֮ǰ£¬²»·Á¿´¿´½âÊÍÆ÷Éý¼¶ºÍ·¢ÐÐÊÇ·ñºÜƵ·±¡£Ò²ÐíÄã¿ÉÒÔÓëij¸ö¿ª·¢ÕßÈ¡µÃÁªÏµ£¬Á˽âËûÃǵij¤Ô¶¼Æ»®ÒÔ¼°BUGÐÞÕý¹ý³Ì¡£
ÕâЩ½âÊÍÆ÷¶¼ÊÇ¿ÉÒÔÃâ·ÑÏÂÔصġ£È»¶ø£¬Èç¹ûÒª°ÑËüÃÇǶÈëµ½ÉÌÒµÓ¦ÓÃÖ®ÖУ¬ËüÃǵÄÐí¿É¹æÔòÓÖÊÇÔõÑùµÄÄØ£¿ºÃÔÚ¶ÔÓÚËùÓÐÕâЩ½âÊÍÆ÷À´Ëµ£¬Èí¼þÐí¿É¶¼²»´æÔÚʲôÎÊÌâ¡£ÔĶÁJacl¡¢Jython¡¢JavaScriptºÍBeanShellµÄÐí¿ÉÐÒé¿ÉÒÔ·¢ÏÖ£¬Óû§±ØÐë×ñ´ÓGNU LGP»òµÈ¼ÛµÄÐí¿É¡£Õâ¾ÍÒâζ×Å£¬¼´Ê¹ÄãµÄJavaÓ¦Óò»ÊÇÃâ·ÑµÄ£¬ÈԾɿÉÒÔÔÚ·¢²¼Ó¦ÓÃʱ´øÉϽű¾½âÊÍÆ÷¡£µ«ÊÇ£¬Äã²»ÄÜɾ³ýÔ´´úÂëÎļþºÍ½Å±¾ÎļþÖеİæȨÐÅÏ¢£¬¶øÇÒ»¹ÒªÃ÷È·µØ¸æËßÓû§£¬ÓëJavaÓ¦ÓÃÀ¦°óÔÚÒ»ÆðµÄ½Å±¾½âÊÍÆ÷ÊôÓÚÆäËûÈËËùÓС£
Æß¡¢½áÊøÓï
Èç¹ûÄã´òËãÔÚJavaÓ¦ÓÃÖм¯³É½Å±¾±à³ÌÖ§³Ö£¬ÎÒ½¨ÒéÄãֻѡÓÃÒ»¸ö½Å±¾½âÊÍÆ÷¡£ÔÚÄãµÄ²úÆ·ÖУ¬Ã¿´Î¶îÍâÔö¼ÓÒ»Öֽű¾Ö§³Ö¶¼»á´øÀ´ÏàÓ¦µÄ´ú¼Û£¬Òò´ËÓ¦¸Ã±ÜÃâÔÚJavaÓ¦ÓÃÖм¯³ÉÒ»ÖÖÒÔÉϵĽű¾½âÊÍÆ÷¡£ÎªJavaÓ¦ÓÃÌí¼Ó½Å±¾Ö§³Öʱ£¬Ñ¡ÓûùÓÚJavaµÄ½âÊÍÆ÷¶ø²»ÊÇPerlÖ®ÀàµÄ±¾»ú½âÊÍÆ÷Äܹ»¼ò»¯ÒÔºóµÄ¹¤×÷£¬Äܹ»Ê¹ÄãµÄ²úÆ·¾ßÓиüºÃµÄ¿ÉÒÆÖ²ÐÔ£¬²¢ÎªJava³ÌÐòºÍ½âÊÍÆ÷µÄ¼¯³É¹¤×÷´øÀ´·½±ã¡£
Èç¹û¿Í»§ÏëÒªÓÃijÖÖÌض¨µÄ½Å±¾ÓïÑÔÀ´¶¨ÖÆÄãµÄ²úÆ·£¬Îñ±ØÈÏÕæµØ¼ì²éÒ»ÏÂÈç¹û¼¯³ÉÁËÖ§³Ö¸ÃÓïÑԵĽű¾½âÊÍÆ÷ÊÇ·ñ»á³öÏÖÎÊÌâ¡£Èç¹ûÄã²»±Ø¾ÖÏÞÓÚijÖÖÌض¨µÄ½Å±¾ÓïÑÔ£¬ÔòÓ¦µ±´Ó¶à¸ö²»Í¬µÄ½Ç¶È¶Ô½âÊÍÆ÷½øÐбȽϣ¬¿´¿´ÄÄÒ»¸ö¸üÊʺÏJavaÓ¦ÓÃËùÃæÁÙµÄÖ÷ÒªÈÎÎñ¡£
ÀýÈ磬ÓëÆäËû½âÊÍÆ÷Ïà±È£¬JaclµÄ·¢Õ¹Ëٶȿ´ÆðÀ´ÌرðÂý£¬µ«Èç¹ûÄã±ØÐëʹÓÃTcl½Å±¾£¬Ê¹ÓÃJacl½âÊÍÆ÷ÈÔ¾ÉÊÇÖµµÃµÄ¡£Èç¹ûÄãÒª°ÑÒ»¸öÓ¦ÓôÓTcl/TkÒÆÖ²µ½Java£¬JaclʹµÃеÄJavaÓ¦ÓÃÄܹ»ÔËÐÐÔÀ´µÄTcl½Å±¾£¬ÕâÖÖÄÜÁ¦µÄ¼ÛÖµ¿ÉÄܳ¬Ô½ÆäËû·½ÃæµÄ²»×ã¡£ÁíÍ⣬TclÊôÓÚÁ÷Ðеıà³ÌÓïÑÔ£¬ºÜ¶à¿ª·¢ÕßÒѾÊìϤËü£¬¶øÇÒ¹ØÓÚTcl±à³ÌµÄÊéÒ²ÈÝÒ×Âòµ½¡£
Èç¹ûÄãϲ»¶Java·ç¸ñµÄ½Å±¾´úÂ룬²¢ÇÒÁ¦Çó¼õÉÙ¼¯³É¹ý³ÌÖеÄÂé·³£¬BeanShell¿´À´ºÜ²»´í¡£ËüµÄ²»×ãÖ®´¦ÊÇ£¬BeanShellÓï·¨ºÍ±à³Ì·½ÃæµÄÓû§Ö¸ÄϽö½ö¾ÖÏÞÓÚ·¢ÐаæËù°üº¬µÄÄÚÈÝ£¬¶øÇÒBeanShellÓëÆäËûһЩ½Å±¾½âÊÍÆ÷Ïà±ÈÔËÐÐËٶȽÏÂý¡£ÁíÒ»·½Ã棬ÎÒ¾õµÃBeanShell±È½ÏÈÝÒ×ʹÓá£BeanShellµÄ¿â×éÖ¯µÃºÜºÃ£¬´Ó¶ø¼ò»¯Á˼¯³É¹¤×÷¡£Èç¹ûÄãÑ¡Ôñ½Å±¾½âÊÍÆ÷ʱÐÔÄܲ»ÊǹؼüµÄ¿¼ÂÇÒòËØ£¬ÄÇôÄã¿ÉÒÔ¿¼ÂÇBeanShell¡£
RhinoÔËÐÐËÙ¶ÈÃ÷ÏÔ±ÈBeanShell¿ì£¬¶øÇÒËüҲͬÑùÖ§³ÖJava·ç¸ñµÄ½Å±¾¡£ÁíÍ⣬Ëü¿´ÆðÀ´¾ßÓнϸߵĿª·¢ÖÊÁ¿ºÍÖ§³Ö·þÎñ£¬ÓйØJavaScriptÓï·¨ºÍ±à³ÌµÄÊéÒ²ºÜÈÝÒ×ÕÒµ½¡£Èç¹ûÄã¶ÔÐÔÄÜ¡¢Java·ç¸ñµÄÓï·¨ºÍÇ¿´óµÄÖ§³Ö·þÎñÓÐ×Ų¶àƽºâµÄÐèÇó£¬ RhinoÎÞÒÉÊÇÍƼö¿¼Âǵġ£
ÔÚ±¾ÎÄÆÀ²âµÄËÄÖֽű¾½âÊÍÆ÷ÖУ¬JythonÊÇËÙ¶È×î¿ìµÄÒ»ÖÖ£¬ÓµÓÐһЩǿ´óµÄ±à³Ì¹¦ÄÜ¡£Î¨Ò»ÕæÕýÁîÈ˵£ÐĵÄÊÇJyphonµÄÁ÷³Ì¿ØÖÆÓï·¨£¬²»¹ý£¬Äã¿ÉÄÜ»áÔÚºõÕâЩÓï·¨ÉϵIJîÒ죬Ҳ¿ÉÄܲ»»áÔÚºõ¡£¾ÍÏóJaclÒ»Ñù£¬ÓÉÓÚÐèҪѧϰµÄÐÂ֪ʶ±È½Ï¶à£¬ÓÃJython±àд½Å±¾¿ÉÄÜÐèÒª±ÈJavaScriptºÍBeanShell¸ü³¤µÄѧϰʱ¼ä¡£Èç¹ûÄãÏëÒªÓÃPython±àд±È½Ï¸´ÔӵĽű¾£¬¾ÍÓ¦¸ÃÂòÒ»±¾Êé¡£PythonÊÇÒ»ÖÖ¹ãÊÜ»¶ÓµÄ±à³ÌÓïÑÔ£¬Òò´Ë¿É¹©Ñ¡ÔñµÄÊé¼®Ò²Ï൱¶à¡£