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
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
460
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
330
スマート反転とウェブアクセシビリティ
camiha
0
210
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
680
Building an Out-of-Order CPU
latte72
1
780
Go のフラットな パッケージに 「ファイル単位の private」を 〜Linter “declscope” を作った話〜
mpyw
0
320
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
4
2.6k
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
120
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
490
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
Featured
See All Featured
Music & Morning Musume
bryan
48
7.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Mind Mapping
helmedeiros
1
360
Raft: Consensus for Rubyists
vanstee
142
7.7k
Building Applications with DynamoDB
mza
96
7.2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Balancing Empowerment & Direction
lara
6
1.3k
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Λ׆༻͍͖ͯ͠·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