본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 3일차 (2023-05-24) 자바 기초 DAY1

by prometedor 2023. 5. 25.

ㄴ javac => 자바 컴파일러로 자바 소스 코드(.java 파일)를 자바 바이트코드(.class 파일)로 변환합니다.
ㄴ -d => 컴파일된 .class 파일을 저장할 디렉토리를 지정하는 옵션

     => 디렉토리가 존재하지 않으면 컴파일러는 디렉토리를 생성함

     => 패키지 구조를 유지하며 클래스 파일이 생성됨
ㄴ bin => -d 옵션에 이어서 나온 경로로, 컴파일된 .class 파일이 저장될 디렉토리를 나타냄
ㄴ src/Hello.java => 컴파일할 자바 소스 파일의 위치와 이름을 나타냄 (src 디렉터리 안의 Hello.java 파일을 컴파일)

 

=> 자바 컴파일러인 javac를 이용해 src/Hello.java 파일을 컴파일하고 그 결과인 클래스 파일을 bin 디렉토리에 저장

 

ㄴ 1 저장소에 1 프로젝트를 생성하도록 하자 => 실무에서 이렇게 사용함

ㄴ 프로젝트의 변경 관리는 저장소의 파일에 대해 변경 관리하는 것과 같음

 

 

소스파일컴파일 하여 바이트 코드를 생성하고 작성된 코드가 예상대로 동작하는지 단위 테스트를 통해 검증을 함

ㄴ 단위 테스트 후 결과를 문서화하여 테스트 보고서를 작성함

ㄴ 마지막으로 실행 가능한 프로그램을 생성하고 .jar 라는 배포 파일을 생성함

ㄴ build 를 도와주는 도구는 Ant, Maven, Gradle 등이 있음

ㄴ 현재는 Maven 을 많이 사용하고, Gradle 은 Android Studio 기본 빌드 도구로 사용함

 

 

ㄴ 소스를 입력 받고 빌드 스크립트 파일을 읽어서 빌드도구를 통해 .jar 파일이나 문서파일이라는 산출물이 나옴

ㄴ 빌드 도구는 project 폴더를 생성해줌

 

 

ㄴ XML 은 프로그래밍 언어가 아니므로 빌드과정을 정교하게 기술할 수 없음

 

Ant

ㄴ XML 기반의 설정 파일을 사용하여 빌드 스크립트를 정의 => 빌드 스크립트 타입이 build.xml

 

Maven

ㄴ 선언적인 XML 기반 설정 파일인 pom.xml(Project Object Model)을 사용하여 프로젝트 구조, 종속성, 빌드 설정 등을 정의

ㄴ Ant 에서 의존라이브러리 관리를 추가함

 

Gradle

Groovy (자바 호환 언어) 또는 Kotlin을 빌드 스크립트 언어로 사용하여 더 표현적이고 유연한 방식으로 빌드 스크립트를 정의
ㄴ Gradle의 빌드 파일은 build.gradle
ㄴ Maven 의 빌드스크립트 파일에 프로그래밍 언어를 도입한 것

 

 

ㄴ .gradle/ 디렉터토리는 실행할 때마다 재 생성되므로 지워도 됨

ㄴ gradle/ 디렉토리가 있으면 Gradle 이 설치되어있지 않아도 Gradle 사용 가능

ㄴ app/ 디렉토리는 최신 gradle 에서 main project 역할을 함 (과거에는 없었음)

build.gradle 파일은 빌드 스크립트 파일로 현재 해당 프로젝트만 제어

settings.gradle 파일은 빌드 스크립트 파일로 전체 프로젝트를 제어하는 역할

ㄴ gradlew 는 Unix 용, gradlew.bat 는 Windows 용

ㄴ .gitignore 와 .gitattributes 파일은 git 실행과 관련된 설정 파일

gradlew 와 gradlew.bat 는 gradle/ 디렉토리에 있는 것을 사용함

 

gradle init 

ㄴ application 으로 프로젝트를 생성하고, Java 를 사용할 것이며, 빌드스크립트의 domain-specific language 는 Groovy 로 함

ㄴ 테스트 프레임워크는 JUnit Jupiter 를 선택함 (JUnit Jupiter = JUnit 5)

ㄴ 프로젝트 이름은 java-lang 그대로 하고 소스 패키지 이름은 bitcamp 라고 함

ㄴ Java 버전을 17 버전으로 선택

ㄴ 새로운 API 및 동작을 사용한 빌드 생성은 no 선택

 

** 참고

DSL => Domain-specific language

 

ㄴ 프로젝트 폴더 준비

ㄴ 명령창에서 해당 폴더로 이동

ㄴ gradle init

ㄴ gradle build

 

gradle build

 

 

gradle run

 

 

 

ㄴ build/classes/java/main 이라는 디렉토리에 bitcamp 라는 패키지로 App 이라는 파일을 실행

 

 

 

ㄴ Test1.java 컴파일 시 A.class 가 생성됨 => 클래스 블록으로 컴파일 됨

ㄴ 클래스 블록 단위로 컴파일을 수행하여 .class 파일이 생성됨

 

ㄴ default 접근 범위는 같은 패키지에 소속된 경우만 접근 가능함

ㄴ public 접근 범위는 어느 패키지에 소속되어있든 상관없이 접근 가능함

public class 가 있는 소스파일 이름은 클래스 이름과 같아야함

 

 

ㄴ 1 소스 : 1 클래스 블럭 으로 하면 유지보수가 쉬우며, 클래스가 있는 소스파일을 빠르게 찾을 수 있음

ㄴ 소스파일 명은 클래스 블록 이름으로 함

 

 

main() 메서드는 JVM 이 클래스를 실행할 떄 제일 처음 실행하는 코드블록임 => 진입점 (entry point)

ㄴ java 에서는 함수가 아닌 메서드라고 부름

 

** 주의

main 이 없는 클래스는 직접 실행할 수 없음