Java와 JavaScript의 차이점은 무엇인가요?

웹 개발자 제레미 키스는 2009년에 “Java는 JavaScript와 같지 않다. 햄과 햄스터의 관계와 같다”고 말했습니다. 그 비유의 정확성은 토론의 여지가 있지만, 그 뒤에 있는 정신은 확고합니다: Java와 JavaScript는 공통의 언어적 뿌리를 공유하고 있지만, 매우 다른 프로그래밍 언어입니다. 수년 동안 이 두 언어는 조금 더 겹쳐져 왔지만, JavaScript는 여전히 웹사이트를 인터랙티브하게 만드는 지배적인 프론트엔드 언어로 남아 있으며, Java는 서버 사이드 및 애플리케이션 프로그래밍에 여전히 인기가 있습니다. 개발자를 고용하려 하거나, 코딩을 배우거나, 사이트/애플리케이션을 구축하려고 한다면, Java와 JavaScript의 차이를 아는 것이 중요합니다.
다른 역사
TLDR: Java가 먼저 나왔습니다. Java와 유사하지만 기술적으로 관련이 없는 JavaScript는 다른 필요를 충족하기 위해 등장했습니다.

Java는 제임스 고슬링과 Sun Microsystems의 연구 팀에 의해 1991년에 개발이 시작되어 1995년에 발표되었습니다. 그들은 여러 운영 체제에서 실행할 수 있는 객체 지향 언어를 개발했습니다. 이후 이 언어는 전화기부터 NASA 탐사선까지 다양한 장치에서 사용되었으며, 2016년까지 Java Applet을 통해 광범위한 멀티미디어 웹 기술(Flash와 JavaScript도 여전히 사용됨)이 있었습니다.

JavaScript도 1995년에 출시되었지만, 넷스케이프의 브렌던 아이흐가 웹 페이지를 브라우저가 로드한 후 인터랙티브하게 만들기 위해 10일 안에 작성했습니다. 초기에는 1995년 5월에 Mocha라고 불렸고, 9월에 넷스케이프 내비게이터와 함께 LiveScript로 출시되었으며, 1995년 12월에 JavaScript로 변경되었습니다. 이 언어는 Java와 유사한 경량 스크립팅 대응 언어로 만들어졌기 때문에 이름이 실제로 의미가 있고, 마케팅 측면에서도 좋은 선택이었습니다. 이후 그것은 현대 인터넷의 세 가지 주요 구성 요소, HTML과 CSS와 함께 성장했습니다.
추가 읽기: Chrome 및 Firefox에서 침입성 JavaScript 차단하는 방법
기술적 차이
Java와 JavaScript는 모두 객체 지향 프로그래밍 언어입니다. 즉, 프로그래머는 정보의 덩어리를 만들어 다른 덩어리와 연결하여 작동하게 만들 수 있습니다. 예를 들어 “고양이” 객체는 고양이의 이름, 색상 및 나이에 대한 정보와 함께, 고양이가 할 수 있는 행동 목록(예: 울다, 먹다, 자다)을 포함할 수 있습니다. 그 정보는 프로그래머가 고양이 정보 출력 또는 특정 작업을 수행하도록 만들 수 있습니다.
이것이 가장 큰 유사점입니다. 그러나 차이점은 그 이후로 쌓입니다.
1. Java는 컴파일되고, JavaScript는 인터프리트됨

Java는 “한 번 작성하면 어디서나 실행”되는 시스템을 가지고 있습니다. 이렇게 작동합니다:
- Java로 코드를 작성합니다.
- 코드를 컴퓨터가 읽을 수 있는 바이트코드로 컴파일합니다.
- Java 바이트코드를 장치에서 실행하는 가상 컴퓨터인 Java 가상 머신에서 코드를 실행합니다.
이것은 프로그램을 변경하고 싶을 때마다 Java 코드에서 변경한 후 전체 프로그램을 다시 바이트코드로 변환해야 함을 의미합니다.

