#31 ~オープンソースプロジェクトを支える言語たち~ 2021-08/25
Shin Tanimoto26 Java Years- ͜Ε͕ࠓͷJavaͩʂ #31 ʙΦʔϓϯιʔεϓϩδΣΫτΛࢧ͑Δݴޠͨͪʙ
View Slide
୩ຊ ৺ (Shin Tanimoto)ຊJavaϢʔβʔάϧʔϓ ϦʔμʔʢදʣJava Champion / Oracle Groundbreaker AmbassadorEverforth / Acroquest Technologyͷ2ࣾͰಇ͘ΤϯδχΞ෭ۀʹͯ֎෦ސʮϨϯλϧ͢ΔਓʯͳͲੜ͖͕͍BABYMETALͷϥΠϒࢀઓࣗݾհ2Twitter : @cero_tஶॻ : Javaຊ֨ೖ
ຊJavaϢʔβʔάϧʔϓ (JJUG)20074݄ʹൃͨ͠JavaͷϢʔβʔձ౦ژΛத৺ͱͨ͠ษڧձΧϯϑΝϨϯεͷ։࠵ʢݱࡏΦϯϥΠϯத৺ʣߨࢣݣग़ுΠϕϯτͳͲɺຊ֤ͷJavaίϛϡχςΟͱڠྗ͍ͯ͠Δنձһ 10,000໊Ҏ্݄ྫͷษڧձʹඦ໊ɺ2ճͷΧϯϑΝϨϯεʹ1,000໊Ҏ্͕ࢀՃJavaϢʔβʔάϧʔϓ3
Javaʁ
ݻ͍ݹ͍μα͍͑ɺJavaʁ5
੩తܕ͚ݴޠΦϒδΣΫτࢦJavaݻ͍ʁ6
੩తܕ͚ݴޠίϯύΠϧ࣌νΣοΫIDEͷࣗಈิͷԸܙΛड͚͍͢ΤϯλʔϓϥΠζͳͲͷେنϓϩδΣΫτʹ͘ΦϒδΣΫτࢦ۩ΑΓநΛΉۀػೳΛ࣮ݱ͢ΔͨΊͷ࣮ΑΓɺͦͷຊ࣭Λߟ͑Δ͜ͱΛΉਓ͕ଟ͍Javaݻ͍ʁ7
࠷ॳͷ͓ݟ͔͑Β26ɺJDK 1.0ͷϦϦʔε͔Β25Javaݹ͍ʁ8
࠷ॳͷ͓ݟ͔͑Β26ɺJDK 1.0ͷϦϦʔε͔Β25Pythonઌഐͷ4ίԼC++ઌੜͷ10ίԼޙํޓੑΛอͪଓ͚͍ͯΔϥΠϒϥϦͷαϙʔτͳͲআ͚ɺݹ͍ίʔυͰ͍͍ͩͨίϯύΠϧ͕௨Δ͠ಈ͘৽͍͠API͕Ճ͞Εͯɺݹ͍API͍͍ͩͨͦͷ··ΔJavaݹ͍ʁ9
จࣈྻஔϝιουJavaݹ͍ʁ10String str = “12345-12345-12345"; str.replace('1', 'x'); → "x2345-x2345-x2345"ɹ1จࣈ͚ͩࢦఆͯ͠શஔ str.replaceFirst("\\d+", "xyz"); → "xyz-12345-12345"ɹਖ਼نදݱͰࢦఆͯ͠1ճஔ str.replaceAll("\\d+", "xyz"); → "xyz-xyz-xyz"ɹਖ਼نදݱͰࢦఆͯ͠શஔ str.replace("123", "xyz"); → “xyz45-xyz45-xyz45"ɹจࣈྻͰࢦఆͯ͠શஔ
จࣈྻஔϝιουstr.replace(‘1’, ‘x’); → ࠷ॳ͔Β͋Δʢ1996ʣstr.replaceFirst(“\\d+”, “xyz”); → Java 1.4ͰՃʢ2002ʣstr.replaceAll(“\\d+”, “xyz”); →Java 1.4ͰՃʢ2002ʣstr.replace(“123”, “xyz”); → Java 1.5ͰՃʢ2004ʣޙํޓੑΛอͭͨΊɺݹ͍APIΛআ͠ͳ͍Javaݹ͍ʁ11
Javaμα͍ʁ12
μαͳ͍Θʂʂɹμα͍ݴ͏͕ͭμα͍Μ͡Όʂʂ😭Javaμα͍ʁ13
ؔܕͬΆ͘දهͰ͖ΔϥϜμࣜͷಋೖ2014ͱΊෳͷاۀஂମͷ߹ҙʹΑ༷ͬͯΛࡦఆ͢ΔΦʔϓϯͳϓϩηεJava Community ProcessʢJCPʣ༷ܾఆޙɺ֤͕࣮ࣾΛఏڙʢOracleɺIBMɺAzulɺBellSoftɺSAPͳͲʣ߹ҙܗ͕ඞཁͰ͋Γɺ·ͨޙํޓੑͷҡ࣋Λॏࢹ͢ΔͨΊɺ ৽͍͠จ๏ػೳͷఏڙɺଞͷݴޠʹൺͯগ͠ΕΔͦͷɺݎ࿚Ͱ͋ΓಛఆϕϯμͷϩοΫΠϯΛආ͚ΒΕΔJavaμα͍ʁ14
Java͍͍͡ΌΜ15😊
؆୯ͳྺ࢙ͱ༻ޠ
1995 : Sun MicrosystemsࣾʹΑΓॳ͓൸࿐1996 : JDK 1.0ϦϦʔεʢJDK = Java Development Kitʣ2006 : OSSԽ2010 : Oracle͕ࣾSun MicrosystemsࣾΛങऩ2014 : Java 8ͷϦϦʔεɻؔܕ෩ͷهड़͕Ͱ͖ΔΑ͏ʹͳΓɺվΊ͕ͯू·ΔΑ͏ʹͳͬͨ2017 : Java 9ͷϦϦʔεɻҎ߱͝ͱʹ࣍όʔδϣϯΛϦϦʔε͢ΔΑ͏มߋJavaͷ؆୯ͳྺ࢙17
JavaVM : Java Virtual MachineɻJavaΛಈ࡞ͤ͞ΔԾϚγϯɻJVMͱදه͢ΔJava࣮ߦՄೳͳόΠφϦΛ࡞ΔͷͰͳ͘ɺίϯύΠϧͨ͠ϑΝΠϧΛJavaVM্Ͱಈ࡞ͤ͞ΔํࣜJava SE : ͍ΘΏΔJavaຊମJDK : Java Development KitɻίϯύΠϥͳͲͷ։ൃπʔϧJRE : Java Runtime EnvironmentɻJavaVMඪ४ϥΠϒϥϦͳͲͷ࣮ߦڥݱࡏJRE୯ମͰͷఏڙ͞Εͳ͘ͳͬͨجૅ༻ޠ18
Java EEʢݱJakarta EEʣ : αʔόΞϓϦέʔγϣϯ͚ͷAPαʔόϥΠϒϥϦ܈ΛఏڙJava ME : ΈࠐΈ͚ͷJavaJVMݴޠ : JavaVMͷ্Ͱಈ࡞͢ΔJavaͰ࣮͞ΕͨݴޠScalaɺKotlinɺGroovyɺJRubyɺJythonͳͲTCK : Technology Compatibility KitɻJavaͷޓੑΛஅ͢ΔπʔϧΩοτ֤ࣾͷJava࣮TCKΛ௨ͬͯ͡ΊͯJavaͱೝఆ͞ΕΔOracleʢݩʑSun Microsystemsʣ͕ఏڙ͍ͯ͠Δجૅ༻ޠ19
JavaΛऔΓר͘OSS
ΤϯλʔϓϥΠζܥͰΘΕΔ͜ͱ͕ଟ͍ݴޠͰ͋Γͳ͕Βɺ2000ࠒ͔Β ։ൃڥϥΠϒϥϦɺϑϨʔϜϫʔΫͳͲʹOSSϓϩμΫτ͕ΜʹΘΕΔΑ͏ʹͳͬͨʢͪΖΜϓϩϓϥΠΤλϦͳϓϩμΫτͨ͘͞Μ͋ͬͨʣEclipse IDEɺStrutsɺSpringɺSeasar2ͳͲݱࡏJavaࣗମ͕OSSԽ͞Εɺෳͷاۀஂମ͔ΒOSS൛ͷJDK͕ఏڙ͞Ε͍ͯΔOSSΛऔΓר͘ΤίγεςϜ͕ख़͍ͯ͠Δݴޠͷͻͱͭͱݴ͑ΔJavaOSSͱڞʹาΜͰ͖ͨݴޠ21
OSSϓϩμΫτΛఏڙ͢Δ/͍ͯͨ͠ओͳஂମApache Jakarta Projectʢ1999-2011ʣEclipse Foundationʢ2002-ʣSpring Projectʢ2004ࠒ-ʣSeasarϑΝϯσʔγϣϯʢ2005-2019ʣJavaOSSͱڞʹาΜͰ͖ͨݴޠ22
Apache Jakarta Projectʢ1999-2011ʣଟ͘ͷJavaͷOSSϓϩμΫτΛఏڙ͍ͯͨ͠ஂମɻOSSϓϩμΫτͷड͚ࡼͱݴ͑ΔιʔείʔυόΠφϦΛμϯϩʔυͰ͖ΔॴApache TomatɺAntɺMavenɺLog4jɺStrutsɺCommonsɺLuceneͳͲ2000લͷJavaΤϯδχΞɺ͍͍ͩͨStrutsͰWebΞϓϦέʔγϣϯΛ࡞Γɺ Log4jͰϩάΛग़͠ɺCommonsϥΠϒϥϦΛ͍ɺAntͰϏϧυ͠ɺ Tomcat্ͰՔಇ͍ͤͯͨ͞Apache Jakarta Project23
Apache Jakarta Projectʢ1999-2011ʣJavaͷOSSͷΤίγεςϜͷجૅΛ࡞ͬͨஂମͱݴ͑Δ2011ʹׂΛऴ͑ͯΫϩʔζ͞ΕɺͦΕͧΕͷϓϩμΫτ͕ಠཱͨ͠Apache Jakarta Project24
IBM͕ࣾEclipse IDEΛOSSͱͯ͠ެ։ʢ2002ʣ2000ͷJava։ൃʹ͓͚ΔओྲྀͷIDEʢ౷߹։ൃڥʣͦΕ·ͰΤσΟλΛ͏ਓ͕ଟ͔ͬͨEclipseҎޙɺྑ͘ѱ͘JavaͷIDEOSS͔ͭແঈͰఏڙ͞ΕΔΠϝʔδ͕ఆணͳ͓ɺݱࡏJetbrainsࣾͷIntelliJ IDEA͕ओྲྀOSSͷίϛϡχςΟ൛ͱɺ༗ঈͷUltimate൛͕͋ΔEclipse IDE25
Eclipse Foundationʢ2004-ʣॳEclipse IDEͷཧ͕తͦͷޙɺJakarta EEɺOpenJ9ɺEclipse LinkɺEclipse CollectionsͳͲ ଞͷOSSϓϩμΫτఏڙ͢ΔΑ͏ʹͳͬͨApache Jakarta ProjectͷΘΓʹOSSϓϩμΫτͷड͚ࡼͱͳ͍ͬͯΔ໘͋ΔEclipse Foundation26
Spring Projectʢ2004ࠒ-ʣSpring FrameworkΛத৺ͱͨؔ͠࿈ϓϩμΫτͷఏڙSpring Frameworkࣗମ͕ଞͷϓϩμΫτͱܨ͕Δ͜ͱΛલఏͱͨ͠ΈΛ ఏڙ͢ΔͷͰ͋ΔͨΊɺ༷ʑͳ࿈ܞϓϩμΫτ͕ੜ·ΕͨݱࡏSpring͕Java։ൃͷओྲྀͱͳ͍ͬͯΔʢSpring BootʣSpring Project27
Spring Projectʢ2004ࠒ-ʣ։ൃͷओମͰ͋ͬͨSpringSourceࣾɺVMWareࣾʹങऩ͞ΕɺPivotalࣾʹҠ͞Εɺ࠶VMWareࣾʹങऩ͞ΕΔͳͲมભͨ͠Spring FrameworkΛ࠷ॳʹ࡞ͬͨRod JohnsonࢯSpring ProjectΛΕͯٱ͍ͦ͠ͷΑ͏ͳঢ়گͰਐԽ͠ଓ͚͍ͯΔ͜ͱ͕ɺOSSϓϩμΫτͷڧΈͷҰͭͩͱݴ͑ΔSpring Project28
SeasarϑΝϯσʔγϣϯʢ2005-2019ʣຊൃͷOSSϑϨʔϜϫʔΫSeasar2Λத৺ͱͨ͠ଟ͘ͷOSSϓϩμΫτΛఏڙS2DaoɺS2StrtusɺS2JSFɺSAStrutsɺS2JDBCͳͲ2000தظͷຊͷJavaΞϓϦέʔγϣϯ։ൃͰओྲྀͱͳͬͨSeasarΧϯϑΝϨϯε1000໊લޙͷࢀՃऀΛूΊΔҰେΠϕϯτͱͳ͍ͬͯͨ༏लͳJavaΤϯδχΞ͕ͨͪू͏ͱͳΓɺ࣌ͷίϛολͨͪݱࡏͰ֤Ͱ׆༂͍ͯ͠ΔSeasarϑΝϯσʔγϣϯ29
ओྲྀͱͳͬͨOSSϓϩμΫτͷػೳ͕ɺJavaͷඪ४ػೳͱͯ͠औΓࠐ·ΕΔྲྀΕ͕ੜ·ΕͨSpring Framework → CDIʢDIίϯςφʣHibernate → JPAʢDBΞΫηεʣScalaKotlinͳͲͷJavaVM্Ͱಈ͘ݴޠͷػೳ → Stream APIʢؔܕ෩ͷهड़ʣOSS͔Βඪ४30
༷ʑͳاۀஂମɺ·ͨJavaΤϯδχΞͨͪͷߩݙʹΑΓɺ JavaͷOSSΤίγεςϜख़͍͍ͯͬͨ͠·ͰJavaͦͷͷOSSԽ͞Εɺෳͷاۀஂମ͔Βఏڙ͞Ε͍ͯΔ͔͕ͯ͢͠͠ॱ෩ຬൕͩͬͨΘ͚Ͱͳ͘ɺաڈʹԿ͔େ͖ͳࣄ݅ى͖ͨOSSͱJava31
Javaք۾ͷOSSͰى͖ͨ
Java͕OSSԽ͢Δࡍɺଞ͕ࣾఏڙ͢Δ߹ʹিಥ͢Δ͜ͱ͋ͬͨաڈʹى͖ͨApache Harmonyࣄ݅Androidࣄ݅Googleૌুࣄ݅Javaք۾ͷOSSͰى͖ͨ33
લఏͱͳΔഎܠͱͯ͠ɺJavaΛఏڙ͢ΔSun Microsystems ʮJavaʹΑ͘ࣅ͍ͯΔ͕ݫີʹJavaͱݺͳ͍ͷʯ͕ʮJavaʯΛ໊Δ͜ͱΛڋΜͩJavaͷஅΛ͙ͨΊʮWrite Once, Run AnywhereʯͷϙϦγʔΛकΔͨΊJavaք۾ͷOSSͰى͖ͨ34
2006ɺJavaͷOSS࣮ͱͯ͠ʮApache Harmonyʯ͕ఏڙ͞ΕͨApache License 2.0Ͱఏڙʢվมͨ͠ࡍͷιʔείʔυͷެ։͕ٛͳ͍ʣ˞Ҏ߱AL-2.0ͱදه͢Δ͔࣌͠͠ɺSun MicrosystemsApache HarmonyͷTCKͷఏڙΛڋ൱TCKΛ௨͍ͯ͠ͳ͍࣮JavaͱೝΊΒΕͳ͍Apache HarmonyΈࠐΈͰಈ࡞͕ͨ͠ɺ࣌ͷTCKΈࠐΈʹద༻Ͱ͖ΔJavaΛର֎ͱ͍ͯͨ͠ಉ͘͡2006ɺSun Microsystems͕Java SEΛOSSԽʢݱࡏͷOpenJDKʣGPLv2Ϋϥεύεྫ֎͖ͭʢվมͨ͠ࡍʹιʔείʔυͷެ։͕ٛ͋Δʣ˞Ҏ߱GPLv2ͱදه͢ΔApache harmonyࣄ݅35
2007ɺSun MicrosystemsTCKΛOSSͱͯ͠ެ։ͨ͠ͷͷ OSS൛ͷJavaϥΠηϯε͕GPLv2ͷͷͷΈΛରͱͨ͠Apache HarmonyAL-2.0ͩͬͨͨΊର֎࣮࣭తʹSun Microsystems͕OSSԽͨ͠JDKͷΈ͕ରͱͳ͍ͬͯͨܗવApache߅ٞ͠ɺ֤ॴͰ͕ٞى͖ͨ݁ہApache HarmonyJavaͱͯ͠ೝΊΒΕͳ͍··ɺ2010ʹ։ൃΛऴྃͨ͠Apache harmonyࣄ݅36
2007ʹGoogle͕AndroidΛൃදAndroidApache HarmonyΛϕʔεͱͨ͠Dalvik VMΛࡌJavaʢతͳͷʣͰAndroidΞϓϦέʔγϣϯΛ։ൃͰ͖ΔͪΖΜTCK௨͍ͬͯͳ͍ιʔείʔυͷ֦ுࢠ.java͕ͩɺTCKΛ௨͍ͬͯͳ͍ͷͰJavaͰͳ͍Sun MicrosystemsJavaͷஅΛট͘ͱͯ͠ɺAndroidͷJavaʢతͳͷʣΛඇAndroidࣄ݅37
࣌ͷܞଳిJava ME͕ࡌ͞Ε͍ͯͨຊͰυίϞͱιϑτόϯΫ͕ɻauBREWʢC++ʣApple͕iPhoneΛϦϦʔεͯ͠ͱͳΓɺGoogleٸ͍ͰޙΛ͏ඞཁ͕͋ͬͨAndroid͚ʹJavaVMΛಠࣗվม͢Δඞཁ͕͋Γɺιʔείʔυͷެ։ٛͷ͋ΔGPLv2ͷOpenJDKΛ͍ͮΒ͔ͬͨͨΊɺެ։ٛͷͳ͍AL-2.0ͷApache HarmonyΛϕʔεʹͨ͠ʢਪଌʣGoogleͰ͖ͪΜͱTCKΛ௨͖ͩ͢ͱ͍͏ҙݟग़͍͕ͯͨ Apache HarmonyϕʔεͳͷͰ௨ΓΑ͏͕ͳ͔ͬͨAndroidࣄ݅38
20104݄ʹOracle͕Sun MicrosystemsΛങऩ20108݄ʹOracle͕GoogleΛૌুAndroidͷJavaʢతͳͷʣ͕Javaͷஶ࡞ݖΛ৵͍ͯ͠Δͱ͍͏༰ͰૌুཌҎ߱ɺGoogleJavaͷ࣍ΧϯϑΝϨϯεJavaOneʹࢀՃ͠ͳ͘ͳΓɺ JavaͷOSSϓϩμΫτͷఏڙʹফۃతʹͳͬͨAndroid͕αϙʔτ͢ΔJavaͷόʔδϣϯ67Ͱఀࢭͨ͠ʢؔܕ෩ͷهड़͕Ͱ͖ͳ͍ʣGoogleૌুࣄ݅39
ૌুͷ݁ಛڐݖ৵ → ͍ͯ͠ͳ͍Ͱ֬ఆJavaϥΠϒϥϦͷ࣮ίʔυΛແஅෳ → ͍ͯ͠Δ͕͔ᷮ͘͝ͳͷͰഛঈۚ0ԁJava APIͷஶ࡞ݖ৵ → ͍ͯ͠Δ͕ϑΣΞϢʔεͩͱ֬ఆܞଳి͕εϚʔτϑΥϯʹஔ͖ΘΓɺJava ME͕ΘΕͳ͘ͳͬͨ͜ͱͰ Sun MicrosystemsOracleϞόΠϧʹ͓͚ΔJavaͷϏδωεΛࣦ͏͜ͱͱͳͬͨGoogleૌুࣄ݅40
ݱࡏɺOpenJDK͕།ҰͷOSS൛Javaͱͳ͍ͬͯΔApache HarmonyIcedTeaͳͲͷOSS JavaϓϩδΣΫτͯ͢OpenJDKʹ߹ྲྀͨ͠2016ʹAndroidOpenJDKϕʔεͱͳΓɺJava8ʹରԠͨͨͩͦ͠ͷࠒʹAndroidΞϓϦ։ൃͷओྲྀJava͔ΒKotlinʹҠ͍ͬͯͬͨJava67Ͱ࣮ߦͰ͖ɺϞμϯͳهड़Ͱ͖ΔͨΊOpenJDK41
༗ঈԽʁ
Java͜Ε·Ͱ2ʙ3͝ͱʹ৽͍͠όʔδϣϯ͕ग़͍͕ͯͨ 2017ͷJava 9Ҏ߱͝ͱʹϦϦʔε͞ΕΔ͜ͱͱͳͬͨ৽ػೳ͕ἧ͔ͬͯΒϦϦʔε͢ΔͷͰͳ͘ ͝ͱʹؒʹ߹ͬͨػೳͷΈΛ࠾༻ͯ͠ϦϦʔε͢Δଞͷػೳ͕·ͩͰ͖͍ͯͳ͍͔Βɺͱ͍͏ཧ༝Ͱ৽ػೳͷϦϦʔε͕ ΕΔ͜ͱΛ͙ͨΊJavaͷϦϦʔεαΠΫϧͷมߋ43
JavaΤϯδχΞ͕Javaͷ։ൃڥΛߏங͢Δࡍɺ ओྲྀOracleʢݩʑSun Microsystemsʣ͕ఏڙ͢ΔJDK/JREΛ༻͍͍ͯͨOracle͜ͷOracle JDKͷແঈఏڙΛதࢭ͠ɺJava 9Ҏ߱OpenJDKͷΈΛ ແঈఏڙ͢ΔΑ͏ํΛมߋͨ͜͠Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղͷେݩOracle JDKͷແঈऴྃ44
Sun/Oracle JDKͷແঈαϙʔτظؒ࣍ͷόʔδϣϯ͕ग़ͨ͋ͱ1ʙ2ఔͩͬͨྫ͑Java 720117݄ϦϦʔεɻແঈαϙʔτ20154݄·ͰJava 820143݄ϦϦʔε͜͜Ͱ͍͏ʮແঈαϙʔτظؒʯͱʮແঈΞοϓσʔτ͕ఏڙ͞ΕΔظؒʯΛࢦ͢ಛʹηΩϡϦςΟύονͳͲ͋ΔͨΊɺແঈΞοϓσʔτ͕ఏڙ͞ΕΔ͜ͱॏཁ༗ঈͰ͋ΕͬͱظؒͷαϙʔτΛड͚ΒΕΔJava 7͔ΒJava 8ͷҠߦ1ʙ2͘Β͍ͷ༛༧͕͋Δͱݴ͑ΔJDKͷαϙʔτظؒ45
Oracle OpenJDKͷແঈαϙʔτظؒʮ࣍ͷόʔδϣϯ͕ग़Δ·Ͱʯͭ·Γ͔ؒ͠Ξοϓσʔτ͕ఏڙ͞Εͳ͍ޙʹ࣍ͷόʔδϣϯʹҠߦ͢Δඞཁ͕͋Δ͜Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղʹഥंΛֻ͚ͨOpenJDKͷαϙʔτظؒ46
֤͔ࣾΒOpenJDKͷϏϧυʢ͍ΘΏΔσΟετϦϏϡʔγϣϯʣ͕ఏڙ͞ΕΔΑ͏ʹͳͬͨRed Hat OpenJDKɺEclipse AdoptiumʢچAdoptOpenJDKʣɺAmazon CorrettoͳͲ֤ࣾͷOpenJDK3͝ͱʹग़ΔόʔδϣϯʹLTSʢLong Term SupportʣΛఏڙOpenJDK 8ɺ11ɺ17ɺ23ɺɺɺແঈαϙʔτظ༷ؒʑ͕ͩɺͨͱ͑AdoptiumͷOpenJDK 82026·Ͱेʹ͍ແঈαϙʔτظ͕ؒ͋Δͱݴ͑Δ༷ʑͳOpenJDK47
͍·ͷओྲྀϓϥοτϑΥʔϜͰαϙʔτ͞Ε͍ͯΔOpenJDKΛར༻͢Δ͜ͱRed Hat Enterprise LinuxΛ͏ͳΒRed Hat OpenJDKAWSͰ͏ͳΒAmazon CorrettoAzureͰ͏ͳΒMicrosoft Build of OpenJDKֶशௐࠪ༻ͳΒαϙʔτظؒͷ͍Oracle OpenJDKͰߏΘͳ͍֤͕ࣾఏڙ͢ΔOpenJDKʹ͓͍ͯগͣͭ͠ఏڙ͢Δπʔϧ͕ҧͬͨΓɺద༻͞ΕΔύον͕ҟͳΔ͜ͱ ͋ΓಘΔ͕ɺݩͱͳΔOpenJDKಉҰͰ͋ΔͨΊͲΕΛͬͯ99%ಉ͡ɻίΞػೳ100%ಉ༷͡ʑͳOpenJDK48
·ͱΊ: ͜Ε͔ΒͷJava
͜ͷΑ͏ͳឯ༨ۂંΛܦͯɺOSS൛ͷJavaOpenJDKͱͯ͠ҰຊԽ͞ΕͨෳͷاۀஂମɺݸਓʹΑΓ࣮ɺϝϯςφϯε͞Ε͍ͯΔͪͳΈʹຊʹOpenJDKͷίϛολ͕͍ΔΑݱʹ͓͍ͯݴޠϓϥοτϑΥʔϜ͕OSSͰ͋Δ͜ͱͨΓલͷΑ͏ʹײ͡Δ͕ JavaͷΑ͏ʹ͍ྺ࢙͕͋ͬͯڊେͳΤίγεςϜΛ͏ͷΛ OSSจԽͷਁಁख़ͱڞʹOSSԽ͢Δͱ͜Ζʹ૬ͳྗ͕͋ͬͨͱݴ͑ΔOSSʹͳͬͨJava50
GraalVMʹΑΔωΠςΟϒΠϝʔδͷ࡞ίϯύΠϧͨ͠ͷΛJavaVM্Ͱ࣮ߦ͢ΔͷͰͳ͘ ίϯύΠϧͯͦ͠ΕͧΕͷOS͝ͱʹ࣮ߦՄೳͳόΠφϦΛ࡞Δىಈ࣌ؒͷॖɺϝϞϦ༻ྔͷݮϊϯϒϩοΩϯάॲཧܰྔεϨουʹΑΔฒྻॲཧͷվળReactorRxJavaͳͲΛ༻͍ͨϦΞΫςΟϒϓϩάϥϛϯάʢOSSϓϩμΫτʣProject LoomʹΑΔܰྔεϨουݶఆܧଓͷఏڙʢJavaͷඪ४ػೳʹೖΔ༧ఆʣ࠷ۙͱࠓޙͷJavaͷτϨϯυ51
͝ͱͷϦϦʔεʹͳΓɺҎલΑΓػೳՃͷεϐʔυ͕૿ͨ͠Flight RecorderʢJavaVMͷϝτϦΫεใΛه͢Δɻ༻ػೳͩͬͨͷ͕OSSԽʣswitchࣜʢswitch͕จ͚ͩͰͳࣜ͘ͱͯ͑͠ΔΑ͏ʹͳΓɺΛฦͤΔʣςΩετϒϩοΫʢ͍ΘΏΔώΞυΩϡϝϯτɻෳߦͷจࣈྻΛએݴͰ͖ΔʣϨίʔυܕʢσʔλܕʹ͍ۙɻΠϛϡʔλϒϧͳσʔλΫϥεΛ༰қʹ࡞ΕΔʣύλʔϯϚονʢΦϒδΣΫτͷܕʹΑͬͯذ͢ΔʣػೳՃͷߴԽ52
ܧଓతͳֶश͕ඞཁݹ͍ࣝͷ··ͰϓϩάϥϛϯάͰ͖Δ͕ɺͦΕ͕ਖ਼͍͠Θ͚Ͱͳ͍৽͍͠ػೳ͕ΘΕͨιʔείʔυΛಡΊͳ͍ͱࠔΔͰ͠ΐ͏ܧଓతͳֶशΛଅ͢ίϛϡχςΟͷॏཁੑ͕૿͢ఆظతͳษڧձใൃ৴ͳͲػೳՃͷߴԽͷରԠ53
ܧଓతͳόʔδϣϯΞοϓ͕ඞཁͤΊͯ3͓͖ʹϦϦʔε͞ΕΔLTS൛ʹै͍ͤͨ͞୯७ʹJavaͷόʔδϣϯ͚ͩͰͳ͘ɺपลϥΠϒϥϦϑϨʔϜϫʔΫɺ ϛυϧΣΞͷόʔδϣϯΞοϓ͕ඞཁͱͳΔέʔεଟ͍όʔδϣϯΞοϓʹै͢ΔͨΊͷCI/CDࣗಈςετͷΈ͕ෆՄܽDevOpsվળɺͻ͍ͯΤϯδχΞ৫ͷ࣭ΛߴΊΔʢόʔδϣϯΛԘ௮͚ʹ͢Δͱ͍͏બࢶΞϦͰ͚͢ͲʣϦϦʔεαΠΫϧͷߴԽͷରԠ54
JavaOSSจԽͱڞʹาΈɺJavaࣗOSSԽ͞Ε༷ͨʑͳOSSϓϩμΫτ͕ੜ·ΕɺJavaඪ४ʹऔΓࠐ·ΕΔྲྀΕੜ·Εͨଟ͘ͷ৫ݸਓͷߩݙʹࢧ͑ΒΕ͍ͯΔ։ൃݩͷاۀ͕ങऩ͞ΕͯɺOSSϓϩμΫτาΈ͕ࢭ·Βͳ͍ϦϦʔε͕ߴԽ͞ΕɺػೳՃ͕ૣ͘ͳͬͨ։ൃίϛϡχςΟϢʔβʔάϧʔϓͳͲͷॏཁੑࠓޙ૿͍ͯ͘͠·ͱΊ55
ຖ݄ͷJJUGφΠτηϛφʔ࣍ճ9/29(ਫ)༧ఆ - Java 17ϦϦʔεه೦ηϛφʔʹ2ճͷJJUG CCC࣍ճ11/21()URL: https://www.java-users.jp/Twitter: @JJUGJJUGʹࢀՃ͠Α͏ʂ56