ETC/etc3

[나의 개발일지] 3. Java와 클래스

montmer27 2025. 11. 18. 18:49

이번 포스팅에서는 Java에 대해서 대략적으로 알아보도록 하자

 

1. Java란 어떤 언어인가?

Chatgpt에 따르면, Java는 다음과 같은 패러다임, 철학, 용도를 위해 만들어진 언어이다.

 

일단 요약을 먼저 보자.

구분 내용
패러다임 객체지향 중심, 명령형, 부분적 함수형
철학 WORA, 안정성 및 보안, 단순성, 확장성
주요 용도 백엔드, 기업 시스템, Android, 빅데이터, 분산 시스템, 웹/데스크톱

 

보다 자세한 내용은 아래 내용을 펼쳐 보자.

더보기

1. 자바의 패러다임

  1. 객체지향 프로그래밍(OOP) 중심 --> 대규모 소프트웨어 개발에 적합
    • 클래스, 객체 기반 구조
    • 상속, 캡슐화, 다형성 등 OOP 기본 원칙 충실
    • 현실 세계 모델링에 강함
  2. 명령형/절차적 프로그래밍 요소 포함
    • 메서드 기반 절차적 코드 작성 가능
  3. 함수형 프로그래밍 지원(부분적)
    • Java 8 이후 람다(lambda), 스트림(Stream) API 도입
    • 완전한 함수형 언어는 아니지만 함수형 스타일을 적용할 수 있음

2. 자바의 철학

1. "Write Once, Run Anywhere" (WORA)

  • 한 번 작성한 코드를 어떤 OS에서도 실행 가능
  • JVM(Java Virtual Machine) 위에서 돌아가므로 OS와 독립적

2. 안정성과 신뢰성 중시 --> 대규모 기업 시스템에서 오류를 예방하는 데 유리

  • 자동 메모리 관리(GC) -> 실행이 느려지는 원인 중에 하나
  • 강타입(Strongly typed)
  • 예외 처리 강제 (checked exception) 

3. 보안 강화

  • 초기부터 인터넷 환경(애플릿 등) 염두에 둬 설계
  • 샌드박스 모델, 클래스 로딩 시스템 등 보안 기능 강력

4. 단순성과 일관성

  • 포인터 연산 없음 --> 버그와 보안 문제 감소
  • 문법이 C/C++ 기반이어서 배우기 쉬움

5. 플랫폼 중립적이며 확장 가능

  • JVM + 클래스 라이브러리
  • 생태계 (스프링, 톰캣 등)가 매우 크고 풍부

3. 자바의 주요 용도

1. 백엔드 서버 개발 (기업용 애플리케이션)

  • Spring, Spring Boot
  • 대규모 트래픽 처리에 강함
  • 안정성, 확장성 필요한 금융/정부/대기업 시스템에서 매우 널리 사용

2. 모바일 앱 개발 (Android)

  • 오랜 기간 안드로이드의 주요 언어
  • 지금도 Kotlin과 함께 공존

3. 웹 애플리케이션

  • JSP, Servlet, Spring MVC 등의 기술을 기반으로 웹 개발

4. 빅데이터 및 분산 시스템

  • Hadoop 에코시스템의 많은 구성요소가 자바 기반
  • Kafka, HBase, Elasticsearch 등도 자바 사용

5. 임베디드 시스템

  • Java ME (Micro Edition)
  • IoT 디바이스 일부 환경에서도 사용

6. 데스크톱 애플리케이션

  • JavaFX, Swing

 

 AWS는 다음과 같이 설명한다.

Java는 그 자체로 플랫폼으로 사용할 수 있는 다중 플랫폼, 객체 지향 및 네트워크 중심 언어입니다.
모바일 앱 및 엔터프라이즈 소프트웨어에서 빅 데이터 애플리케이션 및 서버 측 기술에 이르기까지 모든 것을 코딩하기 위한 빠르고 안전하며 안정적인 프로그래밍 언어입니다.

 

범용적이고, 빠르고, 안전하고, 안정적이라 기업용 개발의 표준과 같이 사용된다. 단점이 거의 없는 것처럼 보인다.

보다 자세한 장/단점은 아래 접은글에서 확인!

 

더보기

자바의 장점

1. 매우 높은 안정성과 신뢰성

  • 강타입(Strongly typed) + 정적 타입(Static typing)
  • 예외 처리 체계(checked exceptions)
  • GC(가비지 컬렉터) 기반 메모리 관리
    대규모·장기 프로젝트에서 유지보수가 쉽고 안정적임

2. 플랫폼 독립성 – “Write Once, Run Anywhere”

  • JVM 위에서 실행되므로 OS와 독립
  • 다양한 환경(서버, 모바일, 클라우드)에서 동일하게 실행 가능

3. 거대한 생태계와 라이브러리

  • Spring/Spring Boot — 대기업 서버 개발 표준
  • Java EE/Jakarta EE
  • 빅데이터(Hadoop, Kafka 등) 기반 요소도 많음
    엔터프라이즈 개발에서는 사실상 탑 티어

