Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Java ÏÂÒ»´ú: Ñ¡ÔñÄúµÄÏÂÒ»¸ö JVM ÓïÑÔ
 
×÷Õß Neal Ford£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-08-07
  1942  次浏览      27
 

Èç¹ûÈÎÒâ Java ÏÂÒ»´úÓïÑÔ¶¼ÊʺÏ×÷ΪÄúʹÓõÄÏÂÒ»´úÓïÑÔ£¬ÄÇôÄú»áÈçºÎÑ¡Ôñ£¿Neal Ford µ÷²éÁË»á¶ÔÕâ¸öÖØÒª¾ö¶¨²úÉúÓ°ÏìµÄ¸÷¸öÒòËØ£¬´Ó¶ø×«Ð´ÁË Java ÏÂÒ»´ú ÎÄÕÂϵÁС£

ÎÒÊÇһλʧ°ÜµÄÊ«ÈË¡£»òÐíÿһλС˵¼Ò¶¼Ô¸ÒâÏÈдʫ£¬·¢ÏÖ×Ô¼º²»ÊÇÕâ¿éÁÏÖ®ºó£¬ÔÙ³¢ÊÔ¶ÌÆªÐ¡Ëµ£¬ÒòΪ¶ÌƪС˵µÄÒªÇóÖ®¸ß½ö´ÎÓÚÊ«¸èµÄÌâ²Ä¡£ÔÙ´Îʧ°ÜÖ®ºó£¬¾ÍÖ»ÄÜ¿ªÊ¼Ð´³¤ÆªÐ¡ËµÁË¡£

²¢·ÇËùÓÐ×÷¼Ò£¨ÉõÖÁÊÇΰ´ó×÷¼Ò£©¶¼Éó¤Ð´¸÷ÖÖÌå²ÃµÄÎÄÕ¡£ÀàËÆµØ£¬³ÌÐòԱʹÓÃijЩ±à³ÌÓïÑÔʱҪ±ÈʹÓÃÆäËûÓïÑÔ¸ü×ÔÈçһЩ¡£ÓÐЩ¿ª·¢ÈËÔ±ÌìÉú¾ÍÊÇ C ³ÌÐòÔ±£¬¶øÓÐЩÔò¸üÖÓÇéÓÚ Lisp£¬»¹ÓÐһЩÔòÌØ±ðÐÅÀµ Perl¡£Ã»ÓÐÈκÎÒ»ÖÖÓïÑÔÄܹ»Âú×ãËùÓпª·¢ÈËÔ±µÄÆ«ºÃ£¬Õâ¸öÊÂʵºÜºÃµØËµÃ÷ÁËΪºÎ»áÓÐÈç´ËÖ®¶àµÄ¼ÆËã»úÓïÑÔ´æÔÚ¡£Java ÏÂÒ»´úµÄº¬ÒåÊÇûÓÐÄÄÒ»ÖÖÓïÑÔÄܹ»¶ÀÁì·çɧ£¬ÒòΪûÓÐÈκÎÒ»ÖÖÓïÑÔÄÜÈÃËùÓÐÈ˶¼¸Ðµ½ÂúÒâ¡£

Java ÓïÑÔËÆºõÊÇÒ»¸ö·´Àý¡£µ« Java µÄͳÖεØÎ»Ô´×ÔһЩ¶ÀÌØµÄÇéÐΣ¬Bruce Tate ÔÚËûµÄÖø×÷ ³¬Ô½ Java ÖÐΪÕâÖÖÇéÐÎÌṩÁËÒ»ÖÖ¼«ºÃµÄÃèÊö£¬½«ËüÃèÊöΪһ³¡ ¡°ÍêÃÀ·ç±©¡±¡£Java ÓÚ 20 ÊÀ¼Í 90 Äê´úÖÐÆÚÎÊÊÀ£¬ÎÊÊÀÖ®³õ£¬ËüÔÚ½ÓÊ̶ܳȷ½ÃæÊܵ½ÁËÑϾþ¿¼Ñé¡£ËüµÄËٶȱȵ±Ê±Á÷ÐеıàÒëÓïÑÔÒªÂý¡£Ëü¶ÔÄÚ´æÒªÇ󼫸ߣ¨µ±Ê±ÄÚ´æ¼Û¸ñ»¹ÔÝʱ´¦ÔÚ¸ß룩¡£¶øÇÒËü²¢²»ÌرðÊʺϵ±Ê±Ö÷Á÷µÄ¿Í»§¶Ë/·þÎñÆ÷¿ª·¢·½Ê½¡£Java ΩһµÄÁ½µã¿Éȡ֮´¦ÊÇËüµÄÏà¶ÔÒ×Óã¨Í¨¹ýÏñÀ¬»øÊÕ¼¯Ö®ÀàµÄ¹¤¾ßʵÏÖ£©ºÍ Applets£¬ÕâÔÚµ±Ê±ÊǶÀÒ»ÎÞ¶þµÄ¡£Èç¹ûÐÎÊÆ±£³Ö²»±ä£¬Java ¿ÉÄÜÎÞ·¨Éú´æÏÂÀ´¡£

