Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

୩ຊ ৺ (Shin Tanimoto) ೔ຊJavaϢʔβʔάϧʔϓ Ϧʔμʔʢ୅දʣ Java Champion / Oracle Groundbreaker Ambassador Everforth / Acroquest Technologyͷ2ࣾͰಇ͘ΤϯδχΞ ෭ۀʹͯ֎෦ސ໰΍ʮϨϯλϧ͢΂ΔਓʯͳͲ ੜ͖͕͍͸BABYMETALͷϥΠϒࢀઓ ࣗݾ঺հ 2 Twitter : @cero_t ஶॻ : Javaຊ֨ೖ໳

Slide 3

Slide 3 text

೔ຊJavaϢʔβʔάϧʔϓ (JJUG) 2007೥4݄ʹൃ଍ͨ͠JavaͷϢʔβʔձ ౦ژΛத৺ͱͨ͠ษڧձ΍ΧϯϑΝϨϯεͷ։࠵ʢݱࡏ͸ΦϯϥΠϯத৺ʣ ߨࢣ೿ݣ΍ग़ுΠϕϯτͳͲɺ೔ຊ֤஍ͷJavaίϛϡχςΟͱڠྗ͍ͯ͠Δ ن໛ ձһ਺ 10,000໊Ҏ্ ݄ྫͷษڧձʹ͸਺ඦ໊ɺ೥2ճͷΧϯϑΝϨϯεʹ͸1,000໊Ҏ্͕ࢀՃ JavaϢʔβʔάϧʔϓ 3

Slide 4

Slide 4 text

Javaʁ

Slide 5

Slide 5 text

ݻ͍ ݹ͍ μα͍ ͑ɺJavaʁ 5

Slide 6

Slide 6 text

੩తܕ෇͚ݴޠ ΦϒδΣΫτࢦ޲ Java͸ݻ͍ʁ 6

Slide 7

Slide 7 text

੩తܕ෇͚ݴޠ ίϯύΠϧ࣌νΣοΫ΍IDEͷࣗಈิ׬ͷԸܙΛड͚΍͍͢ ΤϯλʔϓϥΠζͳͲͷେن໛ϓϩδΣΫτʹ޲͘ ΦϒδΣΫτࢦ޲ ۩৅ΑΓ΋ந৅Λ޷Ή ۀ຿΍ػೳΛ࣮ݱ͢ΔͨΊͷ࣮૷ΑΓɺͦͷຊ࣭Λߟ͑Δ͜ͱΛ޷Ήਓ͕ଟ͍ Java͸ݻ͍ʁ 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

࠷ॳͷ͓໨ݟ͔͑Β26೥ɺJDK 1.0ͷϦϦʔε͔Β25೥ Pythonઌഐͷ4ίԼ C++ઌੜͷ10ίԼ ޙํޓ׵ੑΛอͪଓ͚͍ͯΔ ϥΠϒϥϦͷαϙʔτͳͲআ͚͹ɺݹ͍ίʔυͰ΋͍͍ͩͨίϯύΠϧ͕௨Δ͠ಈ͘ ৽͍͠API͕௥Ճ͞Εͯ΋ɺݹ͍API͸͍͍ͩͨͦͷ··࢒Δ Java͸ݹ͍ʁ 9

Slide 10

Slide 10 text

จࣈྻஔ׵ϝιου 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"ɹจࣈྻͰࢦఆͯ͠શஔ׵

Slide 11

Slide 11 text

จࣈྻஔ׵ϝιου 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

Slide 12

Slide 12 text

Java͸μα͍ʁ 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

ؔ਺ܕͬΆ͘දهͰ͖ΔϥϜμࣜͷಋೖ͸2014೥ͱ஗Ί ෳ਺ͷاۀ΍ஂମͷ߹ҙʹΑͬͯ࢓༷Λࡦఆ͢ΔΦʔϓϯͳϓϩηε Java Community ProcessʢJCPʣ ࢓༷ܾఆޙɺ֤͕࣮ࣾ૷ΛఏڙʢOracleɺIBMɺAzulɺBellSoftɺSAPͳͲʣ ߹ҙܗ੒͕ඞཁͰ͋Γɺ·ͨޙํޓ׵ੑͷҡ࣋Λॏࢹ͢ΔͨΊɺ 
 ৽͍͠จ๏΍ػೳͷఏڙ͸ɺଞͷݴޠʹൺ΂ͯগ͠஗ΕΔ ͦͷ෼ɺݎ࿚Ͱ͋ΓಛఆϕϯμͷϩοΫΠϯΛආ͚ΒΕΔ Java͸μα͍ʁ 14

