본문 바로가기

Computer Programming/Javascript

JavaScript의 발전 및 특징(+ AJAX | XML 용어 정리)

1. 자바스크립트의 발전

자바스크립트는 웹 브라우저에서 동작하기 위해 나타난 언어이다. (아래 특징 설명 참고!)

 

AJAX(Asynchronous Javascript And XML)란? 

- 자바스크립트의 라이브러리 중 하나이다. 전체 페이지를 새로고침 하지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이며

JavaScript를 사용한 비동기 통신, 클라이언트와 서버간의 XML데이터를 주고받는 기술이다. 

 

XML (eXtensible Markup Language)

- XML은 다목적 마크업 언어로 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해 준다.

- HTML과 같은 Markup Language라 생긴건 비슷하지만 차이점이 존재한다. HTML 은 이미 약속된 태그만 사용이 가능하다. 예를 들면 <a></a> 와 같은 태그들과 같이 이미 만들어서 제공되는 태그들을 사용해야한다. 하지만 XML 의 태그는 사용자가 임의로 만들 수 있다. 즉, 태그로 데이터를 설명할 수 있으며 더 필요한 데이터가 생길 시 태그를 추가한다거나 태그 안에 내용을 추가할 수 있는 점이 매우 자유롭다.

 

- XML의 등장 이후로 2000년대에 웹개발 기술이 더욱 향상되었으며 개발자들의 자바스크립트 사용률이 증가하게 되었다. 이후 폭발적인 UX의 향상이 나타났고 비동기적인 웹 애플리케이션 개발이 가능해졌다.

 

이후 2008년에 V8 엔진이 구글 크롬에 탑재가 되면서 브라우저의 속도가 매우 빨라졌다.

1년 후에는 Node.js가 등장하면서 웹 브라우저 뿐만 아니라 어디에서든 자바스크립트가 사용될 수 있게 서버의 개발이 활성화되었고, mobile app 을 구현하는 react native와 desktop app을 구현하는 electron js와 같은 분야에서도 사용 가능하게 되었다.  즉, 이 엔진은 frontend+backend+DB(MongoDB) = FullStack 을 가능하게 만들었다.

 

2015년 자바스크립트의 표준안인 ECMAScript의 ES6버전이 출시되고 여러 브라우저 엔진들이 표준화를 따르게 된다.

 

이에 맞춰 여러 브라우저에 대한 호환성을 맞춰주는 jQuery 와 같은 라이브러리, 그리고 2016년 프론트엔드 프레임워크의 대중화 (React, Vue, Angular 등) 가 이루어지면서 자바스크립트의 인기는 나날이 높아지고 있다.

 

 

추가로, 원래 브라우저에서 동작하는 유일한 언어는 js 였는데, 요즘은 web assembly가 등장해서 rust, c, c++, c#, java, python 과 같은 언어들로 web app을 만드는것이 가능해지기도 했다.

 

 

 


2. JavaScript의 특징

 

2-1. 객체 지향 프로그래밍 지원 (Object-Oriented Programming)

객체지향 vs 절차지향

- 절차지향 프로그래밍순서대로 실행되는 일련의 과정을 단계적으로 기술하여 프로그램을 만드는 것이고, 객체지향 프로그래밍은 데이터와 함수를 역할을 가지고 있는 단위인 객체로 묶어서 프로그래밍을 수행하는 방법이다.

- 객체 지향 프로그래밍의 장점은  객체로 묶어 코드의 재사용률을 높일 수 있다는 점이다.

- 객체는 상태와 행동을 가지고 있으며, 상태는 객체의 속성(property)라고도 한다. 

 

2-2. Scripting 및 동적 타이핑 언어

- 자바스크립트는 동적 타이핑을 지원하는 언어로서, 변수를 선언할 때 타입을 지정하지 않는다. 이것은 런타임 시점에 변수에 할당되는 값에 따라 자동으로 데이터 타입이 결정된다는 것을 의미한다. 

- 또한, 자바스크립트는 scripting 언어로, 소스파일의 코드를 사전에 컴파일하여 실행 파일을 미리 만들어 놓는 것이 아니라 사용하는 시점에 컴파일하며 바로 실행한다. 

- 컴파일 순서는 소스파일의 위에서 아래로 컴파일되며, function 키워드를 만나면 function 오브젝트를 생성한다. (이때 함수 안의 코드는 컴파일하지 않는다.)

 

2-3. 함수형 프로그래밍 지원

- 자바스크립트는 함수형 프로그래밍을 지원하는 언어로서, 함수를 일급 객체로 취급(다른 객체들에게도 일반적으로 적용 가능한 연산을 지원하는 객체)하고, 고차 함수()를 지원한다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있다.

- 이는 공유 상태(shared state)와 변경 가능한 데이터(mutable data)를 공유할 수 있으며  side-effects 를 피하는 프로그램 형식이다.

 

2-4. 비동기 처리

https://medium.com/@vivianyim/synchronous-vs-asynchronous-javascript-de4918e8ad62

- 자바스크립트는 싱글스레드를 지원하나 비동기처리 또한 가능하다. 비동기 처리는 작업을 순차적으로 기다리지 않고, 병렬로 처리할 수 있는 방식이다. ES6 에서 도입된 표준 빌트인 객체인 Promise 객체와 async/await 등을 지원한다. 

 

 

 

 

 

 

추후에 자바스크립트 특징은 하나씩 주제로 해서 더 자세한 내용으로 글을 작성할 예정이다 👻👻👻