SlideShare a Scribd company logo
1 of 80
1CONFIDENTIAL
PROFILING DISTRIBUTED
JAVA APPLICATIONS
KANSTANTSIN SLISENKA
LEAD SOFTWARE ENGINEER
MAY 25, 2017
2CONFIDENTIAL
Kanstantsin Slisenka
Java Backend Developer
Speaker at Tech Talks, IT Week
ABOUT ME
skype: kslisenko
kslisenko@gmail.com
kanstantsin_slisenka@epam.com
3CONFIDENTIAL
WHAT IS COMMON?
4CONFIDENTIAL
AGENDA
Profiling single JVM1
How profilers work
Java agents (live demo)
Google experience
Dynatrace, Zipkin (live demo)
Profiling distributed systems2
5CONFIDENTIAL
PROFILING SINGLE JVM
6CONFIDENTIAL
“You can’t measure
performance of Java
code not interfering
with JVM”
7CONFIDENTIAL
https://zeroturnaround.com/rebellabs/top-5-java-profilers-revealed-real-world-data-with-visualvm-jprofiler-java-mission-control-yourkit-and-custom-tooling/
8CONFIDENTIAL
Is profiler honest?
9CONFIDENTIAL
Is profiler honest?
NO!*
*Measured performance = (app performance + profiler overhead) * profiler accuracy
10CONFIDENTIAL
MEASURING TIME
System.currentTimeMillis()
System.nanoTime()
Spend time, not always accurate
1. Use benchmarks
http://openjdk.java.net/projects/code-tools/jmh/
2. Warm-up your JVM, …
https://shipilev.net/talks/jpoint-April2014-benchmarking.pdf https://shipilev.net/blog/2014/nanotrusting-nanotime/
11CONFIDENTIAL
public void main() {
a(); // 100 ms
Thread.sleep(200);
b(); // 100 ms
// GC is running – 50ms
c(); // 100 ms
}
CPU VS WALL-CLOCK TIME
12CONFIDENTIAL
Wall-clock time
As much as it takes to execute
100 + 200 + 100 + 50 + 100 = 550 ms
public void main() {
a(); // 100 ms
Thread.sleep(200);
b(); // 100 ms
// GC is running – 50ms
c(); // 100 ms
}
CPU VS WALL-CLOCK TIME
13CONFIDENTIAL
Wall-clock time
As much as it takes to execute
100 + 200 + 100 + 50 + 100 = 550 ms
CPU time
Time CPU was busy
100 + 100 + 100 = 300 ms
public void main() {
a(); // 100 ms
Thread.sleep(200);
b(); // 100 ms
// GC is running – 50ms
c(); // 100 ms
}
CPU VS WALL-CLOCK TIME
14CONFIDENTIAL
JVM DIAGNOSTIC INTERFACES
• JVMTI (native С++ API)
• Attach API
• jstack, jmap, jps, …
• Performance counters
• Heap Dumps
• Flight Recorder
• JMX
– java.lang.management
– custom MBeans
• Java Agents
– java.lang.instrument
github.com/aragozin/jvm-tools
15CONFIDENTIAL
JAVA.LANG.MANAGEMENT github.com/kslisenko/java-performance/tree/master/java-agent-monitoring
16CONFIDENTIAL
ThreadMXBean threadMBean =
ManagementFactory.getThreadMXBean();
System.out.println("Thread count = " +
threadMBean.getThreadCount());
ThreadInfo[] threads = threadMBean
.dumpAllThreads(true, true);
for (ThreadInfo thread : threads) {
System.out.println(thread);
}
17CONFIDENTIAL
ThreadMXBean threadMBean =
ManagementFactory.getThreadMXBean();
System.out.println("Thread count = " +
threadMBean.getThreadCount());
ThreadInfo[] threads = threadMBean
.dumpAllThreads(true, true);
for (ThreadInfo thread : threads) {
System.out.println(thread);
}
18CONFIDENTIAL
ThreadMXBean threadMBean =
ManagementFactory.getThreadMXBean();
System.out.println("Thread count = " +
threadMBean.getThreadCount());
ThreadInfo[] threads = threadMBean
.dumpAllThreads(true, true);
for (ThreadInfo thread : threads) {
System.out.println(thread);
}
19CONFIDENTIAL
Thread dumps in regular intervals
c()
b()
a()
main()
SAMPLING
20CONFIDENTIAL
Thread dumps in regular intervals Injection of measurement code
INSTRUMENTATION
c()
b()
a()
main()
SAMPLING
c()
b()
a()
main()
21CONFIDENTIAL
Thread dumps in regular intervals
Overhead depends on sampling interval
Injection of measurement code
Overhead depends on speed of measurement code
INSTRUMENTATION
c()
b()
a()
main()
SAMPLING
c()
b()
a()
main()
22CONFIDENTIAL
Thread dumps in regular intervals
Overhead depends on sampling interval
relatively small overhead
can be used for unknown code
Injection of measurement code
Overhead depends on speed of measurement code
accuracy (we measure each execution)
we can modify the code also
INSTRUMENTATION
c()
b()
a()
main()
SAMPLING
c()
b()
a()
main()
23CONFIDENTIAL
Thread dumps in regular intervals
Overhead depends on sampling interval
relatively small overhead
can be used for unknown code
accuracy (probability-based approach)
triggers JVM safe-points
Injection of measurement code
Overhead depends on speed of measurement code
accuracy (we measure each execution)
we can modify the code also
relatively big overhead
we must know the code we are instrumenting
INSTRUMENTATION
c()
b()
a()
main()
SAMPLING
c()
b()
a()
main()
24CONFIDENTIAL
How to capture thread dump
1. jstack -l JAVA_PID
2. ManagementFactory.getThreadMXBean()
.dumpAllThreads(true, true);
3. JVMTI AsyncGetCallTrace
SAMPLING
25CONFIDENTIAL
How to capture thread dump
1. jstack -l JAVA_PID
2. ManagementFactory.getThreadMXBean()
.dumpAllThreads(true, true);
3. JVMTI AsyncGetCallTrace
SAMPLING
JVM goes to safe-point
• Application threads are paused
• We never see the code where safe-point never happens
Does not trigger safe-points
26CONFIDENTIAL
How to capture thread dump
1. jstack -l JAVA_PID
2. ManagementFactory.getThreadMXBean()
.dumpAllThreads(true, true);
3. JVMTI AsyncGetCallTrace
SAMPLING
Doesn’t trigger safe-points
github.com/jvm-profiling-tools/honest-profiler
JVM goes to safe-point
• Application threads are paused
• We never see the code where safe-point never happens
27CONFIDENTIAL
Safe-points
> jstack –l JAVA_PID
Total time for which application threads were
stopped: 0.0132329 seconds, Stopping threads took:
0.0007617 seconds
Total time for which application threads were
stopped: 0.0002887 seconds, Stopping threads took:
0.0000385 seconds
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
28CONFIDENTIAL
INSTRUMENTATION
.java
source code
29CONFIDENTIAL
INSTRUMENTATION
.java
source code
dropwizard
metrics Perf4J
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
30CONFIDENTIAL
INSTRUMENTATION
.java .class
source code byte code
compilation
dropwizard
metrics Perf4J
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
31CONFIDENTIAL
proxy classes generation
INSTRUMENTATION
.java .class
source code byte code
compilation
AspectJ
compiler
dropwizard
metrics Perf4J
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
32CONFIDENTIAL
proxy classes generation
INSTRUMENTATION
AspectJ
compiler
.java .class
source code byte code
byte code in runtime
compilation loading
rt.jar
lib/ext
bootstrap
extension
classpath application
dropwizard
metrics Perf4J
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
33CONFIDENTIAL
byte code in runtime
rt.jar
lib/ext
bootstrap
extension
classpath application
proxy classes generation
Frameworks
INSTRUMENTATION
.java .class
source code byte code
compilation loading
AspectJ
compiler
ASM Javassist CGLibAspectJ BCEL
dropwizard
metrics Perf4J
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
34CONFIDENTIAL
proxy classes generation
Frameworks
INSTRUMENTATION
.java .class
source code byte code
compilation loading
AspectJ
compiler
ASM Javassist CGLibAspectJ BCEL
Custom
ClassLoader
dropwizard
metrics Perf4J
byte code in runtime
rt.jar
lib/ext
bootstrap
extension
classpath
custom
application
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
35CONFIDENTIAL
proxy classes generation
FrameworksJava agents
INSTRUMENTATION
.java .class
source code byte code
compilation loading
AspectJ
compiler
ASM Javassist CGLibAspectJ BCEL
Custom
ClassLoader
dropwizard
metrics Perf4J
byte code in runtime
rt.jar
lib/ext
bootstrap
extension
classpath
custom
application
long start = System.currentTimeInMillis();
// Your code goes here
long finish = System.currentTimeInMillis();
System.out.println(start - finish);
36CONFIDENTIAL
> java –jar -agentlib:agent.dll app.jar> java –jar -agentlib:agent.jar app.jar
JAVA AGENTS
Use for deep dive into JVM
• Has access to the JVM state, can receive JVMTI events
• Independent from JVM (not interrupted by GC, can collect
debug information between safe-points, etc.)
API
• JVMTI (C++ native interface of the JVM)
Use for byte-code modification
• Allows to transform byte-code before it is loaded by
ClassLoader
• Follows JVM lifecycle (suspended by GC, etc.)
API
• java.lang.instrument, java.lang.management
Java C++
37CONFIDENTIAL
AGENT EXAMPLES
HPROF Java profiler
JDWP Java debugger
JRebel/XRebel
• https://zeroturnaround.com/software/jrebel/
-agentlib:hprof[=options] ToBeProfiledClass
-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y
38CONFIDENTIAL
public class DemoAgent() {
public static void premain(String args, Instrumentation instr) {
instr.addTransformer(new ClassLoadingLogger());
}
}
public class ClassLoadingLogger implements ClassFileTransformer {
public byte[] transform(ClassLoader loader, String className,
Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println(className);
return classfileBuffer;
}
}
Manifest-Version: 1.0
Agent-Class: com.example.DemoAgent
Premain-Class: com.example.DemoAgent
> java –jar –agentlib:agent.jar app.jar
39CONFIDENTIAL
public class DemoAgent() {
public static void premain(String args, Instrumentation instr) {
instr.addTransformer(new ClassLoadingLogger());
}
}
public class ClassLoadingLogger implements ClassFileTransformer {
public byte[] transform(ClassLoader loader, String className,
Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println(className);
return classfileBuffer;
}
}
Manifest-Version: 1.0
Agent-Class: com.example.DemoAgent
Premain-Class: com.example.DemoAgent
> java –jar –agentlib:agent.jar app.jar
40CONFIDENTIAL
public class DemoAgent() {
public static void premain(String args, Instrumentation instr) {
instr.addTransformer(new ClassLoadingLogger());
}
}
public class ClassLoadingLogger implements ClassFileTransformer {
public byte[] transform(ClassLoader loader, String className,
Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println(className);
return classfileBuffer;
}
}
Manifest-Version: 1.0
Agent-Class: com.example.DemoAgent
Premain-Class: com.example.DemoAgent
> java –jar –agentlib:agent.jar app.jar
41CONFIDENTIAL
public class DemoAgent() {
public static void premain(String args, Instrumentation instr) {
instr.addTransformer(new ClassLoadingLogger());
}
}
public class ClassLoadingLogger implements ClassFileTransformer {
public byte[] transform(ClassLoader loader, String className,
Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println(className);
return classfileBuffer;
}
}
Manifest-Version: 1.0
Agent-Class: com.example.DemoAgent
Premain-Class: com.example.DemoAgent
> java –jar –agentlib:agent.jar app.jar
42CONFIDENTIAL
JVM
ClassLoader
43CONFIDENTIAL
JVM
ClassLoader
Agent
1. premain
44CONFIDENTIAL
JVM
ClassLoader
Agent
ClassFile
Transformer
1. premain
2. addTransformer
45CONFIDENTIAL
JVM
ClassLoader
Class A
Class B
Class C
Agent
ClassFile
Transformer
1. premain
2. addTransformer
3. load class
46CONFIDENTIAL
JVM
ClassLoader
Class A
Class B
Class C
Agent
ClassFile
Transformer
1. premain
2. addTransformer
3. load class
4. transform
Class A
47CONFIDENTIAL
JVM
ClassLoader
Class A
Class B
Class C
Agent
ClassFile
Transformer
Byte code
manipulation
library
1. premain
2. addTransformer
3. load class
5. modify byte code
4. transform
Class A
48CONFIDENTIAL
JVM
ClassLoader
Class A
Class B
Class C
Agent
ClassFile
Transformer
Byte code
manipulation
library
1. premain
2. addTransformer
3. load class
5. modify byte code
6. redefine class
Class A*
4. transform
Class A
49CONFIDENTIAL
JAVASSIST
High-level, object-oriented API
github.com/jboss-javassist/javassist
50CONFIDENTIAL
JAVASSIST github.com/jboss-javassist/javassist
51CONFIDENTIAL
JAVA AGENT + JAVASSIST
LIVE DEMO
https://github.com/kslisenko/java-performance/tree/master/java-agent
52CONFIDENTIAL
PROFILING DISTRIBUTED
SYSTEM
53CONFIDENTIAL
DISTRIBUTED SYSTEM
Server 1
DBServer 2
DBServer 3
HTTP
HTTP
HTTP
54CONFIDENTIAL
LOOKING GOOD
Responses
HTTP 200
150ms
HTTP 200
150ms
Server 1
DBServer 2
DBServer 3
HTTP
HTTP
HTTP
55CONFIDENTIAL
SOMETHING WENT WRONG
Responses
HTTP 200
150ms
HTTP 200
270ms
HTTP 200
270ms
HTTP 200
150ms
Server 1
DBServer 2
DBServer 3
HTTP
HTTP
HTTP
56CONFIDENTIAL
FAIL
Server 1
DBServer 2
DBServer 3HTTP 500
timeout
Responses
HTTP
HTTP
HTTP
HTTP 200
150ms
HTTP 200
270ms
HTTP 200
270ms
HTTP 200
150ms
Frustrated
user
57CONFIDENTIAL
IDENTIFYING PERFORMANCE PROBLEM
HTTP 500
timeout
Responses
HTTP 200
150ms
HTTP 200
270ms
HTTP 200
270ms
HTTP 200
150ms
Header
req-id: 1
Header
req-id: 1
Header
req-id: 1
Server 1
DBServer 2
DBServer 3
HTTP
HTTP
HTTP
Trace
propagation
Frustrated
user
58CONFIDENTIAL
IDENTIFYING PERFORMANCE PROBLEM
HTTP 500
timeout
Responses
HTTP 200
150ms
HTTP 200
270ms
HTTP 200
270ms
HTTP 200
150ms
Req-1 12:45:31.000 150 ms
Req-1 12:45:31.010 130 ms
Header
req-id: 1
Header
req-id: 1
Header
req-id: 1
Req-1 12:45:31.020 120 ms
Server 1
DBServer 2
DBServer 3
HTTP
HTTP
HTTP
Trace
propagation
Frustrated
user
59CONFIDENTIAL
TRACE EXAMPLE 1
http://server1/service
http://server2/service
server2
to DB
business
logic
http://server3/service
server3
to DB
business
logic
150 ms
120 ms
80 ms 30 ms
130 ms
100 ms 20 ms
http://server1/service
http://server2/service
server2
to DB
business
logic
http://server3/service
server3
to DB
business
logic
120 ms
80 ms 30 ms
130 ms
100 ms 20 ms
270 ms
HTTP 200
150ms
HTTP 200
270ms
60CONFIDENTIAL
TRACE EXAMPLE 2
http://server1/service
http://server2/service
server2
to DB
business
logic
http://server3/service
server3
to DB
business
logic
150 ms
120 ms
80 ms 30 ms
130 ms
100 ms 20 ms
http://server1/service
http://server2/service
server2
to DB
business
logic
http://server3/service
server3 to DB
120 ms
80 ms 30 ms
370 ms
350 ms
500 ms
timeout
HTTP 200
150ms
HTTP 500
timeout
61CONFIDENTIAL
“When systems involve not just dozens of subsystems but
dozens of engineering teams, even our best and most
experienced engineers routinely guess wrong about the root
cause of poor end-to-end performance.”
Google Dapper
https://research.google.com/pubs/pub36356.html
62CONFIDENTIAL
GOOGLE DAPPER
Use cases
1. Identify performance problems
across multiple teams and services
2. Build dynamic environment map
Requirements
1. Low overhead
– no impact on running services
2. Application-level transparency*
– programmers should not need to be aware of
the tracing system
3. Scalability
*They instrumented Google Search almost without modifications
63CONFIDENTIAL
GOOGLE DAPPER: TRACES AND SPANS
64CONFIDENTIAL
GOOGLE DAPPER: ARTHITECTURE
65CONFIDENTIAL
GOOGLE DAPPER: TECHNICAL DETAILS
Technical facts
1. Adaptive sampling
2. 1TB/day to BigTable
3. API + MapReduce
4. Instrumentation of common
Google libraries
Issues and limitations
1. Request buffering
2. Batch jobs
3. Queued requests
4. Relative latency
66CONFIDENTIAL
WANT LIKE IN GOOGLE?
67CONFIDENTIAL
COMMERCIAL
Magic Quadrant for Application Performance
Monitoring Suites (21 December 2016)
OPEN-SOURCE
Java Performance Monitoring: 5 Open Source
Tools You Should Know (19 January 2017)
www.stagemonitor.org github.com/naver/pinpoint
www.moskito.org
glowroot.org kamon.io
zipkin.io
https://www.gartner.com/doc/reprints?id=1-3OGTPY9&ct=161221
https://dzone.com/articles/java-performance-
monitoring-5-open-source-tools-you-should-know
68CONFIDENTIAL https://university.dynatrace.com/education/appmon/913/10859
69CONFIDENTIAL
ZIPKIN (SPRING CLOUD SLEUTH)
Server 1 Server 2
HTTPHTTP
transport
storage User interface
API
http://zipkin.io/pages/architecture.html
Instrumented libraries
Send traces and spans
Trace id Trace id
70CONFIDENTIAL
ZIPKIN (SPRING CLOUD SLEUTH)
HTTP
http://zipkin.io/pages/architecture.html
Server 1 Server 2
HTTPHTTP
transport
storage User interface
API
Instrumented libraries
Send traces and spans
Trace id Trace id
71CONFIDENTIAL
ZIPKIN (SPRING CLOUD SLEUTH)
HTTP
http://zipkin.io/pages/architecture.html
Instrumented libraries
Server 1 Server 2
HTTPHTTP
transport
storage User interface
API
Send traces and spans
Trace id Trace id
72CONFIDENTIAL
Backend
DEMO APPLICATION
Frontend Backend
HTTP
HTTP
Demo cases
1. HTTP calls
Spring boot
browser
1
1
github.com/kslisenko/java-performance
73CONFIDENTIAL
Backend
DEMO APPLICATION
Frontend Backend
HTTP
JMS
HTTP
Demo cases
1. HTTP calls
2. JMS
Spring boot
chat queue
JMS
browser
1
1
2
github.com/kslisenko/java-performance
74CONFIDENTIAL
Backend
DEMO APPLICATION
Frontend Backend
HTTP
TCP/IP
custom protocol
JMS
HTTP
Demo cases
1. HTTP calls
2. JMS
3. Custom protocol (TCP/IP)
Spring boot
chat queue
JMS
browser
1
1
2
3
github.com/kslisenko/java-performance
75CONFIDENTIAL
Backend
DEMO APPLICATION
Frontend
MySQL
Backend
HTTP
TCP/IP
custom protocol
JMS
HTTP
Demo cases
1. HTTP calls
2. JMS
3. Custom protocol (TCP/IP)
4. DB, JDBC, Hibernate
Spring boot
chat queue
JMS
browser
1
1
2
3
4
github.com/kslisenko/java-performance
76CONFIDENTIAL
Backend
DEMO APPLICATION
Frontend
MySQL
Backend
HTTP
TCP/IP
custom protocol
JMS
HTTP
Demo cases
1. HTTP calls
2. JMS
3. Custom protocol (TCP/IP)
4. DB, JDBC, Hibernate
5. Exceptions
6. Async invocations
– New threads
– ExecutorService
– CompletableFuture
Spring boot
chat queue
JMS
browser
51
1
2
3
4
6
github.com/kslisenko/java-performance
77CONFIDENTIAL
DYNATRACE + ZIPKIN
LIVE DEMO
github.com/kslisenko/java-performance
78CONFIDENTIAL
CONCLUSION
1. Make it work
2. Make it right
3. Make if fast
79CONFIDENTIAL
REFERENCES
Metric libraries
Perf4J https://github.com/perf4j/perf4j
Metrics http://metrics.dropwizard.io
Servo https://github.com/Netflix/servo
Byte-code modification with
JAVASSIST
https://blog.newrelic.com/2014/09/29/diving-bytecode-
manipulation-creating-audit-log-asm-javassist
https://www.youtube.com/watch?v=39kdr1mNZ_s
Java Agents
https://www.slideshare.net/arhan/oredev-2015-taming-java-
agents
http://www.barcelonajug.org/2015/04/java-agents.html
Profiling
https://blog.codecentric.de/en/2011/10/measure-java-
performance-sampling-or-instrumentation/
https://blog.codecentric.de/en/2014/10/profiler-tell-truth-
javaone/
https://www.youtube.com/watch?v=YCC-CpTE2LU&t=2312s
https://www.slideshare.net/aragozin/java-black-box-profiling
https://www.slideshare.net/aragozin/java-profiling-diy-
jugmskru-2016
Safe-points
http://blog.ragozin.info/2012/10/safepoints-in-hotspot-
jvm.html
https://www.cberner.com/2015/05/24/debugging-jvm-
safepoint-pauses/
80CONFIDENTIAL
QUESTIONS?
THANK YOU!
KANSTANTSIN_SLISENKA@EPAM.COM

