2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경
목차 Oolong 언어 주석 클래스의 정의 수퍼 클래스 필드의 선언 메소드의 선언 인터페이스
Oolong언어 - JVM에서의 어셈블리 언어로 클래스파일 형식보다 읽고 쓰기가 편리 -> 분석, 수정이 용이 - Oolong 프로그램 -> Oolong 어셈블러 ->클래스파일 ->JVM이 저장, 실행
주석 .method main([Ljava/lang/String;)V .end method ; 이것은 메인 메소드 부분을 나타내는 주석문이다. .method main([Ljava/lang/String;)V ;;이 부분의 코드가 생략되었다. .end method
클래스의 정의 .class public final foo/Bar [표2.1].class 지시자 키워드들 Public 프로그램의 어디에서도 접근이 가능 Final 서브클래스를 갖지 않음 Super 현재 클래스의 슈퍼클래스 Interface 인터페이스로 사용, 인스턴스화되지 않음 Abstract 인스턴스를 생성할 수 없으며 이 클래스의 모든 메소드는 abstract로 정의되어야 함 strictfp 이 클래스의 모든 메소드에서는 제한된 부동 소수점연산을 사용.
수퍼클래스 .class Bicycle .super Vehicle - super 지시자가 주어지지 않을 경우, java/lang/Object 클래스를 수퍼클래스로 갖는다.
필드의 선언 [표2.3]타입설명자 특정타입의 배열 [타입 Byte B Boolean Z Char C Double D Float Int I Long J 클래스의 참조자 L클래스이름; Short S Void V
.field 수식자1수식자2… 이름 타입 =초기값 [표2.3].field 지시자의 키워드 * default : 같은 package내의 다른 클래스로부터 접근이 가능 Public 모든 클래스에서 접근가능 Private 자신이 속한 클래스에서만 접근가능 Protected 패키지 내의 모든 클래스와 자기 자신의 서브클래스에서 접근가능 Static 클래스의 모든 객체에 대해 하나만 생성하여 공유 Final 필드의 값이 변경되지 않음 Volatile 필드의 값이 임의로 변할 수 있음 Transient 임시 저장의 목적으로만 사용
필드의 초기화 static 필드 초기화 시킬수있는 필드의 타입 : 숫자타입(int, float, long, double), String 타입 그렇지 않을 경우, 무시되므로 초기화 메소드에 초기화 시키는 코드를 삽입해주어야 함. ex) .field protected introduction Ljava/lang/String; .field public nicknames [Ljava/lang/String; .field matrix [[F .field static number I =999 .field public culum Ljava/lang/String = “Hello”
메소드의 선언 .method 수식자1수식자2…이름 (인자타입1인자타입2…)반환타입 [표2.5] public 어느 클래스에서나 접근가능 Private 메소드가 속한 클래스에서만 접근가능 Protected 같은 패키지 내의 클래스나 자신의 서브클래스에서만 접근 가능 Static 클래스 메소드 Final 서브클래스에서 오버라이드 될 수 없음 Synchronized 이 메소드를 가지고 있는 객체에 대한 lock을 얻음 Native 네이티브 코드로 작성된 메소드 Abstract 추상 메소드 Strictfp 제한된 부동 소수점 연산을 사용함
메소드 overloading .method println(F)V ;;float 값을 출력하는 메소드 .method println(F)V ;;String 값을 출력하는 메소드 .method println(Ljava/lang/String;)V ;;Long값을 출력하는 메소드 .method println(J)V .method computeresult () I ;int 값을 반환 .method computeresult () D ;double 값을 반환 fload f= (float) couputeresult(); // error!!
Interface .interface Amiable .method public abstract smile()V .end method .class FriendlyPerson .super Person .implements Amiable .method public smile()V ;;smile 메소드의 구현부