2018 IPSJ/SIGSE Software Engineering Symposium (SES2018) 1,a) 1,b) 1,c) Java 2014 Java Java Java Stream Optional 18% Stream 5% Stream JDK6/7

Similar documents
IPSJ SIG Technical Report Vol.2013-CE-122 No.16 Vol.2013-CLE-11 No /12/14 Android 1,a) 1 1 GPS LAN 2 LAN Android,,, Android, HTML5 LAN 1. ICT(I


1 1 CodeDrummer CodeMusician CodeDrummer Fig. 1 Overview of proposal system c

独立行政法人情報通信研究機構 Development of the Information Analysis System WISDOM KIDAWARA Yutaka NICT Knowledge Clustered Group researched and developed the infor

IPSJ SIG Technical Report Vol.2015-SE-189 No /7/23 iarch-u 1,a) 1,b) 1,c) 1,d) Archface-U iarch-u Partial Model !" %&)*+,-./ :;<

. IDE JIVE[1][] Eclipse Java ( 1) Java Platform Debugger Architecture [5] 3. Eclipse GUI JIVE 3.1 Eclipse ( ) 1 JIVE Java [3] IDE c 016 Information Pr

IPSJ SIG Technical Report Vol.2013-CE-119 No /3/15 C 1 1 Web C MILES(Model-based Interactive Learning Support) MILES 1. C C MILES(Model-based In

IPSJ SIG Technical Report Vol.2018-SE-200 No /12/ Proposal of test description support environment for request acquisition in web appli

情報処理学会研究報告 IPSJ SIG Technical Report Vol.2015-SE-187 No /3/12 Java 1,a) 1,b) 1,c) 1,d) Known Unknown Unknown Unknown 2 Known Unknown Archface-U

IPSJ SIG Technical Report Vol.2013-CE-119 No /3/15 enpoly enpoly enpoly 1) 2) 2 C Java Bertrand Meyer [1] 1 1 if person greeting()

B HNS 7)8) HNS ( ( ) 7)8) (SOA) HNS HNS 4) HNS ( ) ( ) 1 TV power, channel, volume power true( ON) false( OFF) boolean channel volume int

DEIM Forum 2019 H2-2 SuperSQL SuperSQL SQL SuperSQL Web SuperSQL DBMS Pi

([ ],), : [Name], name1 name2 name10 4, 2 SuperSQL, ([ ]!), name1 name2 : [Name]! name SuperSQL,,,,,,, < < > } =,

2 3 Pockets Pockest Java [6] API (Backtracking) 2 [7] [8] [3] i == Pockets 2.1 C3PV web [9] Pockets [10]Pockets 1 3 C

IPSJ SIG Technical Report Vol.2014-DBS-159 No.6 Vol.2014-IFAT-115 No /8/1 1,a) 1 1 1,, 1. ([1]) ([2], [3]) A B 1 ([4]) 1 Graduate School of Info


IPSJ SIG Technical Report Vol.2010-GN-74 No /1/ , 3 Disaster Training Supporting System Based on Electronic Triage HIROAKI KOJIMA, 1 KU


- 2 -

Fig. 3 3 Types considered when detecting pattern violations 9)12) 8)9) 2 5 methodx close C Java C Java 3 Java 1 JDT Core 7) ) S P S

paper.pdf

Int Int 29 print Int fmt tostring 2 2 [19] ML ML [19] ML Emacs Standard ML M M ::= x c λx.m M M let x = M in M end (M) x c λx.

main.dvi

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

untitled


C O N T E N T S 1


Emacs ML let start ::= exp (1) exp ::= (2) fn id exp (3) ::= (4) (5) ::= id (6) const (7) (exp) (8) let val id = exp in

2 3

平成20年2月10日号

[1] [3]. SQL SELECT GENERATE< media >< T F E > GENERATE. < media > HTML PDF < T F E > Target Form Expression ( ), 3.. (,). : Name, Tel name tel

橡kenkyuhoukoku8.PDF

1_26.dvi

IPSJ SIG Technical Report iphone iphone,,., OpenGl ES 2.0 GLSL(OpenGL Shading Language), iphone GPGPU(General-Purpose Computing on Graphics Proc

3_23.dvi


IPSJ SIG Technical Report Vol.2013-HCI-152 No /3/13 1,a) 1,b) 2,c) / GPS Bluetooth(BT) WiFi BT WiFi 1. Bluetooth WiFi 1 / 1 2 a)

