Thursday, May 16, 2013

Java Day Tokyo 2013


大きな地図で見る
Java Day Tokyo 2013 was held in Akihabara UDX.
  • Keynote
    • Java SE strategy
      • The most improvement : lambda expression
        • Collection becomes more useful
        • Advantage for parallel execution of JVM
      • Other improvements
        • Virtual Extension Methods : Extending existing Interface
        • Project Nashron : Brand-new JavaScript engine
      • Java9 development is going on
      • Java8 : 2014/02 (Delayed from 2013 4Q)
      • Java9 : 2 year after from releasing Java8
    • JavaFX Strategy
      • Plan : Deliverying JavaFX application with JavaFX runtime on Mac AppStore
      • JavaFX is completely OSS-ed : integrated into the openJDK
      • Scene Builder : JavaFX GUI tool
        • Now supports Win and Mac
        • And, supports Linux in 2013 4Q
      • Demo : JavaFX 3D on Microsoft Surface
    • Java Embedded Strategy
      • The most advantege of using Java Embedded : Standarlized
      • Recently, JavaME Embedded 3.3 has been released
    • Java EE Strategy
      • JavaEE 6 has 18 implementations (including Glassfish)
      • JavaEE 7
        • Release plan : 2013/06/13
        • feature closed
        • Batch process
        • JSON
        • WebSocket
        • concurrency
      • Demo : WebSocket
    • Java Community
      • How to join Java community
      • What about Java Community Process
      • Introduction of JJUG
  • WebSocket
    • HTTP is half-duplex
    • HTTP is verbose
    • Last technologies for server push (e.g. polling, comet) are complex and inefficient.
    • WebSocket
      • bi-directional full-duplex messaging
      • IETF-defined RFC6455
      • W3C-defined JavaScript API
      • No headers, cookies authentication
    • Procedure
      1. handshake as HTTP
      2. Upgrade from HTTP to WebSocket
      3. handshake as WebSocket
    • Protocol is ws://
    • HTTP is client-server / WebSocket is peer-peer
    • To survey supporting Browser : caniuse.com/websockets
    • IE starts supporting WebSocket since IE10
    • JSR356
    • WebSocket and Glassfish 4
      • details of JSR356 annotations
      • details of TextDecoder / TextEncoder
      • details of Dependency Injection
    • Servlet API 3.1 adds new API HttpServletRequest.upgrade
    • How about secutiry
      • Do secure-releated procedures and authentications on HTTP, before handshaking WebSocket
      • WebSocket with SSL (wss://)
  • Lambda Expression
    • Multicore processor is current evolution of CPU
    • JavaSE should adapt multicore and parallel
    • external iteration is serial, and hard to be parallel
    • internal iteration is NOT serial, and easy to be parallel
    • a good way of internal iteration : iambda expression
    • Lambda in JavaSE 8
      • Not only internal iteration, target typing
      • It is Not closure
      • this indicates enclosing class, does not indicate inner lambda
      • Parameters of lmabda can do type inference
      • New accessor notation :: : (single method call)
    • When updating collections for lambda in JavaSE class library
      • Collection is defined as Interface
      • changing interface means changing all of concrete classes
      • But, JavaSE class library is required backward compatibility
      • So that JavaSE 8 also adapts also Virtual Extension Method
    • Virtual Extension Method
      • A new syntax to extend existing interface
      • Defining both new API and default behavior for it
    • JavaSE 8's lambda is optimized by using invokedynamic when compiled : so that javac uses invokedynamic since JavaSE 8
  • Batch Applications
    • JSR352 : IBM leads standarlization for Java Batch Processes
    • A part of JavaEE 7
    • But it can us stand-alone on Java SE : java.net/projects/jbatch
    • Details of JSR352 architecture
      • Job, Step
      • ItemReader, ItemProcessor, ItemWriter
      • Partitioning : Mapper, Reducer, Collector, Analyzer
    • Job Supecification Language(JSL) : XML for Java Batch DSL
      • How to handle/not-handle exceptions : skippable-exception, retryable-exception, no-rollback-exception
      • Flow : a serial set of Steps
      • Split : a parallel set of Flows
    • Demo
  • invokedynamic and Project Nashorn
    • invokedynamic : one of bytecode instruction since Java SE 7
    • In Java SE 7 : used for dynamic languages running on JVM
    • In Java SE 8 : used also for optimizing lambda expression when compiled
    • Details of invokedynamic
    • dynamic languages on JVM : JRuby, Jython, Groovy and so forth
    • difficulties of creating dynamic language
      • Type is not determined at some time
      • members of class and object are changable
      • Ablilty to re-define existing members
    • Project Nashorn
      • A JavaScript engine for JVM using invokedynamic
      • JavaSE6, JavaSE7 bundles Rhino
        • invokedynamic is not used
        • It's slow
      • It also roles as reference implementation for using invokedynamic
      • Target : running node.js
      • ECMAScript based
      • Faster
      • Size is well small for using in Java Embedded
And, in this day, Oralce Japan has announced that they release Java Documentation Japanese Edition.
Java Platform Standard Edition 7 Document (Japanese)
Java Platform Standard Edition 7 API Document (Japanese)

No comments:

Post a Comment