2. Agenda
• pics
• java roadmap
o projects
o feature
o release plan
• summary of Java EE sessions
• case studies
o mint.com
o ebay
o etc.
• other tech sessions
5. Java 7, 8
• Productivity
• Performance
• Modularity
o Project Coin
Productivity with More Concise Code
o Project Lambda
Closures for Java
o Project Jigsaw
The Modular Java Platform
NIO2(jsr203), Concurrency and Collections updates(jsr166y),
JDBC4.1, etc.
6. Project Coin
• Diamond
Map<String, List<Integer>> map = new HashMap<>()
• Try-with-resources
try( InputStream is = new FileInputStream(in);
OutputStream os = new FileOutputStream(out) ) {
...
} catch (Exception e) {
...
}
• Strings in Switch
• Improved integral literals
• Vargs warnings
• Multi-catch & precise rethrow
7. Project Lambda
• SAM (Single Abstract Method)
Collections.sort( data, #( int a, int b ){ a.length() - b.length() } );
double max =
students.filter( #{ s -> s.gradYear == 2010 })
.map( #{ s -> s.score })
.max();
• Method Reference
Collections.sortBy(students,
#Student.getName);
8. Project Jigsaw
• eliminate the class path
• light weight memory foot print
• module-info.java
o meta data (module dependency info)
@Version("1.0")
@ImportModules( {
@ImportModule(name="java.se"),
@ImportModule(name="com.foo.OrderProcessingService"),
@ImportModule(name="com.bar.PrintService")
} )
@MainClass("hello.HelloWorld")
module hello;
9. etc.
• Value Class
value class Foo {
property Foo parent;
property String name;
}
• JVM
o upto 32G Heap Compaction
o NUMA (Non-Uniform Memory Access)
o G1GC (Garbage First GC)
• Integrate JRockit to HotSpot
o Nondisruptive, Scalable, High Performance VM
10. Java Release Plan
Plan B
• Java7 (mid 2011)
o most of "Project Coin"
o New I/O APIs
o Fork/Join Framework
o InvokeDynamic
o etc.
• Java8 (late 2012)
o Project Lambda
o Project Jigsaw
o Rest of Project Coin
o etc.
11. Web related tech sessions
• EJB3 features (Transaction, Business Tier)
o Bean Validation (JSR303)
Hibernate Validator
o CDI(Contexts and Dependency Injection) (JSR299)
@Inject, @Model, @Singleton, @Stateless, etc.
o JPA 2.0 (JSR317)
• For Java6
o Common Annotation for the Java Platform (JSR250)
@Resource, @PostConstruct, @PreDestroy
13. Web session summary
• new features are mostly available in spring
o using spring is a correct choice
o giving more confusion to developers
• EJB containers are required
o mostly commercial
o still heavy weight
Advantage of using EJB
• session clustering
• remoting
• commercial support?
• vendor specific tools
spring is much better!!
- lightweight
- integration to other tech
14. Case Study (mint.com)
• Free personal financial management web
• 2billion financial transaction
• 10m+ transaction per day
Architecture
• spring + hibernate
• memcached
• intensive use of AOP
15. DB Scaling
NOSQL
• lose integrity ==> not best fit
User ID based sharding
• Hierarchical data model
• Logical database separation
o user data & non user data
• put user_id to all hierarchical entities (user data)
o every user data is exclusive and have locality
16. Implementation
Minimize infrastructure sharding info to implementation context
• annotation
• AOP
@MintUserdata
class UserService {
....
}
@MintCommondata
class MasterDataService {
....
}
switch SessionFactory, Datasource by AOP
based on the annotation
17. Monitoring
• collect data from real prod requests
o viewed page, traffic, behavior
o cache statistics
o hibernate statistics
o thread pool & queue size
• monitoring overhead must be low
o aggregate results in memory
o persist periodically
18. Monitoring Impl
monitor all spring beans
• AOP autoproxy all beans, no code change
• All methods (request-response lifecycle) can be drilldown
• build custom tool (80/20 rule)
• intensive use of AOP to monitor application error logs
• log messages are parametrized, centeralized
• web tool to easily search/parse errors
o like splunk
~/account.htm?id=1 100ms
AccountController#info() 10ms
AccountService#getInfo() 20ms
AccountDao#getInfoById() 70ms
19. Security & How to reduce Bug
Use hibernate to enforce isolation
• use AOP or hibernate callback
o if data tries to access data that doesn't belong to the user,
throws exception
Detect crosstalk (multi thread test)
• run test class with multiple user (sequential, multithread)
20. Case Study (eBay)
• 10bil requests per day
• 10K java servers
• partition everything
• asynchronous everywhere
• automate everything
• everything fails
• embrace inconsistency
• expect (r)evolution
• dependencies matters
• respect authority (data)
• never enough data
• custom infrastructure
21. Case Study (Sinapto)
Online Poker in Italy
3000 concurrent players
Architecture
• Vertical, Horizontal partitioning (table, tournament)
• asynchronous (event driven)
• pass around status object
22. Case Study (Caché)
Specialized to write huge data
example:
3-D map of Galaxy
monitor 1billion stars, more & more newly found ones
(Peta byte level data)
stock market trading information
government, healthcare, financial industry
solution:
o wrote DB : 130+K sustained inserts per sec
23. JDBC:
runs over tcp/ip (even locally)
use JNI (Java Native Interface)
Store multi dimensional data
XEP: serialize & store
MDS: Monitoring & Deiscovery Service
24. NOSQL
• This does not replace RDBMS
• Suit for representing data in a simple datastructure
o High Scalability
o Flexible modification
o Specialized process
Characteristic
• no join
• mostly search data by single rowkey
• eventual consistency
25. Data Model
Eventual Consistency
• no transaction, no consistency
o application needs to handle consistency
Example:
For column based DB, there is no association table, and no
cascade delete.
When parent data is removed, child data needs to deleted
by application
RDBMS NoSQL
relational column, KV, etc.
26. Testing
Unit Test
• selenium IDE
• junit
• mock
Integration Test
• starting container at beginning of test in code
27. Functional Programming
"OO is better to project our world structure
FP excels at actual coding of the algorithm"
Use OO to build classes
Use FP to implement methods
Java 7, 8 will have FP(closure) feature. (lambda project)
28. Conclusion
spring is the best!!
Java future roadmap, Case Studies
javaone "2010"
Technical sessions...
• Spring One
• Server Side
• No Fluff, Just Stuff
met jp java community