[Java] 자바 학습 계획

Hyunjun Kim·2025년 3월 28일
0

Data_Engineering

목록 보기
9/153

1. 자바 문법 학습

1.1 학습 목적

데이터 엔지니어로 일하면서 보게될 자바 코드를 이해할 수준까지 끌어올리는 것이 목적이다. 예전에 Android Studio에서 Java로 앱을 개발한 경험이 있다.
자바에서 중요한 부분이나 기억나지 않았던 부분들을 위주로 학습하며 빠르게 학습하는 것이 목표.

1.2 학습 범위

1.2.1 뭘 학습할 것이냐?

  1. JAVA8(1.8) 버전을 기준으로 학습
  2. 자바 언어를 사용하기 위한 기초 문법을 공부
  3. 객체지향 프로그래밍을 위해서 자바에서 지원하는 문법을 학습
  4. Java 기본 라이브러리인 Collection 에서 자주 사용되는 Collection과 사용법 학습
  5. Java 타입시스템의 유연성을 제공하는 제네릭스 학습
  6. Java 8에서 함수형 프로그래밍을 지원하기 위해 도입된 Stream의 기초 사용법을 학습
  7. 라이브러리 Retrofit을 이용해서 네트워크로 데이터를 조회하는 방법 학습

데이터 엔지니어로서 사용하게 되는 Java 프로그램들 중 대부분이 Java8 버전을 기준으로 작성 되었고 호환되는 가장 낮은 버전도 Java8 버전이 많고 가장 안정적인 버전도 Java8 버전이 가장 많기 때문에 Java8버전 학습.

1.2.2 학습하지 않고 넘어갈 부분

  1. Java 8 버전보다 상위 버전에서 도입된 문법은 학습 x
  2. 자바의 모든 상세한 문법을 다루지는 않음
  3. 객체지향 프로그래밍 이론과 실습을 전부 학습하지 x 자바에서 객체지향 프로그래밍을 할 수 있도록 지원하는 기능들을 중심 으로 학습
  4. 모든 Collection 타입, 함수를 학습하지 x
  5. 제네릭스의 사용법 외에 자바 타입시스템의 이론적인 설명은 학습 x
  6. Stream의 모든 내용을 학습 x
  7. 자바의 기본 라이브러리와 함수들로 Networking 프로그래밍을 하려면 난이도가 높기 때문에 사용하기 쉬운 라이브러리인 Retrofit으 로 네트워크 I/O 하는 방법을 학습한다. Java에서 네트워크 I/O를 하는 방법은 다양하다. 라이브러리도 다양하다.

우리가 보게될 오픈소스의 코드들도 대부분 Java 네트워크 IO 기본을 사용하지 않고 여러가지 라이브러리를 이용해서 네트워크를 할텐데 OKHTTP 라는 게 전통적으로 HTTP 관련해서 가장 대중적으로 사용됐었고 비동기 성능을 위해서는 Netty 라이브러리를 이용해서 코딩하기도 한다. 다른 개발자들도 다 라이브러리를 쓰더라. 그래서 우선은 네트워크 중에 Retrofit이 사용하기도 쉽고 가장 대표적으로 많이 사용되는 라이브러리이기 때문에 Retrofit을 배운다.

1.3 GPT에게 물어보기

1.3.1 데이터 엔지니어 관점에서 자바를 안다고 말하려면?

데이터 엔지니어 관점에서 "자바를 안다" 라고 할 때는 앱 개발(Android) 수준의 지식보다는, 분산 시스템 / 빅데이터 프레임워크 / 데이터 파이프라인과 연결된 지식이 더 중요합니다.

  • 즉, Java 문법 자체보다 Java가 데이터 엔지니어링 환경에서 어떻게 쓰이는지를 아는 게 핵심이에요.

1.3.2 데이터 엔지니어에게 중요한 Java 역량

1. Java 언어 기본기 (필수 최소치)

  • OOP 개념: 클래스, 인터페이스, 상속, 다형성
  • Exception 처리 (Checked vs Unchecked)
  • Collection Framework (List, Map, Set, Queue) → 대용량 데이터 처리할 때 자주 사용
  • Generics, Stream API, Lambda → 데이터 변환 시 유용
  • 멀티스레딩 / Concurrency (Thread, ExecutorService, synchronized, ConcurrentHashMap)
    → 데이터 파이프라인에서 동시성 제어에 매우 중요

2. Java와 빅데이터/분산 처리

  • Hadoop MapReduce: 원래 Java로 작성됨 → Job, Mapper, Reducer 개념 이해 필요
  • Apache Spark (Java API): Scala 기반이지만 Java API도 존재 → RDD/DataFrame 연산 감 잡기
  • Apache Kafka (Java Client): Kafka Streams, Producer/Consumer API → 실시간 파이프라인 핵심

3. Java와 데이터 엔지니어링 프레임워크

  • Spring Boot + Spring Batch
    • 데이터 ETL 배치 파이프라인에서 많이 사용됨
    • 예: DB → 가공 → 파일 저장 → Kafka Publish 자동화
  • Flink (Java/Scala 기반)
    • 실시간 스트리밍 처리에서 자주 등장

4. Java 기반 데이터 처리 실무 스킬

  • JDBC / JPA: DB 연동 (MySQL, PostgreSQL 등)
  • Serialization: Avro, Protobuf, Parquet 같은 포맷 → Java로 다룰 줄 알면 유리
  • Memory & GC 이해
    • 대용량 데이터 처리 시 OutOfMemory 에러 튜닝 → 데이터 엔지니어의 자바 역량 중 고급 스킬

5. 테스트 & 배포

  • JUnit / TestNG → 데이터 파이프라인 단위 테스트
  • Maven / Gradle → 빌드 및 의존성 관리
  • Docker/Kubernetes 환경에서 Java 애플리케이션 실행

1.3.3 정리: 데이터 엔지니어 입장에서 "자바를 안다"의 기준

  1. Java 기본 문법 + OOP + 컬렉션 + 멀티스레딩 → 기초
  2. Kafka, Spark, Hadoop, Flink 같은 분산 프레임워크 Java API 활용 → 실무 연결
  3. Spring Boot/Spring Batch로 데이터 파이프라인 서비스 개발 → 엔터프라이즈 적용
  4. 메모리 관리 & 성능 튜닝 → 대규모 데이터 처리 시 강점

✅ 즉, 데이터 엔지니어는 안드로이드 앱 수준의 자바보다, 분산 데이터 처리와 파이프라인 구축에서 자바가 어떻게 쓰이는지를 아는 게 핵심입니다.

profile
Data Analytics Engineer 가 되

0개의 댓글