SlideShare uma empresa Scribd logo
1 de 9
Java static Main

      javap
jdk technical stack diagram

                  javap
흔한 인사 코드
• public class T1
• {
•    public static void main(String[] args)
•    {
•          System.out.println("Hello World!");
•    }
• }
javap로 디컴파일
javap –c T1

Compiled from "T1.java“


public class T1 {
 public T1();
   Code:
     0: aload_0
     1: invokespecial #1 ()V              // Method java/lang/Object."<init>":
4: return

  public static void main(java.lang.String[]);
   Code:
     0: getstatic #2                // Field java/lang/System.out:Ljava/
io/PrintStream;
     3: ldc        #3            // String Hello World!
     5: invokevirtual #4               // Method java/io/PrintStream.printl
n:(Ljava/lang/String;)V
     8: return
}
모든 객체는 Object상속
• Object를 통한 초기화
invokespecial <init>()v
http://cs.au.dk/~mis/dOvs/jvmspec/ref--
33.html
Main메소드처리#1
0 getstatic
앞에 0은 메소드의 offset을 나타내고 getstatic은
데이터를 Operand stack에 밀어놓도록 알려줌
http://stuff.mit.edu/afs/sipb/user/marc/hotjava/d
oc/vmspec/vmspec_9.html

c++ 처럼 executable한 실행파일을 만드는 것이
아니기 때문에 main 메소드 시그니처 자체가
static
static 없으면 에러.
ldc
• ldc는 상수값을 로드하여 operand stack에
  넣는 것을 의미합니다.
http://cs.au.dk/~mis/dOvs/jvmspec/ref-
_ldc.html
invokevirtual
인스턴스 메소드를 호출하기 위한 지시자입
니다.
여기에서는 println을 쓰기 위해서 사용됩니
다.(Hello World 출력)
사실 println의 아규먼트는 Value, Type
입니다만 뒤에 String type은 무시되어 사용
되지 않습니다.
20130408 javap

Mais conteúdo relacionado

Mais procurados

자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개Sungchul Park
 
UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료beom kyun choi
 
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)MIN SEOK KOO
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅Keesun Baik
 
반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010DongHwan Yu
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks용환 노
 

Mais procurados (12)

Introduce php7
Introduce php7Introduce php7
Introduce php7
 
Java 기초
Java 기초Java 기초
Java 기초
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
Java lambda
Java lambdaJava lambda
Java lambda
 
Jvm
JvmJvm
Jvm
 
UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료
 
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
 
반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010반응형프로그래밍입문 2회 20161010
반응형프로그래밍입문 2회 20161010
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks
 

Destaque

20120525 active directory가이드
20120525 active directory가이드20120525 active directory가이드
20120525 active directory가이드Sukjin Yun
 
Ldap serise v1
Ldap serise v1Ldap serise v1
Ldap serise v1Sukjin Yun
 
Windows2012 active directory설치및연동
Windows2012 active directory설치및연동Windows2012 active directory설치및연동
Windows2012 active directory설치및연동Sukjin Yun
 
Geb quick start
Geb quick startGeb quick start
Geb quick startSukjin Yun
 
What is the future of instore brand performance consumer behaviour
What is the future of instore brand performance  consumer behaviourWhat is the future of instore brand performance  consumer behaviour
What is the future of instore brand performance consumer behaviourLindaSidia
 

Destaque (6)

20120525 active directory가이드
20120525 active directory가이드20120525 active directory가이드
20120525 active directory가이드
 
Ldap serise v1
Ldap serise v1Ldap serise v1
Ldap serise v1
 
Combination
CombinationCombination
Combination
 
Windows2012 active directory설치및연동
Windows2012 active directory설치및연동Windows2012 active directory설치및연동
Windows2012 active directory설치및연동
 
Geb quick start
Geb quick startGeb quick start
Geb quick start
 
What is the future of instore brand performance consumer behaviour
What is the future of instore brand performance  consumer behaviourWhat is the future of instore brand performance  consumer behaviour
What is the future of instore brand performance consumer behaviour
 

Semelhante a 20130408 javap

Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기duriepark 유현석
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 releaseJaehyeuk Oh
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay Lee
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
.NET에서 비동기 프로그래밍 배우기
.NET에서 비동기 프로그래밍 배우기.NET에서 비동기 프로그래밍 배우기
.NET에서 비동기 프로그래밍 배우기Seong Won Mun
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주iamhjoo (송형주)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Woonduk-Kang
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Sangon Lee
 