4. 뛰어난 성능(인터프리터보다 빠름)

  • JVM의 JIT 컴파일 덕분에 Python, Ruby 등 스크립트 언어보다 훨씬 빠름
  • 메모리 관리 자동 + 최적화 기술 발전

5. 대규모 팀 개발에 적합한 구조

  • 명확한 문법
  • 정적 타입 덕분에 코드 베이스가 커져도 안정적
  • 툴링(IDE, 빌드 시스템)이 매우 성숙
    • IntelliJ IDEA / Eclipse
    • Maven / Gradle

6. 오랜 역사로 인한 안정적 커뮤니티

  • 수많은 문서, 튜토리얼
  • 오픈소스 라이브러리 풍부
  • 기업 채용 수요가 꾸준함

자바의 단점

1. 문법이 장황하고 보일러플레이트가 많음

  • GC가 있기에 예측 가능한 실시간 성능이 필요할 때는 불리
  • 메모리 최적화도 개발자가 직접 제어하기 어려움 --> 게임 엔진, 임베디드, 고성능 연산에서는 불리

2. 실행 속도가 C/C++만큼 빠르지는 않음

  • 실행을 위해 JVM이 필요하고 초기 구동 속도가 느리다
  • 경량 시스템이나 순간 반응 속도가 중요한 환경에는 부적합

3. 런타임 환경(JVM)이 무겁다

  • 실행을 위해 JVM이 필요하고 초기 구동 속도가 느림
  • 경량 시스템이나 순간 반응 속도가 중요한 환경에는 부적합

4. 현대 언어에 비해 개발자 경험(UX)이 덜 유연

  • 패턴 매칭, 간경한 함수형 문법, null-safety  등은 다른 언어(Kotlin, Rust)가 더 잘 제공
  • 언어가 오래되어 호환성을 중시하다 보니 변화를 빠르게 못 가져감

5. 메모리 사용량이 많은 편

  • JVM 기반이라 Python/Go보다도 경우에 따라 메모리를 더 먹음
  • 클라우드 환경에서 비용 상승 요인이 되기도 함

 

Java에서 클래스란?

이젠 Java의 핵심 개념인 클래스에 대해 알아보도록 하자. 

객체 지향형 언어인 자바로 만든 프로그램은 대부분 클래스 단위로 구성된다.

클래스란 객체를 만들기 위한 설계도이며, 하나의 클래스에서 여러 개의 객체를 만들 수 있다.

각 개체는 속성과 행동(각각 변수와 메서드)이 정의되어 있어야 하는데, 그것이 정의된 곳이 바로 클래스이다.

 

변수와 메서드에 대해 조금만 더 깊게 들어가자면,

속성은 변수 또는 필드라고 하며, 말하자면 객체가 가지고 있는 데이터에 관한 것이다.

행동은 메서드 또는 행동이라고 하며, 말하자면 객체가 수행할 수 있는 기능에 관한 것이다.

 

참고자료

1. Java란 무엇인가요? https://aws.amazon.com/ko/what-is/java/

 

Java란 무엇인가요? - Java 프로그래밍 언어 설명 - AWS

Java는 웹 애플리케이션 코딩에 널리 사용되는 프로그래밍 언어입니다. 20년 넘게 개발자들 사이에서 많은 인기를 끌은 결과, 오늘날 수백만 개의 Java 애플리케이션이 사용되고 있습니다. Java는

aws.amazon.com

 

다른 콘텐츠가 궁금하다면?

2025.11.15 - [Backend] - [나의 개발일지] 2. Java와 Spring을 배워봅시다

 

[나의 개발일지] 2. Java와 Spring을 배워봅시다

Java란 무엇일까?커피 프랜차이즈? 아쉽게도 그건 아니다. Java는 ( 1 )의 한 종류이다.사람의 언어(한국어, 영어)를 컴퓨터가 이해할 수 있는 형태로 바꿔주는 역할을 한다.어떤 환경에서도 실행 가

montmer27.tistory.com

2025.11.13 - [Backend] - [나의 개발일지] 1. Spring 부트캠프를 시작하며

 

[나의 개발일지] 1. Spring 부트캠프를 시작하며

1.내가 Spring 트랙에 참여한 계기는 무엇인가요?: 비전공자로서 데이터 엔지니어로 직무 전환을 하고 싶었는데, 현직자의 유튜브 영상들을 보고 백엔드 개발자로 업계에 진출하는 것이 가장 현실

montmer27.tistory.com

2025.11.14 - [커리어 파인튜닝] - [커리어 파인튜닝] 3. 데이터 엔지니어 커리어 로드맵

 

[커리어 파인튜닝] 3. 데이터 엔지니어 커리어 로드맵

[3줄요약] 실패데이터엔지니어는 비정형 데이터를 구조화, 분석 가능한 형태로 전달하기 위해, 데이터 수집, 정제 및 처리, 저장, 전달, 품질 관리 및 자동화 업무를 수행한다.데이터 엔지니어링

montmer27.tistory.com