, : GUI Web Java 2.1 GUI GUI GUI 2 y = x y = x y = x

A Study of Effective Application of CG Multimedia Contents for Help of Understandings of the Working Principles of the Internal Combustion Engine (The

IPSJ SIG Technical Report Vol.2011-MUS-91 No /7/ , 3 1 Design and Implementation on a System for Learning Songs by Presenting Musical St


IPSJ SIG Technical Report Vol.2009-DPS-141 No.20 Vol.2009-GN-73 No.20 Vol.2009-EIP-46 No /11/27 1. MIERUKEN 1 2 MIERUKEN MIERUKEN MIERUKEN: Spe

H1

THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS TECHNICAL REPORT OF IEICE k

Vol.55 No (Jan. 2014) saccess 6 saccess 7 saccess 2. [3] p.33 * B (A) (B) (C) (D) (E) (F) *1 [3], [4] Web PDF a m

BOK body of knowledge, BOK BOK BOK 1 CC2001 computing curricula 2001 [1] BOK IT BOK 2008 ITBOK [2] social infomatics SI BOK BOK BOK WikiBOK BO

IPSJ SIG Technical Report , 2 Andorid Capture-A-Moment Capture-A-Moment Capturing System by SmartPhone to Record Real-Time Scene Kohei Takada,


導入基礎演習.ppt

IPSJ SIG Technical Report Vol.2016-SE-193 No /7/14 iarch-u 1,a) 1,b) 1,c) 1,d) 1,e) 1,f) iarch-u iarch-u Archface-U iarch-u iarch-u !" %

IPSJ SIG Technical Report Vol.2016-ARC-221 No /8/9 GC 1 1 GC GC GC GC DalvikVM GC 12.4% 5.7% 1. Garbage Collection: GC GC Java GC GC GC GC Dalv

2. Twitter Twitter 2.1 Twitter Twitter( ) Twitter Twitter ( 1 ) RT ReTweet RT ReTweet RT ( 2 ) URL Twitter Twitter 140 URL URL URL 140 URL URL

258 5) GPS 1 GPS 6) GPS DP 7) 8) 10) GPS GPS ) GPS Global Positioning System

MDD PBL ET 9) 2) ET ET 2.2 2), 1 2 5) MDD PBL PBL MDD MDD MDD 10) MDD Executable UML 11) Executable UML MDD Executable UML

([ ]!) name1 name2 : [Name]! name SuperSQL,,,,,,, (@) < >@{ < > } =,,., 200,., TFE,, 1 2.,, 4, 3.,,,, Web EGG [5] SSVisual [6], Java SSedit( ss

20mm 63.92% ConstantZoom U 5

e-learning e e e e e-learning 2 Web e-leaning e 4 GP 4 e-learning e-learning e-learning e LMS LMS Internet Navigware

finalrep.dvi

IPSJ SIG Technical Report Vol.2014-GN-90 No.16 Vol.2014-CDS-9 No.16 Vol.2014-DCC-6 No /1/24 1,a) 2,b) 2,c) 1,d) QUMARION QUMARION Kinect Kinect

1,.,. 1,,. Wikipedia,..,.,.

ipod touch 1 2 Apple ipod touch ipod touch 3 ( ) ipod touch ( 1 ) Apple ( 2 ) Web 1),2) 3. ipod touch 1 2 ipod touch x y z i

WISS 2018 [2 4] [5,6] Query-by-Dancing Query-by- Dancing Cao [1] OpenPose 2 Ghias [7] Query by humming Chen [8] Query by rhythm Jang [9] Query-by-tapp


Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

IPSJ SIG Technical Report Vol.2014-HCI-157 No.26 Vol.2014-GN-91 No.26 Vol.2014-EC-31 No /3/15 1,a) 2 3 Web (SERP) ( ) Web (VP) SERP VP VP SERP

main.dvi

IPSJ SIG Technical Report Vol.2012-HCI-149 No /7/20 1 1,2 1 (HMD: Head Mounted Display) HMD HMD,,,, An Information Presentation Method for Weara

JavaScript MathTOUCH (Shizuka Shirai) Graduate School of Human Environmental Sciences, Mukogawa Women s University (Tetsuo Fukui) S

[5] [6] [7 10] 2 [5] (RQ:Research Question) RQ1:? RQ2:? Commit Guru Commit Guru [1] Emad Shihab Web Commit Guru [10] Number of Subsystems(

Vol.6 No (Aug. 2013) 1,a) 2,b) 2,c) , Java Java Java Java Inner Method for Code Reuse in Fine-grained and Its Effective Im

