본문 바로가기

JAVA

자바 프로젝트를 생성하면 구성되는 폴더와 파일🙋‍♂️

자바 통합 개발 환경인 Intelli J를 통해 자바의 프로젝트를 생성하면 구성되는 폴더와 파일이 있다. 근데 이게 뭐지?

2편, 자바가 작동하는 과정 그리고 JVM?

 

 

src 파일은 뭘까

 

자바를 배우겠다고 신나게 Intelli J도 설치하고 프로젝트도 생성해봤다. 그런데 VS Code에서 파이썬 코드를 구현할 때와는 차원이 달랐다. .idea 폴더에서부터 out, src 폴더 등등 궁금한 것은 못참는 성격이라 바로 알아보았다.

 

 

.idea 폴더

 

Intelli J를 사용하면 프로젝트 생성과 동시에 IDE의 옵션이 저장되는데, 이를 저장한 곳이 바로 .idea 폴더이다. eclipce의 경우 .workspace 폴더와 같은 기능을 한다고 한다. 폴더 내부에 있는 파일들은 IDE의 설정에 따라 설정 값이 달라 git hub 등 코드를 공유할 때 오류가 생길 수 있으므로 gitignore에 명시한다.

 

Out 폴더

 

 

빌드 시에 컴파일한 class를 저장하는 폴더이다.

 

Src 폴더

 

 

자바 소스 코드 파일 저장 공간으로, 인간이 이해할 수 있는 고수준의 언어로 명령어를 작성 및 저장할 수 있다. 바로 위 out 폴더에서 코드 내용이 같은데 이는 IDE 자체에서 컴파일된 클래스 파일을 다시 인간이 해석할 수 있게 디컴파일된 것으로, 원래는 컴퓨터가 이해할 수 있는 바이트 코드로 작성되어있다.

 

iml 파일

 

iml은 Intelli J Idea Module의 약자이고 Module 구성을 xml 형태로 작성한 파일이다. 자바, 플러그인, 안드로이드, 또는 메이븐 요소가 될 수있는 개발 모듈에 대한 정보를 저장한다고 한다. 아직 모듈에 대한 지식이 부족해서 자바에 대한 지식이 깊어지면 보충해야겠다!

 

+) 2022.02.02 추가

External Libraries 폴더

 

코딩 테스트를 준비하며 Scanner 클래스를 사용했는데 클래스가 어디서 import 되었는지 확인하는 과정에서 라이브러리에 대해 알아보았다.

 

자바 util 라이브러리

IntelliJ에서는 기존 프로젝트 폴더 아래에 External Libraries로 자바의 라이브러리를 확인할 수 있다. 해당 파일은 자바가 설치된 C:\Program Files\Java\jdk-17.0.2\jmods에 있었고 파일 확장자 명은 jmod 파일로 

 

해당 파일을 열어보면 package java.util로 util 폴더 내 Scanner 클래스가 있음을 명시한다.

 

해당 클래스의 코드를 살펴보면 예제와 함께 사용법에 대해서 알 수 있다.

 

JAVA JDK 구성

 

라이브러리까지 알아보니 JDK까지 알게 되었다. JDK는 자바 프로그램의 실행과 개발에 필요한 구현체로 Java Development Kit으로 JRE + 개발 도구를 의미한다. 여기서 JRE는 자바 프로그램을 실행만하는 구현체이고 JVM + 표준 클래스 라이브러리를 의미한다.

 

자바에도 표준 배포판, 마이크로 배포판, 기업용 배포판인데 위에 대한 내용은 Java SE(Standard Edition)으로 표준 배포판, 데스크탑과 서버 응용 개발 플랫폼을 기준으로 작성한 것이다.

 

자바 설치 후 구성된 폴더이다. 각 폴더에 대한 기능은 다음과 같다. 참고자료

 

bin : 자바 개발과 실행에 필요한 유틸리티 도구 및 명령

- bin을 구성하는 주요 개발 도구는 다음과 같다.

- javac : 자바 소스를 바이트 코드로 변환시키는 컴파일러

- java : 자바 가상 기계를 작동시켜 자바 응용 프로그램을 실행시키는 실행기

- Javadoc : 자바 소스로부터 HTML 형식의 document 생성

- jar : 자바 클래스들(패키지 포함)을 압축한 자바 archieve 파일(.jar) 생성 및 관리

- jmod : 자바의 모듈 파일(.jmod)을 만들 거나 모듈 파일의 내용을 출력

- jlink : 응용 프로그램에 맞춘 커스텀 JRE 제공

- jdb : 자바 응용 프로그램의 실행 중 오류 프로그램을 찾는 데 사용하는 디버거

- javap : 클래스 파일의 바이트 코드를 소스와 함께 보여주는 디어셈블러

 

conf : 여러 종류의 배치 파일

include : 네이티브 코드 프로그래밍에 필요한 C 언어 헤더 파일

jmods : 컴파일 된 모듈 파일

legal : 각 모듈에 대한 저작권 및 라이선스 파일

lib : 실행 시간에 필요한 라이브러리 클래스