大きな地図で見る
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
- The most improvement : lambda expression
- 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
- Java SE strategy
- 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
- handshake as HTTP
- Upgrade from HTTP to WebSocket
- 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
- Standard Java API for creating WebSocket Application
- A part of JavaEE 7
- java.net/projects/tyrus
- 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
Java Platform Standard Edition 7 Document (Japanese)
Java Platform Standard Edition 7 API Document (Japanese)
No comments:
Post a Comment