Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Javaʹ͓͚Δ ؔܕϓϩάϥϛϯάͷऔΓΈ ᓎఉ༞Ұ Java in the Box
Slide 2
Slide 2 text
Java 8 2014: Project Lambda Lambda ࣜ& Stream API ແ໊ؔ ෦ΠςϨʔλʔ var nums = List.of(0, 1, 2, 3, 4); ྫ ϦετͷཁૉΛ ͨ͠ϦετΛ࡞ var squared = nums.stream() .map( x -> x*x ) .toList(); ετϦʔϜม ϥϜμࣜ
Slide 3
Slide 3 text
Function f = x -> x*x; ؔܕͰͳ͍ ϝιουΛ ͚ͭͩఆٛͨ͠ΠϯλϑΣʔε f Function ΦϒδΣΫτ
Slide 4
Slide 4 text
Function f = x -> x*x; ϝιουΛ ͚ͭͩఆٛͨ͠ ΠϯλϑΣʔεΛ࣮ͨ͠ ΫϥεͷΠϯελϯγΤʔγϣϯ x*x ͕ϝιουͷϘσΟ
Slide 5
Slide 5 text
Java ͷݴޠ༷ͷมߋ Java Lang Spec ͚ͩͷมߋͰࡁΉ༷มߋ ൺֱత༰қʹมߋՄೳ JVM Spec ͷมߋ͕ඞཁͱͳΔ༷มߋ ͱͯϋʔυϧ͕ߴ͍ ؔܕͷಋೖ JVM Spec ͷมߋ͕ඞཁ
Slide 6
Slide 6 text
Lambdaࣜͷ࣮ݱํ๏ InvokeDynamicͷ׆༻ ݩʑJRubyͳͲಈతܕ͚ݴޠͷͨΊʹ Java 7Ͱಋೖ͞Εͨϝιουίʔϧ༻ͷόΠτίʔυ ࣮ߦ࣌ʹίʔϧ͢ΔϝιουΛ୳ࡧ͔ͯ͠Β ϝιουίʔϧΛߦ͏ LambdaࣜͰಈతʹΫϥεੜΛߦ͔ͬͯΒ ΦϒδΣΫτΠϯελϯγΤʔγϣϯΛߦ͏
Slide 7
Slide 7 text
InvokeDynamicͷಈ࡞ ొਓ bootstrapϝιου CallSiteΫϥε MethodHandleΫϥε ୳ࡧΛߦ͍݁ՌΛCallSiteͰ͢ϝιου MethodHandleΛอ࣋͢Δίϯςφ ࣮ߦ͢ΔϝιουΛࣔ͢ indy ॳճ bootstrap ϝιου୳ࡧ CallSite MethodHandle ੜ λʔήοτϝιου ࣮ߦ
Slide 8
Slide 8 text
InvokeDynamicͷಈ࡞ ొਓ bootstrapϝιου CallSiteΫϥε MethodHandleΫϥε ୳ࡧΛߦ͍݁ՌΛCallSiteͰ͢ϝιου MethodHandleΛอ࣋͢Δίϯςφ ࣮ߦ͢ΔϝιουΛࣔ͢ indy bootstrap CallSite MethodHandle λʔήοτϝιου ճҎ߱ ࣮ߦ
Slide 9
Slide 9 text
Lambdͷࣜͷಈ࡞ Java ιʔείʔυ ΫϥεϑΝΠϧ ίϯύΠϧ ϥϜμࣜͷϝιουϘσΟΛ static ϝιουԽͯ͠Ճ -BNCEB ࣮ࣜߦ CPPUTUSBQ ॳճ ΠϯλϑΣʔε࣮ΫϥεΛಈతੜ static ϝιουΛίʔϧ͢ΔΑ͏ʹ͢Δ ಈతੜΫϥεΛΠϯελϯγΤʔγϣϯ͢Δ CallSite Λੜ CallSite ͔ΒΠϯελϯγΤʔγϣϯ࣮ߦ
Slide 10
Slide 10 text
Lambdͷࣜͷಈ࡞ Java ιʔείʔυ ΫϥεϑΝΠϧ ίϯύΠϧ ϥϜμࣜͷϝιουϘσΟΛ static ϝιουԽͯ͠Ճ -BNCEB ࣮ࣜߦ CPPUTUSBQ ॳճ ΠϯλϑΣʔε࣮ΫϥεΛಈతੜ static ϝιουΛίʔϧ͢ΔΑ͏ʹ͢Δ ಈతੜΫϥεΛΠϯελϯγΤʔγϣϯ͢Δ CallSite Λੜ CallSite ͔ΒΠϯελϯγΤʔγϣϯ࣮ߦ ճҎ߱
Slide 11
Slide 11 text
Project LambdaҎ߱ͷؔܕϓϩάϥϛϯάػೳ Optional Record Πϛϡʔλϒϧͳσʔλܕ Sealed Class ܧঝͷ੍ݶ తσʔλܕ switchࣜ ܕʹΑΔύλʔϯϚονϯά ͚͍ܽͯΔͷ if ࣜ ྫ֎ॲཧ EitherͳͲఏڙ͞Ε͍ͯͳ͍ I/O ैདྷͷखଓ͖తͳI/OॲཧͷΈ
Slide 12
Slide 12 text
Project LambdaҎ߱ͷؔܕϓϩάϥϛϯάػೳ ࠓޙಋೖ༧ఆ Stream Gatherer StreamͷΟϯυॲཧ null ڐ༰ܕඇڐ༰ܕ JVMSͷมߋ͕ඞཁ
Slide 13
Slide 13 text
JavaΛ͏ଆͷঢ়گ खଓ͖తهड़͔Βએݴతهड़ͷաظ એݴతͳඪ४ϥΠϒϥϦ CompletableFuture Flow (Reactive Stream) HTTP Client એݴతͳϥΠϒϥϦϑϨʔϜϫʔΫ Spring WebFlux Oracle Helidon Red Hat Quarkus
Slide 14
Slide 14 text
·ͱΊ Java 8ͰͷProject Lambda͕ॹ LambdaࣜΛؔͱͯ͠ѻ͏ ύλʔϯϚονϯά ADTͳͲͷಋೖ͕ਐΉ ݱࡏએݴతهड़ͷաظ
Slide 15
Slide 15 text
Javaʹ͓͚Δ ؔܕϓϩάϥϛϯάͷऔΓΈ ᓎఉ༞Ұ Java in the Box