Computer Security Symposium October 2013 Android OS kub

2006 [3] Scratch Squeak PEN [4] PenFlowchart 2 3 PenFlowchart 4 PenFlowchart PEN xdncl PEN [5] PEN xdncl DNCL 1 1 [6] 1 PEN Fig. 1 The PEN

TA3-4 31st Fuzzy System Symposium (Chofu, September 2-4, 2015) Interactive Recommendation System LeonardoKen Orihara, 1 Tomonori Hashiyama, 1

1 Web DTN DTN 2. 2 DTN DTN Epidemic [5] Spray and Wait [6] DTN Android Twitter [7] 2 2 DTN 10km 50m % %Epidemic 99% 13.4% 10km DTN [8] 2

(12th) R.s!..

1 3DCG [2] 3DCG CG 3DCG [3] 3DCG 3 3 API 2 3DCG 3 (1) Saito [4] (a) 1920x1080 (b) 1280x720 (c) 640x360 (d) 320x G-Buffer Decaudin[5] G-Buffer D

30

IPSJ SIG Technical Report Vol.2014-HCI-158 No /5/22 1,a) 2 2 3,b) Development of visualization technique expressing rainfall changing conditions

Research 2 Vol.81, No.22013

001


Unknown

"-./0%. "-%!"#$#% $%&'(%)*+,%.!"#+$,$% &'()*% $%&'-(.(/%+,% $%&'0%12*+,'% 1 RMX.. grade gradetype= integer grade[

[4], [5] [6] [7] [7], [8] [9] 70 [3] 85 40% [10] Snowdon 50 [5] Kemper [3] 2.2 [11], [12], [13] [14] [15] [16]

1 UD Fig. 1 Concept of UD tourist information system. 1 ()KDDI UD 7) ) UD c 2010 Information Processing S


3.1 Thalmic Lab Myo * Bluetooth PC Myo 8 RMS RMS t RMS(t) i (i = 1, 2,, 8) 8 SVM libsvm *2 ν-svm 1 Myo 2 8 RMS 3.2 Myo (Root

, [! [, ]! ]!,,., ([ ],). : [Name], name1 name2 name10 ([ ]!). name1 name2 : [Name]! name SuperSQL,,,,,,, < < > } =.,

2). 3) 4) 1.2 NICTNICT DCRA Dihedral Corner Reflector micro-arraysdcra DCRA DCRA DCRA 3D DCRA PC USB PC PC ON / OFF Velleman K8055 K8055 K8055

untitled

IPSJ SIG Technical Report Vol.2016-CE-137 No /12/ e β /α α β β / α A judgment method of difficulty of task for a learner using simple

IPSJ SIG Technical Report Vol.2013-CVIM-188 No /9/2 1,a) D. Marr D. Marr 1. (feature-based) (area-based) (Dense Stereo Vision) van der Ma

1 Web [2] Web [3] [4] [5], [6] [7] [8] S.W. [9] 3. MeetingShelf Web MeetingShelf MeetingShelf (1) (2) (3) (4) (5) Web MeetingShelf


授受補助動詞の使用制限に与える敬語化の影響について : 「くださる」「いただく」を用いた感謝表現を中心に

IPSJ SIG Technical Report Vol.2014-MBL-70 No.49 Vol.2014-UBI-41 No /3/15 2,a) 2,b) 2,c) 2,d),e) WiFi WiFi WiFi 1. SNS GPS Twitter Facebook Twit

. Yahoo! 1!goo 2 QA..... QA Web Web [1]Web Web Yin [2] Web Web Web. [3] Web Wikipedia 1 2

2) TA Hercules CAA 5 [6], [7] CAA BOSS [8] 2. C II C. ( 1 ) C. ( 2 ). ( 3 ) 100. ( 4 ) () HTML NFS Hercules ( )

Transcription:

1,a) 1,b) 1,c) Java 214 Java Java Java 1 13 3 Stream Optional 18% Stream 5% Stream JDK6/7 Java Stream Optional 1. [1], [2], [3] [4] 2 1 a) h-tanaka@ist.osaka-u.ac.jp b) shinsuke@ist.osaka-u.ac.jp c) kusumoto@ist.osaka-u.ac.jp [5] Java Java Java 214 Java 8 / Java 8 Stream Optional 3 3 Research Question RQ c 218 Information Processing Society of Japan 184

