Java(33)
-
Spring Integration
Spring Integration이란 Spring Integration은 스프링 기반 어플리케이션 내에 메시징 기반 서비스를 제공하고 선언적 어댑터를 사용해 외부 시스템과의 통합을 쉽게 해줍니다. 이런 어댑터들은 리모팅, 메시징, 스케줄링과 같이 스프링이 제공하는 기능들을 추상화하고 있습니다. Spring Integration의 컴포넌트 Message Spring Integration에서 메시지란 메타데이터와 함께 결합되어 있는 일련의 자바 오브젝트를 위한 포괄적인 Wrapper를 말합니다. 아래 메시지 인터페이스가 보여주듯이 메시지는 페이로드와 여러 개의 헤더로 구성됩니다. public interface org.springframework.integration.Message { MessageHeader..
2020.09.15 -
Spring WebFlux
Bloking I/O Block I/O는 어플리케이션에서 I/O 요청을 한 후, 완료되기 전까지는 Application이 Block 되어 다른 작업을 수행할 수 없습니다. 이는 해당 자원이 효율적으로 사용되지 못하고 있음을 의미합니다. 하지만 실제 어플리케이션들은 Blocking 방식임에도 불구하고 마치 Block이 안 되듯이 동작하는 것처럼 보입니다. 이것은 Single Thread 기반이 아닌 Multi Thread를 기반으로 동작하기 때문입니다. Block 되는 순간 다른 Thread가 동작함으로써 Block의 문제를 해소하였습니다. 그러나 Thread 간 전환에 드는 비용이 존재하므로 여러 개의 I/O를 처리하기 위해 여러 개의 Thread를 사용하는 것은 비효율 적으로 보입니다. Synchron..
2020.09.13 -
Reactive Stream
Reactive Stream이란 계속적으로 들어오는 스트림 데이터를 효율적으로 처리하기 위해서는 비동기 시스템이 효과적입니다. 비동기 처리를 하면서 가장 중요한 문제는 데이터 처리가 목적지의 리소스 소비를 예측가능한 범위에서 신중하게 제어할 수 있어야 하는 것입니다. 비동기는 네트워크를 통한 서버간의 협업 또는 단일 서버에서 컴퓨팅 리소스를 동시에 사용할 때 주로 사용됩니다. Reactive Stream의 주된 목적은 비동기의 경계를 명확히 하여 스트림 데이터의 교환을 효과적으로 관리하는 것입니다. 즉, 비동기로 데이터를 처리하는 시스템에 어느 정도의 데이터가 들어올지 예측가능하도록 하는 것입니다. Reactive Stream에서는 BackPressure이 이를 달성할 수있게 해주는 중요한 부분입니다. ..
2020.09.09 -
Java Module
Moudle이 등장하게 된 배경 Java는 public, private와 같은 클래스 수준의 한정자가 있습니다. 그러나 이 한정자들은 클래스까지만 유효하고 패키지를 넘어서면 힘을 잃어버리게 됩니다. 이러한 캡슐화에 대한 지원 부족으로 인해 Java Module이 등장했습니다. 예를 들어, 우리는 JAR로 제공된 패키지의 클래스를 보면 어느 클래스를 써야할 지 알 수 가 없습니다. 대부분의 클래스가 public이고 접근이 가능합니다. 그 안에는 API 설계자가 내부 구현을 위해 만든 내부용 API 문서도 있습니다. 기존에는 내부용 API에 접근이 가능합니다. JAR로 제공되고 문서화가 잘 되더라도 클래스와 메소드가 public이면 API 설계자가 의도하지 않은 호출이 발생할 수 있습니다. Module이란 ..
2020.09.07 -
JAVA 9
불변 Collection 생성 메소드 제공 정적인 Collection 객체를 생성할 수 있는 팩토리 메소드를 제공합니다. List immutableList = List.of("one","two","three"); Set immutableSet = Set.of("one","two","three"); Map immutableMap = Map.of(1,"one",2,"two",3,"three");Java 9 Module System Java Module 시스템을 이용해 안정적인 구성과 강력하고 유연한 캡슐화를 제공합니다. 이를 통해 개발자는 확장 가능한 플랫폼을 만들고 플랫폼 무결성을 높이며 성능을 향상시킬 수 있습니다. 편하고 효율적인 Java 개발 환경을 만들기 위해서 개발 Jar 기반 모노리틱 방식을 개..
2020.09.06 -
Spring Boot
Spring Boot란 Spring Boot는 자주 사용하는 프로젝트 조합을 미리 만들어 Spring을 더욱 쉽고 간단하게 사용하기 위해 만들어진 Java Framework의 Project입니다. Spring이 지원하는 라이브러리, 하위 프로젝트들이 늘어나면서 무거워지고 초기 설정이 많아 프로젝트 초기 설정을 할 때 많은 어려움이 있었습니다. 이러한 어려움을 해결하기 위해 만들어진 것이 Spring Boot입니다. Spring Boot는 최소한의 초기 Spring 구성으로 가능한 빠르게 시작하고 실행할 수 있도록 설계되었습니다. Spring Boot의 특징 CoC(Convention over Configuration) 웹 어플리케이션을 개발하고자 할 때 일일이 관련 라이브러리를 찾아 추가할 필요 없이 s..
2020.06.09