µ« Java Ó뵱ʱÐ嵀 World Wide Web ÊôÓÚ¾øÅ䣬ÓÈÆäÔÚ Servlet API ¿ªÊ¼±äµÃÁ÷ÐÐÖ®ºó¡£Í»È»Ö®¼ä£¬·þÎñÆ÷¶ËµÄ¿ª·¢Ä£ÐÍÈà Java µÄÖÚ¶àÁÓÊÆ²»ÔÙÃ÷ÏÔ¡£ÕâЩÒòËØ£¨Ó²¼þ¡¢Web ºÍ·¶Ê½£©½áºÏÔÚÒ»Æð£¬¾Í¹¹³ÉÁË Tate Ëù˵µÄÍêÃÀ·ç±©£º¿ª·¢ÈËÔ±ÐèҪй¤¾ßÀ´Íê³É Web ±à³Ì£¬·þÎñÆ÷¶ËµÄ Java »º½âÁËÄÚ´æÔ¼Êø£¬Óë´Ëͬʱ£¬Ò»ÖÖÓÃÓÚ¹¹½¨½¡×³ Web Ó¦ÓóÌÐòµÄ¼ò»¯Ä£ÐͳöÏÖÁË¡£½èÖúÌìʱµØÀû£¬ÒÔ¼°´óÐ͹«Ë¾ (Sun) µÄÖ§³Ö£¬Java ³ÉΪÁËÈí¼þÐÐÒµÖеÄÖ÷µ¼Á¦Á¿¡£

ÆäËûÓïÑÔ²»¼ûµÃÒ²ÄÜÓöµ½ÕâһϵÁеÄÇɺϡ£ÎÒÃÇÒѾ­½øÈëÁËÒ»¸ö¶à¼ÆËã»úÓïÑÔµÄʱ´ú£¬ÕâÖÖÊÆÍ·»¹ÔÚ¼ÌÐøÔö³¤¡£³¢ÊÔÕÒ³öÄÜÓë Java ¾ßÓÐÏàͬӰÏìÁ¦µÄÏÂÒ»´úÓïÑÔ×¢¶¨»áÒÔʧ°Ü¸æÖÕ¡£ÔÚµ÷²éÒª²ÉÓõÄÏÂÒ»´ú Java ÓïÑÔʱ£¬Ó¦µ±ÖØµã¹Ø×¢ÄÜÓëÄú²úÉú¹²ÃùµÄ·½Ã棬¶ø²»ÊÇ×·Çó×î´óµÄÁ÷Ðг̶ȡ£

¶à·¶Ê½ÓïÑÔ

ºÜ¶àÏÖ´úÓïÑÔ¶¼Ö§³Ö¼¸ÖÖ±à³Ì·¶Ê½£ºÃæÏò¶ÔÏó¡¢Ôª±à³Ì¡¢º¯Êýʽ¡¢¹ý³ÌµÈ¡£ÔÚ Java ÏÂÒ»´úÓïÑÔÖУ¬Groovy ºÍ Scala ÊǶ෶ʽµÄ¡£Groovy ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬¿ÉÒÔͨ¹ý¿â½øÐй¦ÄÜÐÔÀ©Õ¹¡£Scala ÊÇÒ»ÖÖÃæÏò¶ÔÏóÓ뺯Êýʽ¼æ¶øÓÐÖ®µÄ»ìºÏÓïÑÔ£¬Ç¿µ÷º¯Êýʽ±à³ÌÆ«ºÃ£¬±ÈÈç²»±äÐÔÓëÀÁ¶è¡£

¶à·¶Ê½ÓïÑԵŦÄܷdz£Ç¿´ó£¬Ö§³Ö»ìºÏÓëÆ¥Å䷶ʽ£¬ÒÔ±ãÎÞ·ìµØ½â¾öÎÊÌâ¡£ÔÚ Java 8 °æ±¾Ö®Ç°£¬ºÜ¶à¿ª·¢ÈËÔ±¶¼¶Ô Java ÖдæÔÚµÄÏÞÖÆ¸Ðµ½ÄÕ»ð¡£Ïñ Groovy ÕâÑùµÄÓïÑÔÌṩÁ˸ü¶à¹¤¾ß£¬°üÀ¨Ôª±à³ÌÓ뺯Êýʽ¹¹½¨¡£