Slide 15

Slide 15 text

Java͍͍͡ΌΜ 15 😊

Slide 16

Slide 16 text

؆୯ͳྺ࢙ͱ༻ޠ

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

JavaVM : Java Virtual MachineɻJavaΛಈ࡞ͤ͞ΔԾ૝ϚγϯɻJVMͱ΋දه͢Δ Java͸࣮ߦՄೳͳόΠφϦΛ࡞ΔͷͰ͸ͳ͘ɺίϯύΠϧͨ͠ϑΝΠϧΛJavaVM্Ͱಈ࡞ͤ͞Δํࣜ Java SE : ͍ΘΏΔJavaຊମ JDK : Java Development KitɻίϯύΠϥͳͲͷ։ൃπʔϧ JRE : Java Runtime EnvironmentɻJavaVM΍ඪ४ϥΠϒϥϦͳͲͷ࣮ߦ؀ڥ ݱࡏ͸JRE୯ମͰͷఏڙ͸͞Εͳ͘ͳͬͨ جૅ༻ޠ 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

JavaΛऔΓר͘OSS

Slide 21

Slide 21 text

ΤϯλʔϓϥΠζܥͰ࢖ΘΕΔ͜ͱ͕ଟ͍ݴޠͰ͋Γͳ͕Βɺ2000೥ࠒ͔Β 
 ։ൃ؀ڥ΍ϥΠϒϥϦɺϑϨʔϜϫʔΫͳͲʹOSSϓϩμΫτ͕੝Μʹ࢖ΘΕΔΑ͏ʹͳͬͨ ʢ΋ͪΖΜϓϩϓϥΠΤλϦͳϓϩμΫτ΋ͨ͘͞Μ͋ͬͨʣ Eclipse IDEɺStrutsɺSpringɺSeasar2ͳͲ ݱࡏ͸Javaࣗମ͕OSSԽ͞Εɺෳ਺ͷاۀ΍ஂମ͔ΒOSS൛ͷJDK͕ఏڙ͞Ε͍ͯΔ OSSΛऔΓר͘ΤίγεςϜ͕੒ख़͍ͯ͠Δݴޠͷͻͱͭͱݴ͑Δ Java͸OSSͱڞʹาΜͰ͖ͨݴޠ 21

Slide 22

Slide 22 text

OSSϓϩμΫτΛఏڙ͢Δ/͍ͯͨ͠ओͳஂମ Apache Jakarta Projectʢ1999೥-2011೥ʣ Eclipse Foundationʢ2002೥-ʣ Spring Projectʢ2004೥ࠒ-ʣ SeasarϑΝ΢ϯσʔγϣϯʢ2005೥-2019೥ʣ Java͸OSSͱڞʹาΜͰ͖ͨݴޠ 22

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Apache Jakarta Projectʢ1999೥-2011೥ʣ JavaͷOSSͷΤίγεςϜͷجૅΛ࡞ͬͨஂମͱݴ͑Δ 2011೥ʹ໾ׂΛऴ͑ͯΫϩʔζ͞ΕɺͦΕͧΕͷϓϩμΫτ͕ಠཱͨ͠ Apache Jakarta Project 24

Slide 25

Slide 25 text

IBM͕ࣾEclipse IDEΛOSSͱͯ͠ެ։ʢ2002೥ʣ 2000೥୅ͷJava։ൃʹ͓͚ΔओྲྀͷIDEʢ౷߹։ൃ؀ڥʣ ͦΕ·Ͱ͸ΤσΟλΛ࢖͏ਓ͕ଟ͔ͬͨ EclipseҎޙɺྑ͘΋ѱ͘΋JavaͷIDE͸OSS͔ͭແঈͰఏڙ͞ΕΔΠϝʔδ͕ఆண ͳ͓ɺݱࡏ͸JetbrainsࣾͷIntelliJ IDEA͕ओྲྀ OSSͷίϛϡχςΟ൛ͱɺ༗ঈͷUltimate൛͕͋Δ Eclipse IDE 25

