맨위로가기

Vert.x

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Vert.x는 VMware에서 시작된 다중 언어 지원, 비동기, 논블로킹 애플리케이션 프레임워크이다. 2011년 팀 폭스에 의해 시작되었으며, Node.x로 시작해 상표권 문제로 Vert.x로 이름이 변경되었다. 2013년 이클립스 재단으로 이전되었으며, JAX 혁신 어워드에서 "가장 혁신적인 자바 기술" 상을 수상했다. Java, JavaScript, Groovy, Ruby, Scala, Kotlin 등 다양한 언어를 지원하며, 분산 이벤트 버스, 액터 모델, 단순한 동시성 모델을 제공한다.

더 읽어볼만한 페이지

  • 자바 가상 머신 - 핫스팟 (가상 머신)
    핫스팟은 오라클의 자바 런타임 환경에 포함된 가상 머신으로, 반복되는 코드 영역을 최적화하는 JIT 컴파일러이며, 1999년 출시 후 GNU GPL 라이선스로 사용 가능하다.
  • 자바 가상 머신 - 안드로이드 런타임
    안드로이드 런타임(ART)은 안드로이드 운영 체제에서 애플리케이션 실행을 위한 런타임 환경이며, AOT 컴파일을 통해 실행 효율성을 높이고 전력 소비를 줄이는 장점을 가진다.
  • 자유 라이브러리 - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • 자유 라이브러리 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
  • 크로스 플랫폼 소프트웨어 - MSN
    MSN은 1995년 마이크로소프트가 윈도우 95와 함께 출시한 웹 포털이자 관련 서비스 모음으로, 뉴스, 엔터테인먼트, 스포츠, 금융 등 다양한 콘텐츠를 제공하며 주요 온라인 서비스를 통합하는 허브 역할을 수행한다.
  • 크로스 플랫폼 소프트웨어 - 구글 포토
    구글 포토는 사진 및 동영상 저장, 공유, 관리 기능을 제공하는 구글의 클라우드 기반 서비스로, 자동 분류, 얼굴 인식, 검색 기능을 제공하지만 2021년부터 무료 무제한 저장 용량 제공 정책이 변경되었고, 2024년에는 기술의 군사적 이용에 대한 윤리적 논란이 있었다.
Vert.x - [IT 관련 정보]에 관한 문서
기본 정보
이름Vert.x
개발자팀 폭스, VMWare, 레드햇, 이클립스 재단
운영체제크로스 플랫폼
플랫폼자바 가상 머신
장르이벤트 드리븐 네트워킹
릴리스 정보
최신 릴리스 버전4.3.7
최신 릴리스 날짜2022년 12월 20일
프로그래밍 언어
지원 언어자바
자바스크립트
아파치 그루비
루비
스칼라
코틀린
Ceylon
파이썬
클로저
라이선스
라이선스아파치 라이선스 버전 2.0, Eclipse Public License 버전 2.0
기타
웹사이트Vert.x 공식 웹사이트

2. 역사

Vert.x는 2011년 VMware에 재직 중이던 팀 폭스(Tim Fox)에 의해 시작되었다. 초기에는 Node.js의 영향을 받아 "Node.x"라는 이름으로 불렸으나, 상표권 문제로 인해 "Vert.x"로 변경되었다.[4] 2012년 말, 창시자인 팀 폭스가 VMware를 떠나면서 프로젝트의 소유권과 관련된 논의가 발생했다.[5][6] 여러 논의 끝에 프로젝트의 지속적인 발전을 위해 2013년 중립적인 법인인 이클립스 재단으로 이전하는 것이 결정되었고,[7] 같은 해 8월 이전이 완료되었다. 이후 Vert.x는 기술적 혁신성을 인정받아 2014년 JAX 혁신 어워드를 수상했으며,[8] 2016년에는 프로젝트 리더가 쥴리앙 비엣(Julien Viet)으로 변경되었다.[9]

2. 1. 초기 (2011-2012)

Vert.x는 2011년 VMware에 재직 중이던 팀 폭스(Tim Fox)에 의해 시작되었다.

폭스는 처음에 이 프로젝트의 이름을 Node.js에서 영감을 받아 "Node.x"로 지었다. 여기서 'x'는 프로젝트가 자바스크립트뿐만 아니라 여러 언어를 지원한다는 의미를 담고 있었다. 하지만 Node.js의 상표권을 가진 조이언트(Joyent Inc.)와의 법적 문제를 피하기 위해 프로젝트 이름을 "Vert.x"로 변경했다.[4] 새로운 이름은 수학에서 정점(vertex)이 노드(node)의 동의어라는 점을 활용하여 기존 이름과의 연관성을 유지했다.

2012년 12월, 팀 폭스가 VMware를 퇴사하자, VMware는 Vert.x 상표권, 도메인 이름, 블로그, GitHub 계정 및 Google 그룹의 관리 권한을 넘겨받기 위해 팀 폭스에게 법적 서류를 보냈다.[5][6]

