Upgrade to Pro — share decks privately, control downloads, hide ads and more …

26 Java Years

26 Java Years

#31 ~オープンソースプロジェクトを支える言語たち~
2021-08/25

Shin Tanimoto

August 25, 2021
Tweet

More Decks by Shin Tanimoto

Other Decks in Technology

Transcript

  1. Shin Tanimoto
    26 Java Years


    - ͜Ε͕ࠓͷJavaͩʂ
    #31 ʙΦʔϓϯιʔεϓϩδΣΫτΛࢧ͑Δݴޠͨͪʙ

    View Slide

  2. ୩ຊ ৺ (Shin Tanimoto)


    ೔ຊJavaϢʔβʔάϧʔϓ Ϧʔμʔʢ୅දʣ


    Java Champion / Oracle Groundbreaker Ambassador


    Everforth / Acroquest Technologyͷ2ࣾͰಇ͘ΤϯδχΞ


    ෭ۀʹͯ֎෦ސ໰΍ʮϨϯλϧ͢΂ΔਓʯͳͲ


    ੜ͖͕͍͸BABYMETALͷϥΠϒࢀઓ
    ࣗݾ঺հ
    2
    Twitter : @cero_t
    ஶॻ : Javaຊ֨ೖ໳

    View Slide

  3. ೔ຊJavaϢʔβʔάϧʔϓ (JJUG)


    2007೥4݄ʹൃ଍ͨ͠JavaͷϢʔβʔձ


    ౦ژΛத৺ͱͨ͠ษڧձ΍ΧϯϑΝϨϯεͷ։࠵ʢݱࡏ͸ΦϯϥΠϯத৺ʣ


    ߨࢣ೿ݣ΍ग़ுΠϕϯτͳͲɺ೔ຊ֤஍ͷJavaίϛϡχςΟͱڠྗ͍ͯ͠Δ


    ن໛


    ձһ਺ 10,000໊Ҏ্


    ݄ྫͷษڧձʹ͸਺ඦ໊ɺ೥2ճͷΧϯϑΝϨϯεʹ͸1,000໊Ҏ্͕ࢀՃ
    JavaϢʔβʔάϧʔϓ
    3

    View Slide

  4. Javaʁ

    View Slide

  5. ݻ͍


    ݹ͍


    μα͍
    ͑ɺJavaʁ
    5

    View Slide

  6. ੩తܕ෇͚ݴޠ


    ΦϒδΣΫτࢦ޲
    Java͸ݻ͍ʁ
    6

    View Slide

  7. ੩తܕ෇͚ݴޠ


    ίϯύΠϧ࣌νΣοΫ΍IDEͷࣗಈิ׬ͷԸܙΛड͚΍͍͢


    ΤϯλʔϓϥΠζͳͲͷେن໛ϓϩδΣΫτʹ޲͘


    ΦϒδΣΫτࢦ޲


    ۩৅ΑΓ΋ந৅Λ޷Ή


    ۀ຿΍ػೳΛ࣮ݱ͢ΔͨΊͷ࣮૷ΑΓɺͦͷຊ࣭Λߟ͑Δ͜ͱΛ޷Ήਓ͕ଟ͍
    Java͸ݻ͍ʁ
    7

    View Slide

  8. ࠷ॳͷ͓໨ݟ͔͑Β26೥ɺJDK 1.0ͷϦϦʔε͔Β25೥
    Java͸ݹ͍ʁ
    8

    View Slide

  9. ࠷ॳͷ͓໨ݟ͔͑Β26೥ɺJDK 1.0ͷϦϦʔε͔Β25೥


    Pythonઌഐͷ4ίԼ


    C++ઌੜͷ10ίԼ


    ޙํޓ׵ੑΛอͪଓ͚͍ͯΔ


    ϥΠϒϥϦͷαϙʔτͳͲআ͚͹ɺݹ͍ίʔυͰ΋͍͍ͩͨίϯύΠϧ͕௨Δ͠ಈ͘


    ৽͍͠API͕௥Ճ͞Εͯ΋ɺݹ͍API͸͍͍ͩͨͦͷ··࢒Δ
    Java͸ݹ͍ʁ
    9

    View Slide

  10. จࣈྻஔ׵ϝιου
    Java͸ݹ͍ʁ
    10
    String 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"ɹจࣈྻͰࢦఆͯ͠શஔ׵

    View Slide

  11. จࣈྻஔ׵ϝιου


    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

    View Slide

  12. Java͸μα͍ʁ
    12

    View Slide

  13. μαͳ͍Θʂʂɹμα͍ݴ͏΍͕ͭμα͍Μ͡Όʂʂ😭
    Java͸μα͍ʁ
    13

    View Slide

  14. ؔ਺ܕͬΆ͘දهͰ͖ΔϥϜμࣜͷಋೖ͸2014೥ͱ஗Ί


    ෳ਺ͷاۀ΍ஂମͷ߹ҙʹΑͬͯ࢓༷Λࡦఆ͢ΔΦʔϓϯͳϓϩηε


    Java Community ProcessʢJCPʣ


    ࢓༷ܾఆޙɺ֤͕࣮ࣾ૷ΛఏڙʢOracleɺIBMɺAzulɺBellSoftɺSAPͳͲʣ


    ߹ҙܗ੒͕ඞཁͰ͋Γɺ·ͨޙํޓ׵ੑͷҡ࣋Λॏࢹ͢ΔͨΊɺ

    ৽͍͠จ๏΍ػೳͷఏڙ͸ɺଞͷݴޠʹൺ΂ͯগ͠஗ΕΔ


    ͦͷ෼ɺݎ࿚Ͱ͋ΓಛఆϕϯμͷϩοΫΠϯΛආ͚ΒΕΔ
    Java͸μα͍ʁ
    14

    View Slide

  15. Java͍͍͡ΌΜ
    15
    😊

    View Slide

  16. ؆୯ͳྺ࢙ͱ༻ޠ

    View Slide

  17. 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

    View Slide

  18. JavaVM : Java Virtual MachineɻJavaΛಈ࡞ͤ͞ΔԾ૝ϚγϯɻJVMͱ΋දه͢Δ


    Java͸࣮ߦՄೳͳόΠφϦΛ࡞ΔͷͰ͸ͳ͘ɺίϯύΠϧͨ͠ϑΝΠϧΛJavaVM্Ͱಈ࡞ͤ͞Δํࣜ


    Java SE : ͍ΘΏΔJavaຊମ


    JDK : Java Development KitɻίϯύΠϥͳͲͷ։ൃπʔϧ


    JRE : Java Runtime EnvironmentɻJavaVM΍ඪ४ϥΠϒϥϦͳͲͷ࣮ߦ؀ڥ


    ݱࡏ͸JRE୯ମͰͷఏڙ͸͞Εͳ͘ͳͬͨ
    جૅ༻ޠ
    18

    View Slide

  19. Java EEʢݱJakarta EEʣ : αʔόΞϓϦέʔγϣϯ޲͚ͷAPαʔό΍ϥΠϒϥϦ܈Λఏڙ


    Java ME : ૊ΈࠐΈ୺຤޲͚ͷJava


    JVMݴޠ : JavaVMͷ্Ͱಈ࡞͢ΔJavaͰ࣮૷͞Εͨݴޠ


    ScalaɺKotlinɺGroovyɺJRubyɺJythonͳͲ


    TCK : Technology Compatibility KitɻJavaͷޓ׵ੑΛ਍அ͢ΔπʔϧΩοτ


    ֤ࣾͷJava࣮૷͸TCKΛ௨ͬͯ͸͡ΊͯJavaͱೝఆ͞ΕΔ


    Oracleʢݩʑ͸Sun Microsystemsʣ͕ఏڙ͍ͯ͠Δ
    جૅ༻ޠ
    19

    View Slide

  20. JavaΛऔΓר͘OSS

    View Slide

  21. ΤϯλʔϓϥΠζܥͰ࢖ΘΕΔ͜ͱ͕ଟ͍ݴޠͰ͋Γͳ͕Βɺ2000೥ࠒ͔Β

    ։ൃ؀ڥ΍ϥΠϒϥϦɺϑϨʔϜϫʔΫͳͲʹOSSϓϩμΫτ͕੝Μʹ࢖ΘΕΔΑ͏ʹͳͬͨ


    ʢ΋ͪΖΜϓϩϓϥΠΤλϦͳϓϩμΫτ΋ͨ͘͞Μ͋ͬͨʣ


    Eclipse IDEɺStrutsɺSpringɺSeasar2ͳͲ


    ݱࡏ͸Javaࣗମ͕OSSԽ͞Εɺෳ਺ͷاۀ΍ஂମ͔ΒOSS൛ͷJDK͕ఏڙ͞Ε͍ͯΔ


    OSSΛऔΓר͘ΤίγεςϜ͕੒ख़͍ͯ͠Δݴޠͷͻͱͭͱݴ͑Δ
    Java͸OSSͱڞʹาΜͰ͖ͨݴޠ
    21

    View Slide

  22. OSSϓϩμΫτΛఏڙ͢Δ/͍ͯͨ͠ओͳஂମ


    Apache Jakarta Projectʢ1999೥-2011೥ʣ


    Eclipse Foundationʢ2002೥-ʣ


    Spring Projectʢ2004೥ࠒ-ʣ


    SeasarϑΝ΢ϯσʔγϣϯʢ2005೥-2019೥ʣ
    Java͸OSSͱڞʹาΜͰ͖ͨݴޠ
    22

    View Slide

  23. 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 Project
    23

    View Slide

  24. Apache Jakarta Projectʢ1999೥-2011೥ʣ


    JavaͷOSSͷΤίγεςϜͷجૅΛ࡞ͬͨஂମͱݴ͑Δ


    2011೥ʹ໾ׂΛऴ͑ͯΫϩʔζ͞ΕɺͦΕͧΕͷϓϩμΫτ͕ಠཱͨ͠
    Apache Jakarta Project
    24

    View Slide

  25. IBM͕ࣾEclipse IDEΛOSSͱͯ͠ެ։ʢ2002೥ʣ


    2000೥୅ͷJava։ൃʹ͓͚ΔओྲྀͷIDEʢ౷߹։ൃ؀ڥʣ


    ͦΕ·Ͱ͸ΤσΟλΛ࢖͏ਓ͕ଟ͔ͬͨ


    EclipseҎޙɺྑ͘΋ѱ͘΋JavaͷIDE͸OSS͔ͭແঈͰఏڙ͞ΕΔΠϝʔδ͕ఆண


    ͳ͓ɺݱࡏ͸JetbrainsࣾͷIntelliJ IDEA͕ओྲྀ


    OSSͷίϛϡχςΟ൛ͱɺ༗ঈͷUltimate൛͕͋Δ
    Eclipse IDE
    25

    View Slide

  26. Eclipse Foundationʢ2004೥-ʣ


    ౰ॳ͸Eclipse IDEͷ؅ཧ͕໨త


    ͦͷޙɺJakarta EEɺOpenJ9ɺEclipse LinkɺEclipse CollectionsͳͲ

    ଞͷOSSϓϩμΫτ΋ఏڙ͢ΔΑ͏ʹͳͬͨ


    Apache Jakarta Projectͷ୅ΘΓʹOSSϓϩμΫτͷड͚ࡼͱͳ͍ͬͯΔ໘΋͋Δ
    Eclipse Foundation
    26

    View Slide

  27. Spring Projectʢ2004೥ࠒ-ʣ


    Spring FrameworkΛத৺ͱͨؔ͠࿈ϓϩμΫτͷఏڙ


    Spring Frameworkࣗମ͕ଞͷϓϩμΫτͱܨ͕Δ͜ͱΛલఏͱͨ͠࢓૊ΈΛ

    ఏڙ͢Δ΋ͷͰ͋ΔͨΊɺ༷ʑͳ࿈ܞϓϩμΫτ͕ੜ·Εͨ


    ݱࡏ΋Spring͕Java։ൃͷओྲྀͱͳ͍ͬͯΔʢSpring Bootʣ
    Spring Project
    27

    View Slide

  28. Spring Projectʢ2004೥ࠒ-ʣ


    ։ൃͷओମͰ͋ͬͨSpringSourceࣾ͸ɺVMWareࣾʹങऩ͞ΕɺPivotalࣾʹҠ؅͞Εɺ
    ࠶౓VMWareࣾʹങऩ͞ΕΔͳͲมભͨ͠


    Spring FrameworkΛ࠷ॳʹ࡞ͬͨRod Johnsonࢯ͸Spring ProjectΛ཭Εͯٱ͍͠


    ͦͷΑ͏ͳঢ়گͰ΋ਐԽ͠ଓ͚͍ͯΔ͜ͱ͕ɺOSSϓϩμΫτͷڧΈͷҰͭͩͱݴ͑Δ
    Spring Project
    28

    View Slide

  29. SeasarϑΝ΢ϯσʔγϣϯʢ2005೥-2019೥ʣ


    ೔ຊൃͷOSSϑϨʔϜϫʔΫSeasar2Λத৺ͱͨ͠਺ଟ͘ͷOSSϓϩμΫτΛఏڙ


    S2DaoɺS2StrtusɺS2JSFɺSAStrutsɺS2JDBCͳͲ


    2000೥୅தظͷ೔ຊͷJavaΞϓϦέʔγϣϯ։ൃͰओྲྀͱͳͬͨ


    SeasarΧϯϑΝϨϯε͸1000໊લޙͷࢀՃऀΛूΊΔҰେΠϕϯτͱͳ͍ͬͯͨ


    ༏लͳJavaΤϯδχΞ͕ͨͪू͏৔ͱͳΓɺ౰࣌ͷίϛολͨͪ͸ݱࡏͰ΋֤෼໺Ͱ׆༂͍ͯ͠Δ
    SeasarϑΝ΢ϯσʔγϣϯ
    29

    View Slide

  30. ओྲྀͱͳͬͨOSSϓϩμΫτͷػೳ͕ɺJavaͷඪ४ػೳͱͯ͠औΓࠐ·ΕΔྲྀΕ͕ੜ·Εͨ


    Spring Framework → CDIʢDIίϯςφʣ


    Hibernate → JPAʢDBΞΫηεʣ


    Scala΍KotlinͳͲͷJavaVM্Ͱಈ͘ݴޠͷػೳ → Stream APIʢؔ਺ܕ෩ͷهड़ʣ
    OSS͔Βඪ४΁
    30

    View Slide

  31. ༷ʑͳاۀ΍ஂମɺ·ͨJavaΤϯδχΞͨͪͷߩݙʹΑΓɺ

    JavaͷOSSΤίγεςϜ͸੒ख़͍ͯͬͨ͠


    ͍·Ͱ͸Javaͦͷ΋ͷ΋OSSԽ͞Εɺෳ਺ͷاۀ΍ஂମ͔Βఏڙ͞Ε͍ͯΔ


    ͔͢͠͠΂͕ͯॱ෩ຬൕͩͬͨΘ͚Ͱ͸ͳ͘ɺաڈʹ͸Կ౓͔େ͖ͳࣄ݅΋ى͖ͨ
    OSSͱJava
    31

    View Slide

  32. Javaք۾ͷOSSͰى͖ͨ໰୊

    View Slide

  33. Java͕OSSԽ͢Δࡍ΍ɺଞ͕ࣾఏڙ͢Δ৔߹ʹিಥ͢Δ͜ͱ΋͋ͬͨ


    աڈʹى͖ͨ໰୊


    Apache Harmonyࣄ݅


    Androidࣄ݅


    Googleૌুࣄ݅
    Javaք۾ͷOSSͰى͖ͨ໰୊
    33

    View Slide

  34. લఏͱͳΔഎܠͱͯ͠ɺJavaΛఏڙ͢ΔSun Microsystems͸

    ʮJavaʹΑ͘ࣅ͍ͯΔ͕ݫີʹ͸Javaͱݺ΂ͳ͍΋ͷʯ͕ʮJavaʯΛ໊৐Δ͜ͱΛڋΜͩ


    Javaͷ෼அΛ๷͙ͨΊ


    ʮWrite Once, Run AnywhereʯͷϙϦγʔΛकΔͨΊ
    Javaք۾ͷOSSͰى͖ͨ໰୊
    34

    View Slide

  35. 2006೥ɺJavaͷOSS࣮૷ͱͯ͠ʮApache Harmonyʯ͕ఏڙ͞Εͨ


    Apache License 2.0Ͱఏڙʢվมͨ͠ࡍͷιʔείʔυͷެ։ٛ຿͕ͳ͍ʣ˞Ҏ߱AL-2.0ͱදه͢Δ


    ͔͠͠౰࣌ɺSun Microsystems͸Apache Harmony΁ͷTCKͷఏڙΛڋ൱


    TCKΛ௨͍ͯ͠ͳ͍࣮૷͸JavaͱೝΊΒΕͳ͍


    Apache Harmony͸૊ΈࠐΈ୺຤Ͱ΋ಈ࡞͕ͨ͠ɺ౰࣌ͷTCK͸૊ΈࠐΈ୺຤ʹద༻Ͱ͖ΔJavaΛର৅֎ͱ͍ͯͨ͠


    ಉ͘͡2006೥ɺSun Microsystems͕Java SEΛOSSԽʢݱࡏͷOpenJDKʣ


    GPLv2Ϋϥεύεྫ֎͖ͭʢվมͨ͠ࡍʹιʔείʔυͷެ։ٛ຿͕͋Δʣ˞Ҏ߱GPLv2ͱදه͢Δ
    Apache harmonyࣄ݅
    35

    View Slide

  36. 2007೥ɺSun Microsystems͸TCKΛOSSͱͯ͠ެ։ͨ͠΋ͷͷ

    OSS൛ͷJava͸ϥΠηϯε͕GPLv2ͷ΋ͷͷΈΛର৅ͱͨ͠


    Apache Harmony͸AL-2.0ͩͬͨͨΊର৅֎


    ࣮࣭తʹ͸Sun Microsystems͕OSSԽͨ͠JDKͷΈ͕ର৅ͱͳ͍ͬͯͨܗ


    ౰વApache͸߅ٞ͠ɺ֤ॴͰٞ࿦͕ى͖ͨ


    ݁ہApache Harmony͸Javaͱͯ͠ೝΊΒΕͳ͍··ɺ2010೥ʹ։ൃΛऴྃͨ͠
    Apache harmonyࣄ݅
    36

    View Slide

  37. 2007೥ʹGoogle͕AndroidΛൃද


    Android͸Apache HarmonyΛϕʔεͱͨ͠Dalvik VMΛ౥ࡌ


    Javaʢతͳ΋ͷʣͰAndroidΞϓϦέʔγϣϯΛ։ൃͰ͖Δ


    ΋ͪΖΜTCK͸௨͍ͬͯͳ͍


    ιʔείʔυͷ֦ுࢠ͸.java͕ͩɺTCKΛ௨͍ͬͯͳ͍ͷͰJavaͰ͸ͳ͍


    Sun Microsystems͸Javaͷ෼அΛট͘ͱͯ͠ɺAndroidͷJavaʢతͳ΋ͷʣΛඇ೉
    Androidࣄ݅
    37

    View Slide

  38. ౰࣌ͷܞଳి࿩͸Java ME͕౥ࡌ͞Ε͍ͯͨ


    ೔ຊͰ͸υίϞͱιϑτόϯΫ͕ɻau͸BREWʢC++ʣ


    Apple͕iPhoneΛϦϦʔεͯ͠࿩୊ͱͳΓɺGoogle΋ٸ͍ͰޙΛ௥͏ඞཁ͕͋ͬͨ


    Android޲͚ʹJavaVMΛಠࣗվม͢Δඞཁ͕͋Γɺιʔείʔυͷެ։ٛ຿ͷ͋ΔGPLv2ͷ
    OpenJDKΛ࢖͍ͮΒ͔ͬͨͨΊɺެ։ٛ຿ͷͳ͍AL-2.0ͷApache HarmonyΛϕʔεʹͨ͠ʢਪଌʣ


    Google಺Ͱ΋͖ͪΜͱTCKΛ௨͢΂͖ͩͱ͍͏ҙݟ͸ग़͍͕ͯͨ

    Apache HarmonyϕʔεͳͷͰ௨ΓΑ͏͕ͳ͔ͬͨ
    Androidࣄ݅
    38

    View Slide

  39. 2010೥4݄ʹOracle͕Sun MicrosystemsΛങऩ


    2010೥8݄ʹOracle͕GoogleΛૌু


    AndroidͷJavaʢతͳ΋ͷʣ͕Javaͷஶ࡞ݖΛ৵֐͍ͯ͠Δͱ͍͏಺༰Ͱૌু


    ཌ೥Ҏ߱ɺGoogle͸Javaͷ೥࣍ΧϯϑΝϨϯεJavaOneʹࢀՃ͠ͳ͘ͳΓɺ

    JavaͷOSSϓϩμΫτͷఏڙʹ΋ফۃతʹͳͬͨ


    Android͕αϙʔτ͢ΔJavaͷόʔδϣϯ΋6΍7Ͱఀࢭͨ͠ʢؔ਺ܕ෩ͷهड़͕Ͱ͖ͳ͍ʣ
    Googleૌুࣄ݅
    39

    View Slide

  40. ૌুͷ݁຤


    ಛڐݖ৵֐ → ͍ͯ͠ͳ͍Ͱ֬ఆ


    JavaϥΠϒϥϦͷ࣮૷ίʔυΛແஅෳ੡ → ͍ͯ͠Δ͕͔ᷮ͘͝ͳͷͰഛঈۚ0ԁ


    Java APIͷஶ࡞ݖ৵֐ → ͍ͯ͠Δ͕ϑΣΞϢʔεͩͱ֬ఆ


    ܞଳి࿩͕εϚʔτϑΥϯʹஔ͖׵ΘΓɺJava ME͕࢖ΘΕͳ͘ͳͬͨ͜ͱͰ

    Sun Microsystems΍Oracle͸ϞόΠϧ෼໺ʹ͓͚ΔJavaͷϏδωεΛࣦ͏͜ͱͱͳͬͨ
    Googleૌুࣄ݅
    40

    View Slide

  41. ݱࡏ͸ɺOpenJDK͕།ҰͷOSS൛Javaͱͳ͍ͬͯΔ


    Apache Harmony΍IcedTeaͳͲͷOSS JavaϓϩδΣΫτ͸͢΂ͯOpenJDKʹ߹ྲྀͨ͠


    2016೥ʹ͸Android΋OpenJDKϕʔεͱͳΓɺJava8ʹରԠͨ͠


    ͨͩͦͷࠒʹ͸AndroidΞϓϦ։ൃͷओྲྀ͸Java͔ΒKotlinʹҠ͍ͬͯͬͨ


    Java6΍7Ͱ΋࣮ߦͰ͖ɺϞμϯͳهड़΋Ͱ͖ΔͨΊ
    OpenJDK
    41

    View Slide

  42. ༗ঈԽʁ໰୊

    View Slide

  43. Java͸͜Ε·Ͱ2ʙ3೥͝ͱʹ৽͍͠όʔδϣϯ͕ग़͍͕ͯͨ

    2017೥ͷJava 9Ҏ߱͸൒೥͝ͱʹϦϦʔε͞ΕΔ͜ͱͱͳͬͨ


    ৽ػೳ͕ἧ͔ͬͯΒϦϦʔε͢ΔͷͰ͸ͳ͘

    ൒೥͝ͱʹؒʹ߹ͬͨػೳͷΈΛ࠾༻ͯ͠ϦϦʔε͢Δ


    ଞͷػೳ͕·ͩͰ͖͍ͯͳ͍͔Βɺͱ͍͏ཧ༝Ͱ৽ػೳͷϦϦʔε͕

    ஗ΕΔ͜ͱΛ๷͙ͨΊ
    JavaͷϦϦʔεαΠΫϧͷมߋ
    43

    View Slide

  44. JavaΤϯδχΞ͕Javaͷ։ൃ؀ڥΛߏங͢Δࡍɺ

    ओྲྀ͸Oracleʢݩʑ͸Sun Microsystemsʣ͕ఏڙ͢ΔJDK/JREΛ༻͍͍ͯͨ


    Oracle͸͜ͷOracle JDKͷແঈఏڙΛதࢭ͠ɺJava 9Ҏ߱͸OpenJDKͷΈΛ

    ແঈఏڙ͢ΔΑ͏ํ਑Λมߋͨ͠


    ͜Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղͷେݩ
    Oracle JDKͷແঈ഑෍ऴྃ
    44

    View Slide

  45. Sun/Oracle JDKͷແঈαϙʔτظؒ͸࣍ͷόʔδϣϯ͕ग़ͨ͋ͱ1ʙ2೥ఔ౓ͩͬͨ


    ྫ͑͹Java 7͸2011೥7݄ϦϦʔεɻແঈαϙʔτ͸2015೥4݄·Ͱ


    Java 8͸2014೥3݄ϦϦʔε


    ͜͜Ͱ͍͏ʮແঈαϙʔτظؒʯͱ͸ʮແঈΞοϓσʔτ͕ఏڙ͞ΕΔظؒʯΛࢦ͢


    ಛʹηΩϡϦςΟύονͳͲ΋͋ΔͨΊɺແঈΞοϓσʔτ͕ఏڙ͞ΕΔ͜ͱ͸ॏཁ


    ༗ঈͰ͋Ε͹΋ͬͱ௕ظؒͷαϙʔτΛड͚ΒΕΔ


    Java 7͔ΒJava 8΁ͷҠߦ͸1ʙ2೥͘Β͍ͷ༛༧͕͋Δͱݴ͑Δ
    JDKͷαϙʔτظؒ
    45

    View Slide

  46. Oracle OpenJDKͷແঈαϙʔτظؒ͸ʮ࣍ͷόʔδϣϯ͕ग़Δ·Ͱʯ


    ͭ·Γ൒೥͔ؒ͠Ξοϓσʔτ͕ఏڙ͞Εͳ͍


    ൒೥ޙʹ͸࣍ͷόʔδϣϯʹҠߦ͢Δඞཁ͕͋Δ


    ͜Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղʹഥंΛֻ͚ͨ
    OpenJDKͷαϙʔτظؒ
    46

    View Slide

  47. ֤͔ࣾΒOpenJDKͷϏϧυʢ͍ΘΏΔσΟετϦϏϡʔγϣϯʣ͕ఏڙ͞ΕΔΑ͏ʹͳͬͨ


    Red Hat OpenJDKɺEclipse AdoptiumʢچAdoptOpenJDKʣɺAmazon CorrettoͳͲ


    ֤ࣾͷOpenJDK͸3೥͝ͱʹग़ΔόʔδϣϯʹLTSʢLong Term SupportʣΛఏڙ


    OpenJDK 8ɺ11ɺ17ɺ23ɺɺɺ


    ແঈαϙʔτظؒ͸༷ʑ͕ͩɺͨͱ͑͹AdoptiumͷOpenJDK 8͸2026೥·Ͱ


    े෼ʹ௕͍ແঈαϙʔτظ͕ؒ͋Δͱݴ͑Δ
    ༷ʑͳOpenJDK
    47

    View Slide

  48. ͍·ͷओྲྀ͸ϓϥοτϑΥʔϜͰαϙʔτ͞Ε͍ͯΔOpenJDKΛར༻͢Δ͜ͱ


    Red Hat Enterprise LinuxΛ࢖͏ͳΒRed Hat OpenJDK


    AWSͰ࢖͏ͳΒAmazon Corretto


    AzureͰ࢖͏ͳΒMicrosoft Build of OpenJDK


    ֶश΍ௐࠪ༻ͳΒαϙʔτظؒͷ୹͍Oracle OpenJDKͰ΋ߏΘͳ͍


    ֤͕ࣾఏڙ͢ΔOpenJDKʹ͓͍ͯগͣͭ͠ఏڙ͢Δπʔϧ͕ҧͬͨΓɺద༻͞ΕΔύον͕ҟͳΔ͜ͱ͸

    ͋ΓಘΔ͕ɺݩͱͳΔOpenJDK͸ಉҰͰ͋ΔͨΊͲΕΛ࢖ͬͯ΋99%ಉ͡ɻίΞػೳ͸100%ಉ͡
    ༷ʑͳOpenJDK
    48

    View Slide

  49. ·ͱΊ: ͜Ε͔ΒͷJava

    View Slide

  50. ͜ͷΑ͏ͳឯ༨ۂંΛܦͯɺOSS൛ͷJava͸OpenJDKͱͯ͠ҰຊԽ͞Εͨ


    ෳ਺ͷاۀ΍ஂମɺݸਓʹΑΓ࣮૷ɺϝϯςφϯε͞Ε͍ͯΔ


    ͪͳΈʹ೔ຊʹ΋OpenJDKͷίϛολ͕͍ΔΑ


    ݱ୅ʹ͓͍ͯݴޠ΍ϓϥοτϑΥʔϜ͕OSSͰ͋Δ͜ͱ͸౰ͨΓલͷΑ͏ʹײ͡Δ͕

    JavaͷΑ͏ʹ௕͍ྺ࢙͕͋ͬͯڊେͳΤίγεςϜΛ൐͏΋ͷΛ

    OSSจԽͷਁಁ΍੒ख़ͱڞʹOSSԽ͢Δͱ͜Ζʹ͸૬౰ͳ౒ྗ͕͋ͬͨͱݴ͑Δ
    OSSʹͳͬͨJava
    50

    View Slide

  51. GraalVMʹΑΔωΠςΟϒΠϝʔδͷ࡞੒


    ίϯύΠϧͨ͠΋ͷΛJavaVM্Ͱ࣮ߦ͢ΔͷͰ͸ͳ͘

    ίϯύΠϧͯͦ͠ΕͧΕͷOS͝ͱʹ࣮ߦՄೳͳόΠφϦΛ࡞Δ


    ىಈ࣌ؒͷ୹ॖɺϝϞϦ࢖༻ྔͷ࡟ݮ


    ϊϯϒϩοΩϯάॲཧ΍ܰྔεϨουʹΑΔฒྻॲཧͷվળ


    Reactor΍RxJavaͳͲΛ༻͍ͨϦΞΫςΟϒϓϩάϥϛϯάʢOSSϓϩμΫτʣ


    Project LoomʹΑΔܰྔεϨου΍ݶఆܧଓͷఏڙʢJavaͷඪ४ػೳʹೖΔ༧ఆʣ
    ࠷ۙͱࠓޙͷJavaͷτϨϯυ
    51

    View Slide

  52. ൒೥͝ͱͷϦϦʔεʹͳΓɺҎલΑΓ΋ػೳ௥Ճͷεϐʔυ͕૿ͨ͠


    Flight RecorderʢJavaVMͷϝτϦΫε৘ใΛه࿥͢Δɻ঎༻ػೳͩͬͨ΋ͷ͕OSSԽʣ


    switchࣜʢswitch͕จ͚ͩͰͳࣜ͘ͱͯ͠࢖͑ΔΑ͏ʹͳΓɺ஋ΛฦͤΔʣ


    ςΩετϒϩοΫʢ͍ΘΏΔώΞυΩϡϝϯτɻෳ਺ߦͷจࣈྻΛએݴͰ͖Δʣ


    Ϩίʔυܕʢσʔλܕʹ͍ۙɻΠϛϡʔλϒϧͳσʔλΫϥεΛ༰қʹ࡞ΕΔʣ


    ύλʔϯϚονʢΦϒδΣΫτͷܕʹΑͬͯ෼ذ͢Δʣ
    ػೳ௥Ճͷߴ଎Խ
    52

    View Slide

  53. ܧଓతͳֶश͕ඞཁ


    ݹ͍஌ࣝͷ··Ͱ΋ϓϩάϥϛϯάͰ͖Δ͕ɺͦΕ͕ਖ਼͍͠Θ͚Ͱ͸ͳ͍


    ৽͍͠ػೳ͕࢖ΘΕͨιʔείʔυΛಡΊͳ͍ͱࠔΔͰ͠ΐ͏


    ܧଓతͳֶशΛଅ͢ίϛϡχςΟͷॏཁੑ͕૿͢


    ఆظతͳษڧձ΍৘ใൃ৴ͳͲ
    ػೳ௥Ճͷߴ଎Խ΁ͷରԠ
    53

    View Slide

  54. ܧଓతͳόʔδϣϯΞοϓ͕ඞཁ


    ͤΊͯ3೥͓͖ʹϦϦʔε͞ΕΔLTS൛ʹ௥ै͍ͤͨ͞


    ୯७ʹJavaͷόʔδϣϯ͚ͩͰͳ͘ɺपลϥΠϒϥϦ΍ϑϨʔϜϫʔΫɺ

    ϛυϧ΢ΣΞͷόʔδϣϯΞοϓ͕ඞཁͱͳΔέʔε΋ଟ͍


    όʔδϣϯΞοϓʹ௥ै͢ΔͨΊͷCI/CD΍ࣗಈςετͷ࢓૊Έ͕ෆՄܽ


    DevOpsվળɺͻ͍ͯ͸ΤϯδχΞ΍૊৫ͷ࣭ΛߴΊΔ


    ʢόʔδϣϯΛԘ௮͚ʹ͢Δͱ͍͏બ୒ࢶ΋ΞϦͰ͚͢Ͳ΋ʣ
    ϦϦʔεαΠΫϧͷߴ଎Խ΁ͷରԠ
    54

    View Slide

  55. Java͸OSSจԽͱڞʹาΈɺJavaࣗ਎΋OSSԽ͞Εͨ


    ༷ʑͳOSSϓϩμΫτ͕ੜ·ΕɺJavaඪ४ʹऔΓࠐ·ΕΔྲྀΕ΋ੜ·Εͨ


    ଟ͘ͷ૊৫΍ݸਓͷߩݙʹࢧ͑ΒΕ͍ͯΔ


    ։ൃݩͷاۀ͕ങऩ͞Εͯ΋ɺOSSϓϩμΫτ͸าΈ͕ࢭ·Βͳ͍


    ϦϦʔε͕ߴ଎Խ͞Εɺػೳ௥Ճ͕ૣ͘ͳͬͨ


    ։ൃίϛϡχςΟ΍ϢʔβʔάϧʔϓͳͲͷॏཁੑ͸ࠓޙ΋૿͍ͯ͘͠
    ·ͱΊ
    55

    View Slide

  56. ຖ݄ͷJJUGφΠτηϛφʔ


    ࣍ճ͸9/29(ਫ)༧ఆ - Java 17ϦϦʔεه೦ηϛφʔ


    ೥ʹ2ճͷJJUG CCC


    ࣍ճ͸11/21(೔)


    URL: https://www.java-users.jp/


    Twitter: @JJUG
    JJUGʹࢀՃ͠Α͏ʂ
    56

    View Slide