Slide 26

Slide 26 text

Eclipse Foundationʢ2004೥-ʣ ౰ॳ͸Eclipse IDEͷ؅ཧ͕໨త ͦͷޙɺJakarta EEɺOpenJ9ɺEclipse LinkɺEclipse CollectionsͳͲ 
 ଞͷOSSϓϩμΫτ΋ఏڙ͢ΔΑ͏ʹͳͬͨ Apache Jakarta Projectͷ୅ΘΓʹOSSϓϩμΫτͷड͚ࡼͱͳ͍ͬͯΔ໘΋͋Δ Eclipse Foundation 26

Slide 27

Slide 27 text

Spring Projectʢ2004೥ࠒ-ʣ Spring FrameworkΛத৺ͱͨؔ͠࿈ϓϩμΫτͷఏڙ Spring Frameworkࣗମ͕ଞͷϓϩμΫτͱܨ͕Δ͜ͱΛલఏͱͨ͠࢓૊ΈΛ 
 ఏڙ͢Δ΋ͷͰ͋ΔͨΊɺ༷ʑͳ࿈ܞϓϩμΫτ͕ੜ·Εͨ ݱࡏ΋Spring͕Java։ൃͷओྲྀͱͳ͍ͬͯΔʢSpring Bootʣ Spring Project 27

Slide 28

Slide 28 text

Spring Projectʢ2004೥ࠒ-ʣ ։ൃͷओମͰ͋ͬͨSpringSourceࣾ͸ɺVMWareࣾʹങऩ͞ΕɺPivotalࣾʹҠ؅͞Εɺ ࠶౓VMWareࣾʹങऩ͞ΕΔͳͲมભͨ͠ Spring FrameworkΛ࠷ॳʹ࡞ͬͨRod Johnsonࢯ͸Spring ProjectΛ཭Εͯٱ͍͠ ͦͷΑ͏ͳঢ়گͰ΋ਐԽ͠ଓ͚͍ͯΔ͜ͱ͕ɺOSSϓϩμΫτͷڧΈͷҰͭͩͱݴ͑Δ Spring Project 28

Slide 29

Slide 29 text

SeasarϑΝ΢ϯσʔγϣϯʢ2005೥-2019೥ʣ ೔ຊൃͷOSSϑϨʔϜϫʔΫSeasar2Λத৺ͱͨ͠਺ଟ͘ͷOSSϓϩμΫτΛఏڙ S2DaoɺS2StrtusɺS2JSFɺSAStrutsɺS2JDBCͳͲ 2000೥୅தظͷ೔ຊͷJavaΞϓϦέʔγϣϯ։ൃͰओྲྀͱͳͬͨ SeasarΧϯϑΝϨϯε͸1000໊લޙͷࢀՃऀΛूΊΔҰେΠϕϯτͱͳ͍ͬͯͨ ༏लͳJavaΤϯδχΞ͕ͨͪू͏৔ͱͳΓɺ౰࣌ͷίϛολͨͪ͸ݱࡏͰ΋֤෼໺Ͱ׆༂͍ͯ͠Δ SeasarϑΝ΢ϯσʔγϣϯ 29

Slide 30

Slide 30 text

ओྲྀͱͳͬͨOSSϓϩμΫτͷػೳ͕ɺJavaͷඪ४ػೳͱͯ͠औΓࠐ·ΕΔྲྀΕ͕ੜ·Εͨ Spring Framework → CDIʢDIίϯςφʣ Hibernate → JPAʢDBΞΫηεʣ Scala΍KotlinͳͲͷJavaVM্Ͱಈ͘ݴޠͷػೳ → Stream APIʢؔ਺ܕ෩ͷهड़ʣ OSS͔Βඪ४΁ 30

Slide 31

Slide 31 text

༷ʑͳاۀ΍ஂମɺ·ͨJavaΤϯδχΞͨͪͷߩݙʹΑΓɺ 
 JavaͷOSSΤίγεςϜ͸੒ख़͍ͯͬͨ͠ ͍·Ͱ͸Javaͦͷ΋ͷ΋OSSԽ͞Εɺෳ਺ͷاۀ΍ஂମ͔Βఏڙ͞Ε͍ͯΔ ͔͢͠͠΂͕ͯॱ෩ຬൕͩͬͨΘ͚Ͱ͸ͳ͘ɺաڈʹ͸Կ౓͔େ͖ͳࣄ݅΋ى͖ͨ OSSͱJava 31

