Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ166²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¹ý¶ÔÊý×Ö½øÐе÷Õû£¬¼´¿É½øÐÐÈ«ÃæµÄÐ޸ġ£ÖÁÓÚÓëÕâÖÖȺ¾ÛÐÐΪÓйصĸü¶àµÄÇé¿ö£¬´ó¼Ò¿ÉÒÔ·ÃÎÊCraig¡¡¡¡
Reynold¡¡µÄÖ÷Ò³¡ª¡ªÔÚÄǸöµØ·½£¬ÉõÖÁ»¹ÌṩÁËBoids¡¡Ò»¸ö¹«¿ªµÄ¡¡3D¡¡Õ¹Ê¾°æ±¾£º¡¡¡¡
http£º//hmt¡£/cwr/boids¡£html¡¡¡¡
ΪÁ˽«Õâ¸ö³ÌÐò×÷Ϊһ¸ö³ÌÐòƬÔËÐУ¬ÇëÔÚHTML¡¡ÎļþÖÐÉèÖÃÏÂÊö³ÌÐòƬ±êÖ¾£º¡¡¡¡
¡¡¡¡
¡¡¡¡
¡¡¡¡
¡¡¡¡
¡¡¡¡
17¡£4¡¡×ܽᡡ¡¡
ͨ¹ý±¾ÕµÄѧϰ£¬´ó¼ÒÖªµÀÔËÓÃJava¡¡¿É×öµ½Ò»Ð©½Ï¸´ÔÓµÄÊÂÇ顣ͨ¹ýÕâЩÀý×ÓÒà¿É¿´³ö£¬¾¡¹Ü¡¡Java¡¡±Ø¶¨ÓС¡
×Ô¼ºµÄ¾ÖÏÞ£¬µ«ÊÜÄÇЩ¾ÖÏÞÓ°ÏìµÄÖ÷ÒªÊÇÐÔÄÜ£¨±ÈÈçдºÃÎÄ×Ö´¦Àí³ÌÐòºó£¬»á·¢ÏÖC£«£«µÄ°æ±¾Òª¿ìµÃ¶à¡ª¡ª¡¡
Õⲿ·ÖÊÇÓÉÓÚ¡¡IO¡¡¿â×öµÃ²»ÍêÉÆÔì³ÉµÄ£»¶øÔÚÄã¶Áµ½±¾ÊéµÄʱºò£¬Çé¿öÒ²ÐíÒÑ·¢ÉúÁ˱仯¡£µ«Java¡¡µÄ¾ÖÏÞÒ²¡¡
½ö´Ë¶øÒÑ£¬ËüÔÚÓïÑÔ±í´ï·½ÃæµÄÄÜÁ¦ÊÇÎÞÒÔÂױȵġ£ÀûÓá¡Java£¬¼¸ºõ¿ÉÒÔ±í´ï³öÎÒÃÇÏëµÃµ½µÄÈκÎÊÂÇé¡£¶ø¡¡
Óë´Ëͬʱ£¬Java¡¡ÔÚ±í´ïµÄ·½±ãÐÔºÍÒ׶ÁÐÔÉÏ£¬Ò²×ö×ãÁ˹¦·ò¡£ËùÒÔÔÚʹÓá¡Java¡¡Ê±£¬Ò»°ã²»»áÏÝÈëÆäËûÓïÑÔ¡¡
³£¼ûµÄÄÇÖÖ¸´ÔÓ¾³µØ¡£Ê¹ÓÃÄÇЩÓïÑÔʱ£¬»á¸Ð¾õËüÃÇÏóÒ»¸ö°®ßë߶µÄÀÏÌ«ÆÅ£¬ÄÄÓÐJava¡¡ÄÇÑùÇå´¿¡¢¼òÁ·£¡¶ø¡¡
ÇÒͨ¹ý¡¡Java¡¡1¡£2¡¡µÄJFC/Swing¡¡¿â£¬AWT¡¡µÄ±í´ïÄÜÁ¦ºÍÒ×ÓÃÐÔÉõÖÁÓֵõ½Á˽øÒ»²½µÄÔöÇ¿¡£¡¡¡¡
17¡£5¡¡Á·Ï°¡¡¡¡
£¨1£©¡¡¡¡£¨ÉÔ΢ÓÐЩÄѶȣ©¸ÄдFieldOBeasts¡£java£¬Ê¹ËüµÄ״̬Äܹ»±£³Ö¹Ì¶¨¡£¼ÓÉÏһЩ°´Å¥£¬ÔÊÐíÓû§±£´æ¡¡
ºÍ»Ö¸´²»Í¬µÄ״̬Îļþ£¬²¢´ÓËüÃǶϵôµÄµØ·½¿ªÊ¼¼ÌÐøÔËÐС£ÇëÏȲο¼µÚ¡¡10ÕµÄCADState¡£java¡¡£¬ÔÙ¾ö¶¨¾ß¡¡
ÌåÔõÑù×ö¡£¡¡¡¡
£¨2£©¡¡¡¡£¨´ó×÷Òµ£©ÒÔFieldOBeasts¡£java¡¡×÷ΪÆðµã£¬¹¹ÔìÒ»¸ö×Ô¶¯»¯½»Í¨·ÂÕæϵͳ¡£¡¡¡¡
£¨3£©¡¡¡¡£¨´ó×÷Òµ£©ÒÔClassScanner¡£java¡¡×÷ΪÆðµã£¬¹¹ÔìÒ»¸öÌØÊâµÄ¹¤¾ß£¬ÓÃËüÕÒ³öÄÇЩËäÈ»¶¨Ò嵫´ÓδÓùý¡¡
µÄ·½·¨ºÍ×ֶΡ£¡¡¡¡
£¨4£©¡¡¡¡£¨´ó×÷Òµ£©ÀûÓÃJDBC£¬¹¹ÔìÒ»¸öÁªÂç¹ÜÀí³ÌÐò¡£ÈÃÕâ¸ö³ÌÐòÒÔÒ»¸öƽÃæÎļþÊý¾Ý¿âΪ»ù´¡£¬ÆäÖаüº¬ÁË¡¡
Ãû×Ö¡¢µØÖ·¡¢µç»°ºÅÂë¡¢E¡mail¡¡µØÖ·µÈÁªÏµ×ÊÁÏ¡£Ó¦¸ÃÄÜÏòÊý¾Ý¿âÀï·½±ãµØ¼ÓÈëÐÂÃû×Ö¡£¼üÈëÒª²éÕÒµÄÃû×Ö¡¡
ʱ£¬Çë²ÉÓÃÔÚµÚ15ÕµÄVLookup¡£java¡¡Àï½éÉܹýµÄÄÇÖÖÃû×Ö×Ô¶¯Ìî³ä¼¼Êõ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡649¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡651¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¸½Â¼¡¡A¡¡Ê¹Ó÷ǡ¡JAVA¡¡´úÂë¡¡¡¡
¡¡¡¡
JAVA¡¡ÓïÑÔ¼°Æä±ê×¼API¡¡£¨Ó¦ÓóÌÐò±à³Ì½Ó¿Ú£©Ó¦¸¶Ó¦ÓóÌÐòµÄ±àдÒѴ´ÂÓÐÓà¡£µ«ÔÚijЩÇé¿öÏ£¬»¹ÊDZØÐë¡¡
ʹÓ÷ǡ¡JAVA¡¡±àÂë¡£ÀýÈ磬ÎÒÃÇÓÐʱҪ·ÃÎʲÙ×÷ϵͳµÄרÓÃÌØÐÔ£¬ÓëÌØÊâµÄÓ²¼þÉ豸´ò½»µÀ£¬Öظ´Ê¹ÓÃÏÖÓеġ¡
·ÇJava¡¡½Ó¿Ú£¬»òÕßҪʹÓá°¶Ôʱ¼äÃô¸Ð¡±µÄ´úÂë¶Î£¬µÈµÈ¡£Óë·Ç¡¡Java¡¡´úÂëµÄ¹µÍ¨ÒªÇó»ñµÃ±àÒëÆ÷ºÍ¡°ÐéÄâ¡¡
»ú¡±µÄרÃÅÖ§³Ö£¬²¢Ð踽¼ÓµÄ¹¤¾ß½«Java¡¡´úÂëÓ³Éä³É·Ç¡¡Java¡¡´úÂ루ҲÓÐÒ»¸ö¼òµ¥·½·¨£ºÔÚµÚ¡¡15Õµġ°Ò»¸ö¡¡
Web¡¡Ó¦Óá±Ð¡½ÚÖУ¬ÓиöÀý×Ó½âÊÍÁËÈçºÎÀûÓñê×¼ÊäÈëÊä³öͬ·ÇJava¡¡´úÂëÁ¬½Ó£©¡£Ä¿Ç°£¬²»Í¬µÄ¿ª·¢ÉÌΪÎÒ¡¡
ÃÇÌṩÁ˲»Í¬µÄ·½°¸£ºJava¡¡1¡£1¡¡ÓС°Java¡¡¹ÌÓнӿڡ±£¨Java¡¡Native¡¡Interface£¬JNI£©£¬Íø¾°Ìá³öÁË×Ô¼ºµÄ¡¡
¡¡¡°Java¡¡ÔËÐÐÆÚ½Ó¿Ú¡±£¨Java¡¡Runtime¡¡Interface£©¼Æ»®£¬¶ø΢ÈíÌṩÁËJ/Direct¡¢¡°±¾Ô´½Ó¿Ú¡±£¨Raw¡¡¡¡
Native¡¡Interface£¬RNI£©ÒÔ¼°Java/¡¡¼¯³É·½°¸¡£¡¡¡¡
¸÷¿ª·¢ÉÌÔÚÕâ¸öÎÊÌâÉÏËù³ÖµÄ²»Í¬Ì¬¶È¶Ô³ÌÐòÔ±ÊǷdz£²»ÀûµÄ¡£ÈôJava¡¡Ó¦ÓñØÐëµ÷ÓùÌÓз½·¨£¬Ôò³ÌÐòÔ±»ò¡¡
ÐíҪʵÏÖ¹ÌÓз½·¨µÄ²»Í¬°æ±¾¡ª¡ª¾ßÌåÓÉÓ¦ÓóÌÐòÔËÐеÄƽ̨¾ö¶¨¡£³ÌÐòÔ±Ò²Ðíʵ¼ÊÐèÒª²»Í¬°æ±¾µÄJava¡¡´ú¡¡
Â룬ÒÔ¼°²»Í¬µÄJava¡¡ÐéÄâ»ú¡£¡¡¡¡
ÁíÒ»¸ö·½°¸ÊÇCORBA¡¡£¨Í¨ÓöÔÏóÇëÇó´úÀí½á¹¹£©£¬ÕâÊÇÓÉOMG¡¡£¨¶ÔÏó¹ÜÀí×飬һ¼Ò·ÇÓ®ÀûÐԵĹ«Ë¾Ð»á£©¿ª·¢¡¡
µÄÒ»ÖÖ¼¯³É¼¼Êõ¡£CORBA¡¡²¢·ÇÈκÎÓïÑÔµÄÒ»²¿·Ö£¬Ö»ÊÇʵÏÖͨÓÃͨÐÅ×ÜÏß¼°·þÎñµÄÒ»Öֹ淶¡£ÀûÓÃËü¿ÉÔÚÓÉ¡¡
²»Í¬ÓïÑÔʵÏֵĶÔÏóÖ®¼äʵÏÖ¡°Ï໥²Ù×÷¡±µÄÄÜÁ¦¡£ÕâÖÖͨÐÅ×ÜÏßµÄÃû×Ö½Ð×÷ORB¡¡£¨¶ÔÏóÇëÇó´úÀí£©£¬ÊÇÓÉ¡¡
ÆäËû¿ª·¢ÉÌʵÏÖµÄÒ»ÖÖ²úÆ·£¬µ«²¢²»ÊôÓÚ¡¡Java¡¡ÓïÑԹ淶µÄÒ»²¿·Ö¡£¡¡¡¡
±¾¸½Â¼½«¶Ô¡¡JNI£¬J/DIRECT£¬RNI£¬JAVA/¡¡¼¯³ÉºÍ¡¡CORBA¡¡½øÐиÅÊö¡£µ«²»»á×÷¸üÉî²ã´ÎµÄ̽ÌÖ£¬ÉõÖÁÓÐʱ»¹¡¡
¼Ù¶¨¶ÁÕßÒѶÔÏà¹ØµÄ¸ÅÄîºÍ¼¼ÊõÓÐÁËÒ»¶¨³Ì¶ÈµÄÈÏʶ¡£µ«µ½×îºó£¬´ó¼ÒÓ¦¸ÃÄܹ»×ÔÐбȽϲ»Í¬µÄ·½·¨£¬²¢¸ù¡¡
¾Ý×Ô¼ºÒª½â¾öµÄÎÊÌâÌôÑ¡³ö×îÇ¡µ±µÄÒ»ÖÖ¡£¡¡¡¡
A¡£1¡¡Java¡¡¹ÌÓнӿڡ¡¡¡
JNI¡¡ÊÇÒ»ÖÖ°üÈݼ«¹ãµÄ±à³Ì½Ó¿Ú£¬ÔÊÐíÎÒÃÇ´Ó¡¡Java¡¡Ó¦ÓóÌÐòÀïµ÷ÓùÌÓз½·¨¡£ËüÊÇÔÚ¡¡Java¡¡1¡£1¡¡ÀïÐÂÔöµÄ£¬¡¡
ά³Ö×ÅÓëJava¡¡1¡£0¡¡µÄÏàÓ¦ÌØÐÔ¡ª¡ª¡¡¡°¹ÌÓз½·¨½Ó¿Ú¡±£¨NMI£©¡ª¡ªÄ³Ö̶ֳȵļæÈÝ¡£NMI¡¡Éè¼ÆÉÏһЩÌصãʹ¡¡
Æäδ»ñËùÓÐÐéÄâ»úµÄÖ§³Ö¡£¿¼Âǵ½Õâ¸öÔÒò£¬Java¡¡ÓïÑÔ½«À´µÄ°æ±¾¿ÉÄܲ»ÔÙÌṩ¶ÔNMI¡¡µÄÖ§³Ö£¬Õâ¶ùÒ²²»×¼¡¡
±¸ÌÖÂÛËü¡£¡¡¡¡
Ä¿Ç°£¬JNI¡¡Ö»ÄÜÓëÓÃC¡¡»òC£«£«Ð´³ÉµÄ¹ÌÓз½·¨´ò½»µÀ¡£ÀûÓÃJNI£¬ÎÒÃǵĹÌÓз½·¨¿ÉÒÔ£º¡¡¡¡
¡ö´´½¨¡¢¼ì²é¼°¸üÐÂJava¡¡¶ÔÏ󣨰üÀ¨Êý×éºÍ×Ö´®£©¡¡¡¡
¡öµ÷ÓÃJava¡¡·½·¨¡¡¡¡
¡ö·ý»ñºÍ¶ªÆú¡°Òì³£¡±¡¡¡¡
¡ö×°ÔØÀಢ»ñÈ¡ÀàÐÅÏ¢¡¡¡¡
¡ö½øÐÐÔËÐÐÆÚÀàÐͼì²é¡¡¡¡
ËùÒÔ£¬ÔÀ´ÔÚJava¡¡ÖÐÄܶÔÀ༰¶ÔÏó×öµÄ¼¸ºõËùÓÐÊÂÇéÔÚ¹ÌÓз½·¨ÖÐͬÑù¿ÉÒÔ×öµ½¡£¡¡¡¡
A¡£1¡£1¡¡¡¡µ÷ÓùÌÓз½·¨¡¡¡¡
ÎÒÃÇÏÈ´ÓÒ»¸ö¼òµ¥µÄÀý×Ó¿ªÊ¼£ºÒ»¸öJava¡¡³ÌÐòµ÷ÓùÌÓз½·¨£¬ºóÕßÔÙµ÷ÓÃWin32¡¡µÄAPI¡¡º¯Êý¡¡
MessageBox£¨£©£¬ÏÔʾ³öÒ»¸öͼÐλ¯µÄÎı¾¿ò¡£Õâ¸öÀý×ÓÉÔºóÒ²»áÓëJ/Direct¡¡Ò»Ö¾Ê¹Óá£ÈôÄúµÄƽ̨²»ÊÇ¡¡
Win32£¬Ö»Ð轫°üº¬ÁËÏÂÊöÄÚÈݵÄC¡¡Í·£º¡¡¡¡
#include¡¡¡¡¡¡
Ìæ»»³É£º¡¡¡¡
#include¡¡¡¡¡¡
²¢½«¶ÔMessageBox£¨£©µÄµ÷Óû»³Éµ÷Óá¡printf£¨£©¡¡¼´¿É¡£¡¡¡¡
µÚÒ»²½ÊÇд³ö¶Ô¹ÌÓз½·¨¼°ËüµÄ×Ô±äÁ¿½øÐÐÉùÃ÷µÄ¡¡Java¡¡´úÂ룺¡¡¡¡
¡¡¡¡
class¡¡ShowMsgBox¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡ShowMsgBox¡¡app¡¡=¡¡new¡¡ShowMsgBox£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡app¡£ShowMessage£¨¡¨Generated¡¡with¡¡JNI¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡650¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡652¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡private¡¡native¡¡void¡¡ShowMessage£¨String¡¡msg£©£»¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£loadLibrary£¨¡¨MsgImpl¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
ÔÚ¹ÌÓз½·¨ÉùÃ÷µÄºóÃ棬¸úËæÓÐÒ»¸ö¡¡static¡¡´úÂë¿é£¬Ëü»áµ÷Óá¡System¡£loadLibrary£¨£©¡¡£¨¿ÉÔÚÈκÎʱºòµ÷Óá¡
Ëü£¬µ«ÕâÑù×ö¸üÇ¡µ±£©System¡£loadLibrary£¨£©½«Ò»¸ö¡¡DLL¡¡ÔØÈëÄڴ棬²¢½¨Á¢Í¬ËüµÄÁ´½Ó¡£DLL¡¡±ØÐëλÓÚÄúµÄ¡¡
ϵͳ·¾¶£¬»òÕßÔÚ°üº¬ÁËJava¡¡ÀàÎļþµÄĿ¼ÖС£¸ù¾Ý¾ßÌåµÄƽ̨£¬JVM¡¡»á×Ô¶¯Ìí¼ÓÊʵ±µÄÎļþÀ©Õ¹Ãû¡£¡¡¡¡
¡¡¡¡
1¡£¡¡C¡¡Í·ÎļþÉú³ÉÆ÷£ºjavah¡¡¡¡
ÏÖÔÚ±àÒëÄúµÄJava¡¡Ô´Îļþ£¬²¢¶Ô±àÒë³öÀ´µÄ¡£classÎļþÔËÐС¡javah¡£javah¡¡ÊÇÔÚ¡¡1¡£0°æÀïÌṩµÄ£¬µ«ÓÉÓÚÎÒ¡¡
ÃÇҪʹÓÃJava¡¡1¡£1¡¡JNI£¬ËùÒÔ±ØÐëÖ¸¶¨¡jni¡¡²ÎÊý£º¡¡¡¡
javah¡¡¡jni¡¡ShowMsgBox¡¡¡¡
javah¡¡»á¶ÁÈëÀàÎļþ£¬²¢ÎªÃ¿¸ö¹ÌÓз½·¨ÉùÃ÷ÔÚ¡¡C¡¡»òC£«£«Í·ÎļþÀïÉú³ÉÒ»¸öº¯ÊýÔÐÍ¡£ÏÂÃæÊÇÊä³ö½á¹û¡ª¡ª¡¡
ShowMsgBox¡£h¡¡Ô´Îļþ£¨Îª·ûºÏ±¾ÊéµÄÒªÇó£¬ÉÔ΢½øÐÐÁËÒ»ÏÂÐ޸ģ©£º¡¡¡¡
¡¡¡¡
/*¡¡DO¡¡NOT¡¡EDIT¡¡THIS¡¡FILE¡¡¡¡¡¡
¡¡¡¡¡¡it¡¡is¡¡machine¡¡generated¡¡*/¡¡¡¡
#include¡¡¡¡¡¡
/*¡¡Header¡¡for¡¡class¡¡ShowMsgBox¡¡*/¡¡¡¡
¡¡¡¡
#ifndef¡¡_Included_ShowMsgBox¡¡¡¡
#define¡¡_Included_ShowMsgBox¡¡¡¡
#ifdef¡¡__cplusplus¡¡¡¡
extern¡¡¡¨C¡¨¡¡£û¡¡¡¡
#endif¡¡¡¡
/*¡¡¡¡
¡¡*¡¡Class£º¡¡¡¡¡¡¡¡¡¡ShowMsgBox¡¡¡¡
¡¡*¡¡Method£º¡¡¡¡¡¡¡¡ShowMessage¡¡¡¡
¡¡*¡¡Signature£º¡¡£¨Ljava/lang/String£»£©V¡¡¡¡
¡¡*/¡¡¡¡
JNIEXPORT¡¡void¡¡JNICALL¡¡¡¡¡¡
Java_ShowMsgBox_ShowMessage¡¡¡¡
¡¡¡¡£¨JNIEnv¡¡*£»¡¡jobject£»¡¡jstring£©£»¡¡¡¡
¡¡¡¡
#ifdef¡¡__cplusplus¡¡¡¡
£ý¡¡¡¡
#endif¡¡¡¡
#endif¡¡¡¡
¡¡¡¡
´Ó¡°#ifdef_cplusplus¡±Õâ¸öÔ¤´¦ÀíÒýµ¼ÃüÁî¿ÉÒÔ¿´³ö£¬¸ÃÎļþ¼È¿ÉÓÉC¡¡±àÒëÆ÷±àÒ룬Òà¿ÉÓÉC£«£«±àÒëÆ÷±à¡¡
Òë¡£µÚÒ»¸ö#include¡¡ÃüÁî°üÀ¨¡¡jni¡£h¡ª¡ªÒ»¸öÍ·Îļþ£¬×÷ÓÃÖ®Ò»ÊǶ¨ÒåÔÚÎļþÆäÓಿ·ÖÓõ½µÄÀàÐÍ£»¡¡
JNIEXPORT¡¡ºÍJNICALL¡¡ÊÇһЩºê£¬ËüÃǽøÐÐÁËÊʵ±µÄÀ©³ä£¬ÒÔ±ãÓëÄÇЩ²»Í¬Æ½Ì¨×¨ÓõÄÒýµ¼ÃüÁîÅäºÏ£»¡¡
JNIEnv£¬jobject¡¡ÒÔ¼°jstringÔòÊÇJNI¡¡Êý¾ÝÀàÐͶ¨Òå¡£¡¡¡¡
¡¡¡¡
2¡£¡¡Ãû³Æ¹ÜÀíºÍº¯ÊýÇ©Ãû¡¡¡¡
JNI¡¡Í³Ò»Á˹ÌÓз½·¨µÄÃüÃû¹æÔò£»ÕâÒ»µãÊǷdz£ÖØÒªµÄ£¬ÒòΪËüÊôÓÚÐéÄâ»ú½«¡¡Java¡¡µ÷ÓÃÓë¹ÌÓз½·¨Á´½ÓÆðÀ´¡¡
µÄ»úÖƵÄÒ»²¿·Ö¡£´Ó¸ù±¾ÉÏ˵£¬ËùÓйÌÓз½·¨¶¼ÒªÒÔÒ»¸ö¡°Java¡¡¡±ÆðÍ·£¬ºóÃæ¸úËæ¡¡Java¡¡·½·¨µÄÃû×Ö£»Ï»®Ïß¡¡
×Ö·ûÔò×÷Ϊ·Ö¸ô·ûʹÓá£ÈôJava¡¡¹ÌÓз½·¨¡°¹ýÔØ¡±£¨¼´ÃüÃûÖظ´£©£¬ÄÇôҲ°Ñº¯ÊýÇ©Ãû×·¼Óµ½Ãû×ÖºóÃæ¡£ÔÚ¡¡
ÔÐÍÇ°ÃæµÄ×¢ÊÍÀ´ó¼Ò¿É¿´µ½¹ÌÓеÄÇ©Ãû¡£ÓûÁ˽âÃüÃû¹æÔòºÍ¹ÌÓз½·¨Ç©Ãû¸üÏêϸµÄÇé¿ö£¬Çë²Î¿¼ÏàÓ¦µÄ¡¡
JNI¡¡Îĵµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡651¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡653¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
3¡£¡¡ÊµÏÖ×Ô¼ºµÄ¡¡DLL¡¡¡¡
´Ëʱ£¬ÎÒÃÇÒª×öµÄÈ«²¿ÊÂÇé¾ÍÊÇдһ¸öC¡¡»ò¡¡C£«£«Ô´Îļþ£¬ÔÚÆäÖаüº¬ÓÉ¡¡javah¡¡Éú³ÉµÄÍ·Îļþ£»²¢ÊµÏÖ¹ÌÓз½¡¡
·¨£»È»ºó±àÒëËü£¬Éú³ÉÒ»¸ö¶¯Ì¬Á´½Ó¿â¡£ÕâÒ»²¿·ÖµÄ¹¤×÷ÊÇÓëƽ̨Óйصģ¬ËùÒÔÎÒ¼Ù¶¨¶ÁÕßÒѾ֪µÀÈçºÎ´´¡¡
½¨Ò»¸öDLL¡£Í¨¹ýµ÷ÓÃÒ»¸öWin32¡¡API£¬ÏÂÃæµÄ´úÂëʵÏÖÁ˹ÌÓз½·¨¡£Ëæºó£¬Ëü»á±àÒëºÍÁ´½Óµ½Ò»¸öÃûΪ¡¡
MsgImpl¡£dll¡¡µÄÎļþÀ¡¡¡¡
¡¡¡¡
#include¡¡¡¡¡¡
#include¡¡¡¨ShowMsgBox¡£h¡¨¡¡¡¡
¡¡¡¡
BOOL¡¡APIENTRY¡¡DllMain£¨HANDLE¡¡hModule£»¡¡¡¡¡¡
¡¡¡¡DWORD¡¡dwReason£»¡¡void**¡¡lpReserved£©¡¡£û¡¡¡¡
¡¡¡¡return¡¡TRUE£»¡¡¡¡
£ý¡¡¡¡
JNIEXPORT¡¡void¡¡JNICALL¡¡¡¡¡¡
Java_ShowMsgBox_ShowMessage£¨JNIEnv¡¡*¡¡jEnv£»¡¡¡¡¡¡
¡¡¡¡jobject¡¡this£»¡¡jstring¡¡jMsg£©¡¡£û¡¡¡¡
¡¡¡¡const¡¡char¡¡*¡¡msg£»¡¡¡¡
¡¡¡¡msg¡¡=¡¡£¨*jEnv£©¡¡·GetStringUTFChars£¨jEnv£»¡¡jMsg£»0£©£»¡¡¡¡
¡¡¡¡MessageBox£¨HWND_DESKTOP£»¡¡msg£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java£º¡¡JNI¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡MB_OK¡¡£ü¡¡MB_ICONEXCLAMATION£©£»¡¡¡¡
¡¡¡¡£¨*jEnv£©¡¡·ReleaseStringUTFChars£¨jEnv£»¡¡jMsg£»msg£©£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
Èô¶ÔWin32¡¡Ã»ÓÐÐËȤ£¬Ö»ÐèÌø¹ýMessageBox£¨£©µ÷Óã»×îÓÐȤµÄ²¿·ÖÊÇËüÖÜΧµÄ´úÂë¡£´«µÝµ½¹ÌÓз½·¨ÄÚ²¿µÄ¡¡
×Ô±äÁ¿ÊÇ·µ»ØJava¡¡µÄ´óÃÅ¡£µÚÒ»¸ö×Ô±äÁ¿ÊÇÀàÐÍ¡¡JNIEnv¡¡µÄ£¬ÆäÖаüº¬Á˻ص÷JVM¡¡ÐèÒªµÄËùÓйҹ³£¨ÏÂÒ»½Ú¡¡
ÔÙÏêϸ½²Êö£©¡£ÓÉÓÚ·½·¨µÄÀàÐͲ»Í¬£¬µÚ¶þ¸ö×Ô±äÁ¿Ò²ÓÐ×Ô¼º²»Í¬µÄº¬Òå¡£¶ÔÓÚÏóÉÏÀýÄÇÑùµÄ·Ç¡¡static·½·¨¡¡
¡¡£¨Ò²½Ð×÷ʵÀý·½·¨£©£¬µÚ¶þ¸ö×Ô±äÁ¿µÈ¼ÛÓÚC£«£«µÄ¡°this¡¡¡±Ö¸Õ룬²¢ÀàËÆÓÚJava¡¡µÄ¡°this¡¡¡±£º¶¼ÒýÓÃÁ˵÷Óá¡
¹ÌÓз½·¨µÄÄǸö¶ÔÏ󡣶ÔÓÚstatic·½·¨£¬ËüÊǶÔÌض¨¡¡Class¡¡¶ÔÏóµÄÒ»¸öÒýÓ㬷½·¨¾ÍÊÇÔÚÄǸö¡¡Class¡¡¶ÔÏóÀï¡¡
ʵÏֵġ£¡¡¡¡
Ê£ÓàµÄ×Ô±äÁ¿´ú±í´«µÝµ½¹ÌÓз½·¨µ÷ÓÃÀïµÄJava¡¡¶ÔÏó¡£Ö÷ÀàÐÍÒ²ÊÇÒÔÕâÖÖÐÎʽ´«µÝµÄ£¬µ«ËüÃǽøÐеġ°°´¡¡
Öµ¡±´«µÝ¡£¡¡¡¡
ÔÚºóÃæµÄС½ÚÀÎÒÃÇ×¼±¸½²ÊöÈçºÎ´ÓÒ»¸ö¹ÌÓз½·¨µÄÄÚ²¿·ÃÎʺͿØÖÆJVM£¬Í¬Ê±¶ÔÉÏÊö´úÂë½øÐиüÏ꾡µÄ¡¡
½âÊÍ¡£¡¡¡¡
A¡£1¡£2¡¡¡¡·ÃÎÊ¡¡JNI¡¡º¯Êý£ºJNIEnv¡¡×Ô±äÁ¿¡¡¡¡
ÀûÓÃJNI¡¡º¯Êý£¬³ÌÐòÔ±¿É´ÓÒ»¸ö¹ÌÓз½·¨µÄÄÚ²¿Óë¡¡JVM¡¡´ò½»µÀ¡£ÕýÈç´ó¼ÒÔÚÇ°ÃæµÄÀý×ÓÖп´µ½µÄÄÇÑù£¬Ã¿¸ö¡¡
JNI¡¡¹ÌÓз½·¨¶¼»á½ÓÊÕÒ»¸öÌØÊâµÄ×Ô±äÁ¿×÷Ϊ×Ô¼ºµÄµÚÒ»¸ö²ÎÊý£ºJNIEnv¡¡×Ô±äÁ¿¡ª¡ªËüÊÇÖ¸ÏòÀàÐÍΪ¡¡
JNIEnv_µÄÒ»¸öÌØÊâ¡¡JNI¡¡Êý¾Ý½á¹¹µÄÖ¸Õë¡£JNI¡¡Êý¾Ý½á¹¹µÄÒ»¸öÔªËØÊÇÖ¸ÏòÓÉ¡¡JVM¡¡Éú³ÉµÄÒ»¸öÊý×éµÄÖ¸Õ룻¸Ã¡¡
Êý×éµÄÿ¸öÔªËض¼ÊÇÖ¸ÏòÒ»¸ö¡¡JNI¡¡º¯ÊýµÄÖ¸Õë¡£¿É´Ó¹ÌÓз½·¨µÄÄÚ²¿·¢³ö¶ÔJNI¡¡º¯ÊýµÄµ÷Óã¬×ö·¨Êdz·Ïû¶Ô¡¡
ÕâЩָÕëµÄÒýÓ㨾ßÌåµÄ²Ù×÷ʵ¼ÊºÜ¼òµ¥£©¡£Ã¿ÖÖ¡¡JVM¡¡¶¼ÒÔ×Ô¼ºµÄ·½Ê½ÊµÏÖÁË¡¡JNI¡¡º¯Êý£¬µ«ËüÃǵĵØÖ·¿Ï¶¨¡¡
λÓÚÔ¤Ïȶ¨ÒåºÃµÄÆ«ÒÆ´¦¡£¡¡¡¡
ÀûÓÃJNIEnv¡¡×Ô±äÁ¿£¬³ÌÐòÔ±¿É·ÃÎÊһϵÁк¯Êý¡£ÕâЩº¯Êý¿É»®·ÖΪÏÂÊöÀà±ð£º¡¡¡¡
¡ö»ñÈ¡°æ±¾ÐÅÏ¢¡¡¡¡
¡ö½øÐÐÀàºÍ¶ÔÏó²Ù×÷¡¡¡¡
¡ö¿ØÖƶÔJava¡¡¶ÔÏóµÄÈ«¾ÖºÍ¾Ö²¿ÒýÓá¡¡¡
¡ö·ÃÎÊʵÀý×ֶκ;²Ì¬×ֶΡ¡¡¡
¡öµ÷ÓÃʵÀý·½·¨ºÍ¾²Ì¬·½·¨¡¡¡¡
¡öÖ´ÐÐ×Ö´®ºÍÊý×é²Ù×÷¡¡¡¡
¡ö²úÉúºÍ¿ØÖÆJava¡¡Òì³£¡¡¡¡
JNI¡¡º¯ÊýµÄÊýÁ¿Ï൱¶à£¬ÕâÀï²»ÔÙÏêÊö¡£Ïà·´£¬ÎÒ»áÏò´ó¼Ò½ÒʾʹÓÃÕâЩº¯Êýʱ±³ºóµÄһЩ»ù±¾ÔÀí¡£ÓûÁË¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡652¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡654¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
½â¸üÏêϸµÄÇé¿ö£¬Çë²ÎÔÄ×Ô¼ºËùÓñàÒëÆ÷µÄJNI¡¡Îĵµ¡£¡¡¡¡
Èô¹Û²ìһϡ¡jni¡£hÍ·Îļþ£¬¾Í»á·¢ÏÖÔÚ#ifdef¡¡_cplusplus¡¡Ô¤´¦ÀíÆ÷Ìõ¼þµÄÄÚ²¿£¬µ±ÓÉC£«£«±àÒëÆ÷±àÒëʱ£¬¡¡
JNIEnv_½á¹¹±»¶¨Òå³ÉÒ»¸öÀà¡£Õâ¸öÀà°üº¬ÁË´óÁ¿ÄÚÇ