왜 자바 스크립트를 배워야 할까?
JavaScript 언어는 개체 기반 언어의 예로서 여러 곳에서 가르치고 있다. 자바 스크립트는 정적 언어가 아니다. 즉, 웹 페이지에서 실행하기위해 서버에서 컴파일할 필요가 없다. 웹 페이지에서 직접 실행되는 동적 언어이다. 자바 스크립트는 컴파일 하는데 특별한 소프트웨어를 필요로하지 않기때문에 선택되었다. 컴퓨터와 최신 웹 브로우저를 가지고 있는 사람은 프로그래밍을 시작할 수 있다. HTML 단독으로는 할 수 없는 사용자와 웹 페이지의 상호대화를 허용하기때문에 자바 스크립트는 HTML의 훌륭한 보조 도구가 되었다. 자바 스크립트를 완적히 숙달한다면 자바나 C, C++과 같은 다른 객체 지향언어를 습득하는 것은 그렇게 어렵지 않을 것이다.
문제점:
많은 사람들은 서로 다른 OS를 사용해서 웹 페이지에 접근한다. 또한 상호대화적인 웹 페이지를 만들려고 하지만 HTML은 단독으로 이러한 기능을 제공해주지 못한다. 따라서 이러한 웹 페이지를 만들려는 사람은 프로그램을 짜야한다. 그러나 어떤 언어를 사용할 것인가? 또 OS는 무엇인가? 맥용을 작성할 것인가 윈도우용을 작성할 것이가? 아니면 Unix용을 작성할 것인가? 바이러스문제는? 이렇게 작성한 프로그램을 다운받기 꺼리는 사람은 없는가? 무엇보다 바이러스는 쉽게 작성된다. 사람들은 자신의 중요한 데이타가 세상에 알려지는 것을 원하지않는다. 웹 페이지상의 프로그램이 보안을 위반하지는 않는가? 즉, 안전성이라는 문제가 존재한다.
해법:
자바 언어는 많은 OS, 바이러스 안전도와 정보 보안문제를 극복하도록 고안되었다. 자바는 OS 대신에 웹 브로우저에의해 실행되는 가상 언어이다. 자바는 윈도에서만큼 쉽게 맥에서도 실행된다. 컴퓨터로 바이러스가 침입하는 것은 불가능하며, 브로우저에서 실행되므로 보안을 위반할 수 없다.
그렇다. 자바 프로그램은 정적 자바나 동적 자바 스크립트로 쓰여진다. 그러면 이 두 언어사이의 차이는 무엇인가?
JavaScript 언어
자바 스크립트는 클라이언트와 서버측의 인터넷 프로그램을 개발하기위해 개발된 컴팩트한 개체 기반 스크립트 언어이다. 넷스케잎 2.0이상과 M$IE 3.0 이상은 HTML 페이지에 포함된 자바 스크립트를 직접해석할 수 있다. LiveWire로 프로그래머는 CGI 프로그램과 유사한 서버기반 프로그램을 작성할 수 있다.
웹 브로우저용 클라이언트 프로그램에서 HTML내에 포함된 자바 스크립트로 마우스의 클릭, 폼의 입력, 폼내에서 커서의 이동이나 다른 페이지로의 이동과 같은 사용자의 활동을 인식, 응답할 수 있다.
예를들어 전화번호와 우편번호를 요구하는 폼의 입력이 타당한지를 확인하는 자바 스크립트 함수를 작성할 수 있다. 자바 스크립트를 포함하는 HTML 문서는 입력한 문장을 해석할 수 있으며, 입력이 타당하지 않은 경우, 사용자에게 경고 메시지를 보여줄 수 있다. 또한 페이지를 열거나 닫을 때 특정한 동작(음악틀기, 애플릿 수행, 프러그-인과 통신과 같은)을 수행하도록 자바 스크립트를 작성할 수 있다.
JavaScript 대 Java
자바 스크립트는 자바와 비슷하지만 작성하기훨씬 쉽다. 자바 스크립트는 대부분의 자바의 문법과 기본적인 흐름제어를 지원한다. 자바는 선언에의해 만든 크래스를 컴파일해서 만든다. 그러나 자바 스크립트는 소수의 데이타 형을 기반으로 바로 실행할 수 있다. 자바 스크립트의 데이타형은 부울(참/거짓), 숫자, 문자이다.
자바는 특수한 선언을 필요로 하는 함수를 지원한다. 자바스크립트 또한 함수를 지원하지만 미리 선언할 필요는 없다. 자바스크립트내에서 함수는 개체의 특성일 수 있으며, 미리 변수를 선언하지 않고 실행할 수 있다.
자바 스크립트는 스크립트 저자가 자바 애플릿(소형 자바 프로그램)의 몇몇 유용한 특성을 이용할 수 있도록 함으로서 자바를 보완한다. 자바 스크립트의 문장은 상태를 질의하거나 애플릿, 플러그인의 성능을 변경하기위해 도출된 특성을 설정할 수 있다.
자바와 자바 스크립트는 몇몇 공통의 잇점을 갖는다. 자바는 고속 실행과 안전성을위해 고안된 확장 언어이다. 왜 안전한가? 바이러스는 자바나 자바 스크립트 프로그램을 통해 컴퓨터에 침입할 수 없다. 브로우저가 항상 이것을 감시하기때문이다. 자바
인터럽트
로 개체 레퍼런스를 만들거나 자바 바이트코드를 손상해서 메모리에 올리는 것은 불가능하기 때문이다. 이것은 브로우저가 실행하므로 어떠한 컴퓨터도 이것을 이용할 수 있다. DOS/Windogs, Mac와 Unix용 프로그램을 다르게 작성할 필요가 없다.
자바 프로그램은 배타적으로 크래스와 메소드로 구성된다. 크래스를 선언하고, 메소드를 작성하고, 안전성을 보장하기위한 자바의 요구사항때문에 자바 프로그래밍은 자바 스크립트보다 훨씬 더 복잡하다. 자바는 또한 엄격한 개체 구조를 요구한다.
반면에 자바 스크립트는 보다 쉬운 문법, 특수한 내장 함수, 개체 생성의 최소한의 요구사항때문에 훨씬 많은 사람들에게 프로그래밍 도구를 제공한다.
다음 표는 자바스크립트와 자바를 비교 및 대조한 것이다.
JavaScript
Java
클라이언트에의해 해석(컴파일이 아니라)
서버에서 컴파일된 후, 클라이언트에서 실행
개체 기반. 코드는 내장된 확장가능한 개치를 사용하지만 어떠한 크래스도 없으며, 상속도 존재하지 않는다.
개체 지향. 애플릿은 상속을 갖는 개체 크래스로 구성된다.
코드는 HTML과 병합, HTML내에 포함된다.
애플릿은 HTML과 다르다(HTML 페이지로부터 접근된다).
변수형은 선언되지 않는다.
반드시 변수형을 선언해야한다.
동적 결합. 개체 레퍼런스는 실행시 검사된다.
정적 결합. 개체 레퍼런스는 컴파일시 존재해야 한다.
안전!자동적으로 하드 디스크에 쓸 수 없다.
안전!자동적으로 하드 디스크에 쓸 수 없다.
어떤 OS의 어떤 컴퓨터에서도 실행될 수 있다.
어떤 OS의 어떤 컴퓨터에서도 실행될 수 있다.
자바스크립트 개발
자바 스크립트 저자는 크래스를 확장하거나 설명하거나 자세히 알 필요가 없다. 대신에 저자는 "visible", "color"와 같은 완성된 고수준의 특성을 인식하고 원하는 효과를 내기위해 이들 특성을 사용하면 된다.
예로서 카달로그, 다양한 색상으로 구성된 셔츠 그림, 셔츠를 주문하는 폼, 폼과 시각적으로 병합된 색상 선택도구를 포함하는 HTML 페이지를 만들려고 한다고 가정하자. 전체 페이지를 만드는 애플릿을 작성할 수도 있지만 이 경우 복잡한 프로그래밍을 수행해야 한다.
더 나운 방법은 셔츠를 보여주는 애플릿과 색상을 선택하는 애플릿을 구현함으로서 자바의 강력함을 사용하고 윤곽문서와 주문서는 HTML의 간단성을 사용하는 것이다. 색상을 가져올 때 실행되는 스크립트는 셔츠 애플릿의 색상 특성을 가져온 색상으로 설정한다. 색상을 가져오는 것과 그림을 보여주는 것과 같은 범용 구성 요소때문에 페이지 저자는 자바를 배우거나 작성할 필요가 없다. 스크립트에의해 사용된 구성요소는 같은 페이지의 다른 스크립트에의해 다시 사용될 수도 있다.