JavaScript

Development/JavaScript 2012. 1. 23. 20:39

자바스크립트(JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 사이트에서의 사용으로 많이 알려졌지만, 다른 응용프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. 자바스크립트가 썬 마이크로시스템즈의 자바와 구문(syntax)이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문을 바탕했기 때문이고, 자바와 자바스크립트는 직접적인 관련성이 없다. 이름과 구문 외에는 자바보다 셀프와 유사성이 많다.

2008년 현재, 가장 최근 버전은 자바스크립트 1.8이고, 파이어폭스 3에서 지원된다. 표준 ECMA-262 3판에 대응하는 자바스크립트 버전은 1.5이다.ECMA스크립트는 쉽게 말해 자바스크립트의 표준화된 버전이다. 모질라 1.8 베타 1이 나오면서 XML에 대응하는 확장 언어인 E4X(ECMA-357)를 부분 지원하게 되었다. 자바스크립트는 브라우저마다 지원되는 버전이 다르며, 가장 범용적으로 지원되는 버전은 1.5이다.

목차

  [숨기기

[편집]자바와 자바스크립트, 그리고 J스크립트

라이브스크립트의 이름이 자바스크립트로 변경된 것은 대략 넷스케이프가 자사의 넷스케이프 네비게이터 웹 브라우저에 자바 기술에 대한 지원을 포함하기 시작할 즈음이다. 자바스크립트는 1995년 12월 출시된 넷스케이프 2.0B3에서부터 공개, 채택되었다. 자바스크립트라는 이름은 상당한 혼란을 가져왔다. 이것은 자바와 자바스크립트 간에는 구문이 유사하다는 점(양쪽 모두 C에 바탕을 두었기 때문에) 외에는 실제 관련성이 없었기 때문이다. 두 언어는 의미론적으로 매우 다르고, 특히 각각의 객체 모델은 관련성이 없는데다가 상당 부분이 호환되지 않는다.

웹 페이지 향상 언어로서 자바스크립트의 성공에 자극 받은 마이크로소프트는 J스크립트로 알려진 호환 언어를 개발하게 되었다. J스크립트는 1996년 8월에 출시된 인터넷 익스플로러 브라우저 3.0부터 지원 되기 시작했다. IE 브라우저에서의 자바스크립트 사용은 실제로는 J스크립트의 사용을 의미하는 것이었다. 이에 대한 표준화 요구는 ECMA스크립트에 대한 ECMA-262 표준의 기반이 되었으며, 1996년 11월 이후 세 번째 판까지 출판됐다. 자바스크립트와 함께 자주 쓰이는 용어인 DOM은 사실 ECMA스크립트 표준의 일부가 아니며, 그것은 자체로 하나의 표준이고 XML에 기반한다.

[편집]헬로 월드 프로그램

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
    <title>자바스크립트 페이지</title>
  </head>
  <body>
    <script type="text/javascript">
      document.write("<p>Hello World!</p>");
    </script>
    <noscript> 
      <p>브라우저가 자바스크립트 기능을 지원하지 않거나 자바스크립트 기능이 꺼져 있습니다.</p>
    </noscript>
  </body>
</html>

[편집]같이 보기

[편집]참고 문헌

  • Nigel McFarlane: Rapid Application Development with Mozilla, Prentice Hall Professional Technical References, ISBN 0-13-142343-6
  • David Flanagan, Paula Ferguson: JavaScript: The Definitive Guide, O'Reilly & Associates, ISBN 0-596-00048-0
  • Danny Goodman, Scott Markel: JavaScript and DHTML Cookbook, O'Reilly & Associates, ISBN 0-596-00467-2
  • Danny Goodman, Brendan Eich: JavaScript Bible, Wiley, John & Sons, ISBN 0-7645-3342-8
  • Andrew H. Watt, Jinjer L. Simon, Jonathan Watt: Teach Yourself JavaScript in 21 Days, Pearson Education, ISBN 0-672-32297-8
  • Thomas A. Powell, Fritz Schneider: JavaScript: The Complete Reference, McGraw-Hill Companies, ISBN 0-07-219127-9
  • Scott Duffy: How to do Everything with JavaScript, Osborne, ISBN 0-07-222887-3
  • Andy Harris, Andrew Harris: JavaScript Programming, Premier Press, ISBN 0-7615-3410-5
  • Joe Burns, Andree S. Growney, Andree Growney: JavaScript Goodies, Pearson Education, ISBN 0-7897-2612-2
  • Gary B. Shelly, Thomas J. Cashman, William J. Dorin, Jeffrey Quasney: JavaScript: Complete Concepts and Techniques, Course Technology,ISBN 0-7895-6233-2
  • Nick Heinle, Richard Koman: Designing with JavaScript, O'Reilly & Associates, ISBN 1-56592-300-6
  • Sham Bhangal, Tomasz Jankowski: Foundation Web Design: Essential HTML, JavaScript, CSS, PhotoShop, Fireworks, and Flash, APress L. P., ISBN 1-59059-152-6

[편집]바깥 고리


===================================================================================

JavaScript (자바 스크립트)는 객체 지향 스크립트 언어 이다. 주로 웹 브라우저 같은 클라이언트 사이드에서 구현된 동적 웹사이트 구축, RIA 와 같은 고급 사용자 인터페이스 개발에 사용된다.

목차

  [ 숨기기 ] 

특징 편집 ]

JavaScript는 프로토 타입 기반 의 객체 지향 프로그래밍 언어 이다. 대부분의 경우 C 언어 와 비슷한 절차적 언어 와 같은 스타일로 작성되지만, 일류 함수 를 지원하는 (함수를 일류 개체 로 취급할) 같은 함수형 언어 의 성질도 가지고있다. 그런 유연한 설계에서 일부 응용 프로그램 에서는 매크로 언어로 사용되고있다 [1] .

Aptana 와 Eclipse , NetBeans , IntelliJ IDEA 같은 통합 개발 환경은 JavaScript를 지원하고 대규모 개발이 가능하게되어있다. 또한 각 처리 계의 구현의 차이에 의한 호환성 문제는 Prototype JavaScript Framework 등의 JavaScript 라이브러리를 흡수함으로써 해결이 도모되고있다. 또한 Ext JS 등 본격적인GUI 라이브러리의 등장으로 데스크톱 응용 프로그램과 손색없는 사용자 인터페이스 구축이 가능하게되었다.

또한 Direct Web Remoting (DWR)와 같은 기술의 발달로 클라이언트 서버 간의 통신이 현저하게 쉽게 된 것과 Jetty 같은 응용 프로그램 서버가 Comet이용시 메모리 사용량을 절감했기 때문에 서버에서 클라이언트에 정보 푸시 배달 실용적되었다.

자주 혼동되지만, 프로그래밍 언어 Java 는 JavaScript 와는 별개이다. 그러나 JavaScript에서 Java 클래스의 메서드를 호출할 수 LiveConnect 인터페이스 ( Netscape 4에서 구현되었지만, Mozilla 2.0에서 제거) 등 JavaScript는 Java의 영향을 받고있다.

JavaScript는 스레드 제어 명령을 지원하지 않기 때문에 멀티 스레드 코드를 쓸 수 어렵지만 WHATWG 에 의해 Web Workers [2] API의 개발이 진행되고 있으며, 백그라운드 처리와 비동기 입출력 제어 쉽게 실현할 수있게된다.

역사 편집 ]