그러나 JavaScript는 작성된 대로 웹 브라우저에서 읽을 수 있습니다. 브라우저는 각 줄을 확인하고 실행합니다. 이것은 더 유연하고 변경이 용이하게 하지만, 기계가 읽을 수 있는 언어에서 직접 실행되지 않기 때문에 성능 면에서 컴파일된 코드에 비해 느립니다.
2. 정적 타입(Java) vs. 동적 타입(JavaScript)
프로그래밍 언어의 큰 부분은 변수를 사용하여 값을 저장하는 것입니다. Java는 정적 타이핑 언어로, 모든 변수에 포함된 값의 종류를 명시해야 하며, 그 후에는 고정됩니다. 예를 들어:
int a_number =42;
char a_letter = ‘z';“int”는 숫자여야 하고 “char”는 문자여야 합니다.

그러나 JavaScript는 동적 타이핑 언어로, 어떤 변수도 어떤 데이터 유형을 포함할 수 있으며, 문제 없이 변경할 수 있습니다. 아래의 코드는 잘 실행됩니다:
let number =42;
let a_letter = “z”;
Java는 여기에서 속도와 디버깅의 장점이 있습니다: 변수 유형을 선언하면 문제를 더 빠르게 찾을 수 있으며, 코드가 더 빨리 실행될 수 있습니다. 그러나 대부분의 개발자에게 있어 JavaScript는 더 빠르게 작업할 수 있습니다.
3. 동시성
Java는 여러 스레드를 동시에 실행할 수 있어 여러 작업을 동시에 수행할 수 있습니다.

반면 JavaScript는 이벤트 루프를 사용하여 끝까지 도달할 때까지 해야 할 일의 스택을 처리합니다. 다시 말해, Java는 여기서 성능상 장점이 있습니다.
4. Java는 클래스가 있고, JavaScript는 프로토타입이 있다

Java와 JavaScript는 정보를 저장하기 위해 객체를 사용한다는 것을 기억하세요. 두 언어 모두 객체가 다른 데서 속성을 가져올 수 있는 “상속”을 사용합니다. Java에서는 속성을 클래스에서 가져옵니다. 클래스는 본질적으로 객체를 구축하는 방법에 대한 지침이 있는 청사진입니다. JavaScript에서는 프로토타입 또는 새 객체를 생성하기 위해 복사할 수 있는 객체를 사용하여 새로운 객체가 만들어집니다.
기본적으로, JavaScript의 모든 객체는 프로토타입이 될 수 있는 반면, Java는 객체를 생성할 수 있는 클래스를 만들어야 합니다. 이전의 예를 언급하자면, Java는 고양이를 만드는 방법에 대한 지침을 제공하는 반면, JavaScript는 단순히 그것을 복제합니다.
나는 어떤 언어가 필요할까?

기술적인 세부 사항이 지루하게 느껴졌다면, 이제 다시 주의 깊게 들을 수 있습니다! Java와 JavaScript 중에서 선택하려는 경우, 그리 어렵지 않습니다.
일반적으로 JavaScript는 다음을 위해 사용됩니다:
- 웹사이트, 웹 앱 및 기타 프론트엔드 인터페이스
- 간단한 웹 서버/백엔드 작업 (Node.js와 함께)
- 브라우저 기반 게임 및 애니메이션 생성
- Electron이나 다른 크로스 플랫폼 프레임워크에서 개발된 앱/게임/프로그램
그러나 Java는 다음을 위해 사용하는 것이 좋습니다:
- 안드로이드 앱
- 데스크탑 애플리케이션
- 서버 사이드 애플리케이션
- 전화기, IoT 장치 및 기타 하드웨어용 코드 작성
배울 언어를 선택하려면 목표에 따라 달라집니다. 프로그래밍 경력을 쌓고 프로그래밍 기초를 차지하고 싶거나 비웹 애플리케이션에서 작업하고 싶다면, Java는 더 기술적으로 엄격한 언어로 간주됩니다. 또한 세계에서 가장 널리 사용됩니다.
그러나 웹 개발에 진입하고자 하거나 주로 웹사이트와 웹 앱에서 작업할 계획이라면, JavaScript는 아마도 “필수” 기술일 것입니다. 장기적으로 봤을 때 두 언어를 모두 배우는 것이 해롭지 않으며, 두 언어 모두 프로그래머로서 더 나은(그리고 더 시장성 있는!) 능력을 키울 수 있는 개념을 포함하고 있습니다.
게임 개발에 관심이 있다면 이 프로그래밍 언어들이 더 적합할 것입니다.