1. 실행환경
java | javascript | python | |
설치 및 구성 | JDK(Java Development Kit) 설치 후 환경변수 설정 필요 |
별도 설치 없이 브라우저에 내장된 엔진 사용 (Node.js 사용 시 Node 설치 필요) |
Python 인터프리터 설치 필요 (Windows, Mac, Linux 등에서 간단히 설치 가능) |
간단 설명
- 설치 및 구성
- 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 바운드 연산은 멀티프로세싱 활용 |
간단 설명
- 타입 시스템
- Java는 정적 타입 언어로 컴파일 시점에 타입을 검사해 오류를 조기에 발견
- JavaScript와 Python은 동적 타입 언어로 런타임에 유연하게 타입 결정, 자유로운 코딩 스타일
- 기반 패러다임
- Java: 전통적인 객체지향(OOP) 언어이며, 멀티스레딩 API를 풍부하게 제공
- JavaScript: 프로토타입을 이용한 객체지향과 이벤트 루프 기반의 비동기 처리가 특징
- Python: 간결한 문법의 OOP + 함수형 패러다임 일부 지원, 스크립트 작업에 매우 편리
- 주요 목적
- Java: 대규모 엔터프라이즈 환경(금융, 서버, 안드로이드 앱 등)에 주로 사용
- JavaScript: 웹 브라우저와 서버(Node.js) 양쪽에서 동작, 동적 웹 개발과 실시간 애플리케이션에 적합
- Python: 데이터 분석/AI부터 웹 서버, 교육, 자동화 스크립트 등 범용적으로 사용 가능
- 멀티스레딩 / 병렬 처리
- 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 |