RQ1: RQ2: / RQ3: 2. 2.1 Java 8 2.1.1 [6] List < Integer > list =...; list. foreach (s -> System.out.println(s)); -> 3 Collection list 2.1.2 Stream Stream Stream List < Integer > list =...; list.stream().filter(i -> i > ).foreach(i -> System.out.println(i)); Stream 1 Stream 1 Stream Collection stream() Stream API Stream Stream filter() Stream 2.1.3 Optional Optional null null Optional List < Integer > list =...; int val = Optional.ofNullable(list.get(3)).orElseGet(); list 3 null null val Optional null Optional 2.2 Java [7], [8] Java [9] Stream Stream Stream [1] Stream Stream foreach 1 [5] Java Java Java 3. Research Questions Java 3 Research Question RQ1: 2 Java c 218 Information Processing Society of Japan 185

Java RQ Java 8 4 Java RQ2: / Java Java RQ3: Java 4. 4.1 RQ 1 1. 1 2. 3. 4. 5. RQ1 6. issue RQ2 7. 8. RQ3 3. 使用密度 *2 を算出 4. 値の遷移をグラフ化 5. に注目し採用 / 不採用を判断 *1 関数型イディオム *2 FI の使用回数 / 非 FI の使用回数 1. Star 順検索で上位 1 個の Java プロジェクトを抽出 6. の時期に注目しコミットメッセージや issue を調査 RQ1 RQ2 RQ3 1 2. 全リビジョンから FI *1 を検出 7. 最新リビジョンの FI を抽出 8. 実際の開発現場での FI の使い方を調査 FI を使用しているコード断片最新リビジョン使用密度が大きく変化する時期 213 9 18 218 4 1 Java 4.3 3 Stream, Optional 1 D idiom 4.4 RQ1 RQ1 D idiom D idiom 4.2 GitHub 1 Java Java 8 1 Stream Optional for, while null c 218 Information Processing Society of Japan 186

4.5 RQ2 RQ1 D idiom 3%, Stream Optional 1% issue 87 Stream 53 Optional 69 GitHub issue Scope = (" java 8" OR " java8 ") Fi = (" lambda " OR " stream " OR " optional ") Action = (" use " OR " accept " OR " remove " OR " replace " OR " reason ") Query = ( Scope OR Fi) AND Action GitHub Java 1 4.6 RQ3 RQ3 AST AST IDE Eclipse JDT Java Development Tools JDT AST Statement Stream API AST Stream API Stream 1 Stream ラムダ式 Stream Optional 5% 6% 18% 82% 95% 94% 採用不採用 2 1 / stream() of() Stream stream() of() Optional Java Optional 5. 5.1 RQ1 RQ1: D idiom 1 / 2 D idiom 1% 1 Stream Optional 2 18% Stream 5% 3 1 D idiom 3 D idiom 3 3 D idiom 5 D idiom 2 D idiom c 218 Information Processing Society of Japan 187

1 1 1 ラムダ式 Stream Optional Vert. Pocket. Proxyee. zipkin spark D idiom 213/3 218/4 T 3 Java-ds. selenium Spring. RxJava fastjson guava 213/3 218/4 T D idiom ( D idiom 5 ) RxJava Java-ds. selenium guava 213/3 218/4 T Vert. Java 8 Pocket. Proxyee. Stream D idiom Java-ds. 15% Java-ds. D idiom Optional RxJava 215 Optional Optional D idiom 1% Stream Optional for,while null Java 8 D idiom 5.2 RQ2 RQ2: / RQ2 2 guava Stream Stream Guava realm-java realm-java RxJava2 Java realm-java selenium Stream spark selenium jar jar retrofit Optional retrofit Optional Optional RQ3 3 GraalVM Stream Stream GraalVM Stream guava guava Hystrix lottie-android, RxJava JDK6 JDK7 selenium Optional Optional Optional null c 218 Information Processing Society of Japan 188