Slide 32

Slide 32 text

Javaք۾ͷOSSͰى͖ͨ໰୊

Slide 33

Slide 33 text

Java͕OSSԽ͢Δࡍ΍ɺଞ͕ࣾఏڙ͢Δ৔߹ʹিಥ͢Δ͜ͱ΋͋ͬͨ աڈʹى͖ͨ໰୊ Apache Harmonyࣄ݅ Androidࣄ݅ Googleૌুࣄ݅ Javaք۾ͷOSSͰى͖ͨ໰୊ 33

Slide 34

Slide 34 text

લఏͱͳΔഎܠͱͯ͠ɺJavaΛఏڙ͢ΔSun Microsystems͸ 
 ʮJavaʹΑ͘ࣅ͍ͯΔ͕ݫີʹ͸Javaͱݺ΂ͳ͍΋ͷʯ͕ʮJavaʯΛ໊৐Δ͜ͱΛڋΜͩ Javaͷ෼அΛ๷͙ͨΊ ʮWrite Once, Run AnywhereʯͷϙϦγʔΛकΔͨΊ Javaք۾ͷOSSͰى͖ͨ໰୊ 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

2007೥ʹGoogle͕AndroidΛൃද Android͸Apache HarmonyΛϕʔεͱͨ͠Dalvik VMΛ౥ࡌ Javaʢతͳ΋ͷʣͰAndroidΞϓϦέʔγϣϯΛ։ൃͰ͖Δ ΋ͪΖΜTCK͸௨͍ͬͯͳ͍ ιʔείʔυͷ֦ுࢠ͸.java͕ͩɺTCKΛ௨͍ͬͯͳ͍ͷͰJavaͰ͸ͳ͍ Sun Microsystems͸Javaͷ෼அΛট͘ͱͯ͠ɺAndroidͷJavaʢతͳ΋ͷʣΛඇ೉ Androidࣄ݅ 37

Slide 38

Slide 38 text

౰࣌ͷܞଳి࿩͸Java ME͕౥ࡌ͞Ε͍ͯͨ ೔ຊͰ͸υίϞͱιϑτόϯΫ͕ɻau͸BREWʢC++ʣ Apple͕iPhoneΛϦϦʔεͯ͠࿩୊ͱͳΓɺGoogle΋ٸ͍ͰޙΛ௥͏ඞཁ͕͋ͬͨ Android޲͚ʹJavaVMΛಠࣗվม͢Δඞཁ͕͋Γɺιʔείʔυͷެ։ٛ຿ͷ͋ΔGPLv2ͷ OpenJDKΛ࢖͍ͮΒ͔ͬͨͨΊɺެ։ٛ຿ͷͳ͍AL-2.0ͷApache HarmonyΛϕʔεʹͨ͠ʢਪଌʣ Google಺Ͱ΋͖ͪΜͱTCKΛ௨͢΂͖ͩͱ͍͏ҙݟ͸ग़͍͕ͯͨ 
 Apache HarmonyϕʔεͳͷͰ௨ΓΑ͏͕ͳ͔ͬͨ Androidࣄ݅ 38

Slide 39

Slide 39 text

2010೥4݄ʹOracle͕Sun MicrosystemsΛങऩ 2010೥8݄ʹOracle͕GoogleΛૌু AndroidͷJavaʢతͳ΋ͷʣ͕Javaͷஶ࡞ݖΛ৵֐͍ͯ͠Δͱ͍͏಺༰Ͱૌু ཌ೥Ҏ߱ɺGoogle͸Javaͷ೥࣍ΧϯϑΝϨϯεJavaOneʹࢀՃ͠ͳ͘ͳΓɺ 
 JavaͷOSSϓϩμΫτͷఏڙʹ΋ফۃతʹͳͬͨ Android͕αϙʔτ͢ΔJavaͷόʔδϣϯ΋6΍7Ͱఀࢭͨ͠ʢؔ਺ܕ෩ͷهड़͕Ͱ͖ͳ͍ʣ Googleૌুࣄ݅ 39

Slide 40

Slide 40 text