탄생 편집 ]

JavaScript는 넷스케이프 커뮤니케이 션 의 브랜든 아이크 에 의해 개발되고 Netscape Navigator 2.0에서 구현되었다. 개발 당초는 LiveScript 라고했지만, 1995 년 에 썬 마이크로 시스템즈 (현 오라클 )가 개발한 프로그래밍 언어 Java 당시 큰 주목을 받고 있으며, 넷스케이프와 썬 마이크로 시스템즈가 업무 제휴하고 있던 일로 도 있었기 때문에 JavaScript 라는 이름으로 변경되었다 [3] [4] .

1996 년 에 마이크로 소프트 의 Internet Explorer 3.0에 탑재되게되면 그 간편함에서 JavaScript는 급속하게 보급되어 간다. 1997 년 통신에 관한 표준을 개발하는 국제 단체 Ecma 인터내셔널 에서 JavaScript의 핵심 사양이 ECMAScript 으로 표준화된 [5] 많은 웹 브라우저에서 사용할 수있게되었다.

넷스케이프는 웹 애플 리케이션 개발 언어로 자사의 서버 제품 구현 LiveWire JavaScript도 발표했지만 [4] , 이쪽은 그다지 보급되지 않았다.

JavaScript의 등장 초기에는 브라우저 벤더 사이에서 언어 사양의 독자 확장을하고 있었기 때문에, 브라우저 간의 호환성이 매우 낮았다. 그러나 현재는 ECMAScript의 개발에 의해 구현 사이의 호환성 향상, DOM 등 관련 사양 구현에 대한 호환성도 비교적 높다. 단, 현재에도 특정 브라우저에서만 실행할 수없는 ECMAScript 이전 이전 구문과 브라우저 자체 DOM을 사용한 코드가 사용되는 경우가있어, 호환성 문제가 완전히 해결된 것은 아니다.

현재 편집 ]

시장 브라우저 간의 호환성이 어느 정도 확립된 2000 년 무렵에는 Google 과 Amazon 등의 대기업도 JavaScript를 적극적으로 이용하기 시작했다. 2005 년 , 마이크로 소프트가 개발한 JavaScript 비동기 통신을 이용한 기술로 Ajax 라는 이름이 붙은하여 강력한 웹 애플 리케이션 개발 언어의 하나로 다시 주목을 모았다. Ajax를 사용하는 대표적인 응용 프로그램으로 Google지도 [1] 과 Amazon Diamond Search [2] 등이있다.

