ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바의 정석 Chapter 1 - 자바 개발환경 구축하기 [MAC]
    IT 공부 독서 정리/Java의 정석 2024. 12. 1. 19:46

    1. 자바 개발환경 구축하기

      1.1 JDK란 무엇인가?

    • JDK(Java Development Kit)는 자바 프로그래밍을 위해 필요한 개발 도구의 모음이다.
    • 쉽게 말해, 자바 프로그래밍을 가능하게 해주는 소프트웨어 도구라고 이해하면 된다.
      예를 들어, 이미지를 편집하기 위해 포토샵을 사용하는 것처럼, 자바 프로그램을 만들기 위해서는 JDK가 필요하다.

      1.2 JDK의 구성

    • JDK에는 다음과 같은 중요한 도구들이 포함되어 있다:
      • API 라이브러리: 코드 작성 시 활용 가능한 다양한 기능 제공.
      • JVM(Java Virtual Machine): 자바 코드를 실행하기 위한 가상 머신.
      • 그 외, 컴파일러와 디버깅 도구 등이 포함.

    JDK 구조

     

    기본적으로 책에서 설명하는 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을 유지하며 사용 함.
      • 다만, 스타트업 회사 등 새롭게 시작하는 회사들이나 신규 프로젝트들은 그 이후 버전을 사용 함.

      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라는 문구를 출력하는 코드임.

      모든 프로그래밍 언어를 시작할 때 단골로 사용되는 예제

      우선 객체지향 프로그래밍의 기본 단위는 클래스를 기반으로 진행 됨.

      코드 구조

    1. 클래스 선언: Hello라는 클래스를 선언.
    2. main 함수: 자바 프로그램의 시작점.
    3. 출력 메서드 호출: 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 창에서도 간단하게 테스트가 가능함.

     

    윈도우 Command창에서 Javac를 통해 컴파일 및 실행하는 과정

     

    3. IntelliJ에서 Hello World 실행하기

      3.1 IntelliJ 실행 과정

    1. 소스 파일 위치:
      • src/com/example/hello/Hello.java에 소스코드 작성.
    2. 클래스 파일 생성:
      • IntelliJ가 내부적으로 JDK를 사용해 Hello.class 파일 생성.
      • 위치: build/classes/java/main/com/example/hello/Hello.class
    3. Java.exe로 실행:
      • IntelliJ는 JDK의 Java.exe를 사용해 프로그램을 실행.
      • main 함수가 실행되며, "Hello World!!!" 출력.

    intellij에서 Hello World!!! 출력한 모습

    실행 시 유의점

    • main 함수 필수:
      • 자바 프로그램은 main() 함수가 없으면 실행되지 않으며, 아래와 같은 에러가 발생함. 
        Exception in thread "main" java.lang.NoSuchMethodError: main
      • 자바 프로그램은 기본적으로 하나의 프로젝트 안에 1개의 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!!!문구를 출력하는 프로그램을 개발함.
    1. JDK 설치는 필수: 자바 개발을 위해 JDK는 반드시 필요
    2. JDK 버전 선택: JDK 1.8 이상 버전은 안정성과 효율성으로 현재도 널리 사용됨. (1.8 이상 추천)
    3. IDE 활용: IntelliJ, Eclipse와 같은 도구를 사용하면 자바 개발이 편리.
    4. 코드 실행 과정: 소스코드 → 컴파일 → 클래스 파일 생성 → JVM 실행 → 결과 출력.
    5. 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~마지막장까지는 자바 프로그래밍을 실제로 응용하는 부분을 다룸.
        • [스트림, 람다, 네트워크, 쓰레드 등등]
    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장의 내용이 마무리
Designed by Tistory.