Javaã¨å½Javaã®è©±ã
ããã®è©±ããã³ã¡ã«æ¸ããã¨ããã4000åã¯å ¥ããªãã£ãã
Microsoft Java VM
ãã¤ã¦ã® WIndows ã«ã¯ MS 製㮠Java VM ãæè¼ããã¦ãã¾ããã
å¤ä»£ã® Java ã¯ãWrite once, run anywhereããæ²ãã¦ããéããã¯ã©ã¤ã¢ã³ããµã¤ãã§ Java ã¢ãã¬ããã¨ãã¦å©ç¨ãããã®ã主æµã§ããï¼ãµã¼ãã¼ãµã¤ãã§åãããã«ãªã£ã¦ãç価ãçºæ®ããæããããã¾ãï¼ã
ããã Java VM ã®ä»æ§ã¯ãããã©ã¼ãã³ã¹ã«ã¤ãã¦ã®è¨è¿°ã¯ææ§ã«ãªã£ã¦ãããOS ãã¨ã®å®è£ ã®éãã«ãã£ã¦ãå®è¡é度ã«é¡èãªå·®ãããã¾ããã
Windows ã® Sun ç´æ£ã® Java VM ã¯æ§è½ãæªãã£ããããMS ã¯ç¬èªã® Java VM ãéçºããInternet Explorer ã«ãã³ãã«ãã¾ããã調åã«ä¹ã£ã MS 㯠Windows GUI ã©ã¤ãã©ãªãå©ç¨ã§ãããSun Java VM ã¨äºææ§ã®ãªã Java çµ±åéçºç°å¢ Visual J++ ããªãªã¼ã¹ããããã¦ãã¾ããã
ããã 1997å¹´ã«ãJava ã®äºææ§ãç ´å£ãããã¨ãã¦è¨´è¨ã«çºå±ã2004å¹´ã«åè§£ã«è³ãã¾ããããç¾å¨ MS ã® Java VM ã¯é å¸ãããªããªãã¾ããã
Visual Studio 2015 ã§ Android ããµãã¼ããããJava ã¢ãããåã³æ¸ããããã«ãªã£ãã¨ããJ++ ã®é¢å½±ãæãåºãã人ã¯å°ãªããªãã¯ãã§ããJ# ã¯ç¥ããã§ãã
Apache Harmony
Apache 財å£ãéçºãé²ãã¦ããããªã¼ãã³ã½ã¼ã¹ãã©ã¤ã»ã³ã¹ããªã¼ãª Java å®è£ ã§ããã
ãèªç±ãª Javaããæ±ãã IBM ã IntelãGNU Classpath ã«é¢ãã£ã¦ããããªã¼ã½ããã¦ã§ã¢éçºè ãã¡ãä¸åã«ä»ãã¦éçºãé²ãã夢ã®ããã¸ã§ã¯ãã§ããã
ããã¸ã§ã¯ãã®éå§ä»¥æ¥ãå¤ãã®ä¼æ¥ãå£ä½ãJava SEã®ãªã¼ãã³ã½ã¼ã¹å®è£ ã«å¯¾ããè³åã示ããååãç³ãåºã¦ãããä¾ãã°IBMãã³ã¢ã»ã¯ã©ã¹ãã¯ã©ã¹ã©ã¤ãã©ãª/VMã®ã¤ã³ã¿ãã§ã¼ã¹ãEclipseãã©ã°ã¤ã³çã®å®è£ ã¸ã®ååãç³ãåºã¦ããã»ããIBM developerworksã¯è©ä¾¡ã©ã¤ã»ã³ã¹ã§ã®JVMã®æä¾ã«åæãã¦ãããã¾ããIntelã¯ã»ãã¥ãªãã£ãèªè¨¼ç³»ãæ£è¦è¡¨ç¾ãRMIãªã©ã®å®è£ ã«ååããã¨è¡¨æãã¦ããããªã¼ãã³ã½ã¼ã¹å£ä½ã§ã¯ã¯ã©ã¹ã©ã¤ãã©ãªã®å®è£ ãè¡ã£ã¦ããGNU Classpathããã¸ã§ã¯ãããApache Harmonyã¨ã®ææºãéå§ãã¦ããããã®ä»å¤ãã®ååãå¾ãçµæãç¾å¨ã¯ããã¸ã§ã¯ãã®å¤§é¨åã«ããã¦å®éã«åä½ããã³ã¼ããéã¾ã£ã¦ããã¨ããã
JavaOne 2006 - ãªã¼ãã³ã½ã¼ã¹ã®Javaå®è£ ãApache Harmonyãã«æå¾
JavaOne ã¨ããã®ã¯ Sun ã主å¬ãã¦ãã Java ã®ç¥å ¸ã§ããSun ã®ãèå ã§ããã¸ã§ã¯ãã®é²æãå ¬è¡¨ããã¦ãã Apache Harmony ã§ãããæ²åçãªæ«è·¯ã辿ãã¾ãã
Sun ã JSPAï¼Java Specification Participation Agreementï¼ã®ä¾ä¸ãæå¦ãããããJava ãã¯ããã¸äºæããã (Technology Compatibility Kit) ã¨å¼ã°ãããJava äºæãåä¹ãè³æ ¼ãå¾ãããã®ãã¹ãããåãããã¾ããã§ããã
Apache 財å£ã¯ Sun ã«å ¬éæ¸ç°¡ãéãã¾ããããSun ããã®è¿çã¯ããã¾ããã§ããã
ããã¦ãSun èªã Java ããªã¼ãã³ã½ã¼ã¹åãã OpenJDK ããã¸ã§ã¯ããå§ããã¨ãããã¾ã§ Apache Harmony ã«é¢ãã£ã¦ããéçºè ãã¡ã¯æ¤éããOpenJDK ã¸ç§»è¡ãã¯ããã¾ããã
IBM ã Appleï¼å½æã® Apple 㯠Cocoa Java Bridge ãªã© Java ãã¯ããã¸ã«ç±å¿ã ã£ãï¼ã OpenJDK ã¸ã®åå ã表æãããã¨ã§ãApache Harmony ããã¸ã§ã¯ãã¯äºå®ä¸çµçµãã¾ããã
Android
Apache Harmony ã¯ããJava äºæããåä¹ããã¨ãã§ããªãå½ Java ã¨ãã¦å¤©å½ãè¿ããã¯ãã®ããã¸ã§ã¯ãã§ããã
ãã®ææãå©ç¨ããã®ã Google ã§ããAndroid ã®å½åã® Java æ¨æºã©ã¤ãã©ãªã¯ Apache Harmony ãæ¡ç¨ããã¦ããããã®ãããæ¬ç©ã® Javaãã¨æåãéãã¾ãããè²§å¼±ãªç«¯æ«ã§åä½ãããããã«æ©è½ãå¶ç´ãã Dalvik VM ä¸ã§åä½ãã¦ããªãããJIT ããªãæ§è½é¢ã§å¤§ããå£ã£ã¦ããããã¾ããã
æ´å²ã®æµããè¦ãã¨ãSun ãè²·åãã Oracle ããJava ã®äºææ§ãç ´å£ãããã¨ã㦠Google ã¨è¨´è¨ã«è³ãã®ã¯çåã®æ¹ãå¼·ãã§ãããªããªã¼ãã³ã½ã¼ã¹æåã¸å¤ããã¤ã¤ãã£ã Sun ã®ææã失ãããã®ããã¾ã Google ã MS ã®åã£ãè¡åããªãããã®ãã¨ããªã¹ã¯ãç¯ããã®ãã
API ã®ãã§ã¢ã¦ã¼ã¹ãèªããããä»åã®è£å¤çµæãä¸ã¤ã®å¥æ©ã¨ãªã£ã¦ããããã¨ãé¡ãã°ããã§ãã
Android N ç¾å¨ã® Java æ¨æºã©ã¤ãã©ãªã¯ Apache Harmony ãæ¨ã¦ãOpen JDK ãæ¡ç¨ãã¦ãã¾ããDalvik VM 㯠ART ã©ã³ã¿ã¤ã ï¼Java ã®ã¯ã©ã¹ãã¡ã¤ã«ããDalvik VM åãã«å¤æã㦠APK åããå¾ãæ´ã«ç«¯æ«ä¸ã§ AOT ã³ã³ãã¤ã©ãèµ°ãããã¤ãã£ããªã³ã¼ãã«å¤æãã¦ããï¼ã«ç½®ãæãããã¾ããã
ãã®ä»ã® Java
Oracle Java VM ã¯å¯ä¸çµ¶å¯¾ãª Java VM ã§ã¯ããã¾ããã
ãã¨ãã°ãIBM ã® WebSphere ã§å©ç¨ããã¦ãã IBM J9 VM ã®ããã«ãå ¬å¼ã«ã©ã¤ã»ã³ã¹ä¾ä¸ããã Java VM ãåå¨ãã¦ãã¾ãã
ã¬ã©ã±ã¼æä»£ã«æµè¡ã£ãã¢ããªã¯ Java ME ã§æ¸ããã¦ãããSun ã¨ã®ã©ã¤ã»ã³ã¹å¥ç´ãç· çµããã¦ãã¾ããã
ãããã®ä¸ã«ã¯ãMIDPï¼Mobile Information Device Profileï¼ã«å¾ã£ã¦ãã EZã¢ããªã S!ã¢ããªãåå¨ãã¦ãã¾ãããã彿䏻æµã ã£ã iã¢ããªã¯ DoJa ãããã¡ã¤ã«ã¨ããäºææ§ã®ãªã Java ã§åä½ãã¦ãã¾ããããã ã©ã¤ã»ã³ã¹æéãå¾´åããã¦ããã®ã§éäºæã®å½ Java ã§ãããæ£å¼ãªãµãã»ããã¨ããæ±ãã§ããã
æ´å²ã¨ã® diff
Android ç»å ´ä»¥åã¾ã§ã¯ãæ¥çé¢ä¿è ãçååãã¦ãããOracle ã¨ããã©ã JCP ã«åã£ã¦ä»æ§çå®ãé²ãã¦ãã¾ããã
MS ã®ãã㪠Java ã®ç ´å£è 㯠Android 以åã«ããã¾ããã
仿§ãçå®ããéã«ã¯ãRI (Reference Implementation) (ãªãã¡ã¬ã³ã¹å®è£ ) 㨠TCK (Technology Compatibility Kit) (ãã¹ã群) ãåæã«ç¨æãã¾ããããã¯ãçå®ãã仿§ãç¾å®çã«å®è£ å¯è½ã§ãããã©ããã確èªãããããããã³ã第ä¸è ã仿§ã«åã£ã¦å®è£ ããããªã£ãã¨ãã«ãã®å®è£ ã®äºææ§ã確èªã§ããããã«ããããã§ãã
API ãã¶ã¤ã³ã®äºææ§ãæ ä¿ããä¸ã§ãTCK ãå ¬éãããã¨ã®éè¦æ§ã¯ããPractical API Design: Confessions of a Java Framework Architectï¼API ãã¶ã¤ã³ã®æ¥µæï¼ããªã©ã§ã説ããã¦ãã¾ãããOracle ã¯èªç¤¾ã®ãã¸ãã¹ã®é½åã§ TCK ã®å©ç¨ã«å¶ç´ãæãããæ£å½ãª Javaãã¨ãã¦èªå®ãã対象ãé¸å¥ãã¦ãã¾ãã
ããã Oracle ã®ãã¸ãã¹ã¢ãã«ã ã¨æãã®ã§ããããããªãã§ããã
䏿¹ Oracle ã¯ãJCP ã«åããã¨ãã¹ãã¼ããéã㦠Java API ã®ä»æ§çå®ä½æ¥ããã¦ãã¾ããæéã¯ãããã¾ãããJava ã®æ°ãã¼ã¸ã§ã³ã§è¿½å ãããè¨èªä»æ§ã API ã®è¨è¨ãæ´ç·´ããã¦ããã®ã¯ãããããçç±ã§ãã
ãã¤ã¦ OpenJDK ãæ¯ãã¦ãã Apple ã IBM ãä»ã¯ Swift ãçãä¸ããæ¹åã«ãã£ã¦ãã¾ãããJava ã®é²åãé ããªã£ãã®ã¯ä»æ§çå®ãç¶¿å¯ã¨ããããããæ¥çã®å·¨äººã® Java é¢ããé²ãã çµæãªããããªãããªã¼ã¨å人çã«ã¯æã£ã¦ããã®ã§ãããã©ããªãã§ãããï¼
JCP ã«ã¤ãã¦ã¯ã¾ã£ãã詳ãããªãã®ã§ãçå¤ããªã®ããã
Oracle æä¾ã® JDK / JRE ã«æ¯ã¹ãAndroid ã®å質ã¯ã©ãã§ããããï¼ ãã¡ãã¯ãå¹³æ°ã§ã´ãã¯ãºã®ãã㪠API ãå ¬å¼ API ã¨ãã¦è¿½å ããã¾ãã
Android ã® API ã®åè³ªãæªãã®ã¯é¢ä¿ãªãã ãï¼ï¼ï¼ï¼
å¾å¹´ã® HttpURLConnection ã¨ã SecureRandom ã¨ãé ·ãã£ãã§ããããFragment ãé ·ãï¼Fragment in Fragment ã®éã¯æ·±ãï¼ã
TCK ã®ãããªäºææ§ç¶æã®ããã®ãã¹ãã»ãããããã¾ãããããString.indexOf(String,int) ã¨ããåºæ¬ API ã«å®è£ ä¸å ·åããã£ã¦ãããããäºåã«æ¤åºã§ããã«ãªãªã¼ã¹ãè¡ããããã¨ãããã¾ãã
ç¾å¨ã®æ¨æºã©ã¤ãã©ãªã®å®è£ 㯠OpenJDK ã§ãã®ã§ãå®å¿ãã ãããN 以éã ãã§ããï¼
ãAndroid æ°ãã¼ã¸ã§ã³ã®çºè¡¨ãããã¨æããããGoogle 主å¬ã®æ¬¡ã®ã¤ãã³ããæ¥½ãã¿ï¼ãã¨æã£ã¦ããæç¹ã§ãGoogle ã«æ¯ãåããã¦ãããã¨ã«æ°ä»ãã¹ãã§ãã
ä»ã§ã¯ Google I/O ã WWDC ãçãä¸ãã£ã¦ãã¾ããããã¤ã¦ã¯ Java ã®ç¥å ¸ã§ãã JavaOne ãæ´»çºã§ããã
ã¨ããã§ããã¾ãç¥ããã¦ããªãï¼ï¼ï¼ã§ãããJavaOne ã WWDC ã¯æ¥æ¬ã§ãéå¬ããã¦ãã¾ãããï¼WWDC ã¯ä¸çéçºè ä¼è°ã®ç¥ç§°ãªã®ã§ãæ¥æ¬èªç㯠JDC ã§ããï¼
æå¾ã«éå¬ããã JDC ã®å¤§ããªãããã¯ã¯ããCocoa on Windows ãã©ã¤ã»ã³ã¹ããªã¼ã§æä¾ãï¼å®ç¾ããªãã£ãï¼ã ã£ãã®ã§ãããã«ããã«ãªæä»£ã ã£ããã¨ããã®ã伺ããã§ãããã
ã¤ã¾ãã¨ãããSun ã Apple ã«æ¯ãåããã¦ããã®ããGoogle ã Apple ã«æ¯ãåãããããã«ãªã£ãã ãã§ããã