Back-end/JAVA

JAVA ..

Coding Kitsune 2025. 7. 17. 16:34

 

 

나는 원래 Python을 주언어로 써왔고, 지금도 Python이 훨씬 편하다.
근데 왜 Java를 다시 배우는 걸까? 왜 이렇게 많은 기업들이 Java를 쓸까?
Java가 어떤 언어인지, Python과 비교했을 때 어떤 차이가 있는지, 그리고 현재 Java의 현황까지 한 번 정리해보려고 한다.

 

 

 

Java란?  ☕

객체지향 프로그래밍 언어 (OOP)

 

플랫폼 독립적: "Write Once, Run Anywhere" (JVM 덕분에 어디서든 실행 가능)

정적 타입(static typing): 변수 선언 시 타입 명시해야 함

클래스 기반 구조: 모든 것이 클래스 안에서 이루어짐

GC(가비지 컬렉션) 자동 메모리 관리

 

사용되는 분야 ?

 

  • 대규모 기업용 시스템 (SI, ERP, 은행, 보험 등)
  • 안드로이드 앱 개발
  • 서버 백엔드 (Spring framework)
  • 임베디드 시스템, IoT 일부

 

 

 

 

Python과 비교해보면?

 

항목 Java Python
개발 스타일 엄격하고 정형화된 문법 유연하고 간결한 문법
타입 시스템 정적 타입 (타입 명시) 동적 타입 (실행 시 타입 결정)
실행 환경 JVM 기반 (바이트코드 실행) 인터프리터 기반 (즉시 실행)
속도 빠름 (컴파일된 바이트코드) 상대적으로 느림
코드 길이 길고 명확함 짧고 직관적
생태계 엔터프라이즈, 안드로이드 데이터 분석, AI, 자동화 등
러닝커브 높음 (초보자에겐 진입장벽 존재) 낮음 (비전공자도 시작 쉬움)

 

즉, Python은 빠른 개발과 실험에 적합하고,
Java는 견고하고 대규모 시스템에 적합한 언어라고 보면 된다.

 

 

2025 기준 프로그래밍 언어 인기 순위 

순위 언어 특징
1위 Python AI, 데이터 분석, 교육용 등 인기 폭발
2위 C 임베디드, 시스템 프로그래밍 등
3위 Java 백엔드, 기업용 시스템, 안드로이드

 

→ 예전처럼 1위는 아니지만 여전히 상위권 유지 중
→ 대기업 채용이나 공공 프로젝트, SI 분야에서는 여전히 최강자

 

🔹 국내 시장 기준

  • 금융, 보험, 공공기관은 대부분 Java 기반
  • Spring Framework가 표준처럼 자리잡고 있음
  • SSAFY, 부트캠프 등 대부분 Java 중심으로 교육

 

 

즉 자바는 여전히 강하다...

 

Python 개발자였던 내가 느끼는 Java는 뭐 이렇게 써야 될 게 많아..? 정도다.

근데 배워갈수록 왜 기업들이 Java를 선호하는지 느껴지고 있다.

조금 번거롭고 복잡하긴 해도, 유지보수성과 안정성,

객체지향 중심의 구조 설계, 정확한 타입 기반 개발은 분명한 장점이다.

 

 

Java의 컴파일 과정

 

1단계: .java 파일 작성

우리가 흔히 쓰는 Java 소스코드 파일 가령 Main.java를 작성

 

 

2단계: javac로 컴파일 → .class 바이트코드 생성

 

  • javac는 Java 컴파일러다.
  • .java 파일을 **바이트코드(Bytecode)**로 변환해서 .class 파일을 생성
  • 이 바이트코드는 사람이나 운영체제가 바로 이해할 수는 없지만, JVM이 이해할 수 있는 코드
  • Main.class 생성됨
  • 이 안에 JVM이 실행할 수 있는 바이트코드가 들어있음

 

3단계: JVM(Java Virtual Machine)에서 실행

 

  • 이제 java 명령어로 .class 파일을 실행시킴
  • JVM은 플랫폼마다 다르지만, .class 바이트코드는 동일
  • JVM은 바이트코드를 한 줄 한 줄 해석하면서 실행함 (인터프리팅)
  • 요즘 JVM은 JIT(Just-In-Time Compiler)를 통해 자주 실행되는 부분은 실시간으로 머신 코드로 변환해서 실행속도도 빠름

 

 

 

 

 

Python과의 차이점은?

 

항목 Java Python
실행 방식 컴파일 → 바이트코드 → JVM 해석 인터프리팅 (바로 실행)
속도 상대적으로 빠름 (JIT 포함) 느림 (하지만 편함)
플랫폼 독립성 JVM만 있다면 어디서든 실행 가능 Python 인터프리터만 있으면 실행
실행 단위 .class (바이트코드) .py (소스코드 자체)