JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development
-
Upload
jazoon13 -
Category
Technology
-
view
133 -
download
0
description
Transcript of JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development
![Page 1: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/1.jpg)
Multiplatform Java application developmentNikita Salnikov-Tarnovski@iNikemhttp://plumbr.eu
Monday, October 21, 13
![Page 2: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/2.jpg)
• Estonian startup trying to solve performance problems
• We started with memory leaks and solved them :)
• Ongoing effort, more problems to be solved
|
Plumbr company
Monday, October 21, 13
![Page 3: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/3.jpg)
• Java agent, runs alongside your application
• Uses Instrumentation API to hook into your code
• Native counterpart in platform-specific C code
|
Plumbr software
Monday, October 21, 13
![Page 4: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/4.jpg)
• To support java 5, 6, 7, JRockit, IBM JVM
• To support Windows, Linux, Mac OS X, Solaris Sparc and Solaris x86
• Not the last versions only
|
“External” Goals
Monday, October 21, 13
![Page 5: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/5.jpg)
• Build infrastructure as automated as possible
• Automatic tests on all platforms
• Release maintenance vs future development
• Traceability
|
“Inner” goals
Monday, October 21, 13
![Page 6: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/6.jpg)
|
Forward Traceability
Monday, October 21, 13
![Page 7: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/7.jpg)
Backward traceability
|
1.2 1.3 2.0 2.1 2.1.3
Monday, October 21, 13
![Page 8: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/8.jpg)
Our team
|
Monday, October 21, 13
![Page 9: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/9.jpg)
One
|
Monday, October 21, 13
![Page 10: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/10.jpg)
Two
|
Monday, October 21, 13
![Page 11: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/11.jpg)
Virtually three
|
Monday, October 21, 13
![Page 12: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/12.jpg)
Mini hero
|
Monday, October 21, 13
![Page 13: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/13.jpg)
Ancient legend
|
Monday, October 21, 13
![Page 14: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/14.jpg)
Mastermind
|
Monday, October 21, 13
![Page 15: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/15.jpg)
• Small subproject in C, rarely updated
• Lives in BitBucket as well
• Jenkins builds it with make
• Then publishes to Artifactory
|
Native part
Monday, October 21, 13
![Page 16: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/16.jpg)
• We build native part on AWS instance
• But we need old enough libc
• Have to use chroot with older system
|
The problem of libc
Monday, October 21, 13
![Page 17: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/17.jpg)
• Jenkins builds whole project on every commit
• Runs fast tests, collects metrics
• Pushes all artifacts to ‘builds’ repo
|
CI
Monday, October 21, 13
![Page 18: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/18.jpg)
• All those environments are put into Jenkins pipeline
• Runs every night
• Downloads given version from ‘builds’ repo and runs full acceptance tests suite
|
Test pipeline
Monday, October 21, 13
![Page 19: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/19.jpg)
• End-to-end test
• Leaking application is started and used
• Plumbr’s report is then verified
|
Acceptance test
Monday, October 21, 13
![Page 20: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/20.jpg)
• If whole pipeline succeeds, pushes that tested version to ‘nightly’ repo
• Updates downloadable version on our site
|
Nightly
Monday, October 21, 13
![Page 21: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/21.jpg)
• Another job in Jenkins
• Lets you select version number from JIRA
• Pushes ready version from ‘nightly’ to ‘release’ repo
• Tags Mercurial revision corresponding to that version with JIRA version tag
• Updates Plumbr download page with new version
|
Release
Monday, October 21, 13
![Page 22: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/22.jpg)
Live fix
|
Monday, October 21, 13
![Page 23: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/23.jpg)
• WORA does not mean T(est)ORA
• There are more to Java than Hotspot
• We are blessed by not writing C
• Tools matter a lot
|
Conclusion
Monday, October 21, 13
![Page 24: JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development](https://reader033.fdocuments.us/reader033/viewer/2022051314/54ba88994a79591a7d8b462d/html5/thumbnails/24.jpg)
Solving performance problems is hard. We don’t think it needs to be.
@iNIkem/@JavaPlumbrplumbr.eu
Monday, October 21, 13