Multiplatform Java
application development
Nikita Salnikov-Tarnovski
@iNikem
http://plumbr.eu
Monday, October 21, 13
Plumbr company
•

Estonian startup trying to solve performance problems

•

We started with memory leaks and solved them :...
Plumbr software
•

Java agent, runs alongside your application

•

Uses Instrumentation API to hook into your code

•

Nat...
“External” Goals
•

To support java 5, 6, 7, JRockit, IBM JVM

•

To support Windows, Linux, Mac OS X, Solaris Sparc and
S...
“Inner” goals
•

Build infrastructure as automated as possible

•

Automatic tests on all platforms

•

Release maintenanc...
Forward Traceability

|
Monday, October 21, 13
Backward traceability

1.2

1.3

2.0

|
Monday, October 21, 13

2.1

2.1.3
Our team

|
Monday, October 21, 13
One

|
Monday, October 21, 13
Two

|
Monday, October 21, 13
Virtually three

|
Monday, October 21, 13
Mini hero

|
Monday, October 21, 13
Ancient legend

|
Monday, October 21, 13
Mastermind

|
Monday, October 21, 13
Native part
•

Small subproject in C, rarely updated

•

Lives in BitBucket as well

•

Jenkins builds it with make

•

Th...
The problem of libc
•

We build native part on AWS instance

•

But we need old enough libc

•

Have to use chroot with ol...
CI
•

Jenkins builds whole project on every commit

•

Runs fast tests, collects metrics

•

Pushes all artifacts to ‘buil...
Test pipeline
•

All those environments are put into Jenkins pipeline

•

Runs every night

•

Downloads given version fro...
Acceptance test
•

End-to-end test

•

Leaking application is started and used

•

Plumbr’s report is then verified

|
Mond...
Nightly
•

If whole pipeline succeeds, pushes that tested version to
‘nightly’ repo

•

Updates downloadable version on ou...
Release
•

Another job in Jenkins

•

Lets you select version number from JIRA

•

Pushes ready version from ‘nightly’ to ...
Live fix

|
Monday, October 21, 13
Conclusion
•

WORA does not mean T(est)ORA

•

There are more to Java than Hotspot

•

We are blessed by not writing C

•
...
Solving performance problems is hard.
We don’t think it needs to be.
@iNIkem/@JavaPlumbr
plumbr.eu

Monday, October 21, 13
Upcoming SlideShare
Loading in …5
×

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

417 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
417
On SlideShare
0
From Embeds
0
Number of Embeds
33
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

×