1.자바스크립트의 탄생
1995년 당시 엄청난 시장 점유율로 웹 브라우저 생태계를 지배하고있던 넷스케이프 커뮤니케이션즈
Netscape - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search American computer services company Netscape Communications Corporation (originally Mosaic Communications Corporation) was an American independent computer services company with headqua
en.wikipedia.org
정적인 HTML 을 동적으로 표현하기위해 경량의 프로그래밍 언어를 도입하기로 결정
그래서 탄생한것이 브렌던아이크(Brendan Eich)가 개발한 자바스크립트
자바스크립트는 1996년 3월 넷스케이프 커뮤니케이션즈의 웹 브라우저인 Netscape Navigator 2 에 탑재 되었고
Netscape Navigator 2 - Wikipedia
Netscape Navigator 2 was a proprietary web browser released by Netscape Communications Corporation as its flagship product. Versions were available for Microsoft Windows, Apple Macintosh, Linux, IRIX, HP-UX, AIX, Solaris, SunOS, and FreeBSD. The browser in
en.wikipedia.org
"Mocha" 라는 이름을 가졌다가, "Live Scrpit" 로 9월에 이름이변경되었고, 12월에 "JavaScript" 가 되었다
(여담: 재밌는 이야기가 있다 많은 사람들이 Java 와 JavaScrpit를 헷갈리곤하는데 자바스크립트가 만들어진 시기에
자바스크립트는 정말 몇일 안걸려서 만들어진 프로그래밍언어였고 , 동시에 Java 는 굉장한 인기를 끌고있던 언어였는데
Java 의 명성을 이용하기위해 Java Script 로 이름을 지었다는 카더라 통신이 있다
그냥어디서 주워들었기때문에 ...신경쓰지마시길)
이렇게 자바스크립트는 모든 브라우저의 표준 프로그래밍 언어가 되었다
하지만 자바스크립트의 성장기는 굉장히 다사다난하다 ㅎㅎ
2.자바스크립트의 파편화와 표준화
1996년 8월 MS는 자바스크립트의 파생버전인 "JScript" 를 Internet Explorer 3.0 에 사용했다
여기서 문제는 JScript와 자바스크립트가 표준화되지 못하고 적당히 호환되었다는 것
본인들의 브라우저 시장 점유율을 올리기위해 본인들 브라우저에서만 동작하는 기능을 경쟁을하며 추가하기시작했다는것이다
이 문제는 브라우저에 따라 웹페이지가 동작하지않는 크로스 브라우징 이슈를 야기시켰고
모든 브라우저에서 동작하는 웹브라우저를 만드는것이 굉장히 어려워졌다
이 문제로인해 자바스크립트의 파편화를 방지하고 , 모든 브라우저에서 동일하게 동작하는 표준화된 자바스크립트에 대한
필요성이 요구되게 시작했다
1996년11월 넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널 에
자바스크립트의 표준화를 요청했다
Home - Ecma International
Ecma International is an industry association dedicated to the standardization of information and communication systems Ecma is driven by industry members to meet their needs, providing a healthy competitive landscape based on differentiation of products a
www.ecma-international.org
1997년 7월 , ECMA-262라 불리는 표준화된 자바스크립트 초판(ECMAScript 1)의 명세(specification)가 완성되었고 상표권 문제로 자바스크립트는 ECMAScript가 되었다
하지만 1999년 ECMAScript 3(ES3)이 공개되었고 10년 만인 2009년 출시된 ECMAScript 5(ES5)는 HTML5와 함께 출현한 표준안이다
2015년 ECMAScript 6(ECMAScript 2015)가 공개되었고 범용 프로그래밍 언어로서 갖추어야 할 let/const 키워드, 화살표 함수, 클래스, 모듈 등과 같은 기능들을 많이 추가하는 큰 변화가 있었다
ES6 이후의 버전업은 작은 기능의 추가 레벨로 매년 공개할 것으로 예고되었다. ECMAScript 버전별 특징은 아래와 같다.
Module | PoiemaWeb
모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다. 모듈은 세부 사항을 캡슐화하고 공개가 필요한 API만을 외부에 노출한다. ES6 모듈은 단 두 개의 키워드 e
poiemaweb.com
Arrow function | PoiemaWeb
Arrow function(화살표 함수)은 function 키워드 대신 화살표(=>)를 사용하여 간략한 방법으로 함수를 선언할 수 있다. 하지만 모든 경우 사용할 수 있는 것은 아니다. 문법은 아래와 같다.
poiemaweb.com
Class | PoiemaWeb
자바스크립트는 프로토타입 기반(prototype-based) 객체지향형 언어다. 비록 다른 객체지향 언어들과의 차이점에 대한 논쟁들이 있긴 하지만, 자바스크립트는 강력한 객체지향 프로그래밍 능력들을
poiemaweb.com
let, const | PoiemaWeb
ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 아래와 같은 특징이 있다. 이는 다른 언어와는 다른 특징으로 주의를 기울이지 않으면
poiemaweb.com
3. 자바스크립트 성장의 역사
초기에 자바스크립트는 웹페이지의 보조적인 기능을 수행하기위해 한정적으로만 사용되었다
이 시기 대부분의 로직은 주로 웹서버에서 실행되었고, 브라우저는 서버로부터 전달받은 HTML 과 CSS 를 단순히렌더링 하는 수준
1999년 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 데이터를 교환할수있는 통신 기능인 Ajax 가 XMLHttpRequest이라는 이름으로 등장
이전의 웹페이지들은 서버로부터 완전한 HTML을 전송받아 웹 페이지 전체를 렌더링하는 방식으로 동작했다
화면이 전환되면 서버로부터 새로운 HTML 을 전송받아와서 처음부터 렌더링하는 작업이 필요했다
이것은 굉장한 리소스 낭비다, 변경이 필요없는 부분까지 새로받아와서 렌더링하기때문에
이러한 방법때문에 화면전환시 화면이 깜빡이는 현상이 생기기 시작했다
Ajax 의 등장은 이전의 문제점을 획기적으로 수정해나아갔다, 웹페이지의 변경이 필요하지않은 부분은 렌더링 하지않고
필요한 데이터만 받아서 렌더링하는 형태가 가능해지기 시작한것이다
이로인해 웹브라우저에서도 부드러운 화면전환이 가능하게되었다
2005년 구글이 발표한 Google Maps는 웹 애플리케이션 개발 프로그래밍 언어로서 자바스크립트의 가능성을 확인하는 계기였다
Google Maps
Find local businesses, view maps and get driving directions in Google Maps.
www.google.com
웹 브라우저에서 자바스크립트와 Ajax 를 기반으로동작하는 Google Maps 가 데스크탑 애플리케이션과 비교해도 부족함점이 없을정도로
엄청난 퍼포먼스와 부드러운 화면전환을 보여줬기때문에
2006년 jQuery 의 등장으로 다소 번거로움이 있었던 DOM(Document Object Model) 을 보다 쉽게 제어할수있었고
크로스 브라우징 이슈 도 어느정도 해결이 되었다
jQuery는 넓은 사용자층을 확보하게 되었다, 당시 조금은 까다로웠던 자바스크립트보다 jQuery 를 선호하는 개발자들이 생기기도 했다
Google Maps 을 통해 가능성을 확인한 자바스크립트로 웹어플리케이션을 만들려는 시도가 많아지면서
보다 빠르게 동작하는 자바스크립트 엔진이 필요하게되었다
2008년 등장한 구글의 V8 자바스크립트 엔진은 이러한 요구에 부합하는 빠른 성능을 보여주었다
V8 JavaScript engine
What is V8? V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and in Node.js, among others. It implements ECMAScript and WebAssembly, and runs on Windows 7 or later, macOS 10.12+, and Linu
v8.dev
V8 자바스크립트 엔진의 등장으로 자바스크립트는 데스크탑 애플리케이션과 유사한 UX 를 제공하는 웹애플리케이션 개발
프로그래밍 언어로 자리를 잡아갔다
V8 자바스크립트 엔진으로 시작된 자바스크립트의 발전으로 과거 웹 서버에서 수행되던 역할들이 클라이언트로 이동했고
웹 애플리케이션의 프론트엔드 영역이 주목받기시작되었다
2009년 브라우저에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서 동작시킬수 있는 자바스크립트 실행 환경인
Node.js의 등장으로 자바스크립트는 웹브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용되는 범용 언어가 되었다
Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
웹 브라우저에서만 동작하는 반쪽짜리 프로그래밍언어가 이제 프론트는 물론 백엔드 까지 가능하게 되었다
자바스크립트의 몸집이 커지면서 개발규모와 복잡도도 상당히 높아져 갔다, 이러한 필요에 따라 많은패턴과 라이브러리들이 생겼다
개발에는 많은도움을 줬지만 유연하면서 확장이 쉬운 애플리케이션 아키텍처 구축을 어렵게 하였고, 프레임워크가 등장하였다
SPA(Single Page Application)가 대중화되면서 Angular, React, Vue.js 등 다양한 SPA 프레임워크/라이브러리 또한 많은 사용층을 확보하고 있다.
(React 짱짱맨)
Vue.js - The Progressive JavaScript Framework | Vue.js
Versatile A rich, incrementally adoptable ecosystem that scales between a library and a full-featured framework.
vuejs.org
React – A JavaScript library for building user interfaces
A JavaScript library for building user interfaces
reactjs.org
Angular
angular.io
4.JavaScript 와 ECMAScript
ECMAScript는 자바스크립트 표준 명세인 ECMA-262 를 말하며 프로그래밍 언어의 타입, 값 ,객체와 프로퍼티, 함수 ,빌트인
객체 등 핵심 문법을 규정한다
각 브라우저 회사들은 ECMAScript를 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다
자바스크립트는 일반적으로 프로그래밍언어이고, 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API
JavaScript Web APIs - W3C
JavaScript Web APIs While the most common scripting language ECMAscript (more widely known as JavaScript) is developed by Ecma, a great many of the APIs made available in browsers have been defined at W3C. What is scripting? A script is program code that d
www.w3.org
즉 DOM, BOM, Canvas, XMLHttpRequest, Fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web worker 등을 아우르는 개념이다
클라이언트 사이드 Web API는 ECMAScript와는 별도로 World Wide Web Consortium (W3C)에서 별도의 명세로 관리하고 있다. 클라이언트 사이드 Web API의 자세한 내용은 MDN web docs: Web API를 참고하기 바란다.
Web API | MDN
웹 코드를 작성한다면 많은 API를 사용할 수 있습니다. 아래 목록은 웹 앱이나 웹 사이트를 만들 때 사용할 수 있는 모든 인터페이스(객체의 유형)입니다.
developer.mozilla.org
World Wide Web Consortium (W3C)
First Board of Directors to Initiate Critical Functions of W3C Inc. 23 September 2022 | Archive The World Wide Web Consortium (W3C) is preparing to pursue 501(c)(3) non-profit status. Today, W3C is pleased to announce elections to its initial Board of Dire
www.w3.org
5. 자바스크립트의 특징
자바스크립트는 HTML 과 CSS 와 함께 웹을 구성하는 요소 중 하나이고, 웹브라우저에서 동작하는 유일한 프로그래밍 언어다
JS 는 기존의 프로그래밍 언어에서 많은 영향을 받았다
기본문법은 C,JAVA 와 유사하고, self 에서는 프로토타입기반으로 상속을하고, Scheme 에서는 일급함수의 개념을 적용했다
JS는 개발자가 컴파일을 하지않아도 되는 인터프리터 언어다, 대부분의 모던 자바스크립트 엔진은 인터프리터와, 컴파일러의 장점을
합쳐서 비교적 처리속도가 느린 인터프리터 언어의 단점을 해결했다
인터프리터는 소스코드를 즉시 실행하고 컴파일러는 빠르게 동작하는 머신코드를 만들고 최적화한다
이를 통해 컴파일 과정에서 추가적인 시간이 필요하지만 보다 빠르게 빠른코드의 실행이 가능하다
자바스크립트는 명령형(imperative), 함수형(functional), 프로토타입 기반(prototype-based) 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다
다중 패러다임 프로그래밍 언어 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 다중 패러다임 프로그래밍 언어(multiparadigm programming language)는 하나 이상의 프로그래밍 패러다임을 지원하는 프로그래밍 언어이다. 이것은 비야네 스트롭스트
ko.wikipedia.org
프로토타입 기반 프로그래밍 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(
ko.wikipedia.org
함수형 프로그래밍 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 함수형 프로그래밍(函數型 프로그래밍, 영어: functional programming)은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍
ko.wikipedia.org
명령형 프로그래밍 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서 명령형 프로그래밍(命令型 프로그래밍, 영어: imperative programming)은 선언형 프로그래밍과 반대되는 개념으로, 프로그래밍의 상태와 상태를 변
ko.wikipedia.org
가끔씩 다른 객체지향언어들과 차이점에 대해 싸움이 있지만, JS 는 강력한 객체지향 프로그래밍 능력을 가지고있다
간혹 클래스, 상속, 정보를 숨기기위한 키워드 private 가 없어서 객체지향 언어가 아니라고 하는 사람도 있지만
JS는 클래스 기반 객체지행 언어보다 효율적이고 강력한 프로토타입 기반의 객체지향 언어다
출처 : https://poiemaweb.com/js-introduction
Introduction | PoiemaWeb
자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소중 하나로 웹브라우저에서 동작하는 유일한 언어로 1995년 Brendan Eich(Nescape)가 Navigator 2를 위하여 개발한 웹페이지에 포함되는 스크립트 언어
poiemaweb.com
'Programming(ko,en) > Javascript' 카테고리의 다른 글
JavaScript Syntax Basics (0) | 2022.10.17 |
---|---|
How does a browser works? (0) | 2022.10.12 |
Java Script Basic concepts (기본개념) (0) | 2022.10.07 |
JS 실행컨텍스트?...그게 뭔데요?... (0) | 2022.02.05 |
JS 스코프에 대해서...알고싶지않지만 알아야겟지 (0) | 2022.01.23 |