2. 2. 이클립스 재단으로 이전 (2013)

2012년 12월, Vert.x 창시자 팀 폭스가 VMware를 떠나자, VMware는 팀 폭스에게 법적 서류를 보내 Vert.x 상표, 도메인 이름, 블로그, GitHub 계정 및 Google 그룹의 관리 권한을 넘겨달라고 요구했다.[5][6]

이후 여러 관계자들과의 논의를 거쳐, 2013년 1월 VMware는 Vert.x 커뮤니티의 이익을 위해 프로젝트와 관련 지적 재산을 중립적인 법인인 이클립스 재단으로 이전하는 것이 최선이라는 데 동의하게 되었다.[7]

2013년 8월, 핵심 Vert.x 프로젝트는 이클립스 재단으로의 이전을 완료했다. Vert.x 스택을 구성하는 다른 프로젝트들은 이클립스 재단으로 이전하지 않았지만, 이클립스 재단의 묵인 하에 "Vert.x" 상표를 계속 사용했다.

2. 3. 주요 수상 및 리더 변경 (2014-현재)

2014년 5월, Vert.x는 JAX 혁신 어워드에서 "가장 혁신적인 자바 기술" 상을 수상했다.[8]

2016년 1월 12일, 팀 폭스(Tim Fox)는 Vert.x 프로젝트의 리더 자리에서 물러났고,[9] 오랜 기여자인 쥴리앙 비엣(Julien Viet)이 그의 자리를 이어받았다.

3. 특징

Vert.x는 이벤트 드리븐[13]과 논 블로킹(non-blocking) 기반으로 동작하여, 적은 수의 커널 스레드만으로도 높은 동시성을 처리할 수 있다. 내부적으로는 하위 수준 I/O 라이브러리인 Netty를 사용한다.[10] 또한, 자바, 자바스크립트, 그루비, 루비, 스칼라, 코틀린, 세일론 등 다양한 프로그래밍 언어를 지원하는 다중 언어(Polyglot) 환경을 제공한다.

주요 특징은 다음과 같다.


  • 단순한 동시성 모델: 모든 코드가 단일 스레드에서 실행되어 다중 스레드 프로그래밍의 복잡성을 줄였다.
  • 간단한 비동기 프로그래밍 모델: 확장 가능한 논블로킹 애플리케이션을 쉽게 작성할 수 있도록 지원한다.
  • 분산 이벤트 버스: 클라이언트와 서버 측에 걸쳐 동작하며, 브라우저 내 자바스크립트까지 확장되어 실시간 웹 애플리케이션 개발을 가능하게 한다.
  • 컴포넌트 재사용 및 공유: 액터 모델과 공용 저장소를 통해 컴포넌트를 재사용하고 공유할 수 있다.

3. 1. 다중 언어 지원

Vert.x는 자바, 자바스크립트, 그루비, 루비, 스칼라, 코틀린 등 다양한 프로그래밍 언어를 지원한다. 버전별 지원 언어는 다음과 같이 변화해왔다.

버전지원 언어
자바, 자바스크립트, 그루비, 루비, 파이썬, 스칼라, 클로저, 세일론
자바, 자바스크립트, 그루비, 루비, 스칼라, 코틀린, 세일론
자바, 자바스크립트, 그루비, 루비, 스칼라, 코틀린
자바, 그루비, 코틀린


3. 2. 비동기 및 논 블로킹 방식

Vert.x는 이벤트 드리븐([13]) 방식과 논 블로킹(non-blocking) 방식을 기반으로 동작한다. 이러한 특징 덕분에 적은 수의 커널 스레드만으로도 높은 동시성을 처리할 수 있다.[13] Vert.x는 내부적으로 하위 수준의 I/O 라이브러리인 Netty를 사용한다.[10]

Vert.x는 확장 가능한 논블로킹 애플리케이션을 만들기 위한 간단하고 비동기적인 프로그래밍 모델을 제공한다. 또한, 모든 코드가 단일 스레드에서 실행되는 단순한 동시성 모델을 채택하여 다중 스레드 프로그래밍의 복잡성을 줄였다.

3. 3. 단순한 동시성 모델

Vert.x는 이벤트 드리븐[13] 방식과 논 블로킹(non-blocking) 방식을 기반으로 동작한다. 이 덕분에 적은 수의 커널 스레드를 사용하면서도 많은 동시 요청을 효율적으로 처리할 수 있다.

Vert.x의 가장 큰 특징 중 하나는 단순한 동시성 모델이다. 기본적으로 모든 사용자 코드는 이벤트 루프라고 불리는 단일 스레드에서 실행된다. 이는 개발자가 복잡한 다중 스레드 프로그래밍에서 발생할 수 있는 동기화 문제나 경쟁 상태 같은 어려움을 신경 쓰지 않고 애플리케이션 로직 개발에 집중할 수 있게 해준다.

