Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Multiplatform Java application development

Multiplatform Java application development

The talk is about our experience on multi-platform java apps. We have built a javaagent supporting Linux, Windows, Mac and Solaris. On 32 and 64 bit JVM. And on Hotspot, jRockit and IBM JDKs. If you think it was a trivial problem - Java is supposed to be written once and to be ran anywhere - guess again.

Nikita Salnikov-Tarnovski

April 24, 2013
Tweet

More Decks by Nikita Salnikov-Tarnovski

Other Decks in Technology

Transcript

  1. Plumbr finds memory leaks •Each month –500 downloads –125 leaks

    •Quality –88% leaks found –13% false alarms •Overhead –10% more heap –23% more CPU Wednesday, April 24, 13
  2. Plumbr finds memory leaks •Each month –500 downloads –125 leaks

    •Quality –88% leaks found –13% false alarms •Overhead –10% more heap –23% more CPU Wednesday, April 24, 13
  3. Plumbr Java agent, runs alongside your application Uses Instrumentation API

    to hook into your code Native counterpart in platform-specific C code Wednesday, April 24, 13
  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 Wednesday, April 24, 13
  5. “Inner” goals Build infrastructure as automated as possible Automatic tests

    on all platforms Release maintenance vs future development Traceability Wednesday, April 24, 13
  6. Native part Small subproject in C, rarely updated Lives in

    BitBucket as well Jenkins builds it with make Then publishes to Artifactory Wednesday, April 24, 13
  7. The problem of LIBC We build native part on AWS

    instance But we need old enough libc Have to use chroot with older system Wednesday, April 24, 13
  8. CI Jenkins builds whole project on every commit Runs fast

    tests, collects metrics Pushes all artifacts to ‘builds’ repo Wednesday, April 24, 13
  9. 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 Wednesday, April 24, 13
  10. Acceptance test End-to-end test Leaking application is started and used

    Plumbr’s report is then verified Wednesday, April 24, 13
  11. Nightly If whole pipeline succeeds, pushes that tested version to

    ‘nightly’ repo Updates downloadable version on our site Wednesday, April 24, 13
  12. 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 Wednesday, April 24, 13
  13. Praises Jenkins is the awesome tool Gradle is the awesome

    tool Artifactory is the awesome tool You put them together and kabooom! Perfection is born! Wednesday, April 24, 13
  14. Conclusion WORA does not mean T(est)ORA There are more to

    Java than Hotspot We are blessed by not writing C Wednesday, April 24, 13