More Related Content

What's hot

From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0VMware Tanzu
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootJosué Neis
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Gunith Devasurendra
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Sam Brannen
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introductionJonathan Holloway
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Spring boot
Spring bootSpring boot
Spring bootsdeeg
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 

What's hot (20)

From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
Maven ppt
Maven pptMaven ppt
Maven ppt
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Spring boot
Spring bootSpring boot
Spring boot
 
Core java
Core javaCore java
Core java
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 

Similar to Profiling distributed Java applications

SAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeSAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeAndrey Karpov
 
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma Christopher Bartling
 
Test First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTest First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTim Berglund
 
Test First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTest First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTim Berglund
 
SAST, CWE, SEI CERT and other smart words from the information security world
SAST, CWE, SEI CERT and other smart words from the information security worldSAST, CWE, SEI CERT and other smart words from the information security world
SAST, CWE, SEI CERT and other smart words from the information security worldAndrey Karpov
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s QAware GmbH
 
AppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileOleg Gryb
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationMd.Zahidur Rahman
 
Java Performance & Profiling
Java Performance & ProfilingJava Performance & Profiling
Java Performance & ProfilingIsuru Perera
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
 
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜 「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜 Makoto Kaga
 
the grinder testing certification
the grinder testing certificationthe grinder testing certification
the grinder testing certificationVskills
 
