Java + Kotlin

[Kotlin] 싱글톤 객체와 싱글톤 패턴 포스트 Teaser

[Kotlin] 싱글톤 객체와 싱글톤 패턴

카테고리:

3 분 소요

싱글톤(Singleton) 싱글톤은 프로그램 내에서 하나의 인스턴스만 존재하며, 어느 시점에서 호출하든 동일한 인스턴스를 참조하는 것을 말한다. 전통적으로 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나이다. 싱글톤 객체와 싱글톤 패턴 싱글톤 객체 Kotlin에서는 싱글톤 객체를 쉽게 정의할 수 있도록 object 키워드를 제공한다. object 키워드는 클래스를 정의할 때 사용되며, 해당 클래스를 하나의 인스턴스만 가지...

[Kotlin, Netty] Echo Server 구현하기 포스트 Teaser

[Kotlin, Netty] Echo Server 구현하기

카테고리:

3 분 소요

Netty Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크이다. Java 기반의 NIO(Non-blocking I/O)를 바탕으로 서버 및 클라이언트와 같은 네트워크 애플리케이션을 빠르고 쉽게 개발할 수 있다. 이전에 자주 사용했던 MINA와 Netty는 NIO를 사용한다는 점에선 같지만, 많은 부분에서 다르다. Netty는 성능과 확장성을 우선시한 모듈식 설계와 더 큰 커뮤니티를 바탕으로 개발자가 네트워크 운영을 위한...

[Java, SLF4J] org.slf4j.impl.StaticLoggerBinder 에러 해결하기 포스트 Teaser

[Java, SLF4J] org.slf4j.impl.StaticLoggerBinder 에러 해결하기

카테고리:

2 분 소요

SLF4J SLF4J는 “Simple Logging Facade for Java”의 약자로, 자바 애플리케이션에서 사용되는 로깅 인터페이스이다. SLF4J는 로깅 시스템에 대한 추상화 계층을 제공하여 애플리케이션 코드가 특정 로깅 프레임워크에 종속되지 않도록 하며, 애플리케이션 코드에서 로깅을 위한 API를 호출할 때 어떤 구현체를 사용할지 결정할 수 있다. 문제 상황 HikariCP를 프로젝트에서 사용하기 위해 Maven을 통해 라...

[Java, Netty] Nagle 알고리즘 적용 해제하기 포스트 Teaser

[Java, Netty] Nagle 알고리즘 적용 해제하기

카테고리:

1 분 소요

Nagle 알고리즘? https://syudal.github.io/post/Network-Nagle알고리즘과-TCPNODELAY Nagle 알고리즘 적용 해제하기 아래는 Netty EchoServer 예제에 TCP_NODELAY 옵션을 true로 적용하여 Nagle 알고리즘의 적용을 해제 하는 방법이다. EchoServer.java public final class EchoServer { static final i...

[Java] Rhino Engine, Nashorn Engine, GraalVM 포스트 Teaser

[Java] Rhino Engine, Nashorn Engine, GraalVM

카테고리:

2 분 소요

자바스크립트 인터프리터 엔진 Rhino 엔진, Nashorn 엔진, 그리고 GraalVM은 모두 자바스크립트를 인터프리팅하고 실행하는데 사용되었거나 사용하는 엔진들이다. Java의 버전이 올라감에 따라서 자바스크립트를 인터프리팅하는데 사용하는 엔진들이 바뀌었는데, JDK 버전에 맞추어 각각을 간단히 설명하고자 한다. Rhino Engine (~ Java SE 7) Rhino는 Mozilla Foundation에서 개발한 자바스크립트 ...

[Java, Netty] PooledUnsafeDirectByteBuf을 Byte[]로 변환하기 포스트 Teaser

[Java, Netty] PooledUnsafeDirectByteBuf을 Byte[]로 변환하기

카테고리:

1 분 소요

PooledUnsafeDirectByteBuf PooledUnsafeDirectByteBuf는 Netty에서 제공하는 풀링(pooling) 및 unsafe 메모리 액세스를 통해 성능을 향상시키려는 목적으로 디자인된 바이트 버퍼(ByteBuf) 중 하나이다. EchoServer 예제 Netty의 EchoServer 예제를 살펴보면 EchoServerHandler.java에 아래와 같은 부분이 있다. @Sharable public cl...

Apache MINA와 WebSocket으로 SSL통신하기 포스트 Teaser

Apache MINA와 WebSocket으로 SSL통신하기

카테고리:

1 분 소요

Apache MINA Apache MINA는 Java에서 흔히 쓰는 비동기 쓰레드 방식의 Server이다. 이전에 작성했던 포스팅에 이어서 작성한다. https://syudal.github.io/post/Apache-MINA와-WebSocket으로-통신하기 해결 방법 대부분의 사이트에서 HTTPS가 강제됨에 따라, 일반 웹소켓 요소(ws://)가 들어가 있으면 ERR_SSL_PROTOCOL_ERROR 오류를 출력하며 연결을 거부 ...

Apache MINA와 WebSocket으로 통신하기 포스트 Teaser

Apache MINA와 WebSocket으로 통신하기

카테고리:

1 분 소요

Apache MINA의 구조 Apache MINA는 아래와 같은 구조를 띄고 있다. IoService와 IoHandler사이에 IoFliter들을 추가하여 원하는 스타일의 소켓 통신을 할 수 있다. WebSocket같은 경우에도 HandShake과정과 같은 구현을 IoFliter를 추가함으로서 쉽게 해결할 수 있다. 하지만, 기본적인 Protocol들은 자체 Fliter로서 구현이 되어 있지만, WebSocket은 자체적으로 구...