Semelhante a 20130408 javap (20)

Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
.NET에서 비동기 프로그래밍 배우기
.NET에서 비동기 프로그래밍 배우기.NET에서 비동기 프로그래밍 배우기
.NET에서 비동기 프로그래밍 배우기
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
java_1장
java_1장java_1장
java_1장
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
 
Eclipse RAP
Eclipse RAPEclipse RAP
Eclipse RAP
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
Ndc12 2
Ndc12 2Ndc12 2
Ndc12 2
 

Mais de Sukjin Yun

동영상입문
동영상입문동영상입문
동영상입문Sukjin Yun
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategySukjin Yun
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with SpockSukjin Yun
 
Scala quick start
Scala quick startScala quick start
Scala quick startSukjin Yun
 
Spring java config
Spring java configSpring java config
Spring java configSukjin Yun
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버Sukjin Yun
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Rabbitmq install한글
Rabbitmq install한글Rabbitmq install한글
Rabbitmq install한글Sukjin Yun
 
Weblogic install
Weblogic installWeblogic install
Weblogic installSukjin Yun
 
무료로 워드프레스시작하기
무료로 워드프레스시작하기무료로 워드프레스시작하기
무료로 워드프레스시작하기Sukjin Yun
 
Android studio
Android studioAndroid studio
Android studioSukjin Yun
 
20130709 gradle
20130709 gradle20130709 gradle
20130709 gradleSukjin Yun
 
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design patternSukjin Yun
 

Mais de Sukjin Yun (20)

동영상입문
동영상입문동영상입문
동영상입문
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment Strategy
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with Spock
 
Scala quick start
Scala quick startScala quick start
Scala quick start
 
Spring java config
Spring java configSpring java config
Spring java config
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Rabbitmq install한글
Rabbitmq install한글Rabbitmq install한글
Rabbitmq install한글
 
Servlet3
Servlet3Servlet3
Servlet3
 
Weblogic install
Weblogic installWeblogic install
Weblogic install
 
무료로 워드프레스시작하기
무료로 워드프레스시작하기무료로 워드프레스시작하기
무료로 워드프레스시작하기
 
Start groovy
Start groovyStart groovy
Start groovy
 
Pygame
PygamePygame
Pygame
 
Annotation
AnnotationAnnotation
Annotation
 
마리아Db
마리아Db마리아Db
마리아Db
 
Intellij java
Intellij javaIntellij java
Intellij java
 
Android studio
Android studioAndroid studio
Android studio
 
20130709 gradle
20130709 gradle20130709 gradle
20130709 gradle
 
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design pattern
 
Launch4j
Launch4jLaunch4j
Launch4j
 

20130408 javap

  • 2. jdk technical stack diagram javap
  • 3. 흔한 인사 코드 • public class T1 • { • public static void main(String[] args) • { • System.out.println("Hello World!"); • } • }
  • 4. javap로 디컴파일 javap –c T1 Compiled from "T1.java“ public class T1 { public T1(); Code: 0: aload_0 1: invokespecial #1 ()V // Method java/lang/Object."<init>": 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/ io/PrintStream; 3: ldc #3 // String Hello World! 5: invokevirtual #4 // Method java/io/PrintStream.printl n:(Ljava/lang/String;)V 8: return }
  • 5. 모든 객체는 Object상속 • Object를 통한 초기화 invokespecial <init>()v http://cs.au.dk/~mis/dOvs/jvmspec/ref-- 33.html
  • 6. Main메소드처리#1 0 getstatic 앞에 0은 메소드의 offset을 나타내고 getstatic은 데이터를 Operand stack에 밀어놓도록 알려줌 http://stuff.mit.edu/afs/sipb/user/marc/hotjava/d oc/vmspec/vmspec_9.html c++ 처럼 executable한 실행파일을 만드는 것이 아니기 때문에 main 메소드 시그니처 자체가 static static 없으면 에러.
  • 7. ldc • ldc는 상수값을 로드하여 operand stack에 넣는 것을 의미합니다. http://cs.au.dk/~mis/dOvs/jvmspec/ref- _ldc.html
  • 8. invokevirtual 인스턴스 메소드를 호출하기 위한 지시자입 니다. 여기에서는 println을 쓰기 위해서 사용됩니 다.(Hello World 출력) 사실 println의 아규먼트는 Value, Type 입니다만 뒤에 String type은 무시되어 사용 되지 않습니다.