事例数 事例数 事例数 5 25 13 ~ 1 2 3 4 5 6 7 8 9 1 24 27 29 ステートメント数 4 Lambda 5 1 2 3 4 5 6 7 メソッド数 Stream map 6 collect filter foreach toarray empty findfirst メソッド名 concat flatmap ~ builder allmatch Stream API generate peek Optional selenium Optional 5.3 RQ3 RQ3: 4 4 1 2 2 *1 https://groups.google.com/forum/#!topic/guava- 29 1 Stream 5 Stream announce/o954pqvaxly/discussion *2 https://github.com/realm/realm-java/commit/9ac68 *3 https://github.com/square/retrofit/commit/e985d *4 https://github.com/google/guava/issues/167 *5 https://github.com/seleniumhq/selenium/issues/4867 *6 https://github.com/seleniumhq/selenium/commit/4c38c *7 https://github.com/oracle/graal/commit/bca7c *8 https://github.com/google/guava/issues/167 *9 https://github.com/netflix/hystrix/commit/e12e *1 https://github.com/airbnb/lottie-android/commit/fa239 *11 https://github.com/reactivex/rxjava/commit/a1 *12 https://github.com/seleniumhq/selenium/commit/4c38c 2 guava Stream 216/11/5 Stream guava * 1 realm-java 217/9/12 RxJava2 * 2 retrofit Optional 217/3/12 Optional * 3 selenium 214/11/1 jar * 4 selenium Stream 217/12/3 * 5 spark 214/4/7 * 6 3 GraalVM Stream 214/9/9 * 7 guava 214/11/1 * 8 Hystrix Stream, Optional 216/8/19 JDK6/7 * 9 lottie-android 217/4/8 * 1 RxJava Stream, Optional 216/2/4 JDK6 * 11 selenium Optional 217/3/3 Optional * 12 c 218 Information Processing Society of Japan 189

事例数 3 1 orelse() Optional orelse() Optional 6. orelse filter equals ofnullable stream ispresent get of empty メソッド名 7 Optional, stream() of() Stream 218 1 26 7 1 Stream API 6 Stream API Stream map() 129 collect() 18 peek() 1 allmatch() 1 peek() Stream allmatch() Stream true false allmatch() Stream true Optional 7 Optional 7 Optional empty() 29 1 equals() 2 Optional Optional Optional 6.1 RQ1 2 18% Stream Optional 1 6% RQ1 Java 6.2 RQ2 5.2 3 1 selenium spark selenium jar 2 guava Stream Java Stream [9] guava 3 realm-java retrofit 3 1 JDK 6 JDK 7 2 Java [7] c 218 Information Processing Society of Japan 19

3 guava RQ2 JDK 7 6.3 RQ3 4 1 [11] 2 7 get() ispresent() [12], [13] RQ3 Stream 7. Java 3 RQ B 16H298 18H3222 [1] Favre, J. M.: Languages evolve too! Changing the software time scale, Proceedings of the 8th International Workshop on Principles of Software Evolution, pp. 33 42 (25). [2] Landin, P. J.: The Next 7 Programming Languages, Communications of the Association for Computing Machinery, Vol. 9, No. 3, pp. 157 166 (1966). [3] Spinellis, D., Louridas, P. and Kechagia, M.: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973 215, Proceedings of the 38th International Conference on Software Engineering, pp. 748 759 (216). [4] Simmonds, D. M.: The Programming Paradigm Evolution, Computer, Vol. 45, No. 6, pp. 93 95 (212). [5] Saumont, P.: What s Wrong in Java 8, Part V: Tuples - DZone Performance, https://dzone.com/article/ whats-wrong-java-8-part-v. [6] Warburton, R.: Java 8 Lambda Functional Programming for the Masses, O Reilly Media (214). [7] Fischer, R.: Java Closures and Lambda, chapter 7, Apress. (215). [8] Weiss, T.: The Dark Side Of Lambda Expressions in Java 8 OverOps Blog, https: //blog.takipi.com/the-dark-side-of-lambdaexpressions-in-java-8/. [9] Zhitnitsky, A.: The 6 biggest problems of Java 8 - JAXenter, https://jaxenter.com/java-8-problems- 112279.html. [1] Cheon, Y. and Torre, A.: Impacts of Java Language Features on the Memory Performances of Android Apps, Technical report, University of Texas at El Paso (217). [11] Subramaniam, V.: Java 8 idioms: Why the perfect lambda expression is just one line, https://www.ibm.com/developerworks/library/jjava8idioms6/index.html. [12] Winnicki, M.: Optional ispresent() Is Bad for You - DZone Java, https://dzone.com/articles/ optional-ispresent-is-bad-for-you. [13] Gioiosa, M. P.: Java 8 Optional - Replace Your Get() Calls - DZone Java, https://dzone.com/articles/ java-8-optional-replace-your-get-calls. c 218 Information Processing Society of Japan 191