프로그래밍/Java
-
[Java, SLF4J] org.slf4j.impl.StaticLoggerBinder 에러 해결하기프로그래밍/Java 2024. 4. 15. 11:35
SLF4J ? SLF4J는 "Simple Logging Facade for Java"의 약자로, 자바 애플리케이션에서 사용되는 로깅 인터페이스이다. SLF4J는 로깅 시스템에 대한 추상화 계층을 제공하여 애플리케이션 코드가 특정 로깅 프레임워크에 종속되지 않도록 하며, 애플리케이션 코드에서 로깅을 위한 API를 호출할 때 어떤 구현체를 사용할지 결정할 수 있다. 문제 상황 HikariCP를 프로젝트에서 사용하기 위해 Maven을 통해 라이브러리를 추가하자 발생한 오류로 아래와 같이 출력되었다. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger impleme..
-
[Java, Netty] Nagle 알고리즘 적용 해제하기프로그래밍/Java 2024. 4. 12. 15:50
Nagle 알고리즘? https://syudal.tistory.com/entry/Network-Nagle알고리즘과-TCPNODELAY [Network] Nagle알고리즘과 TCP_NODELAY Nagle 알고리즘 Nagle 알고리즘은 1984년에 발표된 RFC 896 "Congestion Control in IP/TCP Internetworks" 문서에서 제안된 것으로, Van Jacobson에 의해 소개되었다. 이 알고리즘의 주요 목적은 TCP 네트워크에서 소형 syudal.tistory.com Nagle 알고리즘 적용 해제하기 아래는 Netty EchoServer 예제에 TCP_NODELAY 옵션을 true로 적용하여 Nagle 알고리즘의 적용을 해제 하는 방법이다. public final class..
-
[Java] Rhino Engine, Nashorn Engine, GraalVM프로그래밍/Java 2024. 3. 27. 16:24
자바스크립트 인터프리터 엔진 Rhino 엔진, Nashorn 엔진, 그리고 GraalVM은 모두 자바스크립트를 인터프리팅하고 실행하는데 사용되었거나 사용하는 엔진들이다. Java의 버전이 올라감에 따라서 자바스크립트를 인터프리팅하는데 사용하는 엔진들이 바뀌었는데, JDK 버전에 맞추어 각각을 간단히 설명하고자 한다. Rhino Engine (~ Java SE 7) Rhino는 Mozilla Foundation에서 개발한 자바스크립트 인터프리터 엔진이다. 자바 가상 머신(JVM)에서 실행되며, 자바스크립트 코드를 자바 바이트 코드로 변환하여 실행한다. Rhino는 자바 애플리케이션에서 자바스크립트를 사용하는 데 주로 사용되었으나, 성능 면에서 한계가 있어 Java 표준 라이브러리에서 제공하는 공식적인 Ja..
-
[Java, Netty] PooledUnsafeDirectByteBuf을 Byte[]로 변환하기프로그래밍/Java 2023. 12. 19. 14:59
PooledUnsafeDirectByteBuf PooledUnsafeDirectByteBuf는 Netty에서 제공하는 풀링(pooling) 및 unsafe 메모리 액세스를 통해 성능을 향상시키려는 목적으로 디자인된 바이트 버퍼(ByteBuf) 중 하나이다. EchoServer 예제 Netty의 EchoServer 예제를 살펴보면 EchoServerHandler.java에 아래와 같은 부분이 있다. @Sharable public class EchoServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { ctx.write(msg); } ...
-
Apache MINA와 Netty의 차이 및 장단점프로그래밍/Java 2023. 3. 5. 18:04
Apache MINA와 Netty MINA와 Netty는 모두 네트워크 프로그래밍에 사용되는 Java 기반의 NIO(Non-blocking I/O) 프레임워크이다. 이 두 프레임워크 모두 비동기 I/O를 지원하며, 이를 통해 동시에 많은 클라이언트 요청을 처리할 수 있다. 그러나 MINA와 Netty는 아래와 같은 차이점이 있다. 성능 Netty는 성능면에서 MINA보다 더 높은 성능을 보인다. MINA는 Reactor 스타일의 구현을 사용하여 I/O를 처리하는 반면, Netty는 비동기 I/O 작업 처리를 위해 I/O worker 쓰레드풀을 사용한다. 코드 디자인 MINA는 이벤트 기반의 모델을 사용한 반면, Netty는 Future와 Callback 구현을 사용한다. 개발자 커뮤니티 Netty는 큰 ..
-
Apache MINA와 WebSocket으로 SSL통신하기.프로그래밍/Java 2020. 6. 9. 23:36
Apache MINA는 Java에서 흔히 쓰는 비동기 쓰레드 방식의 Server이다. 이전에 작성했던 포스팅에 이어서 작성한다. https://syudal.tistory.com/entry/Apache-MINA와-WebSocket으로-통신하기 Apache MINA와 WebSocket으로 통신하기. Apache MINA는 아래와 같은 구조를 띄고 있다. IoService와 IoHandler사이에 IoFliter들을 추가하여 원하는 스타일의 소켓 통신을 할 수 있다. WebSocket같은 경우에도 HandShake과정과 같은 구현을 IoFliter를.. syudal.tistory.com 대부분의 사이트에서 HTTPS가 강제됨에 따라, 일반 웹소켓 요소(ws://)가 들어가 있으면 ERR_SSL_PROTOCOL..
-
Apache MINA와 WebSocket으로 통신하기.프로그래밍/Java 2019. 5. 28. 14:56
Apache MINA는 아래와 같은 구조를 띄고 있다. IoService와 IoHandler사이에 IoFliter들을 추가하여 원하는 스타일의 소켓 통신을 할 수 있다. WebSocket같은 경우에도 HandShake과정과 같은 구현을 IoFliter를 추가함으로서 쉽게 해결할 수 있다. 하지만, 기본적인 Protocol들은 자체 Fliter로서 구현이 되어 있지만, WebSocket은 자체적으로 구현이 되어 있지 않다. 또한, https://tools.ietf.org/html/rfc6455에 모든 내용이 기록되어 있다. https://github.com/syudal/Apache-Mina-IoFilter-WebSocket syudal/Apache-Mina-IoFilter-WebSocket Apache M..
-
Apache MINA를 이용한 Echo서버 구현하기프로그래밍/Java 2019. 4. 1. 23:53
자바(Java)를 이용해서 서버를 구축하는 방법에는 여러가지가 있겠지만, 아파치 미나(Apache MINA)의 구현 방법인 Nio Socket과 스레드(Thread)를 이용하여 비동기-스레드(Asynchronous-Thread)방식의 서버를 구현할 수 있습니다. https://mina.apache.org/downloads-mina_2_1.html MINA Downloads — Apache MINA Latest MINA Releases Apache MINA 2.1.0 stable (Java 8+) Binaries Sources For people wanting to use the serial package, we don't include the rxtx.jar library in the releases, ..