JJUG CCC 2014 Springã«åå ãã¦ãã¾ãã
æ¬æ¥ãæ¥æ¬Javaã¦ã¼ã¶ã¼ã°ã«ã¼ãï¼JJUG)主å¬ã®CCC 2014 Springã¨ããJavaã®åå¼·ä¼ã«è¡ã£ã¦ãã¾ãããä¼å ´ã¯ãベルサール西新宿ã§ãé½å¶å¤§æ±æ¸ç·é½åºåã®A5åºå£ãåºã¦ãæ°å®¿ä¸å¤®å ¬åã®5åãããæ©ããã¨ããã«ããã¾ãããä»ã¯ã¹ãã¼ããã©ã³ã§å°å³ã確èªããªããè¡ããã®ã§ãåãã¦ã®å ´æã§ãæ¹åé³ç´ã®ç§ã§ãé»è»ã®é§ ããééããªããã°å¤§ä¸å¤«ã§ããã
CCCã¨ããã®ã¯Cross Community Conferenceã®ç¥ã§ããã¾ãã¾ãªã³ãã¥ããã£ã¼ã®äº¤æµã®å ´ã¨ãªãä¼è°ã¨ãã趣æ¨ã§ããããï¼ãã®CCCã¨ããã¤ãã³ãã¯2012ããéå¬ããã¦ãããããªã®ã§ããï¼CCC | 日本Javaユーザーグループï¼ãä»ååãã¦åå ããã¦ããã ãã¾ãããæ®å¿µãªããå人çãªé½åãããåºèª¿è¬æ¼ã¨åå¾ã®ååã®ã»ãã·ã§ã³ã®ã¿ã§å¾åã¨æ親ä¼ã«ã¯åå ã§ãã¾ããã§ããããåå ããã»ãã·ã§ã³ã«ã¤ãã¦ã¾ã¨ãã¾ãããã®ä»ã®ã»ãã·ã§ã³ã«ã¤ãã¦ã¯ã以ä¸ã«æ å ±ãããã¾ãã
- JJUG CCC 2014 Spring – Session | 日本Javaユーザーグループ
- JJUG CCC 2014 Spring #jjug_ccc - Togetter
- JJUG CCC 2014 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く
K-1 詳説 Java SE 8 – CCC Editionï¼æ«»åº ç¥ä¸æ°ï¼
æåã®ã»ãã·ã§ã³ã¯ãæå 端ã®Javaæè¡ãç 究ããæè¿Java8ç´¹ä»è¨äºãå¤ãå·çããã¦ããæ«»åºãã(@skrb)ãããJava SE8ã®æ°æ©è½ã®ãã¤ã³ãã«ã¤ãã¦ç´¹ä»ãã¦ããã ãã¾ãããJava SE8ã¨ããã¨ãã¾ããLambdaプロジェクトã®ææã§ããã©ã ãå¼ãã¹ããªã¼ã APIã使ã£ãæ°ããé¢æ°åã®Javaããã°ã©ãã³ã°ã注ç®ããã¾ããããã以å¤ã«ãã
- 新しいDate & Time APIï¼JSR-310ï¼
- Nashornï¼JavaScriptå®è¡ç°å¢,invokeDynamicå½ä»¤ï¼
- JavaFX*1
- タイプアノテーションã¨ãã®å¿ç¨ä¾ã¨ãã¦ã®nullãã§ãã¯ãã¬ã¼ã
- Java Flight RecorderやJava Mission Controlã¨ãã£ãæ°ãããã¼ã«
ãªã©ããã®ä»ã®æ°æ©è½ã«ã¤ãã¦ã解説ããã¾ãããéä¸ã
ãforæãforEachã使ã£ããè² ããã©ã ãå¼ç¦æ¢ã¨æ¦ããã
ã¨ããã³ã¡ã³ããå°è±¡çã§ãããç¾ç¶ã¯å¾ã®å²©å´æ°ã®è¬æ¼ã§èª¬æããã£ãããã«ãã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ãªã©ã®å¯¾å¿ãé²ãã§ããªãã¨ããå¶ç´ãããJava8ãå®éã®æ¡ä»¶ã§æ®åããã¾ã§ã«ã¯ã«ã¯ãããã°ããæéããããã ããã¨ã¯æãã¾ãããä»ã®ãã¡ã«æ°ããæ©è½ã«ã¤ãã¦å è¡ãã¦å¦ç¿ãã¦ãããå®é使ãããã£ã³ã¹ããã£ããã便å©ãªæ°æ©è½ãç©æ¥µçã«å°å ¥ã§ããããæºåãã¦ããããã§ããã
ãªãããã®åºèª¿è¬æ¼ã®å
ãã¿ã¯ããç¾å¨ãITpro ã«ããã¦é£è¼ãã¦ãã詳説 Java SE 8 ã CCC ã§åç¾ãã¾ãããã¨ã®ãã¨ã§ãã®ã§ã
詳解 Java SE 8 第1回 Java SE 8概説
ããã¯ãã¾ããç´ æ´ããã詳細ãªé£è¼è¨äºãæ¯éã覧ãã ããã
K-2 Java 8 ã©ã ãå¼ã¨ Stream ã®æ¦è¦ã«ã¤ãã¦ï¼Stuart Marksæ°ï¼
åºèª¿è¬æ¼ã®2çªç®ã¯ããªã©ã¯ã«ã®Stuart Marksæ°ãããã©ã ãå¼ãã¹ããªã¼ã APIã«ã¤ãã¦ãåºæ¬çãªã¨ãããã解説ãã¦ããã ãã¾ããããããªããæ°ããé¢æ°åã®è¨è¿°æ¹æ³ã§èª¬æãããã¨ãæ
£ãã¦ããªãå ´åæ··ä¹±ããå ´åãããã¨æãã¾ããã以åã®æ¸ãæ¹ã¨å¯¾å¿ãããªããä¸å¯§ã«è§£èª¬ãã¦ããã ããç解ããããã£ãã§ãã
ä»åã®è¬ç¾©ã§ç¹ã«å°è±¡çã ã£ãã®ã¯ãé¢æ°åãä¸å¤æ§ã¨ãã話ãåæã«ãããããã¾ã§ãå¾æ¥ããããç¡åå
é¨ã¯ã©ã¹ã®ä»£æ¿ã¨ãã¦åå®å
¨ã«ã³ã¼ããããã¯ã渡ãããã®ä¾¿å©ãªè¨æ³ãå
é¨ã¤ãã¬ã¼ã¿ã¼ã®è¨è¿°æ段ã¨ãã¦ã©ã ãå¼ã説æãã¦ãããã¨ã§ããä¾ã¨ãã¦
List<Person> list = ... ; // Java7 for (Iterator<Person> iter = list.iterator(); iter.hasNext();) { Person p = iter.next(); if("Jones".equals(p.getName())) { iter.remove(); } } // Java8 list.removeIf(p -> "Jones".equals(p.getName()));
ã®ããã«ãCollectionã¤ã³ã¿ã¼ãã§ã¼ã¹ã«è¿½å ããã¦ãããremoveIfã使ã£ã¦ãå¾æ¥ã®ã¤ãã¬ã¼ã¿ã¼ã®å¦çãç½®ãæããã³ã¼ããåºã¦ãã¾ãããããã«ãå¾æ¥ã®å¤é¨ã¤ãã¬ã¼ã¿ã¨foræã使ã£ã¦å¦çããå ´åã¨æ¯è¼ãã¦ãåæåãå¿ è¦ãªã³ã¬ã¯ã·ã§ã³ã®å ´åã«ããã¡ãã¨åæåããã¦ãããã¨ãããããªã¨ããã便å©ã§ããã*2
å ã®æ«»åºããã®çºè¨ã«ãããã¾ãããä»ã¾ã§ç§èªèº«ã©ã ãå¼ã使ã以ä¸ããªãã¹ãé¢æ°åã®çºæ³ã§èããã¹ãã§ãããå¯å¤ãªï¼mutableï¼ãªæä½ã¯é¿ããã¹ãã¨èãã¦ãã¾ãããããããªããããã¨ãã¨ãJavaã¯å¯å¤ãªå¤æ°ãå½ããåã«ä½¿ãæç¶ãå(imperative)ãªã³ã¼ããåæã¨ãã¦ãããä¸å¤æ§ãªã©ã¯å¾ãã追å ãããã¨ããã¨ãããããã¾ããããã®ããã«ã©ã ãå¼ã¯å¯å¤ãªæä½ã«ã使ããã®ã ã¨ããã®ã¯ããã£ã¦æ°é®®ãªçºè¦ã§ãããç¹ã«ãå¤ãã³ã¼ããã©ã ãå¼ã使ã£ã¦ç°¡æ½ã«ãªãã¡ã¯ã¿ãªã³ã°ããã¨ããå ´åãªã©ã«ã¯ãããã¦ä¸å¤æ§ã«ãã ãããªãã¨ããã®ãä¸ã¤ã®èãæ¹ããããã¾ããã
Stuartæ°ã®è©±ã§ãããä¸ã¤å°è±¡çã ã£ãã®ã¯å¤§éã®åºæ¬åã®æ°å¤ã使ã£ãè¨ç®ã«ãã¹ããªã¼ã APIãé©ç¨ããã¨ãã以ä¸ã®ä¾*3ã§ãã
System.out.println( LongStream.range(0, 1_000_000L) .parallel() .map(i -> ((i & 1) == 0 ? 1 : -1 * (2 * i + 1)) .mapToDouble(i -> 4.0 / i) .sum());
å¾æ¥ã®å¸¸èã¨ãã¦ã¯ã大éã®æ°å¤ãList
R1-1 Java 8 for Java EE 7/6(å²©å´ æµ©ææ°)
éèã製é ãå
Œ
±ãªã©æ§ã
ãªãã¡ã¤ã³ã§JavaEEã使ã£ãå¤ãã®ã·ã¹ãã éçºãæ
å½ãã¦ããããéèªçã¸ã®å·çãããã¦ãã楽天ã®å²©å´æ°(@HirofumiIwasaki)ãããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ã®Java8対å¿ã®ç¶æ³ã«ã¤ãã¦ã話ããã ãã¾ããã
JavaSE 8ãæ£å¼ã«ãªãªã¼ã¹ãããã¨ãããã¨ã§ãæ©éç¾å¨ã®ããã¸ã§ã¯ãã§æ´»ç¨ãããã¨ããæ°ã«ãªã£ã¦ãã¾ãã¾ãããå®éã®ã¨ããã¯ãJavaEE 7ã§ã¯JavaSE 8ã¯ãµãã¼ã対象å¤ã§ãããããã«ãããããJavaEE 7ã«å¯¾å¿ããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ãGlassfishãWildFlyã¨ãã£ããªã¼ãã³ã½ã¼ã¹ã®ãµã¼ãã¼ã«éããããã®ä»ã®åç¨ã®ãµã¼ãã¼ã§ã¯ãã¾ã ã«JavaEE6ãããµãã¼ãããã¦ããªãã¨ããäºå®ãããã¾ãããã ããè¬ç¾©ä¸ã§ç´¹ä»ããã¦ããããã«Glassfishã®daily buildçã§ã¯Java8ã使ããã¨ãããã¨ã§ãããWildFlyãªã©ä»ã®ãµã¼ãã¼ã«ã¤ãã¦ãæ¯è¼çæ©ã対å¿ãããã®ã§ã¯ãªããã¨ããæå¾
ãããã¾ããã
ã¾ãããã©ã¬ã«ã³ã¬ã¯ã·ã§ã³ãªã©ã¯é常ã®EJBã®ãããªãªã³ã©ã¤ã³ãã©ã³ã¶ã¯ã·ã§ã³ç³»ã®ã·ã¹ãã ã¨ã¯ç¸æ§ãæªãã¨æãã¾ããããããEJBãJavaEEã®ãã¹ã¦ã§ã¯ãªãã§ãããJavaSE 8ãå©ç¨ã§ããããã«ãªãã°ãæ¥ä»APIãã©ã ãã使ã£ããã¸ãã¯ã®ç°¡æ½åãªã©ããããããªã¡ãªããããããã®ã¨æå¾ ããã¾ãã
ãªããæ¥æ¬èªã®æ
å ±ãå°ãªãã¨ããåé¡ã¯ããã¾ãããJavaEEã«ã¤ãã¦ã¯ä»¥ä¸ã®NetBeansã®ãã¥ã¼ããªã¢ã«ã«ãããµã³ãã«ã«åãçµãã®ãããã¨ã®ãã¨ã§ãã
https://netbeans.org/kb/trails/java-ee.html
H-2 Javaãã©ãã«ã«åããã(ä¸å¦» å®äººæ°)
ä¸å¦»æ°ã¯見習いプログラミング日記ã§Java EEãä¸å¿ã¨ããæ å ±ã®çºä¿¡ãããã¦ãã¾ãããåã«ããã°ã©ãã³ã°ãä¸å¿ã¨ããéçºææ³ã®ã¿ãªãããéç¨æã«å¿ è¦ãªã¢ãã¿ãªã³ã°ãã¼ã«ã®ç¥èãªã©æç¨ãªæ å ±ãæ¸ããã¦ãã¾ããã©ããã¦ããæ°ããAPIãè¨èªã®æ©è½ãéçºãã¼ã«ãªã©ã«èå³ããããã¡ã§ãããå®éã«ã¯éç¨æã®ãã©ãã«ã·ã¥ã¼ãã£ã³ã°ãããããã®ãã°è§£æææ³ãªã©ã¯é常ã«å¤§åã§ããã¾ããå¿ è¦ãªãã¼ã«ãæ£ãã使ãããªãã°ããã©ãã«ã·ã¥ã¼ãã£ã³ã°ã容æã§ããã¨ããã®ãJavaã®éè¦ãªç¹å¾´ã®ä¸ã¤ãªã®ã§ã¯ãªããã¨æãã¾ããã¤ã¾ããJavaã¯åã«ããã°ã©ãã³ã°è¨èªã¨ããã ãã§ã¯ãããããã¤ã¡ã³ãã»éç¨æã®ç°å¢ã¾ã§å«ãããã©ãããã©ã¼ã ãªã®ã§ããã¨ãããã¨ã§ããã
è¬ç¾©ã®ä¸ã§ã¯ããã©ãã«ã·ã¥ã¼ãã£ã³ã°ã®ããã«é©åãªæ å ±ã®åå¾ã大åã§ããã¨ãã¦ãã¾ãã以ä¸ã®æ å ±åºåã®æ¹æ³ã«ã¤ãã¦èª¬æããã¾ããã
- GCãã°ã®åºåè¨å®
- ã¯ã©ã¹ãã¹ãã°ã©ã ã®åºå
- ãã¼ããã³ãã®åºåã¨è§£æ
- ã¹ã¬ãããã³ãã®åºå
ããã«ãOutOfMemoryErrorãçºçãããã¾ãã¾ãªã±ã¼ã¹ãçªåºåãããããåãªã©ãã¿ã¼ã³ãã¨ã«è§£æããææ³ã«ã¤ãã¦è§£èª¬ããã¾ãããåºæ¬çãªææ³ã¯æãã大ããå¤ãã£ã¦ããªãã¨ã¯ãããå
·ä½çãªã³ãã³ãã®ä½¿ãæ¹ã¯ãã¼ã¸ã§ã³ã«ãã£ã¦ç°ãªã£ã¦ãããããä¸å¦»æ°ã®æè¿ã®çµé¨ã«åºã¥ããæ
å ±ã¯é常ã«æç¨ãªãã®ã§ããã¨æãã¾ããããããã©ãã«ãçºçããã¨ç¦ã£ã¦ãã¾ããå·éãªå¤æãã§ããªãã¨ãããã¨ãããã¨æãã¾ãã®ã§ãJavaã®ã¨ã³ã¸ãã¢ã¨ãã¦ã¯æ¥é ãããããã解æã®ææ³ã«æ
£ãã¦ãããã¨ã¯å¤§åã ã¨æãã¾ããã*4
H-3 åãã¦ã® Java EE éçºããå¦ãã ãã¨(èç° æ´ä¸æ°)
æ ªå¼ä¼ç¤¾ æ§é è¨ç»ç 究æã®èç°æ°(@kikutaro_)ããããèªèº«ãåãã¦Java EEã®éçºã«åãçµã¾ããããã¸ã§ã¯ãã®çµé¨ããã¨ã«ã話ããã¾ãããèç°æ°ã¯ä»¥ä¸ã®ããã°ã§ãJava EEã®æ å ±ãçºä¿¡ãã¦ãããã¾ããChallenge Java EE !
æ¥ããããªãããè¬æ¼ã®ä¸ã§ç§ã®ããã°ãã¡ãã£ã¨ç´¹ä»ãã¦ããã ããã®ã§ããã3å¹´è¿ãåï¼ãããããªã«çµã¤ãã§ããï¼ã«ã¡ãã£ã¨JavaEE 6ã«ã¤ãã¦èª¿ã¹ã¦ãã®ããã°ã§ãç´¹ä»ãããã¨ããã£ãï¼Java EE6標準の範囲でフルスタックのWebアプリケーションが簡単に作成できることを確かめてみました。 - 達人プログラマーを目指してï¼ã®ã§ãæã®ãã¨ãæãåºãã¦ã¡ãã£ã¨æããããªãã¾ããã
æ®å¿µãªãããç§èªèº«ã¯ãã®å¾JavaEEããé¢ãã¦ãã¾ããæ°ããEEã®ãã¬ã¼ã ã¯ã¼ã¯ãå®éã®æ¡ä»¶ã§ä½¿ããã¨ã¯ã§ããªãã£ãã®ã§ãããèç°æ°ã®çºè¡¨ã¯JavaEEãå®éã«é©ç¨ããææã«åºã¥ããã®ã¨ãã¦ã大å¤èå³æ·±ãè´ããã¦ããã ãã¾ããã
çºè¡¨ã«ãããããã«ããã¨ãã¨.NETç³»ã®éçºããJavaEEã«ç§»è¡ããã¦ãã¾ã ã»ãã®ä¸å¹´åã¨ããçãæéã«ãé¢ãããããã¼ã¿å±¤ãããã¬ã¼ã³å±¤ã¾ã§ããã«ã¹ã¿ãã¯ãã®ã¢ã¼ããã¯ãã£ãæ§ç¯ãããã¨ãããã¨ã¯å¤§å¤æéãåãã¾ãããããã¯ãã¡ããèç°æ°ã®åªåã®è³ç©ã ã¨æãã¾ãããJavaEEãæ¨æºã®ãã¬ã¼ã ã¯ã¼ã¯ãçµã¿åãããã ãã§å®ç¨çã«ä½¿ããã.NET並ã¿ã«ç°¡åã«ä½¿ããããã«ãªã£ãã¨ãããã¨ã®è¨¼æã¨ãªãäºä¾ãªã®ã§ã¯ãªããã¨æãã¾ãã
- æ¨æºä»¥å¤ã®ãã¬ã¼ã ã¯ã¼ã¯ããã¼ã«ããããããã£ã¦é¸æã«ã¾ãããã©ãããããæ©ãã®ã¯æ¥½ãã
- æ¥æ¬èªã®æ¸ç±ãå°ãªã
- Javaã¯ã³ãã¥ããã£ã¼ãçãã§åå¿è ã«ãéå£ãåºã
ã¨ãã£ããã¨ã¯ãç§ã以åããæãã¦ãããã¨ã§ãå¤ãã®ç¹ã§å¤§å¤å
±æãã¾ãããèç°ãããæ¬äººã®ä»¥ä¸ã®ã¨ã³ããªã¼ãã©ãã
#JJUG_CCC Spring 2014で「初めての Java EE 開発から学んだこと」というタイトルで発表させて頂きました! - Challenge Java EE !
*1:æéã®é¢ä¿ã§æ®å¿µãªããã»ã¨ãã©ã¹ãããããã¾ããããæ«»åºããã¯JavaFXãæ¨é²ããã¦ãããæ¥é ãã¬ã¼ã³è³æèªä½ãJavaFXã§ä½æãã¦ããã¨ã®ãã¨ã§ããhttp://www.slideshare.net/skrb/20140321-javafx8ãåèã«ãªãã¾ãã
*2:Coolectionsã®ãããªã¦ã¼ãã£ãªãã£ã¯ã©ã¹ã¨éããã¤ã³ã¿ã¼ãã§ã¼ã¹ã«å®ç¾©ãããããã©ã«ãã¡ã½ããã¯ãªã¼ãã¼ã©ã¤ãå¯è½ãªã®ã§ããµãã¯ã©ã¹ãã¨ã«ç¬èªã®å®è£ ãæã¦ãã
*3:åå¨çãè¨ç®ãããã¤ã©ã¼ç´æ°ã®è¨ç®
*4:DevOpsã¨ããèãæ¹ãããããã«ãæè¿ã¯ããã°ã©ãã¼ãéçºã ãã§ãªãããµã¼ãã¼ã®éç¨ããã©ãã«ã·ã¥ã¼ãããããã¨ãå¤ãã¨æããã¾ãã