Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Useful tools for Java developer

JDK, Profiling, troubleshooting, monitoring, ui, test, IDE tools
by

Sangmin Lee

on 28 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Useful tools for Java developer


해법 자바 (더 따끈 따끈한 2012년 12 월 출간 예정)

Worked for
S 사
N 사

Working for 신생 글로벌 IT 회사 SK planet Useful tools for
Java developer JDK, Profiling, troubleshooting,
monitoring, ui, test, IDE tools Test Tools Monitoring
Tool JDK Tools Profiling Tool Troubleshooting
tool IDE F/E Tools Eclipse 만 IDE가 아니에요. 외국 개발자들은 이클립스만큼 많이 사용하더라구요.
무료 툴에 오픈소스
Sun Microsystems에서 만들기 시작했고, 지금은 Oracle에서...
http://www.netbeans.org/ Netbeans jps
jstat
javap
jstack
jmap
jhat : Heap dump 분석
jconsole, jvisualvm : later... JDK/bin 디렉터리에 있는 파일은
java와 javac만 있는 것이 아니에요. 프로그램의 성능, 메모리 사용량, 코드 커버리지등을 확인할 수 있음
운영 서버에 많은 성능 저하를 발생시키므로 반드시 개발자 PC 및 개발 서버에서 사용해야만 함
상용과 무료 툴로 나뉘지만, 상용툴을 권장

자바 프로그래머들이 IDE 만큼 옆에 끼고 살아야 하는 툴
대부분 상용 프로파일링 툴은 IDE 연계가 가능하여, IDE에서 바로 성능 측정이 가능 Profiling Tool 이란? Unit test tool
UI test tool
Acceptance test tool
Performance test tool Test 툴은 종류가 엄청 많아요. java process 목록을 제공하는 툴

그냥 콘솔 화면에서 jps 만 치면
"pid 프로그램이름"으로 나열된 목록이 나타남

만약 보다 자세한 옵션을 보고 싶으면 jps -v

jps 나 다음에 나오는 jstat 과 같은 명령어는 해당 계정으로 실행한 자바 프로세스 목록만 보여짐
다른 계정으로 실행한 프로세스 목록은 보이지 않음. jps JVM의 상황을 모니터링 하는 프로그램

다양한 옵션이 존재하며 jstat -options 를 실행하면, jstat에서 사용가능한 옵션 목록이 나타남.
사용 가능한 옵션들 : -class, -compiler, -gc, -gccapacity, -gccause, -gcnew. -gcnewcapacity, -gcold, -gcoldcapacity, -gcpermcapacity, -gcutil

이 중에서 유용한 옵션들
-gcutil : GC 상태 모니터링
-gccapacity : JVM의 메모리 점유 상황 모니터링 jstat 자바 클래스 파일 분석

javap className 을 실행하면 해당 클래스에 선언된 변수나 메소드 정보등을 출력

javap -c className 을 실행하면, 해당 클래스의 opcode 를 출력 javap 쓰레드 덤프(Thread dump) 발생
덤프 발생 시점에 어떤 쓰레드가 어떤 작업을 수행하는지를 제공하는 덤프 파일

사용하지 않는 것이 좋음.
경우에 따라서 프로그램에 Hang이 발생할 수 있음

kill -3 pid 를 사용할 것을 권장 !!!
-3을 입력하지 않고, 옵션 없이 쓰거나 -9를 입력할 경우에는 등에 땀이 날 것임 jstack 힙 덤프(Heap dump) 발생
덤프 발생시점에 어떤 객체가 어떤 값을 갖고 있는지 저장

운영시에 해당 프로그램을 실행하면 자바 프로세스가 멈추므로 꼭 필요한 경우에만 사용할 것
꼭 필요한 경우 : 메모리 릭 발생시

실행 옵션
jmap -dump:format=b,file=filename pid jmap 상용 프로파일링 툴들은 소스의 라인단위까지 분석이 가능하다.
특정 라인에서 얼마나 시간과 메모리가 소요되었는지를 파악할 수 있음

주요 툴
DevPartner for Java (MicroFocus)
JProbe (Quest)
JProfiler (ej-technologies)
YourKit Profiling Tools Monitoring tool은 애플리케이션이 정상적으로 작동하는지를 확인하는 목적으로 사용
Monitoring tool은 애플리케이션의 상황을 전반적으로 확인하는 APM과 JVM의 상태를 간단히 확인할 수 있는 JMX 기반의 툴로 나뉨

APM : Application Performance Monitor
상용이 많음
JMX : Java Management Extensions
무료 툴로 충분 Monitoring tool 이란 ? APM (국산이 많음)
Jennifer
WebTune
Pharos