¾¡¹ÜËüÃǹ¦ÄÜÇ¿´ó£¬µ«¶à·¶Ê½ÓïÑÔÔÚ´óÏîÄ¿É϶Կª·¢ÈËÔ±µÄ¼ÍÂÉÒªÇó¸ü¶à¡£ÒòΪÓïÑÔÖ§³ÖÖÚ¶à³éÏóÓëÀíÄ¶ÀÁ¢µÄ¿ª·¢Ð¡×é¿ÉÒÔÔÚ¿âÖд´½¨Ã÷ÏÔ²»Í¬µÄ±äÌå¡£ÀýÈ磬´úÂëÖØÓÃÇ÷ÏòÓÚÃæÏò¶ÔÏóÌåϵÖеĽṹÌ壬¶øÔÚº¯ÊýʽÌåϵÖУ¬ÔòÇ÷ÏòÓÚ¸´ºÏº¯ÊýÓë¸ß½×º¯Êý¡£ÔÚÉè¼Æ¹«Ë¾µÄ Customer API ʱ£¬Äú±ØÐëÈ·¶¨×î¼Ñ·½Ê½£¬È·±£ÍŶÓÖеÄÿ¸öÈ˶¼Í¬Ò⣨ºÍ¼á³Ö£©ÕâÒ»µã¡£ºÜ¶à´Ó Java תµ½ Ruby µÄ¿ª·¢ÈËÔ±¶¼Óöµ½ÁËÕâ¸öÎÊÌ⣬ÒòΪ Ruby ÊÇÒ»Öֶ෶ʽÓïÑÔ¡£C++ ÊÇÁíÒ»Öֶ෶ʽÓïÑÔ£¬Ëü¸øºÜ¶àÊÔͼǿÐУ¨Í¨³£Çé¿öÏÂΪÎÞÒ⣩¿çÔ½¹ý³ÌÓëÃæÏò¶ÔÏóµÄÏîÄ¿´øÀ´À§ÈÅ¡£

½â¾ö·½°¸Ö®Ò»ÊÇÒÀ¿¿¹¤³Ì¹æ·¶À´È·±£ÏîÄ¿ÖеÄËùÓпª·¢ÈËÔ±¶¼³¯×ÅͬһĿ±êŬÁ¦¡£ºÜ¶à¿ª·¢ÈËÔ±µ£ÐÄʹÓÃÔª±à³Ì»á¶ÔºËÐÄÀàÔì³É¹ý¶àÐ޸ġ£ÀýÈ磬ÓÐЩ²âÊÔ¿â»áÔÚ Object ÖÐÌí¼Ó·½·¨£¬ÒÔ±ãÖ§³Ö·¶Î§¸ü¹ãµÄ¶ÏÑÔ¡£µ¥Ôª²âÊÔÖ§³Ö¸´ÔÓÀ©Õ¹µÄ¾«È·Àí½â£¬Õâ¼õÇáÁË´ó¼Ò¶ÔÓÚδ֪¸±×÷ÓõĿ־塣
°üÀ¨ Clojure ÔÚÄÚµÄÓÐЩÓïÑÔÖ÷ÒªÖ§³ÖÒ»ÖÖ·¶Ê½£¬Í¬Ê±£¬³öÓÚʵÓÃÄ¿µÄ£¬ËüÃÇÒ²Ö§³ÖÆäËû·¶Ê½£¬ÕâÇ¿¼ÓÁ˸ü¶àµÄÔ­Ôò¡£Clojure ºÁÎÞÒÉÎÊÊÇÕë¶Ô JVM µÄÒ»ÖÖº¯Êýʽ Lisp¡£Äú¿ÉÒÔ´Óµ×²ãÆ½Ì¨ÓëÀàºÍ·½·¨½øÐн»»¥£¨Èç¹ûÔ¸ÒâµÄ»°£¬»¹¿ÉÒÔ´´½¨×Ô¼ºµÄÀàºÍ·½·¨£©£¬µ« Clojure Ê×ÏÈÒªÖ§³ÖµÄÈÔÈ»ÊÇÇ¿º¯ÊýʽµÄ·¶Ê½£¬±ÈÈç²»±äÐÔÓëÀÁ¶è¡£

ɱÊÖïµ£ºº¯Êýʽ±à³Ì