ૌুͷ݁຤ ಛڐݖ৵֐ → ͍ͯ͠ͳ͍Ͱ֬ఆ JavaϥΠϒϥϦͷ࣮૷ίʔυΛແஅෳ੡ → ͍ͯ͠Δ͕͔ᷮ͘͝ͳͷͰഛঈۚ0ԁ Java APIͷஶ࡞ݖ৵֐ → ͍ͯ͠Δ͕ϑΣΞϢʔεͩͱ֬ఆ ܞଳి࿩͕εϚʔτϑΥϯʹஔ͖׵ΘΓɺJava ME͕࢖ΘΕͳ͘ͳͬͨ͜ͱͰ 
 Sun Microsystems΍Oracle͸ϞόΠϧ෼໺ʹ͓͚ΔJavaͷϏδωεΛࣦ͏͜ͱͱͳͬͨ Googleૌুࣄ݅ 40

Slide 41

Slide 41 text

ݱࡏ͸ɺOpenJDK͕།ҰͷOSS൛Javaͱͳ͍ͬͯΔ Apache Harmony΍IcedTeaͳͲͷOSS JavaϓϩδΣΫτ͸͢΂ͯOpenJDKʹ߹ྲྀͨ͠ 2016೥ʹ͸Android΋OpenJDKϕʔεͱͳΓɺJava8ʹରԠͨ͠ ͨͩͦͷࠒʹ͸AndroidΞϓϦ։ൃͷओྲྀ͸Java͔ΒKotlinʹҠ͍ͬͯͬͨ Java6΍7Ͱ΋࣮ߦͰ͖ɺϞμϯͳهड़΋Ͱ͖ΔͨΊ OpenJDK 41

Slide 42

Slide 42 text

༗ঈԽʁ໰୊

Slide 43

Slide 43 text

Java͸͜Ε·Ͱ2ʙ3೥͝ͱʹ৽͍͠όʔδϣϯ͕ग़͍͕ͯͨ 
 2017೥ͷJava 9Ҏ߱͸൒೥͝ͱʹϦϦʔε͞ΕΔ͜ͱͱͳͬͨ ৽ػೳ͕ἧ͔ͬͯΒϦϦʔε͢ΔͷͰ͸ͳ͘ 
 ൒೥͝ͱʹؒʹ߹ͬͨػೳͷΈΛ࠾༻ͯ͠ϦϦʔε͢Δ ଞͷػೳ͕·ͩͰ͖͍ͯͳ͍͔Βɺͱ͍͏ཧ༝Ͱ৽ػೳͷϦϦʔε͕ 
 ஗ΕΔ͜ͱΛ๷͙ͨΊ JavaͷϦϦʔεαΠΫϧͷมߋ 43

Slide 44

Slide 44 text

JavaΤϯδχΞ͕Javaͷ։ൃ؀ڥΛߏங͢Δࡍɺ 
 ओྲྀ͸Oracleʢݩʑ͸Sun Microsystemsʣ͕ఏڙ͢ΔJDK/JREΛ༻͍͍ͯͨ Oracle͸͜ͷOracle JDKͷແঈఏڙΛதࢭ͠ɺJava 9Ҏ߱͸OpenJDKͷΈΛ 
 ແঈఏڙ͢ΔΑ͏ํ਑Λมߋͨ͠ ͜Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղͷେݩ Oracle JDKͷແঈ഑෍ऴྃ 44

Slide 45

Slide 45 text

Sun/Oracle JDKͷແঈαϙʔτظؒ͸࣍ͷόʔδϣϯ͕ग़ͨ͋ͱ1ʙ2೥ఔ౓ͩͬͨ ྫ͑͹Java 7͸2011೥7݄ϦϦʔεɻແঈαϙʔτ͸2015೥4݄·Ͱ Java 8͸2014೥3݄ϦϦʔε ͜͜Ͱ͍͏ʮແঈαϙʔτظؒʯͱ͸ʮແঈΞοϓσʔτ͕ఏڙ͞ΕΔظؒʯΛࢦ͢ ಛʹηΩϡϦςΟύονͳͲ΋͋ΔͨΊɺແঈΞοϓσʔτ͕ఏڙ͞ΕΔ͜ͱ͸ॏཁ ༗ঈͰ͋Ε͹΋ͬͱ௕ظؒͷαϙʔτΛड͚ΒΕΔ Java 7͔ΒJava 8΁ͷҠߦ͸1ʙ2೥͘Β͍ͷ༛༧͕͋Δͱݴ͑Δ JDKͷαϙʔτظؒ 45

