Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Java and the Furious (JMX)
Search
Yeray Darias
November 18, 2016
Programming
2
530
The Java and the Furious (JMX)
Talk given at Codemotion 2016 in Madrid about how to measure (Java) code speed and health with JMX.
Yeray Darias
November 18, 2016
Tweet
Share
More Decks by Yeray Darias
See All by Yeray Darias
Ingeniería vs Product: Una historia de (des)amor
ydarias
0
55
Comunicarse en tiempos de remoto
ydarias
0
320
No Code vs Code
ydarias
0
24
12 Factor Applications
ydarias
2
120
Evolutionary Architectures
ydarias
1
250
Microservices lightningtalk
ydarias
1
260
BetaBeers Salamanca
ydarias
1
150
Runnics at ProductHunt Madrid
ydarias
0
180
Otogami at Tetuan Valley
ydarias
0
76
Other Decks in Programming
See All in Programming
Ruby Pattern Matching
bkuhlmann
0
930
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
雑に思考を整理する技術と効能
konifar
59
29k
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
780
Netty Chicago Java User Group 2024-04-17
sullis
0
170
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
200
見た目から始める生産性向上
ikumatadokoro
7
840
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
420
Fragment Composition of GraphQL
quramy
6
950
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
Snowflakeで眠ったデータを起こそう!
estie
0
120
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
290
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Thoughts on Productivity
jonyablonski
58
3.8k
Clear Off the Table
cherdarchuk
84
310k
Art, The Web, and Tiny UX
lynnandtonic
289
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
How STYLIGHT went responsive
nonsquared
92
4.8k
It's Worth the Effort
3n
180
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Facilitating Awesome Meetings
lara
42
5.6k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
Transcript
The JAVA and the FURIOUS Talk by Yeray Darias at
Codemotion in Madrid on Friday, 18 November 2016
The JAVA and the FURIOUS Cómo medir la velocidad de
tu código Java con JMX
JMX Java Management eXtensions
None
@ydarias Yeray Darias SOFTWARE DEVELOPER
[email protected]
• 35YO • BSc Computer Science • Agile evangelist •
Cook • Science geek • Future space rocket builder • Sketchnoting practitioner Yeray Darias
Let’s start
None
None
What is JMX?
JMX manage Web Browser MBean Server MBean MBean MBean JVM
Agent level Instrumentation level Services level
JMX manage Web Browser MBean Server MBean MBean MBean JVM
Agent level Instrumentation level Services level
What is JMX?
What is JMX for?
Monitoring
Manage
None
JMX manager Web Browser MBean Server MBean MBean MBean JVM
Instrumentation Level
Define the interface public interface SystemStatsMBean { public long getTotalWrites();
public long setTimeout(long timeout); }
Implement the interface public class SystemStats implements SystemStatsMBean { public
long getTotalWrites() { … } public void setTimeout(long timeout) { … } }
Register MBean SystemStats systemStats = new SystemStats(metrics, configuration); MBeanServer
beansServer = ManagementFactory.getPlatformMBeanServer(); ObjectName beanName = new ObjectName(“…”); beansServer.registerMBean( systemStats, beanName);
Launch & connect
Where is the f·$%& demo?
Good practices defining MBeans Good practices
None
No way
Single responsibility principle Don’t mix your “core” with instrumentation code.
It is a lot of work, isn’t it?
None
Demo time
JMX manager Web Browser MBean Server MBean MBean MBean JVM
Services Level
The “official” options
None
None
None
The “unofficial” options
None
None
None
Tons of options
The options “ultra pro”
The options “expensive”
None
None
None
None
The “craftsman” option
Connect to the server JMXServiceURL url = new JMXServiceURL(…); JMXConnector
connector = JMXConnectorFactory.connect(url); MBeanServerConnection serverConnection = connector.getMBeanServerConnection();
Search the MBean ObjectName mbeanName = new ObjectName(…); SystemStatsMBean statsProxy
= MBeanServerInvocationHandler.newProxyInstance( serverConnection, mbeanName, SystemStatsMBean.class, true);
None
Last demo Last demo
This is all?
Interesting links http://bit.ly/codemotion2016-links
Slides Speaker Deck http://bit.ly/codemotion2016-slides
Q & A