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
830
Other Decks in Programming
See All in Programming
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
12
4.5k
AmebaブログはKMPから卒業します
kmars0605
0
240
GraphQL の onError と Nullability のこれから
quramy
0
180
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
970
最近”作らせてる” ローカルAIアプリの話
akit37
0
500
Next.js: The final boss of Web Performance
guaca
0
340
Modernizing iOS Apps
seyfoyun
0
120
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.5k
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
7k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
phperだってパンチカードでコーディングしたい
o0h
PRO
0
460
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
310
Featured
See All Featured
Design in an AI World
tapps
1
360
エンジニアに許された特別な時間の終わり
watany
109
250k
Being A Developer After 40
akosma
PRO
92
590k
Designing Powerful Visuals for Engaging Learning
tmiket
1
620
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Leo the Paperboy
mayatellez
10
2.4k
Skip the Path - Find Your Career Trail
mkilby
1
260
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
Reality Check: Gamification 10 Years Later
codingconduct
0
2.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Λ׆༻͍͖ͯ͠·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