또한 최근에는 Mozilla Firefox 를위한 기능 의 Greasemonkey 와 Opera 의 표준 기능, Google Chrome 의 확장 등에서 "사용자 스크립트"라는 웹 페이지로드시 실행할 수있는 JavaScript 응용 프로그램이 등장하고있다.

이전 인터프리터 방식으로 실행되는 것이 일반적 이었기 때문에 실행 속도는 그다지 빠르지 않았다, 현재는 JIT 컴파일 등을 이용한 다양한 최적화가 이루어지고 있으며, 각 웹 브라우저 벤더 모두 속도 을 도모하고 격전을 벌이고있다. JavaScript의 JIT 컴파일러 를 참조.

JavaScript 2.0 편집 ]

2000 년부터 2003 년에 걸쳐 현재 JavaScript의 후속 버전이되는 JavaScript 2.0을 만들려고하는 움직임이 있었지만, 넷스케이프와 마이크로 소프트의 대립에서 결정되지 않았다. 당시 넷스케이프가 제안했던 방안은 어도비 의 ActionScript 2.0에 인계되어 마이크로 소프트 방안은 JScript. NET 로 인계되었다. 다음 ECMAScript 4 개발이 진행되어 2006 년 시점에서 Mozilla Foundation 은 이에 따라 JavaScript 2.0을 창조하는 것을 표명하고 있었다. Mozilla는 ECMAScript 4 개발에 임하고, Python 의 문법을 일부 가져온 방안을 제안하고, 자신도 이것을 구현하고있다 [6] .

그러나 다음 ECMAScript의 표준화 작업이 Mozilla, Adobe, Opera, Google들이 추천하는 ECMAScript 4와 Microsoft, Yahoo!들이 추천하는 ECMAScript 3.1 사실상 분열했다 영향으로 2008 년 8 월 큰 정책 전환 가 있고, JavaScript 2.0 기반을 수립하는 프로젝트로 새롭게 " ECMAScript Harmony "가 발족했다. 이 프로젝트는 ECMAScript 3.1을 기반으로하면서도, ECMAScript 4에 들어갈 예정이었다 기능의 일부를 캡처 형태로 표준을 책정할 예정이다.또한 ECMAScript 4 도입된 네임 스페이스 패키지와 같은 기능은 구현되지 않는다. [7]

보안 제한 편집 ]

일반적으로 웹 브라우저 구현의 XMLHttpRequest 와 인라인 프레임을 사용한 통신은 보안 제한에서 다른 도메인의 리소스에 액세스할 수 없다 ( 동일 기원 정책 ). 따라서 필요한 경우에는 일종의 프록시 서버 를 통해 액세스하는 방법, Adobe Flash 를 사용 방법 동적으로 script 요소를 생성하는 방법 등이 사용된다. JSONP 를 참조.

문법 편집 ]

Hello world 편집 ]

JavaScript 언어 사양으로 표준 스트림 을 제공하지 않으므로 Hello world 프로그램 작성은 구현에 따라 다르다.

alert ( "Hello, world!" ) ;  / / 경고
console. log ( "Hello, world!" ) ;  / / JavaScript 콘솔이 유효한 경우
document. write ( "Hello, world!" ) ;  / / DOM 이전 약간 오래된 작성
/ / <div id="stdout"> </ div>이라는 요소가 존재한다고 ... 
document. getElementById ( 'stdout' ) . textContent  =  "Hello, world!" ;  / / DOM을 이용한 작성 
document. getElementById ( 'stdout' ) . innerText    =  "Hello, world!" ;  / / 그러나 Internet Explorer는 textContent가 없기 때문에, innerText를 사용
print ( "Hello, world!" ) ;  / / SpiderMonkey 등

기타 편집 ]

/ *
 * DOM 이전 JavaScript
 * /
 
var username =  prompt ( "이름을 입력하세요" ,  "" ) ;  / / 입력을 요구하는
 
if  ( username ! =  ""  )  {  / / 입력이있는 경우 
    document. write ( username ,  "님 환영합니다!" ) ;  / / 화면에 출력 
} 
else  {  / / 입력이 없으면 
    document. write ( " 무명씨 환영합니다! " ) ;  / / 화면에 출력 
}
/ *
 * JavaScript에서 상속 방법
 * /
 
Function Dog ( )  {  / / Dog 클래스의 생성자 - 단순한 함수이다 
    this . state      =  "sitting" ;   / / state 속성을 설정 
    this . showState  =  function ( ) {  / / showState 메서드를 정의 
        alert ( "I am "  +  this . state  +  "" ) ; 
    } ; 
}
 