¶ÔÓÚ´ó¶àÊý¿ª·¢ÈËÔ±¶øÑÔ£¬Íêȫ֧³Öº¯Êýʽ±à³ÌÊÇδÀ´ÓïÑÔ×îÖØÒªµÄÌØÐÔ¡£ÎÒÔÚ¼¸ÆªÏµÁÐÎÄÕÂÖÐ̸µ½¹ý Java ÏÂÒ»´úÓïÑÔ¹ØÓÚº¯Êýʽ·½ÃæµÄÄÚÈÝ¡£º¯Êýʽ·¶Ê½ÓÐЧÐԵĹؼüÔÚÓÚÄܹ»ÔÚÒ»¸ö½Ï¸ßµÄ³éÏó²ãÃæÉϱí´ïÀíÄî¡£

ÔÚ "Äڴ滯ºÍº¯ÊýʽЭͬ" Ò»ÎÄÖУ¬ÎÒ½«ÃüÁîʽµÄ indexOfAny() ·½·¨£¨À´×Ô Apache Commons StringUtils ¿â£©×ª»¯³ÉÁË Clojure£¬Éú³ÉÁËÒ»¸ö¸ü¶Ì¡¢¸ü¼òµ¥µ«¸ü¼ÓͨÓõĺ¯Êý¡£Clojure µÄ¿É¶ÁÐÔÓÅÊÆÈÔÈ»ºÜÍ»³ö£¬µ«¶ÔÓÚ·Ç Lisp ¿ª·¢ÈËÔ±£¬Clojure ¿´ÆðÀ´ÓÐµãÆæ¹Ö¡£Scala ±»Éè¼ÆÎª¶Ô Java ¿ª·¢ÈËÔ±×î¾ß¿É¶ÁÐÔ¡£Í¬Ò»¸ö indexOfAny() ·½·¨±»×ª»»Îª Scala ¶ø·Ç Clojure£¬ÈçÇåµ¥ 1 Ëùʾ¡£

Çåµ¥ 1. Ò»ÖÖ Scala indexOfAny() ʵÏÖ

def indexOfAny(input : Seq[Char], searchChars : Seq[Char]) : Option[Int] = {
def indexedInput = (0 until input.length).zip(input)
val result = for (char <- searchChars;
pair <- indexedInput;
if (char == pair._2)) yield (pair._1)
if (result.isEmpty)
None
else
Some(result.head)
}

indexOfAny ·½·¨µÄÓÃ;ÊÇÔÚµÚÒ»¸ö²ÎÊýÖзµ»ØµÚ¶þ¸ö²ÎÊýÖд«µÝµÄÈÎÒâ×Ö·ûµÄË÷ÒýλÖá£ÔÚ Çåµ¥ 1 ÖУ¬ÎÒÊ×ÏÈ»ùÓÚÊäÈë×Ö·û´®µÄ³¤¶È¹¹½¨ÁËÒ»¸öÊý×ÖµÄ˳ÐòÁÐ±í£¬Ê¹ÓÃËü×÷Ϊ indexedInput ²ÎÊýµÄÖµ¡£È»ºó£¬ÎÒʹÓà Scala ÖÐÄÚÖÃµÄ zip() º¯Êý½«Á½¸öÁбíÁ¬½ÓÔÚÒ»Æð¡£ÀýÈ磬Èç¹ûÎÒµÄÊäÈë×Ö·û´®Îª zabycdxx£¬ÄÇô indexedInput ÖеĽá¹ûÓ¦¸ÃÊÇ Vector((0,z), (1,a), (2,b), (3,y), (4,c), (5,d), (6,x), (7,x))¡£

ÓÐÁË indexedInput ¼¯ºÏºó£¬ÎÒʹÓà for ÍÆµ¼Ê½´úÌæÔ­Ê¼°æ±¾ÖеÄǶÌ×Ñ­»·¡£Ê×ÏÈ£¬ÎÒͨ¹ý searchChars ½øÐÐËÑË÷£»ÎÒ¼ì²é indexedInput µÚ¶þ²¿·ÖÖУ¨Ê¹Óà Scala ËÙдÐÎʽ pair._2£©Ã¿¸ö×Ö·ûÊÇ·ñ´æÔÚ£¬È»ºó·µ»ØÓë pair._1 Æ¥ÅäµÄË÷Òý²¿·Ö¡£yield() º¯ÊýΪ·µ»ØÁбíÉú³ÉÖµ¡£

