ML / DLã®åéã«ãããä»åŸã®ã€ãããŒã·ã§ã³ã«é¢ããææ°ãã¥ãŒã¹ããïŒ
Nishant ShaklaããTensorflowã«ããæ©æ¢°åŠç¿ ã-ã¬ã€ã¢ãŠãã®æ¬ã1æã«åºèã§çºå£²äºå®
Delip RaoãBrian McMahanãã PyTorchã§ã®èªç¶èšèªåŠç ã-å¥çŽã調å°ããã1æã«ç¿»èš³ãéå§ããäºå®ã§ãã
ããã«é¢é£ããŠãç§ãã¡ã¯åã³çã¿ã䌎ããããã¯ãã€ãŸãJavaèšèªã§ã®ML / DLããŒãã®è²§åŒ±ãªç 究ã«æ»ãããã£ãã®ã§ãã ãããã®Javaãœãªã¥ãŒã·ã§ã³ãšã¢ã«ãŽãªãºã ã¯æããã«æªçã§ãããããç§ãã¡ã¯ãã€ãŠGibsonãšPattersonã®DL4Jã®æ¬ãæŸæ£ããããšã決ããŸãããä»æ¥å ¬éãããHumphrey Sheilã®èšäºã¯ãããããæ£ããããšã瀺åããŠããŸãã Javaèšèªãæ©æ¢°åŠç¿ã§Pythonãšæçµçã«ç«¶åããæ¹æ³ã«é¢ããèè ã®èããç¥ãããšãã§ããŸãã
æè¿ãç§ã¯äŒæ¥ã«ãããæ©æ¢°åŠç¿ãšæ·±å±€åŠç¿ïŒML / DLïŒã®çŸåšãšæªæ¥ã«ã€ããŠè¬æŒããŸããã 倧äŒæ¥ã®å Žåãé©çšããããããã¯ãåé¡ã¯ãç 究äŒè°ãããéèŠã§ããããšãã°ãããŒã ãšç§ãMLã䜿ãå§ããæ¹æ³ããMLãéçšäžã®ã·ã¹ãã ã«æé©ã«çµ±åããæ¹æ³ãªã©ã§ãã 次ã«ãJavaãšæ©æ¢°åŠç¿ã«é¢ããããã«ãã£ã¹ã«ãã·ã§ã³ãéå§ããŸããã
Javaèšèªã¯ãæ©æ¢°åŠç¿ã»ã°ã¡ã³ãã«ã¯å®è³ªçã«ååšããŸããã Javaã§èšè¿°ãããMLãã¬ãŒã ã¯ãŒã¯ã¯ã»ãšãã©ãããŸããïŒ DL4JããããŸãããå人çã«ã¯ããã䜿çšãã人ã¯ããŸãããMXNetã¯Scalaã«APIããããŸãããJavaã«ã¯ãããŸããããã®ãã¬ãŒã ã¯ãŒã¯èªäœã¯Javaã§æžãããŠããŸããïŒ ã Tensorflowã«ã¯äžå®å šãªJava APIããããŸãããJavaã¯ãšã³ã¿ãŒãã©ã€ãºéçºã«ãããŠå€§ããªã·ã§ã¢ãå ããŠããŸããéå»20幎ã«ããã£ãŠãéèãµãŒãã¹ãé»åååŒããªã³ã©ã€ã³ã¹ãã¢ãéä¿¡-ãªã¹ã-æ°žé ã«ç¶ãããšãã§ããŸãã æ©æ¢°åŠç¿ã§ã¯ããæåã®åçãã¯Javaã§ã¯ãªãPythonã§ãã å人çã«ã¯ãPythonãšJavaã®äž¡æ¹ã§ã®ããã°ã©ãã³ã°ã倧奜ãã§ããã ãã©ã³ã¯ã°ã¬ã³ã¯èå³æ·±ã質åãäœæããŠèããããŠãããŸããã
JavaãMLã§Pythonãšç«¶åããå¿ èŠãããã®ã¯ãªãã§ããïŒ çå£ãªMLãµããŒããæãèµ·ããããã¿ã¹ã¯ãåŒãåããŠã¿ãŸãããïŒ
ããã¯éèŠã§ããïŒ
ãã®ãããã¯ãæ£åœåããŸãããã 1998幎以æ¥ãJavaèšèªã¯ãã¬ãã¢ãªãŒã°ã«å«ãŸããŠããŸãããããããªããã°ãäŒæ¥ã«ã¯é²åçã§é©åœçãªã€ãã³ãã¯ãããŸããã§ããã Webãã¯ãããžãšã¢ãã€ã«ãã¯ãããžããã©ãŠã¶ãšãã€ãã£ããœãªã¥ãŒã·ã§ã³ã®æ¯èŒãã¡ãã»ãŒãžã³ã°ã·ã¹ãã ãi18nãšl10nã®ã°ããŒããªãŒãŒã·ã§ã³ãµããŒãããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ããElasticsearch
ãã®ã¬ãã«ã®ç¡æ¡ä»¶ã®ãµããŒãã¯ãJavaã³ãã³ãã§éçºãããéåžžã«å¥å šãªæåãæäŸããŸãããã§ãããããè¢ããŸãããã³ãŒããæžããã§ãã Javaéçºè ã®åªããããŒã ãè£è¶³ããã眮ãæãããããããšã®ã§ããªãéæ³ã®ãããªã³ã³ããŒãã³ããAPIã¯ãããŸããã
ãããããã®ååã¯æ©æ¢°åŠç¿ã§ã¯æ©èœããŸããã ããã§ãJavaã³ãã³ãã«ã¯2ã€ã®ãªãã·ã§ã³ããããŸãã
- Pythonã§ã®åãã¬ãŒãã³ã°/åãã¬ãŒãã³ã°ã
- ãµãŒãããŒãã£APIã䜿çšããŠãæ¢åã®ãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã«æ©æ¢°åŠç¿æ©èœãè¿œå ããŸãã
ãããã®ãªãã·ã§ã³ã¯ã©ããçã«ç¡å®³ãšã¯èšããŸããã 1ã€ç®ã¯ãäºåã«å€ãã®æéãšæè³ãå¿ èŠãšããããã«ç¶ç¶çãªãµããŒãã³ã¹ããå¿ èŠã§ãã 2çªç®ã®ãªãã·ã§ã³ã§ã¯ããµãã©ã€ã€ã«äŸåãããªã¹ã¯ããµãã©ã€ã€ã®ãµããŒãã倱ããªã¹ã¯ãããã³ãµãŒãããŒãã£ã®ã³ã³ããŒãã³ãã§äœæ¥ããå¿ èŠãããïŒåæã«ãããã¯ãŒã¯ç§»è¡ã®äŸ¡æ Œãæ¯æãïŒãé倧ãªã»ãã¥ãªãã£èŠä»¶ãååšããå¯èœæ§ãããã·ã¹ãã ã«ç§»è¡ãããªã¹ã¯ããããæ å ±ãå ±æããå¿ èŠããããŸãçµç¹å€ã®èª°ãã«ãã£ãŠã ç¶æ³ã«ãã£ãŠã¯ãããã¯åãå ¥ããããŸããã
ãã®å Žåã®æãç Žå£çãªãã®ã¯ïŒç§ã®æèŠã§ã¯ïŒ æåçæªåã®å¯èœæ§ã§ããããŒã ãç解ã§ããªãããŸãã¯ç¶æã§ããªãã³ãŒããå€æŽã§ããªãããã責任ãææ§ã«ãªããäž»èŠãªäœæ¥ãä»ã®äººã«å§ä»»ããå¿ èŠããããŸãã Javaéçºè ã®ã¿ã§æ§æãããããŒã ã¯ã次ã®å€§ããªæ³¢ãéããªã¹ã¯ãè² ããŸããããã¯ããšã³ã¿ãŒãã©ã€ãºã³ã³ãã¥ãŒãã£ã³ã°ãã€ãŸãæ©æ¢°åŠç¿ã®æ³¢ã«ããµããŸãã
ãã®ãããæ©æ¢°åŠç¿ã®ç¬¬äžçŽã®ãµããŒããèšèªãšJavaãã©ãããã©ãŒã ã«çŸããããšãéèŠã§ãããæãŸããã§ãã ããããªããšãä»åŸ5ã10幎ã§ãMLãããé©åã«ãµããŒããããä»ã®èšèªã«Javaã眮ãæãããªã¹ã¯ããããŸãã
ãªãMLã§Pythonãããã»ã©æ¯é çãªã®ã§ããïŒ
ãŸããPythonãæ©æ¢°åŠç¿ãšãã£ãŒãã©ãŒãã³ã°ã®ãªãŒããŒã«ãªã£ãçç±ã«ã€ããŠèª¬æããŸãããã
ç§ã¯ãããå®å šã«ç¡éªæ°ãªæ©èœã§å§ãŸã£ãã®ã§ã¯ãªãããšçã£ãŠããŸã-ãªã¹ãã¹ã©ã€ã¹ã®ãµããŒã ãã®ãããªãµããŒãã¯æ¡åŒµå¯èœã§ã
__getitem__
ããã³
__setitem__
ã¡ãœãããå®è£ ããPythonã¯ã©ã¹ã¯ããã®æ§æã䜿çšããŠã«ããã§ããŸãã 次ã®ãªã¹ãã¯ããã®Pythonæ©èœãããã«ã·ã³ãã«ã§èªç¶ãã瀺ããŠããŸãã
a = [1, 2, 3, 4, 5, 6, 7, 8] print(a[1:4]) # [2, 3, 4] â print(a[1:-1]) # [2, 3, 4, 5, 6, 7] - 0- print(a[4:]) # [5, 6, 7, 8] â print(a[:4]) # [1, 2, 3, 4] â print(a[:4:2]) # [1, 3] ( )
ãã¡ãããããã ãã§ã¯ãããŸããã Pythonã³ãŒãã¯ããå€ããJavaã³ãŒãã«æ¯ã¹ãŠã¯ããã«ã³ã³ãã¯ãã§ç°¡æœã§ãã äŸå€ã¯ãµããŒããããŠããŸããããã§ãã¯ãããŠããŸãããéçºè ã¯ãæ¶èåãšããŠé©åãªPythonã¹ã¯ãªãããç°¡åã«èšè¿°ã§ããŸããJavaã®äžç芳ããã¹ãŠãã¯ã©ã¹ãã«drããã«ãä»çµã¿ããè©ŠããŠãã ããã Pythonã¯ç°¡åã«åå ã§ããŸãã
ããããç§ã®æèŠã§ã¯ãåªäœæ§ã®æãéèŠãªèŠå ïŒPython 2.7ãšPython 3ã®éã®æ¥ç¶ãç¶æããããã«Pythonã³ãã¥ããã£ãã©ããªåªåãããŠããã®ããç§ã劚ããããšã¯ãããŸããïŒã¯ãæäœã®ããã®ã¯ããã«åªããèšèšãšé«éã®ã©ã€ãã©ãªãäœæã§ããããšã§ãæ°åä»ã-NumPyã Numpyã¯ãN次å é åã®ãªããžã§ã¯ãã§ããndarrayãäžå¿ã«æ§ç¯ãããŸãã ç§ã¯ããã¥ã¡ã³ããŒã·ã§ã³ãåŒçšããŸãïŒ NumPyã®äž»èŠãªãªããžã§ã¯ãã¯åçš®ã®å€æ¬¡å é åã§ãã ããã¯ãæ£ã®æŽæ°ã®ã¿ãã«ã«ãã£ãŠã€ã³ããã¯ã¹ãä»ããããããã¹ãŠåãã¿ã€ãã®èŠçŽ ïŒéåžžã¯æ°åïŒã®ããŒãã«ã§ãã NumPyã®ãã¹ãŠã®äœæ¥ã¯ãããŒã¿ãndarrayã«æžã蟌ã¿ããã®åŸã®æäœã«åºã¥ããŠããŸãã NumPyã¯ãããŸããŸãªã€ã³ããã¯ã¹äœæããããŒããã£ã¹ããé床åäžã®ããã®ãã¯ãã«åãªãã·ã§ã³ããµããŒãããŠãããéåžžãéçºè ã¯å€§ããªæ°å€é åãç°¡åã«äœæããã³æäœã§ããŸãã
次ã®ãªã¹ãã¯ãndarrayã§ã®ã€ã³ããã¯ã¹äœæãšãããŒããã£ã¹ããå®éã«ç€ºããŠããŸãããããã¯ML / DLã®äž»èŠãªæäœã§ãã
import numpy as np # a = np.array([1.0, 2.0, 3.0]) b = 2.0 c = a * b print(c) # [ 2. 4. 6.] - b / c #2-d ( 2) NumPy â - .e. > 2 y = np.arange(35).reshape(5,7) print(y) # array([[ 0, 1, 2, 3, 4, 5, 6], # [ 7, 8, 9, 10, 11, 12, 13], # [14, 15, 16, 17, 18, 19, 20], # [21, 22, 23, 24, 25, 26, 27], # [28, 29, 30, 31, 32, 33, 34]]) print(y[0,0]) # â , 0 print(y[4,]) # 4: array([28, 29, 30, 31, 32, 33, 34]) print(y[:,2]) # 2: array([ 2, 9, 16, 23, 30])
倧èŠæš¡ãªå€æ¬¡å æ°å€é åã䜿çšããŠãæ©æ¢°åŠç¿ãç¹ã«ãã£ãŒãã©ãŒãã³ã°ã®ããã°ã©ãã³ã°ã®äžå¿ãããŒã¯ããŸãã ãã£ãŒããã¥ãŒã©ã«ãããã¯ãŒã¯ã¯ãæ°å€ã®ã¬ãã«ã§ã¢ãã«åãããããŒããšãšããžã®ã©ãã£ã¹ã§ãã ãããã¯ãŒã¯ããã¬ãŒãã³ã°ãããšãããŸãã¯ããã«åºã¥ããŠåºåãå®è¡ãããšãã®ã©ã³ã¿ã€ã æäœã«ã¯ãé«éã®è¡åä¹ç®ãå¿ èŠã§ãã
NumPyã®ãããã§ã scipy ã pandasãããã³ä»ã®å€ãã®NumPyããŒã¹ã®ã©ã€ãã©ãªãªã©ãããã«å€ãã®ããšãè¡ãããŸããã äž»èŠãªæ·±å±€åŠç¿ã©ã€ãã©ãªïŒGoogleã®Tensorflow ãFacebookã®PyTorch ïŒã¯Pythonãçå£ã«éçºããŠããŸãã Tensorflowã«ã¯GoãJavaãããã³JavaScriptçšã®ä»ã®APIããããŸããããããã¯äžå®å šã§ãããäžå®å®ã§ãããšèŠãªãããŸãã PyTorchã¯ããšããšLuaã§äœæããã2017幎ã«ãã®ççŽãªãããèšèªãã2017幎ã«ã¡ã€ã³ã®ML Pythonãšã³ã·ã¹ãã ã«ç§»è¡ãããšãã«ã人æ°ãæ¥äžæããŸããã
Pythonã®æ¬ é¥
Pythonã¯çæ³çãªèšèªã§ã¯ãªããæã人æ°ã®ããã©ã³ã¿ã€ã ã§ããCPythonã§ããããŸããã ã°ããŒãã«ã€ã³ã¿ãŒããªã¿ãŒããã¯ïŒ GIL ïŒããããããã¹ã±ãŒãªã³ã°ã¯å®¹æã§ã¯ãããŸããã ããã«ãPyTorchãTensorflowãªã©ã®Pythonãã£ãŒãã©ãŒãã³ã°ãã¬ãŒã ã¯ãŒã¯ã¯ãããŒã¡ãœãããäžéæãªå®è£ ã«æž¡ããŸãã ããšãã°ãNVidiaã®cuDNNã©ã€ãã©ãªã¯ãPyTorch RNN / LSTMå®è£ ã®ç¯å²ã«å€§ããªåœ±é¿ãäžããŸããã RNNãšLSTMïŒãªã«ã¬ã³ããã¥ãŒã©ã«ãããã¯ãŒã¯ãšé·æçæã¡ã¢ãªïŒã¯ãç¹ã«é£ç¶ããäžé£ã®å¯å€é·ã®åé¡ãšäºæž¬ãå°éãšããŠãããããããžãã¹ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéåžžã«éèŠãªDLããŒã«ãããã§ãã Webäžã®ããã²ãŒã·ã§ã³ïŒã¯ãªãã¯ã¹ããªãŒã ïŒã®è¿œè·¡ãããã¹ããã©ã°ã¡ã³ãã®åæããŠãŒã¶ãŒã€ãã³ããªã©ã
Pythonãžã®å ¬å¹³æ§ã®ããã«ããã®ãããªäžéæ床/å¶éã¯ãCãŸãã¯C ++ã§æžããããã®ãé€ãã»ãšãã©ãã¹ãŠã®ML / DLã®ãã¬ãŒã ã¯ãŒã¯ã«é©çšãããããšã«æ³šæããŠãã ããã ãªãã§ïŒ ãªããªããè¡åä¹ç®ãªã©ã®åºæ¬çãªè² è·ã®é«ãæäœã®çç£æ§ãæ倧éã«é«ããããã«ãéçºè ã¯å¯èœãªéããéå±ã«è¿ããäžéããããã§ãã
Javaã¯ãã®åéã§äœã競ãå¿ èŠããããŸããïŒ
Javaãã©ãããã©ãŒã ã«ã¯3ã€ã®äž»èŠãªè¿œå ãå¿ èŠã ãšæããŸãã ããããå®è£ ããããšãæ©æ¢°åŠç¿ã®ããã®å¥å šã§è±ããªãšã³ã·ã¹ãã ãåºããå§ããŸãã
- èšèªã®ã³ã¢ã«ãã€ãã£ãã€ã³ããã¯ã¹/ã¹ã©ã€ã¹ã®ãµããŒããè¿œå ããŠã䜿ãããããšè¡šçŸåã§Pythonãšç«¶åã§ããããã«ããŸãã ããããããã®ãããªæ©èœã¯ãæ¢åã®é åºä»ãã³ã¬ã¯ã·ã§ã³ã§ããList <E>ã€ã³ã¿ãŒãã§ã€ã¹ãäžå¿ã«Javaã§æ§ç¯ããå¿ èŠããããŸã ã ãã®ãããªãµããŒãã®ããã«ã¯ãéè² è·ã®å¿ èŠæ§ãèªèããå¿ èŠããããŸã-ãã€ã³ãïŒ2ãæºããå¿ èŠããããŸãã
- ãã³ãœã«å®è£
ãäœæããŸã-ãããã
java.math
ããã±ãŒãžå ã«ãããŸãããCollections APIã«ãã¢ã¯ã»ã¹ã§ããŸãã ãã®ã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã®ã»ããã¯ndarray
ãšåçã«ndarray
ããç¹ã«NumPyã§å©çšå¯èœãª3çš®é¡ã®ã€ã³ããã¯ã¹äœæïŒãã£ãŒã«ããžã®ã¢ã¯ã»ã¹ãåçŽãªã¹ã©ã€ã¹ãããã°ã©ãã³ã°ã«å¿ èŠãªé«åºŠãªã€ã³ããã¯ã¹äœæïŒã®ã€ã³ããã¯ã¹äœæã®è¿œå ãµããŒããæäŸããŸãã - ãããŒããã£ã¹ããæäŸãã-ä»»æã®ïŒãã ãäºææ§ã®ããïŒæ¬¡å ã®ã¹ã«ã©ãŒãšãã³ãœã«ã
ããã3ã€ã®ã¿ã¹ã¯ãJavaèšèªãšã©ã³ã¿ã€ã ã®ã³ã¢ã§å®è¡ã§ããã°ãNumPyã«çžåœãããNumJavaããäœæããæ¹æ³ãéãããŠããŸããã Panamaãããžã§ã¯ãã¯ãCPUãGPUãTPUã§å®è¡ãããé«éãªãã³ãœã«æäœãžã®ãã¯ãã«åãããäœã¬ãã«ã¢ã¯ã»ã¹ãæäŸããã®ã«ã圹ç«ã¡ãJava MLããã®çš®ã®æéã«ãªãããšãã§ããŸãã
ãããã®ã¢ããªã³ã¯äºçŽ°ãªããšã ãšã¯ãŸã£ããèšããŸãã-ããããããé ãã¯ãããŸããããJavaãã©ãããã©ãŒã å šäœã«å¯Ÿããæœåšçãªå©ç¹ã¯èšå€§ã§ãã
次ã®ãªã¹ãã¯ãNumPyã®ãããŒããã£ã¹ãããã³ã€ã³ããã¯ã¹äœæã®äŸãã
Tensor
ã¯ã©ã¹ã䜿çšããŠNumJavaã§ã©ã®ããã«èŠãããã瀺ããŠããŸããèšèªããŒã¹ã®ã¹ã©ã€ã¹æ§æãšãæŒç®åã®ãªãŒããŒããŒãã«é¢ããçŸåšã®å¶éããµããŒãããŠããŸãã
// Java // var- Java 10 // Java , "a * b" // ? var a = new Tensor([1.0, 2.0, 3.0]); var b = 2.0; var c = a.mult(b); /** * , , Tensor Java. */ import static java.math.Numeric.arange; //arange , reshape var y = arange(35).reshape(5,7); System.out.println(y); // tensor([[ 0, 1, 2, 3, 4, 5, 6], // [ 7, 8, 9, 10, 11, 12, 13], // [14, 15, 16, 17, 18, 19, 20], // [21, 22, 23, 24, 25, 26, 27], // [28, 29, 30, 31, 32, 33, 34]]) System.out.println(y[0,0]); // â , 0 System.out.println(y[4,]); // 4- (5- 0): tensor([28, 29, 30, 31, 32, 33, 34]) System.out.println(y[:,2]); // 2- (3- 0): tensor([ 2, 9, 16, 23, 30])
ããŒã¹ãã¯ãã£ããšè¡åãä¿ããã¬ãŒãº
æ©æ¢°åŠç¿ãããžãã¹ã®äžçãå€é©ããã®ã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãã€ã³ã¿ãŒããããã¢ãã€ã«ãã¯ãããžãŒãªã©ãåœæãšåãã§ãã 圌ã®åšãã«ã¯å€ãã®èªå€§å®£äŒããããŸãããããã€ãã®éåžžã«èª¬åŸåã®ããèšäºãšçµè«ã衚瀺ãããŸãã ããšãã°ã ãã®èšäºã§ã¯ãã·ã¹ãã ãæ©æ¢°åŠç¿ã䜿çšããŠãããã¯ã°ã©ãŠã³ãã§ããŒã¿ããŒã¹ãµãŒããŒãWebãµãŒããŒãããã³ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®æé©ãªæ§æãåŠç¿ã§ããå°æ¥ã«ã€ããŠèª¬æããŸãã MLãèªåã®ã·ã¹ãã ã«å±éããå¿ èŠãããããŸãããééããªãããã³ããŒã®1ã€ããããè¡ãããšãã§ããŸãã
ãã®èšäºã§çŽ¹ä»ããå®çšçãªç«å Žã«åºã¥ããŠãæ©æ¢°åŠç¿ãšãã£ãŒãã©ãŒãã³ã°ïŒJREã§äœæ¥ïŒã®ãã¬ãŒã ã¯ãŒã¯ã¯ãWebãé·æã¹ãã¬ãŒãžããŸãã¯XML解æã®æ¢åã®ãã¬ãŒã ã¯ãŒã¯ãããJavaã§æžãããšãã§ããŸãã æå 端ã®ã³ã³ãã¥ãŒã¿ãŒããžã§ã³å®è£ ã®ããã®ç³ã¿èŸŒã¿ãã¥ãŒã©ã«ãããã¯ãŒã¯ ïŒCNNïŒããµããŒãããJavaãã¬ãŒã ã¯ãŒã¯ãæ³åã§ããŸãããã®ãããªå®è£ ã«ã¯ãèªå埮åãªã©ã®æãé«åºŠãªMLæ©èœãåãããã·ãŒã±ã³ã·ã£ã«ããŒã¿ã»ããïŒããžãã¹ã«ãšã£ãŠéèŠãªãã®ïŒã®ãªã«ã¬ã³ããã¥ãŒã©ã«ãããã¯ãŒã¯LSTMã®å®è£ ãå«ãŸããŸãã 次ã«ããããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãIDEããã¹ããã¬ãŒã ã¯ãŒã¯ãç¶ç¶ççµ±åãªã©ããã¹ãŠåãããŒã«ã䜿çšããŠãæ¢åã®Javaã·ã¹ãã ãšã·ãŒã ã¬ã¹ã«çµ±åã§ãã次äžä»£ã®ãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã®å®è£ ãšåŒ·åã«åœ¹ç«ã¡ãŸãã æãéèŠãªããšã¯ã圌ããç§ãã¡ã®äººã ã«ãã£ãŠæžããããµããŒããããããšã§ãã ããªããJavaãã¡ã³ãªããããªãã¯ãã®èŠèŸŒã¿ã奜ãã§ã¯ãããŸãããïŒ