Skip to content

Latest commit

 

History

History
187 lines (144 loc) · 5.26 KB

Java.md

File metadata and controls

187 lines (144 loc) · 5.26 KB

Java 프로그래밍 언어

Java란?

Java는 1995년 썬 마이크로시스템즈(Sun Microsystems)의 제임스 고슬링(James Gosling)이 개발한 객체지향 프로그래밍 언어입니다. "Write Once, Run Anywhere" (한 번 작성하면 어디서든 실행) 철학으로 플랫폼 독립성을 추구합니다.

Java의 특징

1. 플랫폼 독립성

  • JVM (Java Virtual Machine) 위에서 실행
  • 바이트코드로 컴파일되어 어떤 플랫폼에서도 실행 가능
  • 운영체제에 독립적

2. 객체지향 프로그래밍

  • 순수 객체지향 언어
  • 클래스, 상속, 다형성, 캡슐화 지원
  • 인터페이스와 추상 클래스

3. 자동 메모리 관리

  • 가비지 컬렉션 (Garbage Collection)
  • 메모리 누수 걱정 없이 개발 가능
  • 개발 생산성 향상

4. 강력한 타입 시스템

  • 정적 타입 검사
  • 컴파일 타임에 오류 발견
  • 타입 안전성 보장

5. 풍부한 표준 라이브러리

  • Java API (Application Programming Interface)
  • 네트워킹, 파일 처리, 데이터베이스 연동 등
  • 방대한 오픈소스 생태계

6. 멀티스레딩 지원

  • 내장 스레드 지원
  • 동시성 프로그래밍 용이
  • 병렬 처리 가능

Java의 활용 분야

엔터프라이즈 애플리케이션

  • 대규모 백엔드 시스템
  • 금융 시스템
  • 전자상거래 플랫폼

웹 개발

  • Spring Framework 기반 웹 애플리케이션
  • RESTful API 서버
  • 마이크로서비스 아키텍처

모바일 개발

  • 안드로이드 앱 개발
  • 안드로이드 SDK의 기본 언어
  • 크로스 플랫폼 모바일 프레임워크

빅데이터

  • Hadoop, Spark 등 빅데이터 프레임워크
  • 데이터 처리 및 분석

게임 개발

  • 안드로이드 게임
  • LibGDX 등 게임 프레임워크

Java 버전

Java 8 (LTS)

  • 람다 표현식 도입
  • Stream API
  • Optional 클래스
  • 가장 널리 사용되는 버전

Java 11 (LTS)

  • 모듈 시스템 개선
  • HTTP 클라이언트 API
  • var 키워드 (로컬 변수 타입 추론)

Java 17 (LTS)

  • Sealed 클래스
  • Pattern Matching
  • Records
  • 현재 권장 LTS 버전

Java 21 (LTS)

  • Virtual Threads
  • Pattern Matching for switch
  • Record Patterns
  • 최신 LTS 버전

학습 경로

기초 단계

  1. 변수와 자료형
  2. 연산자와 제어문
  3. 배열과 문자열
  4. 메서드
  5. 클래스와 객체

중급 단계

  1. 상속과 다형성
  2. 인터페이스와 추상 클래스
  3. 예외 처리
  4. 컬렉션 프레임워크
  5. 제네릭

고급 단계

  1. 람다와 Stream API
  2. 멀티스레딩
  3. 네트워크 프로그래밍
  4. 데이터베이스 연동 (JDBC)
  5. 디자인 패턴

Java 개발 환경

JDK (Java Development Kit)

  • Oracle JDK: Oracle에서 제공
  • OpenJDK: 오픈소스 JDK
  • Adoptium (Eclipse Temurin): 인기 있는 OpenJDK 배포판

통합 개발 환경 (IDE)

  • IntelliJ IDEA: 가장 인기 있는 Java IDE
  • Eclipse: 오픈소스 IDE
  • NetBeans: Oracle에서 개발
  • VS Code: 확장 기능으로 Java 개발 지원

빌드 도구

  • Maven: 의존성 관리 및 빌드
  • Gradle: 유연한 빌드 시스템
  • Ant: 전통적인 빌드 도구

Java의 핵심 개념

객체지향 프로그래밍

  • 클래스와 객체
  • 상속, 다형성, 캡슐화
  • 인터페이스와 추상 클래스

컬렉션 프레임워크

  • List, Set, Map 인터페이스
  • ArrayList, HashSet, HashMap 등 구현체
  • 제네릭을 통한 타입 안전성

예외 처리

  • try-catch-finally
  • checked exception과 unchecked exception
  • 예외 계층 구조

제네릭

  • 타입 안전성 향상
  • 코드 재사용성 증가
  • 컴파일 타임 타입 검사

Java의 장점

  1. 플랫폼 독립성: 한 번 작성하면 어디서든 실행
  2. 안정성: 강력한 타입 시스템과 예외 처리
  3. 생산성: 가비지 컬렉션으로 메모리 관리 자동화
  4. 풍부한 생태계: 방대한 라이브러리와 프레임워크
  5. 엔터프라이즈 지원: 대규모 시스템 개발에 적합

Java의 단점

  1. 성능: JVM 위에서 실행되어 네이티브 언어보다 느림
  2. 메모리 사용: 가비지 컬렉션으로 인한 메모리 오버헤드
  3. 복잡성: 엔터프라이즈 개발 시 복잡한 설정
  4. 버전 호환성: 버전 간 호환성 문제 가능
  5. 보일러플레이트 코드: 반복적인 코드 작성 필요

Java와 다른 언어의 관계

C/C++

  • Java는 C/C++ 문법을 참고
  • Java는 포인터를 제거하고 가비지 컬렉션 추가
  • 더 안전하고 간단한 문법

Python

  • 둘 다 객체지향 언어
  • Java는 정적 타입, Python은 동적 타입
  • Java는 컴파일 언어, Python은 인터프리터 언어

JavaScript

  • 비슷한 문법 구조
  • Java는 서버 사이드, JavaScript는 클라이언트 사이드 (과거)
  • 현재는 둘 다 서버 사이드에서 사용

결론

Java는 엔터프라이즈 애플리케이션 개발의 표준 언어입니다. 플랫폼 독립성, 안정성, 풍부한 생태계를 통해 대규모 시스템 개발에 널리 사용됩니다. 안드로이드 앱 개발과 백엔드 서버 개발에서도 핵심 언어로 자리잡고 있으며, 지속적인 업데이트로 현대적인 기능들을 제공하고 있습니다.