자바스크립트와 자바
자바스크립트란 무엇인가?
JavaScript는 크로스-플랫폼, 객체지향 스크립트 언어입니다.
작고 가벼운 언어입니다. 호스트 환경(가령, 웹 브라우저) 내에서, JavaScript는 프로그램 제어를 제공하기 위해 그 환경의 객체에 연결될 수 있습니다.
JavaScript는 Array, Date, Math와 같은 객체에 대한 표준 라이브러리와 연산자(operator), 제어 구조, 문과 같은 언어 요소의 코어 집합을 포함합니다.
코어 JavaScript는 거기에 추가 객체를 보충하여 다양한 목적으로 확장될 수 있습니다.
예를 들면 :
- 클라이언트 측 JavaScript는 브라우저와 문서 객체 모델(DOM) 을 제어하는 객체를 제공하여 코어 언어를 확장합니다. 예를 들어, 클라이언트 측 확장은 어플리케이션이 요소(element)를 HTML 폼에 두고, 마우스 클릭, 폼 입력 및 페이지 탐색 같은 사용자 이벤트에 응답하게 해줍니다.
- 서버 측 JavaScript는 서버에서 JavaScript 실행에 관련된 객체를 제공하여 코어 언어를 확장합니다. 예를 들어, 서버 측 확장은 어플리케이션이 데이터베이스와 통신하고, 한 번의 호출 정보의 연속성을 어플리케이션의 다른 곳에 제공하거나, 서버에서 파일 조작을 수행할 수 있도록 해줍니다.
JavaScript 와 Java
JavaScript 와 Java는 여러 면에서 비슷하지만 어떤 면에서는 근본적으로 다릅니다.
JavaScript 언어는 Java를 닮았지만 Java의 정적 형지정(typing)과 강한 형 검사가 없습니다.
JavaScript는 대부분의 Java 식 구문, 명명 규칙 및 기본적인 흐름 제어 구조를 따릅니다. 그것이 LiveScript에서 JavaScript로 이름이 바뀐 이유였습니다.
Java의 선언에 의해 생성되는 클래스의 컴파일-타임 시스템과는 달리, JavaScript는 숫자, 불리언, 그리고 문자열 값을 표현하는 작은 수의 자료 형을 기반으로 한 런타임 시스템을 지원합니다.
JavaScript 는 더 일반적인 클래스 기반 객체 모델 대신에 프로토타입 기반 객체 모델을 갖습니다.
프로토타입 기반 모델은 동적 상속을 제공합니다.
즉, 상속된 대상은 각각의 객체에 따라 다양할 수 있습니다.
JavaScript는 또한 어떤 특정한 선언을 요구하지 않는 함수도 지원합니다. 함수는 객체의 속성이나, 타입이 느슨하게 형지정된 채 실행되는 메소드가 될 수 있습니다.
JavaScript는 Java에 비해 매우 자유로운 형태의 언어입니다.
여러분은 모든 변수, 클래스, 및 메소드를 선언하지 않아도 됩니다.
여러분은 메소드가 public, private, 또는 protected 인지 염려할 필요가 없고 인터페이스를 구현하지 않아도 됩니다.
변수, 매개변수(parameter), 및 함수의 반환 형은 명시적으로 지정되지 않습니다.
Java는 빠른 실행과 형 안전성(type safety)을 위해 설계된 클래스 기반 프로그래밍 언어입니다.
형 안전성은, 예를 들어, 여러분이 Java 정수를 객체의 레퍼런스로 형변환(cast)하거나 Java 바이트코드를 변경하여 private 메모리에 접근할 수 없음을 의미합니다.
Java의 클래스 기반 모델은 프로그램이 오로지 클래스와 그 메소드로만 구성된다는 것을 뜻합니다.
Java의 클래스 상속과 강한 형지정은 보통 단단하게 결합된 객체 계층구조를 요구합니다.
이러한 요구는 Java 프로그래밍을 JavaScript 프로그래밍보다 더 복잡하게 만듭니다.
반면에, JavaScript는 HyperTalk 과 dBASE 같은 더 작고 동적 형지정 언어 라인(line)에서 정신이 내려옵니다.
이러한 스크립팅 언어는 더 쉬운 구문과 특별한 내장(built-in) 기능 및 객체 생성을 위한 최소 요구사항으로 인해 훨씬 더 많은 사람들에게 프로그래밍 도구를 제공합니다.
Java와 비교한 JavaScript
JavaScript |
Java |
객체지향. 객체의 형 간에 차이 없음. 프로토타입 메커니즘을 통한 상속, 그리고 속성과 메서드는 어떤 객체든 동적으로 추가될 수 있음 |
클래스 기반. 객체는 클래스 계층구조를 통한 모든 상속과 함께 클래스와 인스턴스로 나뉨. 클래스와 인스턴스는 동적으로 추가된 속성이나 메소드를 가질 수 없음 |
변수 자료형이 선언되지 않음(동적 형지정, dynamic typing) |
변수 자료형은 반드시 선언되어야 함(정적 형지정, static typing) |
하드 디스크에 자동으로 작성 불가. |
하드 디스크에 자동으로 작성 가능. |
JavaScript와 Java의 차이에 대한 더 많은 정보는, Details of the object model 장을 보세요.
JavaScript 와 ECMAScript 명세
JavaScript는 JavaScript에 기반한 표준화된 국제 프로그래밍 언어를 제공하기 위해Ecma International 에서 표준화 됩니다
— European association for standardizing information and communication systems (ECMA는 이전에 European Computer Manufacturers Association의 두문자어였습니다).
ECMAScript라 불리는 이 JavaScript의 표준화 버전은 표준을 지원하는 모든 어플리케이션에서 같은 방식으로 동작합니다.
회사들은 그들의 JavaScript 구현을 개발하기 위해 공개 표준 언어를 사용할 수 있습니다.
ECMAScript 표준은 ECMA-262 명세(specification)에서 문서화되었습니다.
JavaScript와 ECMAScript 명세 판의 여러 버전에 대한 더 많은 것을 배우려면 New in JavaScript 을 보세요.
Related links
- Learning the Web은 입문자를 위한 정보를 제공
- JavaScript Guide (이 안내서)는 JavaScript 언어와 객체에 대한 개요를 제공
- JavaScript Reference JavaScript에 관련된 자세한 참고 자료를 제공
'JavaScript > Core & 개념ㆍ용어' 카테고리의 다른 글
javascript for in 문 (1) | 2016.09.29 |
---|---|
반복문(for문, while문, do-while문) (2) | 2016.09.29 |
원시값은 기본타입으로 객체가 아니다 (0) | 2016.09.29 |
자바스크립트 DOM 이란 (0) | 2016.09.29 |
자바스크립트 기본타입(원시값=단순값) (0) | 2016.09.29 |