JAVA 빌드 툴(빌드의 개념) & constant pool

seungwon·2023년 6월 2일
0

TIL

목록 보기
1/2

JAVA 빌드 툴

https://velog.io/@hsw08/빌드툴-Ant-Maven-Gradle
라이브러리 의존성 관리 및 버전 관리 등을 위해 대규모 프로젝트에서는 수동으로 하기보다는 빌드툴(Maven, Gradle)을 사용한다. 특히, Gradle은 점진적 빌드, 빌드 캐시, 데몬 프로젝트의 방식으로 속도를 개선했다.

빌드의 개념

빌드 과정
: 전처리(preprocessing) -> 컴파일(compilation) -> 어셈블(assemble) -> 링킹(linking)

  • compile : 소스코드 전체를 기계어로 번역
  • interpreted : 한줄씩 번역하면서 실행
  • hybrid : 소스코드 전체 -> 바이트코드(중간코드) -> 가상머신(VM)에서 한 줄씩 실행
compileinterpretedhybrid
장점- 한번 빌드가 완료된 실행 파일은 실행 속도가 빠르다
- 매번 번역할 필요x, 실행 파일만 실행하므로 전체적인 시간면에서 효율적
- 컴파일 과정이 없고 바로 실행해서 디버깅(개발속도)에 유리
- OS(플랫폼)에 독립적 : 플랫폼에 지원하는 인터프리터만 있다면 실행 가능
- 플랫폼에 독립적, 기존 인터프리터 언어보다 속도가 빠름
단점- 프로그램 수정시 빌드과정 전체를 처음부터 다시 실행
(대규모 프로그램에서는 생산성이 떨어짐)
- 플랫폼(OS)에 매우 의존적
- 빌드 되어있는 컴파일 언어로 된 프로그램보다 느림
- 보안에 좋지 않음 : 코드를 열면 다 보임
- 컴파일 언어처럼 하드웨어를 직접 제어하는 작업은 불가능

https://st-lab.tistory.com/176

intelliJ 단축키

Mac 기준이며 개인적으로 잘 사용하지 않거나 몰랐던 것 위주로 정리했다

  • Option+Enter : 빠른 수정
  • Command+1 : 폴더창으로 커서 이동
  • Shift+Shit : 파일이름 검색
  • Option+Up/Down : 단계별 블럭 지정
  • Ctrl+T : 리팩토링 메뉴
  • Shift+Command+A : 명령어 검색

[Java] constant pool (Java String)

String 클래스

: 변경 불가능(immutable)한 클래스

  • 문자열 저장 : char[] value
    -> 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다.

  • '+' 연산자로 문자열을 결합하는 경우
    : 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성되는 것

-> 문자열 다루는 작업이 필요한 경우 StringBuffer 클래스(문자열 변경 가능) 사용

문자열 리터럴

컴파일시에 클래스 파일에 저장됨(String 인스턴스)

  • 한번 생성하면 내용 변경 x -> 하나의 인스턴스를 공유
  • 같은 문자열을 담고 있는 경우 같은 상수를 참조
String s1 = "Hello World";
String s2 = "Hello World";
System.out.println(a==b); 
// reference가 같은지 비교 -> true

  • 클래스 파일 ⊃ 소스파일에 포함된 모든 리터럴의 목록, JVM내에 있는 constant pool에 저장된다

0개의 댓글