ÔÚ Scala ÖУ¬·µ»Ø Option ¶ø·Ç¿ÉÄÜµÄ null Ê®·Ö³£¼û£¬Òò´ËÈç¹ûûÓнá¹û´æÔÚÎҾͷµ»Ø None£¬·ñÔò¾Í·µ»Ø Some¡£Ô­Ê¼µÄ indexOfAny() ·½·¨Ö»·µ»ØÊ׸öÆ¥Åä×Ö·ûµÄË÷Òý£¬Òò´ËÎÒÖ»·µ»Ø½á¹ûÖеĵÚÒ»¸öÔªËØ£¨result.head£©¡£ÔÚ Clojure °æ±¾ÖУ¬ÎÒ·µ»ØÁËÒ»¸ö°üº¬ËùÓÐÆ¥ÅäµÄÁÐ±í¡£½«Ëüת»»Îª¾ßÓÐÏàͬ¹¦ÄÜµÄ Scala °æ±¾Ò²ºÜÈÝÒ×£¬ÈçÇåµ¥ 2 Ëùʾ¡£

Çåµ¥ 2. indexOfAny ·µ»ØËùÓÐÆ¥ÅäÏî

def lazyIndexOfAny(input : Seq[Char], searchChars : Seq[Char]) : Seq[Int] = {
def indexedInput = (0 until input.length).zip(input)
for (char <- searchChars;
pair <- indexedInput;
if (char == pair._2)) yield (pair._1)
}

ÔÚ Çåµ¥ 2 ÖУ¬·µ»ØµÄÊÇÒ»¸öÆ¥ÅäÁÐ±í¶ø²»½ö½öÊǵÚÒ»¸öÆ¥ÅäÏî¡£ÀýÈ磬lazyIndexOfAny("zzabyycdxx", "by") µÄ½á¹ûÊÇ Vector(3, 4, 5)£¬ËüÓëÊäÈë×Ö·û´®ÖÐÿ¸öÄ¿±ê×Ö·ûµÄË÷ÒýÏàÆ¥Åä¡£

º¯Êýʽ±à³ÌÓïÑÔÈÃÄúÄܹ»Ê¹ÓøüΪǿ´óµÄ¹¹Ôì¿éÔÚ¸ü¸ßµÄ³éÏó²ã´ÎÉϽøÐй¤×÷£¬±ÈÈçÓÅÏÈÓÚÑ­»·µÄ map()¡£ÔÚ²»ÓùØÐĵײãµÄ´úÂëϸ½Úʱ£¬Äú¾Í¿ÉÒÔ¸ü¼ÓÇåÎúµØ×¨×¢ÓÚ¹ØÁª¶È¸ü¸ßµÄÎÊÌâ¡£

º¯Êýʽ½ð×ÖËþ

¼ÆËã»úÓïÑÔÀàÐ͵ĴæÔÚÒ»°ãÑØ×ÅÁ½ÌõÖáÏߣºÇ¿¶ÔÈõºÍ¶¯Ì¬¶Ô¾²Ì¬£¬Èçͼ 1 ÖÐËùʾ¡£

ͼ 1. ÓïÑÔ·ÖÀàÌØÕ÷

Ç¿ÀàÐ͵ıäÁ¿ ¡°ÖªµÀ¡± ËüÃǵÄÀàÐÍ£¬Ö§³Ö·´ÉäÓëʵÀý¼ì²é£¬¶øÇÒËüÃǻᱣ³ÖÕâÖÖÈÏÖª¡£ÈõÀàÐ͵ÄÓïÑÔ²»Ì«Á˽âËüÃǵÄÖ¸Ïò¡£ÀýÈ磬C ÊÇÒ»ÖÖ¾²Ì¬µÄÈõÀàÐÍÓïÑÔ£ºC ÖеıäÁ¿Êµ¼ÊÉÏÊÇÒ»¸öÄܹ»ÒÔ¸÷ÖÖ·½Ê½½âÊ͵Ä×Ö½Ú¼¯ºÏ£¬ÕâÈÃÈ«ÊÀ½çµÄ C ¿ª·¢ÈËÔ±ÓÖ°®ÓÖºÞ¡£

Java ÊǾ²Ì¬µÄÇ¿ÀàÐÍÓïÑÔ¡£ÔÚÉùÃ÷±äÁ¿Ê±£¬±ØÐëÖ¸¶¨±äÁ¿ÀàÐÍ£¬ÓÐʱºò»¹Òª·´¸´ÉùÃ÷¡£Java Öð²½ÒýÈëÁËÀàÐÍÍÆÀí£¬µ«ËüÔÚÀàÐ͵ļò½à¶È·½ÃæÃ÷ÏÔ²»ÈçÈÎÒâÒ»ÖÖ Java ÏÂÒ»´úÓïÑÔ¡£Scala¡¢C# ºÍ F# Ò²ÊǾ²Ì¬µÄÇ¿ÀàÐÍÓïÑÔ£¬µ«ËüÃÇʹÓÃÁËÀàÐÍÍÆÀí£¬Ê¡È¥Á˺ܶàÂé·³¡£ºÜ¶àʱºò£¬ÓïÑÔ¿ÉÒÔͨ¹ýʶ±ðÀàÐÍÀ´¼õÉÙÈßÓà¡£