Vlsi lab manual_new
Vlsi lab manual_newVlsi lab manual_new
Vlsi lab manual_newNaveen Gouda
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVMJohn Lee
 
Monitoring distributed (micro-)services
Monitoring distributed (micro-)servicesMonitoring distributed (micro-)services
Monitoring distributed (micro-)servicesRafael Winterhalter
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis Engineering Software Lab
 
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 Pipelines
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 PipelinesNIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 Pipelines
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 PipelinesChing-Hwa Yu
 
Grow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM StackGrow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM StackKeitaSugiyama1
 

Similar to Profiling distributed Java applications (20)

SAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeSAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the code
 
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
 
Test First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in GrailsTest First, Refresh Second: Web App TDD in Grails
Test First, Refresh Second: Web App TDD in Grails
 
Test First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in GrailsTest First Refresh Second: Test-Driven Development in Grails
Test First Refresh Second: Test-Driven Development in Grails
 
SAST, CWE, SEI CERT and other smart words from the information security world
SAST, CWE, SEI CERT and other smart words from the information security worldSAST, CWE, SEI CERT and other smart words from the information security world
SAST, CWE, SEI CERT and other smart words from the information security world
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s
 
Secure DevOps: A Puma's Tail
Secure DevOps: A Puma's TailSecure DevOps: A Puma's Tail
Secure DevOps: A Puma's Tail
 