var Hachi =  New Dog ( ) ;  / / Dog 클래스에서 인스턴스 hachi을 생성 
hachi. showState ( ) ;      / / "I am sitting"가 출력된다
 
Function LazyDog ( )  {  / / LazyDog 클래스 생성자 
    this . state  =  "sleeping ..." ;  / / state 속성을 재정의 
}
 
LazyDog. prototype  =  New Dog ( ) ;  / / LazyDog은 Dog를 상속 (인스턴스를 상속하게주의)
 
var pochi =  New LazyDog ( ) ;  / / LazyDog에서 인스턴스 pochi을 작성 
pochi. showState ( ) ;          / / "I am sleeping ..."가 출력된다.

JavaScript에서 클래스는 생성자에 의해 정의된다. 프로토 타입 기반의 객체 지향 프로그래밍 언어에서는 원형 (prototype)이되는 인스턴스를 상속하여 새로운 클래스를 만든다. 따라서 상속을하려면 적어도 하나의 인스턴스를 생성할 필요가있다.

DOM 편집 ]

DOM은 HTML과 XHTML ( XML )로 작성된 문서에 액세스하기위한 API 이다. DOM은 많은 프로그래밍 언어에서 라이브러리와 모듈로 구현되어 있지만, 웹 브라우저와 통합하는 JavaScript의 처리 계에서는 특히 언어 사양으로 내장되어 있으며 (단, SpiderMonkey 등 단체의 JavaScript 엔진에 포함되지てい없다), DOM 객체를 통해 액세스할 수있다.

버전 및 브라우저 대응표 편집 ]

버전날짜규격Netscape 
Navigator
Mozilla 
Firefox
Internet 
Explorer
OperaSafariGoogle 
크롬
1.0 1996 년 3 월 2.0 3.0
1.1 1996 년 8 월 3.0
1.2 1997 년 7 월 4.0-4.05
1.3 1998 년 10 월 ECMA - 262 1 St Edition / ECMA - 262 2 ND Edition 4.06 - 4.7x 4.0
1.4 Netscape 
Server
1.5 2000 년 11 월 ECMA - 262 3 RD Edition 6.0 1.0 5.5 (JScript 5.5), 
6 (JScript 5.6), 
7 (JScript 5.7), 
8 (JScript 5.8)
6.0, 
7.0, 
8.0, 
9.0
1.6 2005 년 11 월 1.5 + Array extras + Array and String generics + E4X 1.5 3.0, 3.1
1.7 2006 년 10 월 1.6 + Pythonic generators + Iterators + let 2.0 3.2, 4.0 1.0
1.8 2008 년 7 월 1.7 + Generator expressions + Expression closures 3.0
1.8.1 1.8 + Minor Updates 3.5
1.9 1.8.1 + ECMAScript 5 [8] Compliance 4

[9]

JavaScript 라이브러리 편집 ]

대표적인 JavaScript 라이브러리는 다음과 같다.

관련 항목 편집 ]

각주 편집 ]

도움말 ]
  1. ^ 예를 들어 Adobe Acrobat 은 JavaScript의 매크로 기능을 탑재하고있다.
  2. ^ Web Workers
  3. ^ Marc Andreessen " INNOVATORS OF THE NET : BRENDAN EICH AND JAVASCRIPT " 2008 년 1 월 22 일 보기.
  4. b NETSCAPE AND SUN ANNOUNCE JAVASCRIPT, THE OPEN, CROSS - PLATFORM OBJECT SCRIPTING LANGUAGE FOR ENTERPRISE NETWORKS AND THE INTERNET " 2008 년 1 월 22 일 보기.
  5. ^ ECMA 262, ISO / IEC 16262, JIS X 3060
  6. ^ Python and JavaScript "(영어). Brendan 's Roadmap Updates ( 2006 년 2 월 19 일 ) 2007 년 9 월 5 일 열람.
  7. ^ JavaScript 2.0은 ECMAScript 3.1 기반으로, ECMAScript 4 양보 - 마이코 저널
  8. ^ 고토 대지 ( 2009 년 12 월 9 일 ). " JavaScript 브라우저 비호 환성 해결 전망 "journal.mycom.co.jp. 2009 년 12 월 9 일 열람.
  9. ^ John Resig " Versions of JavaScript "Ejohn.org. 2009 년 5 월 19 일 보기. 

외부 링크 편집 ]

'Development > JavaScript' 카테고리의 다른 글

JSON 예제 2 - String에서 읽기  (0) 2012.04.13
JSON 예제 1  (0) 2012.03.28
JSON 소개  (0) 2012.03.27
window.onload - 페이지완전히 로딩후 처리하기위한 스크립트  (0) 2012.01.25
ECMAScript  (0) 2012.01.23
Posted by linuxism
,