
ã·ãªãŒãºã®æåã®éšåã§ã¯ ãé¢æ°åããã°ã©ãã³ã°ã®ããã€ãã®æ©èœã®è°è«ãéå§ããJavaããã®ä»ã®ããæ©èœçãªèšèªã§ãããã®ã¢ã€ãã¢ã®çŸãã瀺ããŸããã ãã®èšäºã§ã¯ãæ©èœ-ãã¡ãŒã¹ãã¯ã©ã¹ã®ãªããžã§ã¯ããæé©åãééã«æ³šæãæããªãããã¬ãã¥ãŒãç¶ããŸãã ãã ãããã®èšäºã®äž»ãªããŒãã¯ã³ã³ãããŒã«ã§ããã€ãŸããå¿ èŠãªãšããå¿ èŠãªãšãããããŠã¹ã³ã¢ãååŸããå¿ èŠããããšãã§ãã
äžæµã®æ©èœãšå¶åŸ¡
Functional Javaã©ã€ãã©ãªãŒã䜿çšããŠãååãé¢æ°ã¹ã¿ã€ã«ã§èšè¿°ãããisFactorïŒïŒããã³factorOfïŒïŒã¡ãœããã䜿çšããæ°å€åé¡åã®å®è£ ã瀺ããŸããïŒãªã¹ã1ãåç §ïŒã
ãªã¹ã1.æ°å€åé¡åã®æ©èœããŒãžã§ã³
import fj.F; import fj.data.List; import static fj.data.List.range; import static fj.function.Integers.add; import static java.lang.Math.round; import static java.lang.Math.sqrt; public class FNumberClassifier { public boolean isFactor(int number, int potential_factor) { return number % potential_factor == 0; } public List<Integer> factorsOf(final int number) { return range(1, number+1).filter(new F<Integer, Boolean>() { public Boolean f(final Integer i) { return number % i == 0; } }); } public int sum(List<Integer> factors) { return factors.foldLeft(fj.function.Integers.add, 0); } public boolean isPerfect(int number) { return sum(factorsOf(number)) - number == number; } public boolean isAbundant(int number) { return sum(factorsOf(number)) - number > number; } public boolean isDeficiend(int number) { return sum(factorsOf(number)) - number < number; } }
isFactor()
ããã³
factorOf()
ã¡ãœããã§ã¯ããã€ãã¹ã¢ã«ãŽãªãºã ããã¬ãŒã ã¯ãŒã¯ã«å§ä»»ããŸããããã¬ãŒã ã¯ãŒã¯èªäœããæ°å€ã®ç¯å²ããã€ãã¹ããæé©ãªæ¹æ³ã決å®ããŸãã ãã¬ãŒã ã¯ãŒã¯ïŒãŸãã¯ãClojureãScalaãªã©ã®æ©èœèšèªã䜿çšããå Žåã®èšèªèªäœïŒãåºç€ãšãªãå®è£ ãæé©åã§ããå Žåãèªåçã«ãã®æ©æµãåããŸãã ãŸããæåã¯ãã®æ©èœãä»ã®æ©èœã«ç§»è¡ããããšã¯æãŸãããããŸããããããã°ã©ãã³ã°èšèªãšç°å¢ã®äž»ãªåŸåã«åŸã£ãŠããããšã«æ³šæããŠãã ããã éçºè ã¯ãæéã®çµéãšãšãã«ããã©ãããã©ãŒã ãããå¹ççã«åŠçã§ãã詳现ãããŸããŸãæœè±¡åããŸãã ãã©ãããã©ãŒã ã§ã¯å¿ããããšãã§ãããããJVMã§ã®ã¡ã¢ãªç®¡çã¯æ°ã«ããŸããã ãã¡ãããæã«ã¯ããã«ããããã€ãã®ããšãããè€éã«ãªããŸãããæ¥åžžã®ã³ãŒãèšè¿°ã§åŸãããå©ç¹ã«ãšã£ãŠã¯è¯ã劥åã§ãã é«æ¬¡é¢æ°ãé¢æ°ãªã©ã®é¢æ°åèšèªã®æ§æèŠçŽ ïŒãªããžã§ã¯ãïŒã䜿çšãããšãæœè±¡åã®ã¯ããã1ã€äžäœã«ç§»åããŠãã³ãŒãã®å®è¡æ¹æ³ã§ã¯ãªããã³ãŒãã®å®è¡å 容ã«éäžã§ããŸãã
Functional Javaãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãããã®ã¹ã¿ã€ã«ã®Javaã§ã®ããã°ã©ãã³ã°ã¯ãèšèªã«å¿ èŠãªæ§æãšæ§é ãå®éã«ã¯ãªããããæ±ãã«ããããã«èŠããŸãã æ©èœçã¢ãããŒãã¯ããã®ããã«èšèšãããèšèªã§ã©ã®ããã«å®è£ ãããŠããŸããïŒ
Clojureã®åé¡å
Clojureã¯ãJVMçšã«èšèšãããæ©èœçãªLispã§ãã Clojureã§æžãããæ°åã®åé¡åãèŠãŠãã ãã-ãªã¹ã2
ãªã¹ã2.çªå·åé¡åã®Clojureå®è£
(ns nealford.perfectnumbers) (use '[clojure.contrib.import-static :only (import-static)]) (import-static java.lang.Math sqrt) (defn is-factor? [factor number] (= 0 (rem number factor))) (defn factors [number] (set (for [n (range 1 (inc number)) :when (is-factor? n number)] n))) (defn sum-factors [number] (reduce + (factors number))) (defn perfect? [number] (= number (- (sum-factors number) number))) (defn abundant? [number] (< number (- (sum-factors number) number))) (defn deficient? [number] (> number (- (sum-factors number) number)))
ãªã¹ã2ã®ã»ãšãã©ã®äºæã¯ãããšãããªããå³ããLispéçºè ã§ãªããŠããç¹ã«è£è¿ãã®èªã¿æ¹ãåŠã¹ããªããææ¡ããã®ã«ååç°¡åã§ãã ããšãã°ã
is-factor?
2ã€ã®ãã©ã¡ãŒã¿ãŒãåããæ°å€ã«ä¿æ°ãä¹ç®ããåŸã®é€ç®ã®äœãããŒãã«çãããã©ããã確èªããŸãã ãã®ããã«ã
perfect?
æ¹æ³
perfect?
abundunt?
deficient?
ãŸããç¹ã«Javaå®è£ ã䜿çšããŠãªã¹ã1ãèŠãå Žåãç解ããããã¯ãã§ãã
sum-factor
ã¡ãœããã¯ãçµã¿èŸŒã¿ã®
reduce
ã¡ãœããã䜿çšããŸãã
sum-factor
ã¯ãé¢æ°ïŒãã®å Žåã¯+ïŒã䜿çšããŠäžåºŠã«1èŠçŽ ãã€ãªã¹ããåæžããŸããé¢æ°ã¯ãåèŠçŽ ã®äžã®æåã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠååŸãããŸãã reduceã¡ãœããã¯ãããŸããŸãªåœ¢åŒã§å¥ã ã®ããã°ã©ãã³ã°èšèªãšãã¬ãŒã ã¯ãŒã¯ã§æäŸãããŸãã ãªã¹ã1ã§ã¯ãããã
foldLeft()
ãšããŠèŠãŸããã factorã¡ãœããã¯æ°å€ã®ãªã¹ããè¿ãã®ã§ãreduceã¡ãœããã«ãã£ãŠè¿ãããåèšãæ°å€ããæ§æããŠãèŠçŽ ããšã«åŠçããŸãã é«éé¢æ°ãšé¢æ°-ãã¡ãŒã¹ãã¯ã©ã¹ãªããžã§ã¯ãã®èŠ³ç¹ããèããããšã«æ £ãããšãã³ãŒãå ã®å€ãã®ãã€ãºãåãé€ãããšãã§ããããšãããããŸãã
factors()
ã¡ãœããã¯ãã©ã³ãã ãªæåã®ã»ããã®ããã«èŠãããããããŸããã ããããClojureã®ããã€ãã®åŒ·åãªæ©èœã®1ã€ã§ãããªã¹ãå å è¡šèšãèŠãããšãããã°ãããã«ç解ã§ããŸãã åãšåæ§ã«ããã¡ã¯ã¿ãŒã¡ãœãããç解ããæãç°¡åãªæ¹æ³ã¯ãå éšããã§ãã ããªããstè¿·ã«é¥ããèšèªçšèªã«æ··åããªãã§ãã ããã Clojureã®forããŒã¯ãŒãã¯ã-forã«ãŒããæå³ããŸããã ãã¹ãŠã®ãã£ã«ã¿ãªã³ã°ããã³å€ææ§é ã®ç¥å ãšèããŠãã ããã ãã®å Žåã
is-factor?
è¿°èª
is-factor?
ã䜿çšããŠã1ããïŒnumber + 1ïŒãŸã§ã®æ°å€ã®ç¯å²ããã£ã«ã¿ãŒããããã«åŒã³åºã
is-factor?
æ¡ä»¶ãæºããæ°åãè¿ããŸãã ãã®æäœã®åºåã¯ãåºæºãæºããæ°å€ã®ãªã¹ãã§ãããã®ãªã¹ãã¯ãç¹°ãè¿ããåé€ããããã®ã»ããã«å€æãããŸãã
é¢æ°åèšèªããã¯ãåŠç¿ã®åæã®å°é£ã«ããããããããããã®ä»æ§ãšç¹æ§ãç解ããããšã§ãæ¬åœã«ã¯ãŒã«ãªãã®ãããããåŸãããŸãã
æé©å
é¢æ°åã¹ã¿ã€ã«ã«ç§»è¡ããå©ç¹ã®1ã€ã¯ãèšèªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠæäŸãããé«éé¢æ°ã䜿çšã§ããããšã§ãã ãããããã®ã³ã³ãããŒã«ãæŸæ£ããããªãå Žåã¯ã©ãã§ããããïŒ åã®äŸã§ã¯ãå埩ã¡ã«ããºã ã®å éšåäœãšã¡ã¢ãªãããŒãžã£ãŒã®åäœãæ¯èŒããŸãããã»ãšãã©ã®å Žåããããã®è©³çŽ°ã«ã€ããŠå¿é ããããšã¯ç°¡åã§ãã ãã ããæé©åãªã©ã®å Žåãšåæ§ã«ããããåŠçããããšããããŸãã
æåã®ããŒãã§ç€ºãã2ã€ã®JavaããŒãžã§ã³ã®çªå·åé¡åã§ã¯ãé€æ°ãå®çŸ©ããã³ãŒããæé©åããŸããã æåã®åçŽãªå®è£ ã§ã¯ã2ããæå®ãããæ°ãŸã§ã®ãã¹ãŠã®æ°ããã§ãã¯ããŠé€æ°ã§ãããã©ããããã§ãã¯ããã®ã¯éåžžã«éå¹ççãªã¢ãžã¥ãŒã«æŒç®åïŒïŒ ïŒã䜿çšããŸããã ä»åãã¯åžžã«ãã¢ã§çºçããããšã«æ³šæããããšã§ããã®ã¢ã«ãŽãªãºã ãæé©åã§ããŸãã ããšãã°ãé€æ°28ãæ¢ããŠããå Žåã2ãèŠã€ãã£ãã14ãåãããšãã§ããŸããé€æ°ããã¢ã§åéããå Žåã¯ãæå®ããæ°ã®å¹³æ¹æ ¹ãŸã§ã®æ°ã ãããã§ãã¯ããå¿ èŠããããŸãã
JavaããŒãžã§ã³ã§ç°¡åã«å®è¡ã§ããæé©åã¯ãFunctional Javaã§ã¯å埩ãçŽæ¥å¶åŸ¡ããªãããäžå¯èœã§ãã ãã ããæ©èœçæèãžã®éã¯ãä»ã®äººãå¶åŸ¡ãååŸã§ããããã«ããã®ã¿ã€ãã®å¶åŸ¡ãæŸæ£ããå¿ èŠããããŸãã
é¢æ°ã¹ã¿ã€ã«ã§å ã®åé¡ãåå®åŒåã§ããŸããisFactorè¿°èªãæºãããã®ã®ã¿ãæ®ããŠã1ããæå®ãããæ°ãŸã§ã®ãã¹ãŠã®çŽæ°ãé€å€ããŸãã ããã¯ãªã¹ã3ã§è¡ãããŸãã
ãªã¹ã3. isFactorïŒïŒã¡ãœãã
public List<Integer> factorsOf(final int number) { return range(1, number+1).filter(new F<Integer, Boolean>() { public Boolean f(final Integer i) { return number % i == 0; } }); }
ãã®ãšã¬ã¬ã³ããã«ããããããããªã¹ã3ã®ã³ãŒãã¯ãã¹ãŠã®æ°åããã§ãã¯ãããããããŸãå¹ççã§ã¯ãããŸããã ãã ããæé©åïŒ1ããå¹³æ¹æ ¹ã®ãã¢ã§é€ç®åšãåéããïŒãç解ããããåé¡ãåå®åŒåã§ããŸãã
- 1ããç¹å®ã®æ°å€ã®å¹³æ¹æ ¹ãŸã§ã®ãã¹ãŠã®æ°å€ããã£ã«ã¿ãŒã§é€å€ããŸãã
- äžããããæ°ããããã®ãã£ãã€ããŒã§é€ç®ããŠããã¢ã®é€æ°ãååŸããããããã£ãã€ããŒã®ãªã¹ãã«è¿œå ããŸãã
ãã®ã¢ã«ãŽãªãºã ã䜿çšãããšããªã¹ã4ã«ç€ºãããã«ãFunctional Javaã©ã€ãã©ãªãŒã䜿çšããŠfactorOfïŒïŒã¡ãœããã®æé©åããŒãžã§ã³ãäœæã§ããŸãã
ãªã¹ã4.æé©åãããå åçºèŠæ¹æ³
public List<Integer> factorsOfOptimzied(final int number) { List<Integer> factors = range(1, (int) round(sqrt(number)+1)) .filter(new F<Integer, Boolean>() { public Boolean f(final Integer i) { return number % i == 0; }}); return factors.append(factors.map(new F<Integer, Integer>() { public Integer f(final Integer i) { return number / i; }})) .nub(); }
ãªã¹ã4ã®ã³ãŒãã¯ãåè¿°ã®ã¢ã«ãŽãªãºã ã«åºã¥ããŠãããFunctional Javaã©ã€ãã©ãªãŒã§ãããã«ç Žæããæ§æãå¿ èŠã§ãã æåã«ã1ããæå®ãããæ°å€ã«1ãå ããå¹³æ¹æ ¹ãŸã§ã®ç¯å²ã®æ°å€ãåããŸãïŒãã¹ãŠã®çŽæ°ãååŸããããã§ãïŒã 次ã«ãåã®ããŒãžã§ã³ãšåæ§ã«ãã³ãŒããããã¯ã«ã©ãããããã¢ãžã¥ãŒã«æŒç®åã䜿çšããŠçµæããã£ã«ã¿ãŒåŠçããŸãã ãã®ãã£ã«ã¿ãªã³ã°çµæã
factors
å€æ°ã«ä¿åããŸãã 次ã«ïŒå éšããèªã¿åãå ŽåïŒããã®ä»åãã®ãªã¹ããååŸãã
map()
é¢æ°ãå®è¡ã
map()
ãããã«ãããæ°ãããªã¹ããäœæãããåèŠçŽ ã«å¯ŸããŠã³ãŒããããã¯ãå®è¡ãããŸãïŒåèŠçŽ ãæ°ããå€ã«ãããã³ã°ããŸãïŒã é€æ°ã®ãªã¹ãã«ã¯ãå¹³æ¹æ ¹ããå°ããç¹å®ã®æ°ã®ãã¹ãŠã®é€æ°ãå«ãŸããŠããŸãã 察称é€æ°ã®ãªã¹ããååŸãããããå ã®ãªã¹ãã«æ¥ç¶ããã«ã¯ãæå®ãããæ°ãããããã«åå²ããå¿ èŠããããŸãã æåŸã®ã¹ãããã§ã¯ãé€æ°ãã»ããã§ã¯ãªããªã¹ãã«ä¿æããããšãèæ ®ããå¿ èŠããããŸãã ãªã¹ãã¡ãœããã¯ã以åã«å®è¡ãããæäœã«ã¯äŸ¿å©ã§ãããç§ã®ã¢ã«ãŽãªãºã ã«ã¯å¯äœçšããããŸããé€æ°ã®éã«å¹³æ¹æ ¹ãçŸãããšã1ã€ã®èŠçŽ ã2åç¹°ãè¿ãããŸãã ããšãã°ãæ°å€ã16ã®å Žåããã®4ã®å¹³æ¹æ ¹ãååšåšã®ãªã¹ãã«2å衚瀺ãããŸãã 䟿å©ãªãªã¹ãã¡ãœãããåŒãç¶ã䜿çšããã«ã¯ãæåŸã«
nub()
ã¡ãœãããåŒã³åºããŠããã¹ãŠã®ç¹°ãè¿ããåé€ããå¿ èŠããããŸãã
é¢æ°åããã°ã©ãã³ã°ã®ãããªé«ã¬ãã«ã®æœè±¡åã䜿çšããå Žåãå®è£ ã®è©³çŽ°ãç¥ãããšãæåŠãããšããäºå®ã¯ãå¿ èŠãªãšãã«ããããªããšã«æ»ãããšãã§ããªããšããæå³ã§ã¯ãããŸããã Javaã¯åºæ¬çã«äœã¬ãã«ã®åé¡ãããŠãŒã¶ãŒãä¿è·ããŸãããå¿ èŠãšå€æããå Žåã¯ãå¿ èŠãªã¬ãã«ãŸã§äžããããšãã§ããŸãã é¢æ°åããã°ã©ãã³ã°ã§ã-éåžžã詳现ã¯æœè±¡åã®è¯å¿ã«å§ããããŸãããæ¬åœã«éèŠãªå Žåãé€ããŸãã
äžèšã§åŒçšããã³ãŒãå šäœãéããŠããããã¯ã®æ§æã¯èŠèŠçã«æ¯é çã§ãããäžè¬åãšå¿åã®ãã¹ããããã¯ã©ã¹ãã³ãŒãã®ç䌌ãããã¯ãšããŠäœ¿çšããŸãã ã¯ããŒãžã£ãŒã¯ãé¢æ°åèšèªã®æãäžè¬çãªæ©èœã®1ã€ã§ãã æ©èœçãªäžçã§äœããããªã«äŸ¿å©ãªã®ã§ããïŒ
ã¯ããŒãžã£ãŒã®ç¹å¥ãªãšããã¯äœã§ããïŒ
ã¯ããŒãžã£ãŒã¯ããããåç §ããå€æ°ãžã®æé»çãªåç §ãä¿æããé¢æ°ã§ãã ã€ãŸããåšå²ã®ã³ã³ããã¹ãããã£ããã£ããŠä¿åããé¢æ°ïŒãŸãã¯ã¡ãœããïŒ*ã§ãã ã¯ããŒãžã£ãŒã¯ãé¢æ°åèšèªããã³ãã¬ãŒã ã¯ãŒã¯ã®ç§»æ€å¯èœãªå®è¡ã¡ã«ããºã ãšããŠéåžžã«é »ç¹ã«äœ¿çšãããå€æã®ããã®mapïŒïŒãªã©ã®é«æ¬¡é¢æ°ã§æž¡ãããŸãã é¢æ°åJavaã¯å¿åã®å éšã¯ã©ã¹ã䜿çšããŠãå®éã®ãã¯ããŒãžã£ãŒã®åäœãã·ãã¥ã¬ãŒãããŸãããJavaã¯ã¯ããŒãžã£ãŒããµããŒãããŠããªããããåŸè ã®å®å šãªæ©èœãæäŸã§ããŸããã ããã¯ã©ãããæå³ã§ããïŒ
ãªã¹ã5ã¯ãã¯ããŒãžã£ãŒãç¹å¥ãªãã®ã«ããäŸã瀺ããŠããŸãã ã¯ããŒãžã£ãŒãçŽæ¥ãµããŒãããèšèªã§ããGroovyã§æžãããŠããŸãã
ãªã¹ã5.ã¯ããŒãžã£ãŒã瀺ãGroovyã³ãŒã
def makeCounter() { def very_local_variable = 0 return { return very_local_variable += 1 } } c1 = makeCounter() c1() c1() c1() c2 = makeCounter() println "C1 = ${c1()}, C2 = ${c2()}" // output: C1 = 4, C2 = 1
makeCouner()
ã¡ãœããã¯ã察å¿ããååã§ããŒã«ã«å€æ°ãå®çŸ©ãããã®å€æ°ã䜿çšããã³ãŒãã®ãããã¯ãè¿ããŸãã
makeCounter()
ã¡ãœããã¯ãå€ã§ã¯ãªãã³ãŒãã®ãããã¯ãè¿ãããšã«æ³šæããŠãã ããã ãã®ã³ãŒãã¯ãããŒã«ã«å€æ°ã®å€ã1å¢ãããŠè¿ãããšä»¥å€ã¯äœãããŸããã ãã®ã³ãŒãã§returnåŒã³åºããæ瀺çã«ææããŸãããããã¯å®éã«ã¯Groovyã§ã¯ãªãã·ã§ã³ã§ãããããããªãã³ãŒãã¯ããã»ã©æ確ã§ã¯ãªãããã§ãã
makeCounter()
ã¡ãœããã®åäœã瀺ãããã«ããããã¯åç §ãå€æ°
c1
ã«å²ãåœãŠã3ååŒã³åºããŸããã Groovyæ§æç³ã䜿çšããŠãå€æ°ã®åŸã«è§æ¬åŒ§ãé 眮ããããšã§æ§æãããã³ãŒãã®ãããã¯ãå®è¡ããŸãã 次ã«ã
makeCounter()
å床åŒã³åºããŠãã³ãŒããããã¯ã®æ°ããã€ã³ã¹ã¿ã³ã¹ã
C2
ã«å²ãåœãŠãŸãã çµè«ãšããŠã
C2
C1
å床å®è¡ããŸãã ã³ãŒãã®åãããã¯ã¯ã
very_local_variable
å€æ°ã®åå¥ã®ã€ã³ã¹ã¿ã³ã¹ãåç §ããããšã«æ³šæããŠãã ããã ããã¯ãŸãã«ãã³ã³ããã¹ãã®ãã£ããã£ã«é¢ããŠç§ã念é ã«çœ®ããŠãããã®ã§ãã ã¡ãœããå ã®å€æ°ã®å®çŸ©ã®æãããªå±ææ§ã«ãããããããã¯ããŒãžã£ã¯ãŸã ããã«é¢é£ä»ããããŠãããç¶æ ãä¿åããŸãã
Javaã§å®è£ ããããã®åäœã«æãè¿ãã¢ãããŒãããªã¹ã6ã«ç€ºããŸãã
ãªã¹ã6. Javaã§ã®MakeCounter
public class Counter { private int varField; public Counter(int var) { varField = var; } public static Counter makeCounter() { return new Counter(0); } public int execute() { return ++varField; } }
Counterã¯ã©ã¹ã«ã¯ããã€ãã®ãªãã·ã§ã³ããããŸãããããã§ãèªå·±ç®¡çç¶æ ã«å¯ŸåŠããå¿ èŠããããŸãã ããã¯ãã¯ããŒãžã£ãŒã®äœ¿çšãæ©èœçæèã«å¯äžããçç±ã瀺ããŠããŸããããã«ãããç°å¢ãç¶æ ãå¶åŸ¡ã§ããããã«ãªããŸãã ãã£ãŒã«ãã®äœæãå¶åŸ¡ããç¶æ ïŒãã«ãã¹ã¬ããç°å¢ã§ãã®ãããªã³ãŒãã䜿çšããæãããèŠéããå«ãïŒãç£èŠããããã«åŒ·å¶ãã代ããã«ãèšèªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ãäœæ¥ãè¡ãããšãã§ããŸãã
æçµçã«ã¯ãJavaã®å°æ¥ã®ãªãªãŒã¹ã§ãŸã ééããããŸãïŒå¹žããªããšã«ããã®è°è«ã¯ãã®èšäºã®ç¯å²å€ã§ãïŒã Javaã§ã®ã¯ããŒãžã£ãŒã®åºçŸã¯ãããã€ãã®æåŸ ãããçµæããããããŸãã 第äžã«ãã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®äœæè ã®æ§æãæ¹åããäœæ¥ãå€§å¹ ã«ç°¡çŽ åããŸãã 次ã«ãJVMã§å®è¡ããããã¹ãŠã®èšèªã§ã¯ããŒãžã£ãŒããµããŒãããããã®äœã¬ãã«ã®ãå ±éåæ¯ããæäŸããŸãã å€ãã®JVMèšèªã¯ã¯ããŒãžã£ãŒããµããŒãããŠãããšããäºå®ã«ãããããããç¬èªã®ããŒãžã§ã³ãå®è£ ããå¿ èŠããããããèšèªéã§ã¯ããŒãžã£ãŒãæž¡ãã®ã¯éåžžã«å°é£ã§ãã Javaèªäœãåäžã®åœ¢åŒãå®çŸ©ããŠããå Žåãä»ã®ãã¹ãŠã®èšèªã¯ãããå¹æçã«äœ¿çšã§ããŸãã
ãããã«
èšèªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ãæ¯æããŠäœã¬ãã«ã®è©³çŽ°ã®å¶åŸ¡ãæŸæ£ããããšã¯ããœãããŠã§ã¢éçºã®äžè¬çãªåŸåã§ãã ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãã¡ã¢ãªç®¡çãããŒããŠã§ã¢ã®éãã«å¯Ÿãã責任ãåãã§è»œæžããŸãã é¢æ°åããã°ã©ãã³ã°ã¯ãæ°ããã¬ãã«ã®æœè±¡åãè¡šããŸããã€ãŸããå¯èœãªç¯å²ã§ã®ç°å¢ã®å埩ã䞊ååŠçãããã³ç¶æ å¶åŸ¡ã®ããã®ã«ãŒãã³æ©èœã®å®è£ ã®è©³çŽ°ã®å²ãåœãŠã§ãã ããã¯ãå¿ èŠã«å¿ããŠã³ã³ãããŒã«ãåãæ»ãããšãã§ããªãããšãæå³ãããã®ã§ã¯ãããŸãã-ããããããªãã¯ãããæãã¹ãã§ããã匷å¶ãããããšã¯ãããŸããã
次å·ã§ã¯ã ã«ãªãŒåãšéšåã¡ãœããé©çšã®èª¬æãšãšãã«ãJavaãšãã®è¿çžã®æ©èœçæ§æäœã䜿çšããŠæ ãç¶ããŸã ã
泚é
*-ããã§ã¯ãèè ã¯åŠè¡çšèªãé床ã«ç±å¿ã«åé¿ããŠããããã§ãã ã©ã ãåŒã®èªç±å€æ°ã«ã€ããŠè©±ããŠããŸãã SFPã®èšäºãããããŸããŸãªå®è£ ã§ã®ã¯ããŒãžã£ãŒã®åäœã«é¢ããåªããçŽèŠ³ãåŸãããšãã§ããŸãã èªç±å€æ°ããã³é¢é£å€æ°ã®åççã«æ確ãªæ£åŒãªå®çŸ©ã¯ããŠã£ãããã£ã¢ã®èšäºã«èšèŒãããŠããŸãã
PS CheatEx ã翻蚳ã®å©ããŠãããŠããããšãã