×Ô´Ó±à³ÌÓïÑÔµÄÔçÆÚʱ´ú¿ªÊ¼£¬ÕâÐ©Çø±ð¾ÍÒ»Ö±´æÔÚ¡£È»¶ø£¬Ò»¸öеÄÒòËØ´òÆÆÁËÕâÖÖÆ½ºâ£ºº¯Êýʽ±à³Ì¡£

ÕýÈçÎÒÔÚ "º¯Êýʽ±àÂë·ç¸ñ" Ò»ÎÄÖÐËù˵µÄÄÇÑù£¬º¯Êýʽ±à³ÌÓïÑÔµÄÉè¼ÆÀíÄîÓëÃüÁîʽ±à³ÌÓïÑÔ½ØÈ»²»Í¬¡£ÃüÁîʽÓïÑÔ³¢ÊÔÈÃ״̬±ä»¯±äµÃ¼òµ¥£¬²¢Îª´ËÌṩÁËÐí¶à¹¦ÄÜ¡£º¯ÊýʽÓïÑÔ³¢ÊÔ×î´óÏ޶ȵؼõÉٿɱä״̬£¬²¢¹¹½¨Á˸ü¶àͨÓõĻúÖÆ¡£µ«º¯Êýʽ ÓïÑÔûÓÐÈ·¶¨Ò»¸öÀàÐÍϵͳ£¬Í¼ 2 ÖбíÃ÷ÁËÕâÒ»µã¡£

ͼ 2. º¯Êýʽ±à³ÌÓïÑÔ

º¯Êýʽ±à³ÌÓïÑÔÒÀÀµÓÚ£¨¶øÇÒÓÐʱºòÇ¿µ÷£©²»±äÐÔ¡£ÓïÑÔÖ®¼äµÄ¹Ø¼üÇø±ðÏÖÔÚ²»ÊǶ¯Ì¬ºÍ¾²Ì¬£¬¶øÊÇÃüÁîʽºÍº¯Êýʽ£¬ºóÕß»áÈÃÈí¼þµÄ¹¹½¨·½Ê½±äµÃ´ó²»Ïàͬ¡£

ÔÚ 2006 ÄêµÄһƪ²©¿ÍÖУ¬ÎÒÒâÍâµØÈà ¶àÓïÑÔ±à³Ì Õâ¸öÊõÓïÔÙ´ÎÁ÷ÐÐÆðÀ´£¬²¢¸øËü¸³ÓèÁËеÄÒâÒ壺ÀûÓÃÏÖ´úÔËÐÐʱÀ´´´½¨¶ÔÓïÑÔ¶ø·Çƽ̨½øÐлìºÏºÍÆ¥ÅäµÄÓ¦ÓóÌÐò¡£ÕâÖÖÖØÐ¶¨Òå»ùÓÚÒÔÏÂÊÂʵ£ºJava Óë .NET ƽ̨֧³ÖµÄÓïÑÔ³¬¹ýÁË 200 ÖÖ£¬¶øÇÒÔö¼ÓÁËûÓÐ ¡°Ò»ÖÖÕæÕýµÄÓïÑÔ¡± Äܹ»½â¾öËùÓÐÎÊÌâµÄ»³ÒÉ¡£½èÖúÏÖ´úÍйܵÄÔËÐÐʱ£¬Äú¿ÉÒÔÔÚ×Ö½Ú´úÂë²ã´ÎÉÏ×ÔÓɵػìºÏºÍÆ¥ÅäÓïÑÔ£¬²¢¶ÔÌØ¶¨µÄÈÎÎñʹÓÃ×îÊʺϵÄÓïÑÔ¡£

µ±ÎÒ·¢±í¸Ã²©¿ÍÎÄÕºó£¬ÎÒͬÊ Ola Bini ½ô½Ó×Å·¢±íÁËһƪ ºóÐøÎÄÕ À´ÌÖÂÛËûµÄ¶àÓïÑÔ½ð×ÖËþ¡£¸Ã½ð×ÖËþÈçͼ 3 Ëùʾ£¬Ëü½ÒʾÁË¿ª·¢ÈËÔ±ÔÚ¶àÓïÑÔ»·¾³Öй¹½¨Ó¦ÓóÌÐòµÄ¿ÉÄÜ·½Ê½¡£

