제가 요즘 요긴하게 써먹고 있는 Vert.x 을 소개하고자 합니다. 폴리글랏이긴 한데, 저는 Java 만을 사용해서 개발하고 있습니다. 그래서 Java 코드만 올리겠습니다.
장문의 글을 올리기 보다는, 바로 어떤 결과가 나오는 짧은 팁만 올리고, 댓글로 보충 내용을 올리는 쪽으로 해보겠습니다. 방송 형태가 적합하겠지만, 할 줄을 몰라서...(컴맹입니다)
------------------------------------------------------------------------------------------------------
Vert.x 는 현재 3.0.0 까지 나온 node.js 에 영감을 받아 개발된 툴킷입니다. http://vertx.io 가 공식 웹사이트이고, 구글 그룹스를 운영하고 있으며, 질문 등은 구글 그룹스에만 올리길 권고하고 있습니다. 하지만, 저 같은 영어포기자들은 안구에 습기가...T.T
웹사이트에서도 "Vert.x is a tool-kit for building reactive applications on the JVM." 라고 소개를 하고 있습니다. JVM 기반에서 돌아가기 때문에 기본은 Java 라고 생각하시면 되고, JVM 을 이용하기 때문에 멀티 쓰레드 지원을 별도로 고려할 필요가 없다는 장점이 있습니다. 또한 JVM 의 GC 을 이용하기 때문에 node.js 의 Javascript 엔진보다는 훨씬 더 효율성이 높고 Azul Systems 의 Zing 와 같은 JVM 을 구입하여 운영할 경우 더욱 성능이 올라가는 장점도 있습니다.
설치는 매우 쉽습니다. 공식 사이트에서 최신 버전의 zip 파일이나 tar.gz 파일을 내려받아 압축을 풀어주면 됩니다. bin 디렉토리에 vertx 나 vertx.bat 파일을 이용해서 개발한 소스를 실행할 수 있습니다. 또는, embeded 형태로 개발하면 기존의 실행형 파일에 기능을 내장할 수도 있고, 웹프로그램 안에도 내장할 수 있습니다. 대신, embeded 형태는 vert.x 의 cluster 기능을 이용하지 못한다거나, 사용할 수 있는 언어가 Java 와 Groovy 정도만 지원됩니다.
설치 후 VERTX_HOME 와 VERTX_OPTS 등을 환경변수에 추가해줄 수 있습니다. bin 디렉토리 역시 PATH 에 추가해두면 실행 시 편하겠죠. VERTX_OPTS 에는 -Dfile.encoding=UTF-8 을 추가해두는 게 좋습니다. 소스 파일 내에 한글을 쓸 경우 이 옵션이 빠졌을 때 컴파일 오류가 발생하거나(vertx 명령어로 실행할 때 컴파일을 합니다. class 파일을 가지고 하는게 아닙니다) 콘솔로 메세지를 출력할 때 메세지가 제대로 안보일 수 있습니다.
앞으로의 팁은 embeded 는 배제하고 vertx 명령을 통해 실행하는 방법만 소개합니다. JDK 는 8 버전을 이용합니다. 왜냐하면, 소스 코드가 짧아지거든요.
먼저 소스 코드를 아래와 같이 작성해봅니다.
import io.vertx.core.AbstractVerticle;
public class Test1 extends AbstractVerticle {
@Override
public void start() throws Exception {
super.start();
vertx.createHttpServer()
.requestHandler(httpServerRequest -> {})
.listen(8080);
}
@Override
public void stop() throws Exception {
}
}
HTTP 서버를 띄웠습니다. node.js 을 해보신 분들은 금새 아실 내용이겠네요.
그리고 Test1.java 로 저장한 뒤, Test1.java 이 있는 곳으로 이동한 뒤...
vertx run Test1.java
라고 해봅니다.
서버 실행됐습니다! 물론 아무런 동작은 안하지만, netstat -na 등의 명령으로 포트를 확인해보시면 서버가 떴음을 알 수 있습니다.
종료는 Ctrl+C 로 그냥 꺼버리시면 됩니다.
오늘은 여기까지...
이 글은 제 개인 블로그(http://zepinos.blogspot.kr)와 okky(http://okky.kr)에만 공개되는 글입니다. 퍼 가는 것은 금해주시고, 링크로 대신해주시기 바랍니다. 당연히 상업적 용도로 이용하시면...저랑 경찰서에서 정모하셔야 합니다. ^^;;;
위에 작성한 코드 등은 실제 컴파일한 것이 아니라 제가 글을 적으면서 키보드 코딩(?...손 코딩의 친구) 한 것이므로, 오류가 있다면 저에게 알려주시면 고맙겠습니다.
위에 작성한 코드 등은 실제 컴파일한 것이 아니라 제가 글을 적으면서 키보드 코딩(?...손 코딩의 친구) 한 것이므로, 오류가 있다면 저에게 알려주시면 고맙겠습니다.
댓글 없음:
댓글 쓰기