이러한 단일 스레드 모델과 비동기 프로그래밍 모델을 통해, 개발자는 쉽고 간단하게 확장성이 뛰어난 논블로킹 애플리케이션을 만들 수 있다.

3. 4. 분산 이벤트 버스

Vert.x는 클라이언트와 서버 측 모두에서 동작하는 분산 이벤트 버스 기능을 제공한다. 이 이벤트 버스는 브라우저에서 실행되는 JavaScript까지 확장될 수 있어, 이를 통해 실시간 웹 애플리케이션 개발이 가능하다.

4. 아키텍처

Vert.x는 하위 수준의 입출력(I/O) 라이브러리인 Netty를 기반으로 구축되었다.[10] 주요 특징인 이벤트 기반 및 논블로킹 방식은 높은 동시성 처리 능력을 목표로 하며, 여러 언어를 지원하여 확장 가능한 애플리케이션 개발을 가능하게 한다.

4. 1. 주요 구성 요소

Vert.x는 하위 수준의 입출력(I/O) 라이브러리인 Netty를 사용한다.[10]

이 애플리케이션 프레임워크는 다음과 같은 기능을 포함한다.

  • 다중 언어 지원: 애플리케이션 컴포넌트를 Java, JavaScript, Groovy, Ruby, Scala, Kotlin, Ceylon으로 작성할 수 있다.
  • 단순한 동시성 모델: 모든 코드는 단일 스레드로 실행되어 다중 스레드 프로그래밍의 번거로움에서 벗어날 수 있다.
  • 비동기 프로그래밍 모델: 진정으로 확장 가능한 논블로킹 애플리케이션을 작성하기 위한 간단하고 비동기적인 프로그래밍 모델을 제공한다.
  • 분산 이벤트 버스: 클라이언트서버 측에 걸쳐 있는 분산 이벤트 버스가 있다. 이벤트 버스는 브라우저 내 JavaScript까지 침투하여 소위 실시간 웹 애플리케이션을 만들 수 있다.
  • 컴포넌트 재사용 및 공유: 액터 모델과 공용 저장소를 통해 컴포넌트를 재사용하고 공유할 수 있다.

5. 예제

Vert.x를 사용하여 "Hello from Vert.x!" 메시지를 출력하는 간단한 웹 서버는 자바자바스크립트로 작성할 수 있다. 두 언어 모두 확장성 있는 방식으로 콘텐츠를 제공하는 웹 서버를 만들 수 있으며, 각 언어별 예제 코드는 아래 하위 섹션에서 확인할 수 있다.

5. 1. Java

"Hello from Vert.x!"를 서비스하는 웹 서버는 자바(Java)로 작성이 가능하다:



import io.vertx.core.AbstractVerticle;

public class Server extends AbstractVerticle {

public void start() {

vertx.createHttpServer().requestHandler(req -> {

req.response()

.putHeader("content-type", "text/plain")

.end("Hello from Vert.x!");

}).listen(8080);

}

}


5. 2. JavaScript

자바스크립트로는 다음과 같이 작성할 수 있다:



vertx.createHttpServer()

.requestHandler(function (req) {

req.response()

.putHeader("content-type", "text/plain")

.end("Hello from Vert.x!");

}).listen(8080);



두 경우 모두 확장성이 뛰어난 방식으로 콘텐츠를 제공하는 웹 서버를 만들 수 있다.

참조

[1] 웹사이트 Eclipse Vert.x 4.3.7 https://github.com/v[...] 2021-12-13
[2] 뉴스 Wait, vert.x – JVM Polyglot Alternative to Node.js http://www.infoq.com[...] infoq 2012-05-04
[3] 뉴스 Vert.x – an asynchronous, event-driven Java web framework http://www.h-online.[...] hDeveloper 2012-06-20
[4] 웹사이트 Name changing https://groups.googl[...]
[5] 뉴스 "VMware's dealings with Vert.x founder should serve as a warning." https://www.theregis[...]
[6] 뉴스 "Who controls Vert.x: Red Hat, VMware, or neither?" http://www.infoworld[...]
[7] 뉴스 "Vert.x Joining Eclipse Foundation" http://www.infoq.com[...]
[8] 뉴스 "Vert.x wins JAX innovation award" http://jax.de/awards[...]
[9] 웹사이트 Redirecting to Google Groups https://groups.googl[...]
[10] 뉴스 vert.x – JVM Polyglot Alternative to Node.js http://www.infoq.com[...] InfoQ 2012-05-04
[11] 웹인용 Eclipse Vert.x 4.2.1 https://github.com/v[...] 2021-12-13
[12] 웹인용 Eclipse Vert.x 4.2.2 https://vertx.io/blo[...] 2021-12-13
[13] 문서 event driven



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com