ͼ 3. Bini µÄ½ð×ÖËþ

ÔÚ Bini µÄµ¹½ð×ÖËþÖУ¬Ëû½¨ÒéÔÚ×îµ×²ãʹÓøü¼Ó¾²Ì¬µÄÓïÑÔ£¬ÒòΪ´Ëʱ¿É¿¿ÐÔÊÇÓÅÏȼ¶×î¸ßµÄ¡£½ÓÏÂÀ´£¬Ëû½¨ÒéÔÚÓ¦ÓòãʹÓøü¼Ó¶¯Ì¬µÄÓïÑÔ£¬Ê¹Óýϼòµ¥µÄÓï·¨À´¹¹½¨ÏñÓû§½çÃæÕâÑùµÄÄÚÈÝ¡£×îºó£¬ÔÚ½ð×ÖËþµÄ¶¥¶ËÊÇÌØ¶¨ÁìÓòµÄÓïÑÔ (DSL)£¬¿ª·¢ÈËԱʹÓÃËüÃÇÀ´¼ò½àµØ·â×°ÖØÒªµÄÁìÓò֪ʶºÍ¹¤×÷Á÷¡£Í¨³££¬DSL ÊÇʹÓö¯Ì¬ÓïÑÔÀ´ÊµÏֵģ¬Ä¿µÄÊÇÀûÓÃËüÃǵÄijЩ¹¦ÄÜ¡£Bini µÄÄ¿±êÊǺ»Êµµ×²¿£¬²¢ÔÚ½Ó½ü¶¥²¿µÄµØ·½Ìṩ¸ü¶àµÄÁé»îÐÔ¡£

Bini µÄ½ð×ÖËþÊǶÔÎÒÔ­À´²©Îĵľ«²Ê²¹³ä¡£µ«ÔÚÖмäµÄÕâЩÄêÀ»·¾³·¢ÉúÁ˱仯¡£ÏÖÔÚÎÒÏàÐÅ£¬ÔÚ¸ü¶àµÄÇé¿öÏ£¬ÀàÐÍÊÇ¿ª·¢ÈËÔ±µÄÒ»ÖÖÆ«ºÃ£¬Ó°ÏìËûÃǹØ×¢¸üÖØÒªµÄÌØÐÔ£ºº¯ÊýʽºÍÃüÁîʽ¡£Í¼ 4 ÖÐÏÔʾÁËÎÒµÄк¯Êý½ð×ÖËþ¡£

ͼ 4. º¯Êý½ð×ÖËþ

ÎÒÃÇ¿ÊÇóµÄÁé»îÐÔ²¢·ÇÀ´×ÔÓÚ¾²Ì¬ÀàÐÍ£¬¶øÊÇÀ´×ÔÔڵײ¿ÈÚÈ뺯Êýʽ¸ÅÄî¡£Èç¹ûËùÓÐÆð¹Ø¼ü×÷ÓõĺËÐÄ API£¨±ÈÈçÊý¾Ý·ÃÎÊÓ뼯³É£©Äܹ»¼Ù¶¨²»±äÐÔ£¬ÄÇôËùÓÐÕâЩ´úÂë¾Í»á±äµÃ¼òµ¥µÄ¶à¡£µ±È»£¬ÎÞ´¦²»ÔڵIJ»±äÐÔ»á¸Ä±äÎÒÃǹ¹½¨Êý¾Ý¿âºÍÆäËû»ù´¡¼Ü¹¹µÄ·½Ê½£¬µ«½á¹û»á»ñµÃ¸üºÃµÄºËÐÄÎȶ¨ÐÔ¡£

»ùÓÚº¯ÊýºËÐÄ£¬Ê¹ÓÃÃüÁîʽÓïÑÔ´¦Àí¹¤×÷Á÷¡¢ÒµÎñ¹æÔò¡¢UI ºÍϵͳµÄÆäËû²¿·Ö£¬ÆäÖпª·¢ÈËÔ±µÄÒ×ÓÃÐÔ´¦ÓÚÓÅÏÈλÖá£ÔÚÔ­À´µÄ½ð×ÖËþÖУ¬DSL λÓÚ¶¥²¿£¬ÎªÏàͬµÄÄ¿µÄ¶ø·þÎñ¡£È»¶ø£¬ÎÒÈÔÈ»ÏàÐÅ DSL ½«»á´©Í¸ÏµÍ³µÄËùÓвã´Î£¬Ö±´ïµ×²¿¡£Äú¿ÉÒÔÔÚÏñ Scala £¨º¯Êýʽ¡¢¾²Ì¬Ç¿ÀàÐÍ£©ºÍ Clojure£¨º¯Êýʽ¡¢¶¯Ì¬Ç¿ÀàÐÍ£©ÕâÑùµÄÓïÑÔÖÐÇáËɱàд DSL£¬ÒÔ׼ȷµÄ·½Ê½²¶×½ÖØÒªÀíÄÕâ¾ÍÊǶÔÉÏÊö¹ÛµãµÄÒ»¸öÇ¿ÓÐÁ¦µÄÖ¤Ã÷¡£

