JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

377 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
377
On SlideShare
0
From Embeds
0
Number of Embeds
32
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application development

  1. 1. Multiplatform Java application development Nikita Salnikov-Tarnovski @iNikem http://plumbr.eu Monday, October 21, 13
  2. 2. Plumbr company • Estonian startup trying to solve performance problems • We started with memory leaks and solved them :) • Ongoing effort, more problems to be solved | Monday, October 21, 13
  3. 3. Plumbr software • Java agent, runs alongside your application • Uses Instrumentation API to hook into your code • Native counterpart in platform-specific C code | Monday, October 21, 13
  4. 4. “External” Goals • 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 | Monday, October 21, 13
  5. 5. “Inner” goals • Build infrastructure as automated as possible • Automatic tests on all platforms • Release maintenance vs future development • Traceability | Monday, October 21, 13
  6. 6. Forward Traceability | Monday, October 21, 13
  7. 7. Backward traceability 1.2 1.3 2.0 | Monday, October 21, 13 2.1 2.1.3
  8. 8. Our team | Monday, October 21, 13
  9. 9. One | Monday, October 21, 13
  10. 10. Two | Monday, October 21, 13
  11. 11. Virtually three | Monday, October 21, 13
  12. 12. Mini hero | Monday, October 21, 13
  13. 13. Ancient legend | Monday, October 21, 13
  14. 14. Mastermind | Monday, October 21, 13
  15. 15. Native part • Small subproject in C, rarely updated • Lives in BitBucket as well • Jenkins builds it with make • Then publishes to Artifactory | Monday, October 21, 13
  16. 16. The problem of libc • We build native part on AWS instance • But we need old enough libc • Have to use chroot with older system | Monday, October 21, 13
  17. 17. CI • Jenkins builds whole project on every commit • Runs fast tests, collects metrics • Pushes all artifacts to ‘builds’ repo | Monday, October 21, 13
  18. 18. Test pipeline • All those environments are put into Jenkins pipeline • Runs every night • Downloads given version from ‘builds’ repo and runs full acceptance tests suite | Monday, October 21, 13
  19. 19. Acceptance test • End-to-end test • Leaking application is started and used • Plumbr’s report is then verified | Monday, October 21, 13
  20. 20. Nightly • If whole pipeline succeeds, pushes that tested version to ‘nightly’ repo • Updates downloadable version on our site | Monday, October 21, 13
  21. 21. Release • 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 | Monday, October 21, 13
  22. 22. Live fix | Monday, October 21, 13
  23. 23. Conclusion • 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 | Monday, October 21, 13
  24. 24. Solving performance problems is hard. We don’t think it needs to be. @iNIkem/@JavaPlumbr plumbr.eu Monday, October 21, 13

×