728x90
반응형
<컴파일 옵션 관련 >
- java_package (file option)
- 생성된 Java나 Kotlin 클래스에서 사용하기 위해 사용
- .proto 파일에 java_package 옵션을 명시하지 않으면 기본 proto 패키지가 사용
- proto 패키지는 도메인 역순 이름으로 생성되지 않기 때문에 일반적인 Java package를 생성하지 않음
- Java나 Kotlin 코드를 생성하지 않을 경우 옵션은 무시됨
option java_package = "com.example.foo";
- java_outer_classname (file option)
- 생성하기 원하는 자바 클래스 래퍼에 대한 클래스 이름을 지정
- .proto 파일에 java_outer_classname을 명시하지 않으면 클래스 이름은 .proto 파일에 명시된 이름을 camel-case 형태로 변환 (foo_bar.proto -> FooBar.java)
- java_multiple_files 옵션이 비활성화되면 .proto 파일에 대해 생성된 다른 모든 클래스(enum 등)가 외부 래퍼 Java 클래스 내에서 중첩된 클래스(enum 등)로 생성
- 자바 코드를 생성하지 않을 경우 옵션은 무시됨
option java_outer_classname = "Ponycopter";
- java_multiple_files (file option)
- false로 지정할 경우 오직 하나의 .java 파일이 생성되고, top-level 메시지, 서비스, enum에 대해 생성된 모든 자바 클래스(enum 등)는 outer 클래스 내에 중첩됨
- true로 지정할 경우 위와 같은 상황에 대해 각각의 .java 파일이 생성됨
- 기본 옵션 값은 false
- 자바 코드를 생성하지 않을 경우 옵션은 무시됨
- true => 한개의 파일이 아닌 여러개의 파일 생성이됨
- false => 한개의 파일로 묶여서 생성이 됨
option java_multiple_files = true;
- optimize_for (file option)
- SPEED, CODE_SIZE, LITE_RUNTIME 설정 가능하고 C++과 Java 코드 제너레이터에 적용 가능
- SPEED(기본 값)
- 프로토콜 버퍼 컴파일러가 메시지 타입에 대해 직렬화, 파싱, 기타 공통 옵션을 수행하며 코드를 고도로 최적화하여 생성
- CODE_SIZE
- 프로토콜 버퍼 컴파일러는 최소로 클래스를 생성하고 공유와 reflection 기반 코드에 의존하여 직렬화, 파싱 및 기타 다양한 작업을 구현
- 생성된 코드는 SPEED에 비해 매우 크기가 작으나 수행시간이 느림
- 생성된 클래스는 SPEED와 동일한 API 구현, 많은 수의 .proto 파일이 포함되어있고 빠르게 수행해야 할 필요가 없을 때 유용
- LITE_RUNTIME
- 프로토콜 버퍼 컴파일러는 lite runtime library를 이용해 클래스를 생성
- lite runtime library는 full library에 비해 매우 작으나 descriptor나 reflection 같은 기능은 지원하지 않음
- 모바일 환경에서 동작하는 앱에 유용
- SPEED 모드에서와 같이 빠르게 구현
- 생성된 클래스는 각 언어의 MessageLite 인터페이스만 구현하고 전체 Message 인터페이스의 메서드 하위 집합만 제공
option optimize_for = CODE_SIZE;
- cc_enable_arenas (file option)
- C++ 생성 코드에 대한 arena allocation 활성화
- objc_class_prefix (file option)
- .proto에서 생성된 모든 Objective-C 클래스 및 열거형 앞에 Objective-C 클래스 접두사를 설정
- 기본 값은 없음
- Apple에서 권장하는 대로 3-5개의 대문자로 된 접두사를 사용(두 글자 접두사는 Apple에서 이미 예약하여 사용중)
- deprecated (field option)
- true로 설정하면 필드가 더 이상 사용되지 않음을 나타냄(새 코드에서 사용하면 안 됨)
- 대부분의 언어에서 실제로 효과가 없고 IDE에서 컴파일러가 warning으로 알려줌
- 필드가 다른 사람에 의해 사용되지 않고, 새 사용자가 사용하는 것을 방지하기 위해서는 필드 선언을 reserved로 바꾸는 것을 권장
int32 old_field = 6 [deprecated = true];
https://jaime-note.tistory.com/91
https://jaime-note.tistory.com/91
그이외 도큐먼트 및 참고
https://protobuf.dev/reference/java/java-generated/
https://github.com/protocolbuffers/protobuf/releases/tag/v21.12
https://iam777.tistory.com/527
https://iam777.tistory.com/527
https://naito.tistory.com/entry/JavaGoogle-Protocol-Buffer-%EC%82%AC%EC%9A%A9%EB%B2%95
728x90
반응형
'개인 공부' 카테고리의 다른 글
Is와 As의 차이 ( feat. casting ) (0) | 2023.03.20 |
---|---|
스크랩 ) 동기? 비동기? 블록? 논블록? IOCP (0) | 2023.01.06 |
Protocol Buffer 사용2 (0) | 2022.12.22 |
Protocol Buffer 사용 (0) | 2022.12.22 |
Android Protocl Buffers ver.3 사용하기 proto3 (0) | 2022.12.21 |