SlideShare una empresa de Scribd logo
1 de 28
Javaone 2010 report
Tadaya Tsuyukubo
tw: @ttddyy
http://bit.ly/ttddyy_javaone2010
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
Oracle OpenWorld
+
JavaOne
Year 2010 Sep 19-23
San Francisco
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.
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
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);
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;
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
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.
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
Annotation Jam
@Secure
@Transactional
@RequestScoped
@Named
class SomeClass {
......
}
@BusinessLogic
class SomeClass {
}
use customized stereotype
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
Case Study (mint.com)
• Free personal financial management web
• 2billion financial transaction
• 10m+ transaction per day
Architecture
• spring + hibernate
• memcached
• intensive use of AOP
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
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
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
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
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)
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
Case Study (Sinapto)
Online Poker in Italy
3000 concurrent players
Architecture
• Vertical, Horizontal partitioning (table, tournament)
• asynchronous (event driven)
• pass around status object
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
JDBC:
runs over tcp/ip (even locally)
use JNI (Java Native Interface)
Store multi dimensional data
XEP: serialize & store
MDS: Monitoring & Deiscovery Service
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
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.
Testing
Unit Test
• selenium IDE
• junit
• mock
Integration Test
• starting container at beginning of test in code
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)
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

Más contenido relacionado

La actualidad más candente

Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible APIIntroducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
ScyllaDB
 

La actualidad más candente (20)

Tale of ISUCON and Its Bench Tools
Tale of ISUCON and Its Bench ToolsTale of ISUCON and Its Bench Tools
Tale of ISUCON and Its Bench Tools
 
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
Using Atlassian UAL and ActiveObjects for Rapid Plugin Development - AtlasCam...
 
Presto @ Treasure Data - Presto Meetup Boston 2015
Presto @ Treasure Data - Presto Meetup Boston 2015Presto @ Treasure Data - Presto Meetup Boston 2015
Presto @ Treasure Data - Presto Meetup Boston 2015
 
FITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JSFITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JS
 
MySQL 8 loves JavaScript
MySQL 8 loves JavaScript MySQL 8 loves JavaScript
MySQL 8 loves JavaScript
 
Clustered Columnstore - Deep Dive
Clustered Columnstore - Deep DiveClustered Columnstore - Deep Dive
Clustered Columnstore - Deep Dive
 
DSpace at ILRI : A semi-technical overview of “CGSpace”
DSpace at ILRI : A semi-technical overview of “CGSpace”DSpace at ILRI : A semi-technical overview of “CGSpace”
DSpace at ILRI : A semi-technical overview of “CGSpace”
 
Scalding @ Coursera
Scalding @ CourseraScalding @ Coursera
Scalding @ Coursera
 
Oracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_databaseOracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_database
 
Scaling ELK Stack - DevOpsDays Singapore
Scaling ELK Stack - DevOpsDays SingaporeScaling ELK Stack - DevOpsDays Singapore
Scaling ELK Stack - DevOpsDays Singapore
 
MongoDB SF Ruby
MongoDB SF RubyMongoDB SF Ruby
MongoDB SF Ruby
 
ELK - Stack - Munich .net UG
ELK - Stack - Munich .net UGELK - Stack - Munich .net UG
ELK - Stack - Munich .net UG
 
Netezza online training at GoLogica
Netezza online training at GoLogicaNetezza online training at GoLogica
Netezza online training at GoLogica
 
MongoDB
MongoDBMongoDB
MongoDB
 
Spark: Taming Big Data
Spark: Taming Big DataSpark: Taming Big Data
Spark: Taming Big Data
 
Iceberg: A modern table format for big data (Strata NY 2018)
Iceberg: A modern table format for big data (Strata NY 2018)Iceberg: A modern table format for big data (Strata NY 2018)
Iceberg: A modern table format for big data (Strata NY 2018)
 
Building an API layer for C* at Coursera
Building an API layer for C* at CourseraBuilding an API layer for C* at Coursera
Building an API layer for C* at Coursera
 
Oracle golden gate training course
Oracle golden gate training courseOracle golden gate training course
Oracle golden gate training course
 
Getting started with SparkSQL - Desert Code Camp 2016
Getting started with SparkSQL  - Desert Code Camp 2016Getting started with SparkSQL  - Desert Code Camp 2016
Getting started with SparkSQL - Desert Code Camp 2016
 
Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible APIIntroducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
Introducing Project Alternator - Scylla’s Open-Source DynamoDB-compatible API
 

Similar a JavaOne_2010

Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Software Guru
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
Will Iverson
 

Similar a JavaOne_2010 (20)

Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?
 
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 
Java one 2010
Java one 2010Java one 2010
Java one 2010
 
On-boarding with JanusGraph Performance
On-boarding with JanusGraph PerformanceOn-boarding with JanusGraph Performance
On-boarding with JanusGraph Performance
 
Internals of Presto Service
Internals of Presto ServiceInternals of Presto Service
Internals of Presto Service
 
Workflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoWorkflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. Tokyo
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Scalable server component using NodeJS & ExpressJS
Scalable server component using NodeJS & ExpressJSScalable server component using NodeJS & ExpressJS
Scalable server component using NodeJS & ExpressJS
 
How we evolved data pipeline at Celtra and what we learned along the way
How we evolved data pipeline at Celtra and what we learned along the wayHow we evolved data pipeline at Celtra and what we learned along the way
How we evolved data pipeline at Celtra and what we learned along the way
 
The Why and How of Scala at Twitter
The Why and How of Scala at TwitterThe Why and How of Scala at Twitter
The Why and How of Scala at Twitter
 
DOTNET8.pptx
DOTNET8.pptxDOTNET8.pptx
DOTNET8.pptx
 
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
 
Apache Geode Meetup, Cork, Ireland at CIT
Apache Geode Meetup, Cork, Ireland at CITApache Geode Meetup, Cork, Ireland at CIT
Apache Geode Meetup, Cork, Ireland at CIT
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 

JavaOne_2010

  • 1. Javaone 2010 report Tadaya Tsuyukubo tw: @ttddyy http://bit.ly/ttddyy_javaone2010
  • 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
  • 3. Oracle OpenWorld + JavaOne Year 2010 Sep 19-23 San Francisco
  • 4.
  • 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
  • 12. Annotation Jam @Secure @Transactional @RequestScoped @Named class SomeClass { ...... } @BusinessLogic class SomeClass { } use customized stereotype
  • 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