CodeChecker summary 21062021
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021
 
AppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security Agile
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
 
Java Performance & Profiling
Java Performance & ProfilingJava Performance & Profiling
Java Performance & Profiling
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜 「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
 
the grinder testing certification
the grinder testing certificationthe grinder testing certification
the grinder testing certification
 
Vlsi lab manual_new
Vlsi lab manual_newVlsi lab manual_new
Vlsi lab manual_new
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVM
 
Monitoring distributed (micro-)services
Monitoring distributed (micro-)servicesMonitoring distributed (micro-)services
Monitoring distributed (micro-)services
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
 
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 Pipelines
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 PipelinesNIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 Pipelines
NIWeek 2017 - Automated Test of LabVIEW FPGA Code: CI and Jenkins 2 Pipelines
 
Grow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM StackGrow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM Stack
 

More from Constantine Slisenka

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Constantine Slisenka
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftConstantine Slisenka
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)Constantine Slisenka
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architectConstantine Slisenka
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendConstantine Slisenka
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backendConstantine Slisenka
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applicationsConstantine Slisenka
 
Distributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesDistributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesConstantine Slisenka
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming APIConstantine Slisenka
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in JavaConstantine Slisenka
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and NettyConstantine Slisenka
 

More from Constantine Slisenka (11)

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architect
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backend
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applications
 
Distributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesDistributed transactions in SOA and Microservices
Distributed transactions in SOA and Microservices
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in Java
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and Netty
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Profiling distributed Java applications