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
mrbgem 三角測量 開発
ogom
0
200
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
160
すこし踏み込む CancellationToken
htkym
2
1.6k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
310
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
440
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
350
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
JRuby: Past, Present, and Future
headius
0
220
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
330
速習iPhone Duo対応
yuukiw00w
2
960
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
How to train your dragon (web standard)
notwaldorf
96
6.8k
My Coaching Mixtape
mlcsv
0
340
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
We Have a Design System, Now What?
morganepeng
55
8.4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
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Λ׆༻͍͖ͯ͠·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