Slide 46

Slide 46 text

Oracle OpenJDKͷແঈαϙʔτظؒ͸ʮ࣍ͷόʔδϣϯ͕ग़Δ·Ͱʯ ͭ·Γ൒೥͔ؒ͠Ξοϓσʔτ͕ఏڙ͞Εͳ͍ ൒೥ޙʹ͸࣍ͷόʔδϣϯʹҠߦ͢Δඞཁ͕͋Δ ͜Ε͕ʮJava͕༗ঈԽ͞ΕΔʯͱ͍͏ޡղʹഥंΛֻ͚ͨ OpenJDKͷαϙʔτظؒ 46

Slide 47

Slide 47 text

֤͔ࣾΒ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

Slide 48

Slide 48 text

͍·ͷओྲྀ͸ϓϥοτϑΥʔϜͰαϙʔτ͞Ε͍ͯΔOpenJDKΛར༻͢Δ͜ͱ Red Hat Enterprise LinuxΛ࢖͏ͳΒRed Hat OpenJDK AWSͰ࢖͏ͳΒAmazon Corretto AzureͰ࢖͏ͳΒMicrosoft Build of OpenJDK ֶश΍ௐࠪ༻ͳΒαϙʔτظؒͷ୹͍Oracle OpenJDKͰ΋ߏΘͳ͍ ֤͕ࣾఏڙ͢ΔOpenJDKʹ͓͍ͯগͣͭ͠ఏڙ͢Δπʔϧ͕ҧͬͨΓɺద༻͞ΕΔύον͕ҟͳΔ͜ͱ͸ 
 ͋ΓಘΔ͕ɺݩͱͳΔOpenJDK͸ಉҰͰ͋ΔͨΊͲΕΛ࢖ͬͯ΋99%ಉ͡ɻίΞػೳ͸100%ಉ͡ ༷ʑͳOpenJDK 48

Slide 49

Slide 49 text

·ͱΊ: ͜Ε͔ΒͷJava

Slide 50

Slide 50 text

͜ͷΑ͏ͳឯ༨ۂંΛܦͯɺOSS൛ͷJava͸OpenJDKͱͯ͠ҰຊԽ͞Εͨ ෳ਺ͷاۀ΍ஂମɺݸਓʹΑΓ࣮૷ɺϝϯςφϯε͞Ε͍ͯΔ ͪͳΈʹ೔ຊʹ΋OpenJDKͷίϛολ͕͍ΔΑ ݱ୅ʹ͓͍ͯݴޠ΍ϓϥοτϑΥʔϜ͕OSSͰ͋Δ͜ͱ͸౰ͨΓલͷΑ͏ʹײ͡Δ͕ 
 JavaͷΑ͏ʹ௕͍ྺ࢙͕͋ͬͯڊେͳΤίγεςϜΛ൐͏΋ͷΛ 
 OSSจԽͷਁಁ΍੒ख़ͱڞʹOSSԽ͢Δͱ͜Ζʹ͸૬౰ͳ౒ྗ͕͋ͬͨͱݴ͑Δ OSSʹͳͬͨJava 50

Slide 51

Slide 51 text

GraalVMʹΑΔωΠςΟϒΠϝʔδͷ࡞੒ ίϯύΠϧͨ͠΋ͷΛJavaVM্Ͱ࣮ߦ͢ΔͷͰ͸ͳ͘ 
 ίϯύΠϧͯͦ͠ΕͧΕͷOS͝ͱʹ࣮ߦՄೳͳόΠφϦΛ࡞Δ ىಈ࣌ؒͷ୹ॖɺϝϞϦ࢖༻ྔͷ࡟ݮ ϊϯϒϩοΩϯάॲཧ΍ܰྔεϨουʹΑΔฒྻॲཧͷվળ Reactor΍RxJavaͳͲΛ༻͍ͨϦΞΫςΟϒϓϩάϥϛϯάʢOSSϓϩμΫτʣ Project LoomʹΑΔܰྔεϨου΍ݶఆܧଓͷఏڙʢJavaͷඪ४ػೳʹೖΔ༧ఆʣ ࠷ۙͱࠓޙͷJavaͷτϨϯυ 51

Slide 52

Slide 52 text

