IT 공부 독서 정리/Java의 정석
자바의 정석 Chapter 1 - 자바 개발환경 구축하기 [MAC]
방탄승
2024. 12. 1. 19:46
1. 자바 개발환경 구축하기
1.1 JDK란 무엇인가?
- JDK(Java Development Kit)는 자바 프로그래밍을 위해 필요한 개발 도구의 모음이다.
- 쉽게 말해, 자바 프로그래밍을 가능하게 해주는 소프트웨어 도구라고 이해하면 된다.
예를 들어, 이미지를 편집하기 위해 포토샵을 사용하는 것처럼, 자바 프로그램을 만들기 위해서는 JDK가 필요하다.
1.2 JDK의 구성
- JDK에는 다음과 같은 중요한 도구들이 포함되어 있다:
- API 라이브러리: 코드 작성 시 활용 가능한 다양한 기능 제공.
- JVM(Java Virtual Machine): 자바 코드를 실행하기 위한 가상 머신.
- 그 외, 컴파일러와 디버깅 도구 등이 포함.
기본적으로 책에서 설명하는 JDK 설치는 윈도우 기반으로 설명을 함.
다만, 개발용 PC로 맥북을 사용중이라, 맥 OS 기준으로 작성함.
1.3 JDK 버전과 사용 경험
- 현재 JDK는 23버전까지 업데이트되었으며, 거의 매년 새로운 버전이 출시됨.
- 과거 JDK 1.8이 가장 널리 사용됨. 그 이유는 안정성과 기능적 효율성 때문.
- JDK 1.8 이전 버전들에서는 볼 수 없었던, 다양한 기능과 개념들이 추가 됨.
- JDK 1.8에서 도입된 주요 기능:
- 람다식(Lambda Expressions)
- 함수형 인터페이스(Functional Interface)
- Stream API
- 새로운 날짜/시간 API(Date & Time API)
- JVM 변화
- 병렬 배열 정렬 (Parallel Array Sorting)
- 컬렉션을 위한 대용량 데이터 처리 (스트림)
- Optional
- Base64 인코딩과 디코딩을 위한 표준 API
- 새로운 날짜, 시간 API (Date & Time API)
- 이후 버전은 큰 변화가 없었기 때문에 기업들은 주로 JDK 1.8을 유지하며 사용 함.
- 다만, 스타트업 회사 등 새롭게 시작하는 회사들이나 신규 프로젝트들은 그 이후 버전을 사용 함.
- JDK 1.8에서 도입된 주요 기능:
1.4 JDK 설치
- Windows: JDK를 설치한 후, 환경변수 설정이 필요하다.
- Mac OS: 설치 후 바로 사용 가능(환경변수 설정 불필요).
2. JAVA 프로그램 작성하기
2.1 코드 작성 도구(IDE) 선택
- 자바를 개발하려면 텍스트 편집기 또는 IDE(Integrated Development Environment)가 필요하다.
- 자주 사용되는 도구:
- Eclipse: 무료, 자바 특화 도구.
- IntelliJ IDEA: 직관적 UI와 강력한 기능으로 인기.
- Visual Studio Code: 다양한 언어 지원.
2.2 Hello, World 출력하기
class Hello {
public static void main(String args[]) {
System.out.println("Hello World !!!");
}
}
위 코드는 Hello, World라는 문구를 출력하는 코드임.
모든 프로그래밍 언어를 시작할 때 단골로 사용되는 예제
우선 객체지향 프로그래밍의 기본 단위는 클래스를 기반으로 진행 됨.
코드 구조
- 클래스 선언: Hello라는 클래스를 선언.
- main 함수: 자바 프로그램의 시작점.
- 출력 메서드 호출: System.out.println()을 사용해 "Hello World!!!" 출력.
위 3가지 구조를 통해 실제 "Hello, World!!!" 라는 문구를 출력할 수 있다.
2.3 Java 프로그램 실행 과정
Hello.Java작성 → Javac.exe → Hello.class 생성 → Java.exe → "Hello, World!!!" 출력 |
- 소스 파일 작성:Hello.java라는 이름의 파일에 소스코드를 작성.
- 컴파일:javac Hello.java 명령을 실행하면, Hello.class라는 바이트코드 파일이 생성됨.
- 실행:java Hello 명령을 통해 JVM이 Hello.class를 실행.
- 결과:콘솔에 "Hello World!!!" 출력.
위 소스코드 및 실행과정은 Command 창에서도 간단하게 테스트가 가능함.
3. IntelliJ에서 Hello World 실행하기
3.1 IntelliJ 실행 과정
- 소스 파일 위치:
- src/com/example/hello/Hello.java에 소스코드 작성.
- 클래스 파일 생성:
- IntelliJ가 내부적으로 JDK를 사용해 Hello.class 파일 생성.
- 위치: build/classes/java/main/com/example/hello/Hello.class
- Java.exe로 실행:
- IntelliJ는 JDK의 Java.exe를 사용해 프로그램을 실행.
- main 함수가 실행되며, "Hello World!!!" 출력.
실행 시 유의점
- main 함수 필수:
- 자바 프로그램은 main() 함수가 없으면 실행되지 않으며, 아래와 같은 에러가 발생함.
Exception in thread "main" java.lang.NoSuchMethodError: main
- 자바 프로그램은 기본적으로 하나의 프로젝트 안에 1개의 Main함수가 반드시 존재해야 한다.
- Main 함수는 모든 프로젝트의 시작점이라고 생각하면 된다.
-
자동차를 이용하기 위해 시동은 걸어야 무엇이든 할 수 있는것과 마찬가지임.
- 자바 프로그램은 main() 함수가 없으면 실행되지 않으며, 아래와 같은 에러가 발생함.
4. 주석
- 컴파일과 기계어 번역이 이루어지지 않은 코드
- 프로그램을 작성하는 과정은 크기가 커질수록 프로그램 유지보수 및 추가 개발에 어려움이 발생함.
- 하나의 프로그램을 개발하는 동안, 다양한 클래스 및 메서드들이 작성됨.
- 혼자 개발한다고 할지라도, 그 모든 클래스와 기능들을 머릿속으로 기억하기란 쉽지 않음.
- 또한 실무에서는 팀단위로 개발하는 작업들이 많아, 모든 내용들을 매번 회의를 통해 공유하기도 어려움.
- 위와 같은 문제들을 해소하기 위해 만들어진 기능이 주석.
- 컴파일과 관련 없는 구문이라, 코드에 대한 설명이나 개념들을 작성하여 가독성을 높일 수 있음.
- 또한 해당 프로젝트의 버전이나 변경 이력들을 작성할 수 있다는 이점이 있음
- 범위 주석 : '/*'와 '*/' 사이의 내용은 주석으로 간주
- 한 줄 주석 : '//' 부터 라인 끝까지의 내용은 주석으로 간주
-
더보기주석 예시
/*
Date : 2024. 12. 08
Source : Hello.java
Author : 신지훈
Email : tho881@naver.com
*/
class Hello
{
public static void main(String args[]). /* 프로그램 시작*/
{
System.out.println("Hello, World!!!"); // Hello, World!!!를 출력
System.out.println("//주석 아님"); // "//Hello, World!!!"를 출력
System.out.println("/*이것도 주석 아님 */");
}
}
5. Hello World 요약
- 이것으로, JDK를 통해 가장 간단한 Hello, World!!!문구를 출력하는 프로그램을 개발함.
- JDK 설치는 필수: 자바 개발을 위해 JDK는 반드시 필요
- JDK 버전 선택: JDK 1.8 이상 버전은 안정성과 효율성으로 현재도 널리 사용됨. (1.8 이상 추천)
- IDE 활용: IntelliJ, Eclipse와 같은 도구를 사용하면 자바 개발이 편리.
- 코드 실행 과정: 소스코드 → 컴파일 → 클래스 파일 생성 → JVM 실행 → 결과 출력.
- Hello, World 예제: 자바 프로그램의 기본 구조와 실행 과정을 이해하는 데 적합한 예제.
6. Java 개발에서 자주 발생하는 에러 종류
* 이 책에서는 자주 발생하는 오류들을 소개하며, 해당 오류 발생 시 확인해야 할 부분을 알려주고 있다.
에러 코드 및 내용 | 에러 설명 |
cannot find symbol 또는 cannot resolve symbol | 변수나 메서드를 찾을 수 없을 때 발생하는 에러 |
';' expected | 세미콜론 ';'이 없을 때 발생하는 에러 |
Exception in thread "main" java.lang.NoSuchMethodError: main |
main 메서드를 찾을 수 없을 때 발생하는 에러 |
Exception in thread "main" java.lang.NoClassDefFoundError : Hello |
Hello라는 클래스를 찾을 수 없을 때 발생하는 오류 |
illegal start of expression | 문장의 앞부분이 문법에 맞지 않다는 뜻 |
해당 문장의 문법적 오류가 발생했을 때 나타나는 오류 | |
class interface, or enum expected | class나 interface 또는 enum이 없을 때 발생하는 오류 |
보통 '{', '}'등의 중괄호 개수가 불일치 할 때 발생한다. |
- 이 외에 오류의 내용은 매우 다양하게 나타 남.
- 다만, 이클립스 및 인텔리제이 등 개발 IDE 툴을 이용하면 에러 및 경고에 대한 다양한 이점이 있음.
- 에러가 발생한 소스 코드 파일에 대한 정보를 표시
- 해당 파일을 열면, 소스 코드 내의 어느곳에 에러가 발생하였는지 표시
- 에러에 대한 내용과 더불어, 어떻게 수정하면 좋은지에 대한 피드백도 제공
- 최근 생성형 AI 플러그인을 통해 해당 오류들에 대해서 자동으로 수정할 수 있는 기능도 제공
7. Chapter별 수업 내용
- 이 책은 크게 3부분으로 나뉘어 1~5장 / 6~9장 / 나머지 부분으로 구분할 수 있다.
- 1~5장까지는 자바의 기초 문법에 대해서 다룬다.
- [이 부분을 확실하게 공부를 하게 되면, 다른 언어를 공부할 때도 도움이 많이 된다.]
- 6~9장까지는 자바의 가장 큰 특징인 객체지향 프로그래밍에 대해서 다룸.
- [상속, 다형성, 캡슐화, 예외처리, 인터페이스 등등]
- 10~마지막장까지는 자바 프로그래밍을 실제로 응용하는 부분을 다룸.
- [스트림, 람다, 네트워크, 쓰레드 등등]
- 1~5장까지는 자바의 기초 문법에 대해서 다룬다.
Chapter | 내용 |
1장 | 자바를 시작하기 전에... |
2장 | 변수 (Variable) |
3장 | 연산자 (Operator) |
4장 | 조건문과 반복문 |
5장 | 배열 (Array) |
6장 | 객체지향프로그래밍 I |
7장 | 객체지향프로그래밍 II |
8장 | 예외처리 (Exception) |
9장 | java.lang패키지와 유용한 클래스 |
10장 | 날짜와 시간 & 형식화 |
11장 | 컬렉션 프레임웤 |
12장 | 지네릭스, 열거형, 애너테이션 |
13장 | 쓰레드 (Thread) |
14장 | 람다와 스트림 |
15장 | 입출력 (I/O) |
16장 | 네트워킹 (NetWorking) |
8. 정리
- 이 글에서는 JDK 설치와 Hello, World 출력 과정을 중심으로 기본 구조를 파악 했음.
- 기본적인 코드 작성법 및 자바 실행과정과 더불어 코드 작성에 필요한 주석의 개념이 책에 주된 내용
- 또한 자바에서 기본적을 많이 발생하는 오류코드 및 설명에 대해 소개함.
- 자바 언어의 기본적인 문법과 객체지향 프로그래밍 개념은 이어서 단계적으로 정리해볼 예정
- 이 책에서 챕터별 주제에 대해 간략하게 소개하면서 1장의 내용이 마무리