Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to Modern Java
Search
Takumi Endo
June 15, 2014
Programming
9.2k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Modern Java
社内勉強会資料(2014/06/17 修正)
Takumi Endo
June 15, 2014
More Decks by Takumi Endo
See All by Takumi Endo
ヒトとクルマと業務をつなげるコネクテッドカーサービス「Cariot」のAPI/Cariot API
tqjappy
3
4k
5分くらいでわかるSwagger / 5minutes-swagger
tqjappy
1
1.6k
Writing Nice Code
tqjappy
1
820
Other Decks in Programming
See All in Programming
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.1k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
240
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
150
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
670
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
310
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
110
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
180
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
790
Family mrubyの進捗
kishima
1
110
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
230
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
How STYLIGHT went responsive
nonsquared
100
6.3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
͘Β͍Ͱ͔Δ ࠷৽+BWBࣄ ॳ৺ऀͷ ॳ৺ऀʹΑΔ ॳ৺ऀͷͨΊͷ
͜ͷεϥΠυͷझࢫ w ࠷ۙͷࢀՃͨ͠+BWBܥΠϕϯτͷϨϙʔτ w ࠷ۙͷ+BWBपลͷτϐοΫΛͬ͘͟ΓͬͯΒ ͏ w ͍ͭͰʹɺࣗͰΞτϓοτ͢Δ͜ͱͰใΛ ཧͯ͠ཧղΛਂΊΔ w
ਤগͳΊɻखൈ͖Ͱ͋Γ·ͤΜʢखൈ͖Ͱͳ͍ ͱݴͬͯͳ͍ʣ
λʔήοτ w +BWBͷ͕ࣝ+BWB +BWB4& ͘Β͍Ͱࢭ·ͬ ͯΔਓ w +BWB͕͖Ͱ͑ΔΑ͏ʹͳΓ͍ͨΤϯδχΞ ʢओʹ৽ೖࣾһɺएखͷਓʣ
໔ࣄ߲ w ใಠஅͱภݟͰϑΟϧλϦϯά͞Ε͍ͯΔ ͱ͜Ζ͕͋Γ·͢ w ͜ͷ༰͕શͯͰͳ͍͠ɺઈରʹਖ਼͍͠ͱ͍ ͏ͷͰ͋Γ·ͤΜ
ϨϙʔτରͱͳΔ ใݯʹ͍ͭͯ
ߦ͖ͬͯͨ w (MBTT'JTI6TFST(SPVQ+BQBOษڧձ w ++6(φΠτηϛφʮ+BWB&&ಛूʯ w %FWFMPQFST4VNNJU
w &OUFSQSJTFº+BWB8FC"QQMJDBUJPO $POGFSFODF w ++6(Πϕϯτʮॕˑ+BWB-BVODIʯ w +BWB%BZ5PLZP
ߦͬͯͳ͍͚Ͳʜ w +BQBO+#PTT6TFS(SPVQḐͷ+#PTT w ++6(φΠτηϛφʮ+BWBղੳπʔϧότ ϧʯ w
++6(+((6(ڞ࠵φΠτηϛφʮ ࣌ؒͰ͔Δʂ࣍ੈϏϧυπʔϧͷຊ໋(SBEMFͷશ ʯ w ++6($$$4QSJOH
ങͬͨˍʢେମʣ ಡΜͩ w +BWBٯҾ͖ϨγϐʢΦεεϝʂʣ w +6OJU࣮ફೖʢΦεεϝʂʣ w ࣮ફςετۦಈ։ൃ w +#PTTߏஙɾӡ༻ύʔϑΣΫτΨΠυ
w #FHJOOJOH+BWB&&ʢۚڕຊʣ
͜͜࠷ۙͷ+BWBܥ χϡʔε
w ݄+BWB&&ϦϦʔε ˞+BWB&&݄ w ݄+BWB +BWB4& ϦϦʔε ˞+BWB4&݄
ΞδΣϯμ w +BWB4&ͱ+BWB&&ͬͯԿ͕ҧ͏ͷʁ w +BWB&&ͳʹ͕৽͘͠ͳͬͨͷʁ w +BWB4&ͳʹ͕৽͘͠ͳͬͨͷʁ w ࢀՃͨ͠ΠϕϯτͷϨϙʔτɾײ w
+BWBͷτϐοΫམͪึर͍
+BWB4&ͱ+BWB&&ͬͯ Կ͕ҧ͏ͷʁʢ෮शʣ
+BWBϓϥοτϑΥʔϜ छྨ ֓ཁ λʔήοτ +BWB4&ͱͷ ؔΘΓ +BWB4& 4UBOEBSE&EJUJPO ඪ४ͷ ػೳηοτ
৭ʑ +BWB&& &OUFSQSJTF&EJUJPO اۀ༻ ػೳηοτ αʔόͳͲ +BWB4&ʴ֦ுػೳ javax.* +BWB.& .JDSP&EJUJPO ΈࠐΈ͚ͷ اۀηοτ ΈࠐΈػث +BWB4&ͷ αϒηοτʴ ΈࠐΈ͚"1* ˞ ͔ͭͯͦΕͧΕ+4& +&& +.&ͱݺΕ͍ͯͨ ˞ ʮ+BWB4&&NCFEEFEʯͬͯͷ͋Δɻ+BWB.&ͱผ ˞ +BWB4&ʹjavax.*ܥͷ"1*͍ͬͺ͍͋Δʢ+/%*ͱ͔ʣ
+43 +BWB4QFDJpDBUJPO3FRVFTU w +BWBքͰͷ3'$ͷΑ͏ͳͷ w +BWBͷ༷+43ͷू·Γ w +BWB4& +BWB&&
+BWB.& w +$1 +BWB$PNNVOJUZ1SPDFTT ͕༷Λࡦఆ w 0SBDMF *#. 3FE)BUͳͲ w -JTUPGBMM+43T IUUQTKDQPSHFOKTSBMM
ϓϩϑΝΠϧ w +BWB&&ʹ͓͍ͯඞཁͳ༷͚ͩબ͢ΔΈ w 'VMMϓϩϑΝΠϧ w શ෦ೖΓ w 8FCϓϩϑΝΠϧ w
8FCΞϓϦέʔγϣϯ༷ w IUUQFOXJLJQFEJBPSHXJLJ+BWB@&&@WFSTJPO@IJTUPSZ
ࢀর࣮ʢϦϑΝϨϯε࣮3*ʣ w ༷Λ࣮ݱ͢ΔιϑτΣΞɺϋʔυΣΞ w +BWB4& 0QFO+%,ͳͲ w +BWB&& (MBTT'JTIͳͲ
w +43͋͘·Ͱ༷ͳͷͰɺ࣮͕ඞཁ w ඪ४༷ͳͷͰʢجຊతʹʣೖΕସ͕͑ޮ͘
ೖΕସ͕͑ޮ͘ͱݴͬͯʜ w ఏڙ͞Ε͍ͯΔKBSΛͬͯɺϕϯμґଘͷ"1*Λ͑ ɺҠ২ੑࣦΘΕΔ w ͷίʔσΟϯάʮҎ֎ʯͷ෦ͰΞϓϦέʔγϣϯ αʔό͝ͱͷੑ֨ΛΔඞཁ͕͋Δ w ΫϥεϩʔσΟϯάͷΈͳͲ w
ӡ༻ϊϋҟͳͬͯ͘Δ w ཧπʔϧʢBTBENJOͳͲʣɺ+.9
+BWB&&ΞϓϦέʔγϣϯαʔό ʢ044ฤʣ ໊લ ࠷৽ όʔδϣϯ +BWB&& උߟ (MBTT'JTI
+BWB&& WҎ߱༻αϙʔτऴྃ 8JME'MZ چ+#PTT "QQMJDBUJPO4FSWFS 'JOBM +BWB&& +BWB4&ରԠ "QBDIF5PN&& +BWB&& ݺͼํʮτϛʔʯ "QBDIF(FSPOJNP +BWB&&
+BWB&&ΞϓϦέʔγϣϯαʔό ʢ༻ϓϩμΫτฤʣ w 8FC-PHJD 0SBDMF w 8FC4QIFSF *#.
w +#PTT&OUFSQSJTF"QQMJDBUJPO1MBUGPSN 3FE)BU w ͳͲ
+BWB&&ͳʹ͕ ৽͘͠ͳͬͨͷʁ
+BWB&& w σϒαϛͰͷࣉా͞ΜͷൃදεϥΠυ ʮOFXGFBUVSFTPG+BWB&&JONJOVUFTʯ w IUUQXXXTMJEFTIBSFOFU0SBDMF.JEEMF+1KBWBFF GFBUVSFT w ݸਓతͳ w
K#BUDI +43 ɺ8FC4PDLFU +43 ɺ $PODVSSFODZ +43 ɺ+5" +43 ɺ+.4 +43
2+BWB&&ͷػೳ+BWB&& ڥ͡Όͳ͍ͱ͑ͳ͍ͷʁ ! "͑ͨΓ͑ͳ͔ͬͨΓ
+BWB4&Ͱ99͕͍ͨ͠ʂ +43 ࣮ݱྫ +43$POUFYUBOE %FQFOEFODZ*OKFDUJPO GPS+BWB&& $%* 8FMEIUUQXFMEDEJTQFDPSH +43+BWB"1*GPS 8FC4PDLFU
5ZSVTIUUQTUZSVTKBWBOFU +FUUZIUUQXXXFDMJQTFPSHKFUUZ ˞+FUUZʙʢ8FC4PDLFUͷରԠࣗମ͔Βʣ +43+"9345IF +BWB"1*GPS3&45GVM 8FC4FSWJDFT +43+"934 +FSTFZIUUQTKFSTFZKBWBOFU +43+BWB 1FSTJTUFODF +1" )JCFSOBUFIUUQIJCFSOBUFPSH ˞+1"ରԠҎ߱ʁ +43#BUDI "QQMJDBUJPOTGPSUIF +BWB1MBUGPSN K#BUDI ࣉా͞Μϒϩά IUUQZPTIJPDPNKCBUDIKTSPOKBWBTFڥ
+BWB&&ͷֶͼํ w ϝδϟʔͳΈ߹Θͤ(MBTT'JTI /FU#FBOT w ࢲతʹ8JME'MZ &DMJQTFʢ͔ͳʁʣ w ࠷ॳ&+#ɺ$%*ɺ+"934ɺ+.4ʢɺ+1"ʣ͋ͨΓ w
νϡʔτϦΞϧ5IF+BWB&&5VUPSJBM w IUUQEPDTPSBDMFDPNKBWBFFUVUPSJBMEPD w +BWB&&ͷࠃॻ੶·ͩͳ͍
ۀͰͷ+BWB&& w ͍͜ͳͤΔͳΒɺ͔ͳΓ༗ྗͳબࢶ w ։ൃ༰қੑɺ༷ͷεϦϜԽɺܰྔԽɺγϯϓ ϧԽɺ)5.- w ͍͜ͳͤΔΑ͏ʹͳΔ·ͰͷϋʔυϧԼ͕ͬ ͯΔ͚ͲɺͰͬͺΓͦΕͳΓʹߴ͍ w
ʮϋϚΔʯͱղܾʹ͕͔͔࣌ؒΔ
+BWB4&ͳʹ͕ ৽͘͠ͳͬͨͷʁ
ʜͷલʹɺ
+BWBˠ+BWB w 1SPKFDU$PJO +43 w TXJUDIจͰͷจࣈྻධՁ w ਐϦςϥϧɺϦςϥϧͷΞϯμʔόʔ۠Γ
w ྫ֎ͷϚϧνΩϟονͱਖ਼֬ͳ࠶εϩʔ w μΠϠϞϯυԋࢉࢠ w USZXJUISFTPVSDFT w ՄมҾར༻࣌ͷ@SafeVarargs
+BWBˠ+BWB w /*0 +43 w 'PSL+PJO'SBNFXPSL +43ͷΞοϓσʔτʣ w
*OWPLF%ZOBNJD +43
μΠϠϞϯυԋࢉࢠ List<String> messages = new ArrayList<String>(); +BWB List<String> messages =
new ArrayList<>(); +BWB
ྫ֎ͷϚϧνΩϟον try { // ... } catch (FooException e)
{ // ... } catch (BarException e) { // ... } catch (BazException e) { // ... } +BWB
ྫ֎ͷϚϧνΩϟον ˞ܧঝؔʹ͋Δྫ֎ϚϧνΩϟονෆՄʢίϯύΠϧΤϥʔʣ try { // ... } catch (FooException
| BarException | BazException e) { // ... } +BWB
ྫ֎ͷਖ਼֬ͳ࠶εϩʔ public void method() throws FooException, BarException { try {
// ... } catch (Exception e) { throw e; } } +BWB
Ϧςϥϧ int a = 0b101; // => 5 +BWB ˞0b·ͨ0BͰ͡ΊΔͱਐϦςϥϧ
int a = 1_000_000; // => 1000000 +BWB ˞ਐϦςϥϧʹݶΒͣɺϦςϥϧ@Ͱ۠Δ͜ͱ͕Ͱ͖Δ
USZXJUISFTPVSDFT BufferedReader br = null; try { br =
new BufferedReader(new FileReader(path)); String line = null; while((line = br.readLine()) != null) { // … } } finally { if (br != null) { try { br.close(); } catch(IOException ignore) { } } } +BWB
USZXJUISFTPVSDFT try (BufferedReader br = new BufferedReader(new FileReader(path)) {
String line = null; while((line = br.readLine()) != null) { // … } } +BWB ˞ ϦιʔεΛ࣮֬ʹΫϩʔζͯ͘͠ΕΔ ˞ ϦιʔεෳఆٛՄʢ࡞ͷٯॱʹΫϩʔζ͞ΕΔʣ ˞ tryϒϩοΫͱtry-with-resourcesͷ྆ํ͔Βྫ֎͕εϩʔ͞Ε ͨ߹ɺޙऀͷྫ֎੍͞ΕΔʢ#getSuppressedͰऔಘՄʣ ˞ catchϒϩοΫfinallyϒϩοΫΫϩʔζޙʹ࣮ߦ͞ΕΔ
/*0 BufferedReader br = Files.newBufferedReader( Paths.get("a.txt"), StandardCharsets.UTF_8); +BWB ˞ ҆શͳจࣈίʔυࢦఆ
˞ ศརͳϢʔςΟϦςΟ͕͍ͬͺ͍͋Δ List<String> lines = Files.readAllLines( Paths.get("a.txt"), StandardCharsets.UTF_8); +BWB
ʢվΊͯʣ+BWBͷ ৽͘͠ͳͬͨͱ͜Ζ
+BWB w ϩʔϯνΠϕϯτͰͷࣉా͞ΜͷൃදεϥΠυ ʮ/FX'FBUVSF0G+BWB4&ʯ w IUUQXXXTMJEFTIBSFOFU0SBDMF.JEEMF+1OFXGFBUVSF PGKBWBTF w ৄࡉ+BWB4&*5QSPʢᓎఉ͞Μʣ w
৽ػೳ֓ཁ w IUUQXXXPSBDMFDPNUFDIOFUXPSLKBWBKBWBTFXIBUT OFXIUNM
+BWBˠ+BWB w ͔ͳΓେ͖ͳΞοϓσʔτ w 3FWPMVUJPOˠɺˠ w &WPMVUJPOˠɺˠ w +BWBϓϩάϥϚมԽ͕ඞཁ
w ྫʣ$BMMBCMFېࢭɺOVMMېࢭɺGPSจېࢭ
+BWBˠ+BWB w ϓϩάϥϜతͳมߋϙΠϯτʢҰ෦ʣ w ϥϜμࣜ +43 ɺ4USFBN"1* w %BUFBOE5JNF"1*
+43 w 0QUJPOBM w ූ߸ͳ͠ w ΠϯλϑΣʔεͷσϑΥϧτ࣮ w λΠϓΞϊςʔγϣϯ
+BWBˠ+BWB w ෦ɾपลπʔϧతͳมߋϙΠϯτʢҰ෦ʣ w +BWB4DSJQUΤϯδϯ͕ʮ/BTIPSOʯʹมߋ w DMBTTϑΝΠϧͷϑΥʔϚοτ͕มΘͬͨ w 1FSNBOFOUྖҬ͕ͳ͘ͳΓ.FUBTQBDFʹมߋ
w )PU4QPU+7.ͱ+3PDLJU+7.ͷ౷߹ʹ͚ͨಈ͖ w +BWB.JTTJPO$POUSPM JDK_HOME/bin/jmc.exe
ϥϜμࣜ w +BWBͰؔʢؔܕΠϯλϑΣʔεʣΛهड़͢Δ ͨΊͷͷ w ؔܕΠϯλϑΣʔεʹ࣮͕ඞཁͳϝιου ͕͚ͭͩͷΠϯλϑΣʔε w ΫϩʔδϟͱҟͳΔ (引数のリスト)
-> { 処理 } +BWB
ϥϜμࣜʙجຊʙ list.sort(new Comparator<String>() { @Override public int compare(String s1, String
s2) { return s1.length() - s2.length(); } }); +BWB list.sort((String s1, String s2) -> { return s1.length() - s2.length(); }); +BWB
ϥϜμࣜʙলུʙ list.sort((s1, s2) -> s1.length() - s2.length()); list.sort((s1, s2) ->
{ return s1.length() - s2.length(); }); +BWB ˞ ࣗ໌ͳҾͷܕলུͰ͖Δ +BWB ˞ {}Ͱғ·ͳ͍߹ɺࣜͷ݁Ռ͕ͦͷ··ϥϜμࣜͷΓʹͳΔ
ࡉ͔͍ҙ w thisͷείʔϓ w ϥϜμࣜͷதͷthis֎ଆΛࢦ͢ w ϥϜμࣜͷதͰͷྫ֎ w ϥϜμࣜͷதͰͷྫ֎ɺ֎ଆͷtry-catchͰ ΩϟονͰ͖ͳ͍ͷͰɺϥϜμࣜͷதͰΩϟον͢Δ
w V·ͰϥϜμࣜͰͷྫ֎ΛϚϧνΩϟον͢Δͱ ͕ى͖Δʢ+%,ʣ
ؔܕΠϯλϑΣʔε w java.util.funcitonύοέʔδʹ৭ʑ͋Δ w ҾͷܕͱݸɺΓͷܕͰ͏͖ؔܕΠϯλϑΣʔεܾ ·Δ w ༻ҙ͞Ε͍ͯͳ͍ͷ@FunctionalInterfaceΛ͚ͭͨΠϯλ ϑΣʔεͱͯ͠ಠࣗʹ࣮͢Δɻ͜ͷΞϊςʔγϣϯඞਢͰͳ͍ ͕ɺ͚͓ͭͯ͘ͱίϯύΠϥ͕৭ʑࢦఠͯ͘͠ΕΔ
w ϝιου͕ఆٛ͞Ε͍ͯͳ͔ͬͨΓɺෳఆٛ͞Ε͍ͯΔͱίϯ ύΠϧΤϥʔ w σϑΥϧτ࣮ʢޙड़ʣΛͭϝιουҰͭͰίϯύΠϧΤϥʔ
2ϥϜμࣜͬͯɺಗ໊ʢ෦ʣΫϥεΘͣʹ γϯϓϧʹॻ͚ΔΑ͏ʹͳ͚ͬͨͩʁ "/P4USFBN"1*ͰਅՁΛൃش͢Δɻ ͪͳΈʹɺಗ໊Ϋϥεʹରͯ͠ɺ୯ͳΔ γϯλοΫεγϡΨʔͱ͍͏Θ͚Ͱͳ͍
4USFBN"1*ಋೖฤ for (String s : list) { System.out.println(s); } +BWB
list.forEach((s) -> System.out.println(s)); +BWB +BWB ϝιουࢀরͰ͞Βʹ؆ܿʹ list.forEach(System.out::println);
ϝιουࢀর w ҾͱΓͷܕ͕ϥϜμࣜͱಉ͡߹ɺϥϜμࣜͷ͔ ΘΓʹ͏͜ͱ͕Ͱ͖Δ w Φʔόʔϩʔυ͞Ε͍ͯͯ0,ʢܕਪ͕ݡ͍ʣ クラス名::staticメソッド名 +BWB インスタンス名::インスタンスメソッド名 +BWB
4USFBN"1* w List, Map, Setʹ4USFBN༻ͷ"1*͕Ճ w ྻ͔ΒArrays.stream(配列) w よくある「n回繰り返し」もこの通り IntStream.range(0,
10).forEach(System.out::println); +BWB
ετϦʔϜɾύΠϓϥΠϯ List<Integer> list = Arrays.asList(5, 2, 4, 3, 1); !
List<Integer> list2 = list.stream() .filter(n -> n >= 3) .map(n -> n *= 2) .sorted((n1, n2) -> n1 - n2) .collect(Collectors.toList()); +BWB ^தؒૢ࡞ ऴૢ࡞ ˞ ݸҎ্ͷதؒૢ࡞ͱ࠷ޙͷͭͷऴૢ࡞͔ΒͳΔ ˞ தؒૢ࡞Ԇ͞Εɺऴૢ࡞࣌ʹ·ͱΊ࣮ͯߦ͞ΕΔ ˞ stream()ͷ͔ΘΓʹparallelStream()Λ͏ͱฒྻॲཧͰ͖Δ ετϦʔϜੜ
࣮࣭తpOBM String msg = "test"; ! Runnable r1 = new
Runnable() { @Override public void run() { System.out.println(msg); } }; ! // ϥϜμ Runnable r2 = () -> { System.out.println(msg); }; +BWB +BWB final String msg = "test"; ! Runnable r1 = new Runnable() { @Override public void run() { System.out.println(msg); } }; ˞ finalͳ͠ͰࢀরՄೳʢ࠶ೖ͢ΔͱίϯύΠϧΤϥʔʹͳΔʣ
%BUFBOE5JNF"1* w +PEB5JNFతͳɾ࣌ࠁૢ࡞ͷ"1*͕ඪ४ͱ͠ ͯఏڙ͞Εͨ w ɿjava.time.LocalDate w ࣌ؒɿjava.time.LocalTime w ࣌ɿjava.time.LocalDateTime
java.util.Optional w ͵ΔΆͷΈ w ݺͼग़͠ଆʹରͯ͠ɺʮ͕ଘࡏ͢Δ͔͠Ε ͳ͍͠ɺଘࡏ͠ͳ͍͔͠Εͳ͍ʯ͜ͱΛ໌ࣔ Ͱ͖Δ w ࠓ·ͰOVMMνΣοΫ͢Δ͔Ͳ͏͔ͷஅ͕ ͔ͬͨ͠
ΠϯλϑΣʔεͷσϑΥϧτ࣮ w ΠϯλϑΣʔε͕σϑΥϧτͷ࣮Λ࣋ͯΔ w ΠϯλϑΣʔεʹstaticϝιουఆٛͰ͖Δ public interface Foo { !
default void hoge() { // ... } } +BWB
+BWB4&ͷֶͼํ w ϥϜμࣜɺ4USFBN"1*पΓͰ"1*͕͔ͳΓ૿͑ͨ w ·ͣಡΊΔΑ͏ʹͳΔͨΊͷ࠷ݶͷͷΛशಘ w ʮԶͷͬͯΔ+BWBͱҧ͏ʯঢ়ଶʹͳΒͳ͍ w *%&/FU#FBOT͕Α͍ʢ͔ͳʜʣ w
ࢼͨ͠ڥ.BD049 /FU#FBOT w &DMJQTFͱγϣʔτΧοτඍົʹҧ͏
+BWBͷτϐοΫ མͪึर͍
+BWBͷपลࣝ w +7.্Ͱಈ͘ݴޠ w ϙʔλϒϧ8FCΞϓϦέʔγϣϯ w ςετ w +7.ҎԼͷͷ w
+BWBύϥϝʔλνϡʔχϯά w ($ϝϞϦཧͷΈ
+7.্Ͱಈ͘ݴޠ w (SPPWZ w +3VCZ 3VCZ w +ZUIPO 1ZUIPO
w 4DBMB
(SPPWZ w (SPPWZΛ֮͑Δ͖ࢲతೋͭͷେ͖ͳཧ༝ ʢඅ༻ରޮՌ͕େ͖͍ͱࢥΘΕΔͷʣ w Ϣχοτςετ w (SBEMF
ϙʔλϒϧ8FCΞϓϦέʔγϣϯ w +BWB&&ͱผͷΞϓϩʔνͱͯ͠ɺKBSXBSҰͭͰಈ͔ͤΔΑ͏ ͳܗଶͰͷΞϓϦέʔγϣϯ w +FOLJOT IUUQKFOLJOTDJPSH w (JU#VDLFU
IUUQTHJUIVCDPNUBLF[PFHJUCVDLFU w ͦͷͨΊͷϑϨʔϜϫʔΫ w %SPQXJ[BSE IUUQTESPQXJ[BSEHJUIVCJPESPQXJ[BSE w /JOKB IUUQOJOKBGSBNFXPSLPSH
Ϟμϯͳ+BWBςετ w ୯ମςετ w +6OJUʢ&ODMPTFEɺ5IFPSZ͋ͨΓͷൺֱత৽͍͠ػೳʣ w (SPPWZͰॻ͘ w ݁߹ςετ w
"SRVJMMJBO w ෛՙςετ w (BUMJOH w ϒϥβςετ w (FC 4QPDL w (SBQIFOFʢ"SRVJMMJBOͱͷ౷߹ʣ
ࢀՃͨ͠Πϕϯτͷ Ϩϙʔτɾײ
Ϩϙʔτ w ࢀՃͨ͠ΠϕϯτͲΕࣄલఆһΦʔόʔ w Πϕϯτگͩͬͨ w ֎ͷΠϕϯτʹߦ͘ͷܹʹͳ͍͍ͬͯ
ײɺͱ͍͏͔࠷ۙ ΅ΜΓͱߟ͍͑ͯΔ͜ͱ
+BWBͷΑ͍ͱ͜Ζ w +BWBϓϩάϥϚ͍ͬͺ͍͍Δ w ΈࠐΈػثɺ8FCɺΤϯλʔϓϥΠζ·ͰΛΧόʔ͢Δ ద༻ྖҬͷ͞ w ಘҙͳ෦͚ͩ+BWBʹͤΔΞʔΩςΫνϟͰΑ͍ w ϚογϡΞοϓɺ4JOHMF1BHF"QQMJDBUJPO
w +BWB࣮֬ʹਐԽ͍ͯ͠Δ w ใྔ͕๛ʢωοτɺॻ੶ʣ
ࣄͰ+BWBΛ͏্Ͱͷ՝ w ୭ͰͦΕͳΓʹॻ͚Δނʹ࣭ʢಛʹอकੑʣͰࠩ ͕ग़Δ w +BWBͰͰ͖ͨطଘͷϨΨγʔγεςϜͷଘࡏ w աڈͷࢿ࢈Ͱ+BWBΛ֮͑Δํ๏ͩͱਰୀ͍ͯ͘͠ w +BWBͷΞοϓσʔτͷͱɺ৫ͷ+BWBεΩϧΞο
ϓͷͷͣΕʢ+BWBʹݶΒͳ͍͚Ͳʜʣ w ৽͍͠+BWBͷڧΈΛੜ͔͢৫෩ͮ͘Γ
݁ہɺ͍͍ͷΛɺ ͍͔ʹૣ͘ɺָ͘͠࡞Δ͔
w ʮࠓ999͕͍͍Μ͡Όͳ͍ͷʁʯ w +BWB999྆ํ͑ΔΑ͏ʹͳͬͨΒΑ͍ w ࠷దͳಓ۩ΛબΔΑ͏ʹҾ͖ग़͕͠ଟ͍͜ ͱॏཁ
w ʮ+BWBͬͯকདྷੑ͋Δͷʁʯ w কདྷ҆ହͳ͜ͱ͕อূ͞ΕͯΔٕज़ͳ͍ͷ Ͱ͔Δ͕ͣͳ͍
࣌ؒ༗ݶ w %POFJTCFUUFSUIBOQFSGFDU w ʮ४උͷ४උʹ͕͔͔࣌ؒΔʯප w ղܾʹ͕͔͔࣌ؒΓ͗͢ΔͷͩΊ w ೋͷਖ਼ w
εϞʔϧελʔτ
աͳϓϥΠυࣗ৴ࣺͯΔ w ͍ͬͯΔ͜ͱΑΓΒͳ͍͜ͱͷํ͕ଟ͍ w ͭ·ΓɺΒͳͯͨ͘Γલ w ʮͳʹͬͯͳ͍ʯ͜ͱΛ·ͣΔ w ʮ࣭Ͱ͖Δͷ৽ਓ͚ͩͷಛݖʯʁ w
ए͍ਓ͔Βͨ͘͞ΜֶͿ͖
·ͱΊ w ৽͍͠+BWB4&ɺ+BWB&&͕ϦϦʔε w +BWB4&͔Ώ͍ͱ͜Ζʹख͕ಧ͘Ξοϓσʔτ w +BWB4&େ͖ͳΞοϓσʔτ w Δ͔͠ͳ͍ɺ͜ͷϏοάΤʔϒʹ w
+BWBΠϕϯτ׆ൃͰͨ͠ w దࡐదॴͰ͏·͘+BWBΛ׆༻͍͖ͯ͠·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