¹¹½¨·ûºÏÕâÖÖ½ð×ÖËþÄ£Ð͵ÄÓ¦ÓóÌÐò´ú±í×ÅÒ»ÖÖÖØ´ó¸Ä±ä£¬µ«ÆäÖеĺ¬ÒåÁîÈËÉñÍù¡£Òª²é¿´¿ÉÄÜÐÔ£¬¿ÉÒÔÁ˽â Datomic£¨Ò»ÖÖÉÌÒµ²úÆ·£©µÄ¼Ü¹¹¡£Datomic ÊÇÒ»ÖÖº¯ÊýʽÊý¾Ý¿â£¬¿ÉÒÔ¾«È·µØ¼Ç¼ÏÂÿ´Î±ä»¯¡£¸üв»»áÆÆ»µÊý¾Ý£ºËü»á´´½¨Êý¾Ý¿âµÄÒ»¸öа汾¡£Äú¿ÉÒԻعöÊý¾Ý¿â£¬²é¿´¹ýÈ¥µÄ¿ìÕÕ¡£ÒòΪʼÖÕÄܹ»²é¿´ÀúÊ·£¬ÖîÈçÁ¬ÐøÈí¼þ½»¸¶ÕâÑùµÄ¹¤×÷£¨ËüÒÀÀµÓÚ½«Êý¾Ý¿â°´Ê±¼äǰºó¹ö¶¯µÄÄÜÁ¦£©¾Í±äµÃ΢²»×ãµÀ¡£²âÊÔÓ¦ÓóÌÐòµÄ¶à¸ö°æ±¾Ò²±äµÃºÜÇáËÉ£¬ÒòΪÄú¿ÉÒÔÖ±½Óͬ²½Ä£Ê½Óë´úÂë¸Ä¶¯¡£Datomic ÊÇʹÓà Clojure ¹¹½¨µÄ£¬²¢Ôڼܹ¹²ã´ÎÉÏʹÓÃÁ˺¯Êýʽ½á¹¹¡£ÕâÆäÖÐÔ̺¬µÄº¬ÒåÁîÈ˸е½³Ô¾ª¡£

½áÊøÓï

±¾ÎÄÊÇ Java ÏÂÒ»´ú ÎÄÕÂϵÁеÄ×îºóһƪÎÄÕ¡£ÎÒÏ£Íû±¾ÎÄÕÂϵÁм¤·¢ÁËÄúÉîÈëÑо¿ÎÒÔÚǰ 15 ƪÎÄÕÂÖÐ̸¼°µÄÓïÑÔºÍÀíÄîµÄÐËȤ¡£×Ô´ÓÎÒ 18 ¸öÔÂǰ¿ªÊ¼×«Ð´´ËÎÄÕÂϵÁÐÒÔÀ´£¬±à³ÌÓïÑԵĴ󻷾³ÒѾ­·¢ÉúÁ˸ı䡣Java 8 ÊÇ Java ÏÂÒ»´úÓïÑÔÖÐÇ¿ÓÐÁ¦µÄ¾ºÕùÕßÖ®Ò»£¬Ëü×îÖÕÌí¼ÓÁËÔÚδÀ´ÊýÄêÄÚ½«Í³ÁìÓïÑԵĺ¯Êýʽ±à³ÌÔªËØ¡£ËùÓÐËÄÖÖ Java ÏÂÒ»´úÓïÑÔ£¨Groovy¡¢Scala¡¢Clojure ºÍ Java 8£©¶¼ÓµÓÐÇ¿´óµÄÉçÇøºÍ²»¶ÏÔö³¤µÄÓû§Èº£¬²¢²»¶Ï½øÐд´Ð¡£ÎÞÂÛÄúÑ¡ÔñÄÄλ¾ºÕùÕߣ¨»òËüÃǵÄ×éºÏ£©£¬JVM ÓïÑÔµÄǰ¾°¿´ÆðÀ´¶¼ÊÇһƬ¹âÃ÷¡£

   
1942 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