본문 바로가기

개발기술/프론트엔드

Java, Javascript, Python 비교

1. 실행환경

  java javascript python
설치 및 구성 JDK(Java Development Kit) 설치 후
환경변수 설정 필요
별도 설치 없이 브라우저에 내장된 엔진 사용
(Node.js 사용 시 Node 설치 필요)
Python 인터프리터 설치 필요
(Windows, Mac, Linux 등에서 간단히 설치 가능)

간단 설명

  1. 설치 및 구성
    • Java:  코드를 작성한 뒤Java Compiler (javac)가 바이트코드로 컴파일되어 JVM (Java Virtual Machine) 에서 플랫폼 독립적으로 실행 가능. 때문에 JDK를 반드시 설치해야 함. JVM 위에서 실행되기 때문에 런타임 오버헤드가 있음.
    • JavaScript: 웹 브라우저에 이미 엔진이 내장되어 있어, 별도 설치 없이 사용 가능. 서버나 CLI 용도로 Node.js 설치 가능
    • Python: 공식 사이트나 패키지 관리자(Conda, pip 등)를 통해 인터프리터를 설치하면 끝
    • C/C++ : C/C++ Compiler가 코드를 기계어 코드로 컴파일되어 플랫폼에 의존적입니다. 네이티브 코드로 컴파일되어 실행되므로 일반적으로 Java보다 빠름.  저수준 메모리 및 하드웨어 접근이 가능해 성능 최적화에 유리.

2. 보충 설명 (타입 시스템, 패러다임, 목적, 멀티스레딩 등)

  java javascript python
타입 시스템 정적 타입
(컴파일 시 타입 검사)
동적 타입
(런타임에 타입 결정)
동적 타입
(런타임에 타입 결정)
기반 패러다임 객체지향(OOP) 중심, 함수형 일부 지원
멀티스레딩 및 동시성 프로그래밍 지원
프로토타입 기반 객체지향
이벤트 기반 비동기 처리
(Node.js의 이벤트 루프)
객체지향(OOP) + 함수형 모두 지원
스크립트 언어로 빠른 개발 가능
주요 목적 엔터프라이즈, 모바일(Android),
대규모 서버·백엔드 시스템
웹(프론트엔드/백엔드), SPA,
실시간 애플리케이션, 크로스플랫폼 모바일/데스크톱(프레임워크 이용 시)
데이터 분석, AI/머신러닝, 웹 백엔드,
자동화 스크립트, 교육 등 범용
멀티스레딩
/ 병렬
- 내장 멀티스레딩 지원
(Thread, Executor 등)
- 대규모 병렬 처리에 적합
- 싱글 스레드 기반
- Node.js의 비동기 I/O, 이벤트 루프로 고성능 실시간 처리
- 웹 워커로 일부 병렬
- 멀티스레드 지원 (threading)
- GIL(Global Interpreter Lock) 존재
- CPU 바운드 연산은 멀티프로세싱 활용

간단 설명

  1. 타입 시스템
    • Java정적 타입 언어로 컴파일 시점에 타입을 검사해 오류를 조기에 발견
    • JavaScriptPython동적 타입 언어로 런타임에 유연하게 타입 결정, 자유로운 코딩 스타일
  2. 기반 패러다임
    • Java: 전통적인 객체지향(OOP) 언어이며, 멀티스레딩 API를 풍부하게 제공
    • JavaScript: 프로토타입을 이용한 객체지향과 이벤트 루프 기반의 비동기 처리가 특징
    • Python: 간결한 문법의 OOP + 함수형 패러다임 일부 지원, 스크립트 작업에 매우 편리
  3. 주요 목적
    • Java: 대규모 엔터프라이즈 환경(금융, 서버, 안드로이드 앱 등)에 주로 사용
    • JavaScript: 웹 브라우저서버(Node.js) 양쪽에서 동작, 동적 웹 개발과 실시간 애플리케이션에 적합
    • Python: 데이터 분석/AI부터 웹 서버, 교육, 자동화 스크립트 등 범용적으로 사용 가능
  4. 멀티스레딩 / 병렬 처리
    • Java: 언어 레벨에서 멀티스레딩을 강력히 지원, 고성능 서버 개발에 유리
    • JavaScript: 기본적으로 싱글 스레드이지만, 비동기 이벤트 루프로 실시간 처리가 빠름. 웹 워커로 병렬성 일부 보완
    • Python: GIL로 인해 멀티스레드 병렬 처리에는 제약이 있으나, 멀티프로세싱이나 asyncio 등을 활용해 병렬/비동기 처리 가능

'개발기술 > 프론트엔드' 카테고리의 다른 글

웹 서버의 정적파일 제공  (0) 2025.02.26
백엔드 개발자와 프론트 엔드 이해도  (0) 2025.02.12
DOM  (0) 2025.01.09
자바스크립트 Browser API  (0) 2024.07.08
톰캣 설치를 통한 JSP 사용법  (0) 2024.07.01