JMX Monitoring
Visual VM
JConsole Monitoring tools Troubleshooting tool은 운영중인 시스템이 비 정상적인 동작을 하고 있을 때 원인을 찾기 위해서 사용
어떤 장애가 발생했을 때 해당 장애와 관련된 자료를 수집하는 것이 무엇보다도 중요
앞서 살펴본 Monitoring tool도 troubleshooting 툴에 포함 Troubleshooting tool이란 ? F/E : Front End
웹 기반의 UI 를 분석하기 위한 툴은 매우 다양함
웹 페이지 최적화 툴
PageSpeed, Yslow 등
웹 페이지 분석
Dynatrace, Httpwatch, Browser built in tool(Safari, Chrome등) F/E Tools Thread dump 분석 툴
애플리케이션의 성능 / 기능상 문제가 있을 경우 사용
Heap dump 분석툴
애플리케이션의 메모리 문제가 있을 경우 사용
Tracing 툴
애플리케이션의 기능상 문제가 있을 경우 사용 Troubleshooting 툴의 구분 Thread dump 분석툴
TDA (http://java.net/projects/tda/)
Heap dump 분석툴
IBM Heap Analyzer (Google search)
MAT (http://www.eclipse.org/mat/)
Tracing툴
BTrace (http://kenai.com/projects/btrace)
Byteman (https://www.jboss.org/byteman) Troubleshooting 툴의 종류 쓰레드 덤프 분석 툴
jstack이나 kill -3 명령으로 생성한 쓰레드 덤프를 분석
현존하는 가장 간단하고, 문제 분석이 용이한 툴 TDA Eclipse 프로젝트에서 개발하는 Memory Analysis Tool
jmap이나 gcore 등으로 생성된 힙 덤프를 분석
JVM에 살아 있는 모든 객체의 정보 확인 가능 MAT BTrace는 DTrace와 같이 수행중인 애플리케이션에 붙어 필요한 검증 가능
JVM의 PID 파일만 삭제 되지 않았으면, JDK 6 이상에서는 작동함
만약 실행중인 클래스를 변환하면 일시적으로 WAS의 CPU 사용량이 100 % 도달하면서 정상적인 기능을 제공하지 못하므로, 사용에 유의해야 함.

자세한 내용은 2011년 JCO에서 발표한 내용 참고 BTrace YSlow는 웹 페이지의 성능과 관련된 문제점들을 진단하여 리포팅 하는 툴
Yahoo 에서 만들었음
Safari, Chrome 등의 브라우저에 플러그인으로 사용할 수 있음 Yslow Apple Safari 나 Google의 Chrome에는 개발자용 도구가 기본적으로 포함되어 있음
자바 스크립트 성능 분석 및 네트워크 성능 분석등의 기능 제공
특히 Google Chrome 에는 Speed tracer 라는 성능 분석툴을 사용할 수 있음 Browser built in tools CI Tools Thank you 일부 상용 개발 툴
Ultimate Edition 과 Community Edition 으로 나뉘며, Community Edition은 무료임.
한번 빠져들면 헤어 나올 수 없을 정도로 편함.
매년 Major version up을 하기 때문에, 구매 해도 1년 정도 밖에 제대로 사용 못함.
http://www.jetbrains.com/idea/ IntelliJ 유의 사항 Q & A Tool은 Tool 일뿐...
Tool은 용도에 맞추어 사용해야 ~~~
남용할 경우 심각한 문제가 생길 수도...
상황에 맞는 툴을 제대로 선택하는 것이 제일 중요 !!! Tool은... 지속적이고 반복적으로 빌드를 수행해 주는 툴
빌드 뿐만이 아니라, 테스트, 코드 검증 등의 작업도 주기적으로 수행할 수 있음

주요 툴
Hudson (http://hudson-ci.org)
Jenkins (http://jenkins-ci.org)
CruiseControl (http://cruisecontrol.sourceforge.net) Continuous Integration Tool 이란? Hudson의 Core 개발자가 오라클을 나가서 만든 것이 바로 Jenkins
그러니 Jenkins를 써야~~~ Jenkins vs Hudson About me 단위 테스트(unit test)는 많은 노력이 필요한 작업
대표적인 자바 Unit test 툴은 JUnit
자세한 내용은 http://www.junit.org 참조 Unit test tools UI 테스트 툴은 단위 테스트 툴 처럼 메소드를 호출하고 결과를 받는 기능만을 제공하는 것이 아니라, UI 에서의 오류 검증까지도 지원
단순한 UI 테스트도 가능하지만, 회귀 테스트도 가능

UI 테스트 툴은 테스트를 수행하는 스크립트를 작성하는 작업도 어렵지만, 페이지가 변경된 이후에도 지속적으로 유지보수를 해야하므로, 많은 공수가 들게 된다는 단점이 존재

주요 툴
Selenium (http://seleniumhq.org)
NHN의 GUITAR (http://helloworld.naver.com/helloworld/1296) UI test tool Acceptance 테스트 툴은 보통 인수 테스트라고 함.
프로젝트 개발을 요청한 "고객"이 요청한 사항이 정상적으로 수행되는지를 확인하기 위한 용도로 사용

주요 툴
Fitnesse : http://fitnesse.org
NTAF : http://code.google.com/p/ntaf/ Acceptance test tool 시스템의 성능을 측정하기 위한 툴
Load Runner 만이 성능 테스트 툴이 아님.

상용 툴
QA Load (Microfocus)

무료 툴
Grinder : http://grinder.sourceforge.net
JMeter : http://jmeter.apache.org Performance test tool JVisual VM과 Visual VM으로 나뉨
JMX 모니터링에 조금 있다가 살펴볼 TDA, BTrace등과 같은 툴들과 연계하여 사용할 수 있음

관련 사이트
http://visualvm.java.net Visual VM
Full transcript