൒೥͝ͱͷϦϦʔεʹͳΓɺҎલΑΓ΋ػೳ௥Ճͷεϐʔυ͕૿ͨ͠ Flight RecorderʢJavaVMͷϝτϦΫε৘ใΛه࿥͢Δɻ঎༻ػೳͩͬͨ΋ͷ͕OSSԽʣ switchࣜʢswitch͕จ͚ͩͰͳࣜ͘ͱͯ͠࢖͑ΔΑ͏ʹͳΓɺ஋ΛฦͤΔʣ ςΩετϒϩοΫʢ͍ΘΏΔώΞυΩϡϝϯτɻෳ਺ߦͷจࣈྻΛએݴͰ͖Δʣ Ϩίʔυܕʢσʔλܕʹ͍ۙɻΠϛϡʔλϒϧͳσʔλΫϥεΛ༰қʹ࡞ΕΔʣ ύλʔϯϚονʢΦϒδΣΫτͷܕʹΑͬͯ෼ذ͢Δʣ ػೳ௥Ճͷߴ଎Խ 52

Slide 53

Slide 53 text

ܧଓతͳֶश͕ඞཁ ݹ͍஌ࣝͷ··Ͱ΋ϓϩάϥϛϯάͰ͖Δ͕ɺͦΕ͕ਖ਼͍͠Θ͚Ͱ͸ͳ͍ ৽͍͠ػೳ͕࢖ΘΕͨιʔείʔυΛಡΊͳ͍ͱࠔΔͰ͠ΐ͏ ܧଓతͳֶशΛଅ͢ίϛϡχςΟͷॏཁੑ͕૿͢ ఆظతͳษڧձ΍৘ใൃ৴ͳͲ ػೳ௥Ճͷߴ଎Խ΁ͷରԠ 53

Slide 54

Slide 54 text

ܧଓతͳόʔδϣϯΞοϓ͕ඞཁ ͤΊͯ3೥͓͖ʹϦϦʔε͞ΕΔLTS൛ʹ௥ै͍ͤͨ͞ ୯७ʹJavaͷόʔδϣϯ͚ͩͰͳ͘ɺपลϥΠϒϥϦ΍ϑϨʔϜϫʔΫɺ 
 ϛυϧ΢ΣΞͷόʔδϣϯΞοϓ͕ඞཁͱͳΔέʔε΋ଟ͍ όʔδϣϯΞοϓʹ௥ै͢ΔͨΊͷCI/CD΍ࣗಈςετͷ࢓૊Έ͕ෆՄܽ DevOpsվળɺͻ͍ͯ͸ΤϯδχΞ΍૊৫ͷ࣭ΛߴΊΔ ʢόʔδϣϯΛԘ௮͚ʹ͢Δͱ͍͏બ୒ࢶ΋ΞϦͰ͚͢Ͳ΋ʣ ϦϦʔεαΠΫϧͷߴ଎Խ΁ͷରԠ 54

Slide 55

Slide 55 text

Java͸OSSจԽͱڞʹาΈɺJavaࣗ਎΋OSSԽ͞Εͨ ༷ʑͳOSSϓϩμΫτ͕ੜ·ΕɺJavaඪ४ʹऔΓࠐ·ΕΔྲྀΕ΋ੜ·Εͨ ଟ͘ͷ૊৫΍ݸਓͷߩݙʹࢧ͑ΒΕ͍ͯΔ ։ൃݩͷاۀ͕ങऩ͞Εͯ΋ɺOSSϓϩμΫτ͸าΈ͕ࢭ·Βͳ͍ ϦϦʔε͕ߴ଎Խ͞Εɺػೳ௥Ճ͕ૣ͘ͳͬͨ ։ൃίϛϡχςΟ΍ϢʔβʔάϧʔϓͳͲͷॏཁੑ͸ࠓޙ΋૿͍ͯ͘͠ ·ͱΊ 55

Slide 56

Slide 56 text

ຖ݄ͷJJUGφΠτηϛφʔ ࣍ճ͸9/29(ਫ)༧ఆ - Java 17ϦϦʔεه೦ηϛφʔ ೥ʹ2ճͷJJUG CCC ࣍ճ͸11/21(೔) URL: https://www.java-users.jp/ Twitter: @JJUG JJUGʹࢀՃ͠Α͏ʂ 56