자바(Java)는 썬 마이크로시스템즈(Sun Microsystems)에서 개발한 객체지향 프로그래밍 언어이다.
자바가 만들어진 1990년대에는 가전제품에 간단한 코드를 적용해 사람의 수고를 덜어주는 것이 유행이었고,
이러한 흐름 속에서 코드 재사용성, 플랫폼 독립성, 자동 메모리 관리라는 특징을 가진 언어로 설계되었다.
프로그래밍 언어는 실행 방식에 따라 크게 두 가지로 나뉜다.
컴파일 방식
→ 코드를 한 번에 전부 번역한 뒤 실행
→ 일반적으로 실행 속도가 빠름
인터프리터 방식
→ 코드를 한 줄씩 그때그때 해석하며 실행
자바는 이 두 방식을 혼합해서 사용한다.
자바는 OS에 종속적이지 않기 때문에,
OS 위에서 자바 프로그램을 실행시켜주는 도구가 필요하다.
이 역할을 하는 것이 바로 JVM이다.
자바 실행 흐름은 다음과 같다.
.java 파일 작성 .class 파일 생성 .class 파일을 해석 이 구조 덕분에 자바는 운영체제에 상관없이 실행 가능하다.
또한 JVM에는 가비지 컬렉션(Garbage Collection) 기능이 있어
메모리를 자동으로 관리해준다는 장점이 있다.
자바를 사용하기 위해서는 JDK가 필요하다.
JDK는 자바 프로그램을 개발하고 실행하는 데 필요한 모든 도구를 포함한 개발 키트이다.
나는 기존에 Oracle JDK를 사용했지만,
이번에 Adoptium Temurin으로 다시 설치하고 환경변수 설정을 진행했다.
환경변수 설정은 아래 글을 참고했다.
https://coding-factory.tistory.com/838
이제 Visual Studio Code에 미리 작성해둔 간단한 코드를
CMD 창에서 직접 컴파일하고 실행해보았다.
javac Hello.java
java Hello
javac는 자바 파일을 컴파일하고,
java는 컴파일된 파일을 실행한다.!

아래 코드는 자바 프로그램에서 반드시 필요한 구조이다.
public class Hello {
public static void main(String[] args) {
}
}
각 키워드의 의미는 다음과 같다.
public : 접근 제어자 class : 클래스 선언 키워드 Hello : 식별자 (파일 이름과 동일해야 함) static : 메모리에 미리 적재 void : 반환값 없음 String[] : 문자열 배열 args : 식별자 (사용자 지정 이름)public static void main(String[] args)는
자바에서 약속된 진입점이기 때문에 반드시 필요하다.
자바에서 식별자를 만들 때 주의할 점은 다음과 같다.
_, $만 가능_, $ 사용 가능IntelliJ는 IDE(통합 개발 환경)이다.
코드 작성, 디버깅, 빌드 등을 하나의 환경에서 처리할 수 있도록 도와준다.
아래 공식 사이트에서 Community 버전을 다운로드했다.
https://www.jetbrains.com/idea/download/?section=windows
프로젝트를 열어보면 다음과 같은 파일들이 생성된다.
.idea
→ IntelliJ가 프로젝트를 관리하기 위한 폴더
.iml
→ IntelliJ 프로젝트 설정 파일
두 파일 모두 직접 수정하지 않는 것을 권장한다.

CMD에서는 javac, java 명령어를 직접 입력했지만,
IntelliJ에서는 실행 버튼 한 번으로 컴파일 + 실행이 가능하다.
실행 후 프로젝트를 보면 out 폴더가 생성되는데,
이는 컴파일된 결과물이 저장되는 폴더이며 역시 수정하지 않는 것이 좋다.
자바에서 사용하는 주석은 크게 세 가지가 있다.
// 한 줄 주석
System.out.println("Hello JAVA!");
// System.out.println("Hello JAVA!");
주석 처리된 코드는 실행되지 않는다.
/*
여러 줄 주석
*/
/*
System.out.println("Hello JAVA!");
System.out.println("Hello JAVA!");
*/
/**
* DOC 주석
*/
DOC 주석은 Javadoc을 이용한 API 문서 생성에 사용된다.
아직 실습해보지는 않았고 개념 정도만 알고 넘어갔다.
참고 링크:
https://www.oracle.com/kr/technical-resources/articles/java/javadoc-tool.html
오늘 수업은 지난번 Git/GitHub와 달리 실습이 많지 않아
크게 어려운 부분은 없었지만 시간이 굉장히 빠르게 지나갔다.
회고 시간에는 팀원들과 함께
에 대해 자료 조사를 진행하고 서로 발표했다.
접근 제어자는 클래스와 클래스 멤버에 대한 접근 범위를 지정한다.
public : 모든 클래스에서 접근 가능 default(생략) : 같은 패키지 내에서만 접근 가능 public : 어디서든 접근 가능 private : 같은 클래스 내부에서만 접근 가능 protected : 같은 패키지 + 다른 패키지의 자식 클래스 default : 같은 패키지 내에서만 접근 가능 메서드 영역
→ main 메서드, 클래스 정보 저장
힙 영역
→ new 키워드로 생성한 객체 저장
스택 영역
→ 지역 변수, 매개변수 저장
부트캠프를 신청하면서 예습을 했다고 생각했지만,
수업을 들으며 놓쳤던 부분이 많았다는 걸 느꼈다.
모르는 점이 생기면 강사님, 멘토님, 회고 팀원들과 질문하고 이야기하면서
개념이 훨씬 잘 잡히는 느낌이었다.
내일도 화이팅.