본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[스프링] 트랜잭션의 종류 1. 로컬 트랜잭션 2. 분산 트랜잭션(글로벌 트랜잭션)2개 또는 그 이상의 네트워크에 연결된 호스트 간의 트랜잭션XA: 오픈그룹(The Open Group)에서 제정한 분산 트랜잭션 처리를 위한 표준 https://en.wikipedia.org/wiki/Distributed_transactionhttps://en.wikipedia.org/wiki/X/Open_XA 선언적인 트랜잭션 관리 - 대부분의 스프링 프레임워크의 사용자들은 선언적인 트랜잭션 관리를 선택합니다.- 선언적인 트랜잭션 관리는 애플리케이션에 최소한으로 영향을 주므로 비침투적인 경량 컨테이너의 이상과 매우 일치합니다.- 스프링 프레임워크의 선언적인 트랜잭션 관리는 스프링의 관점지향 프로그래밍(AOP)와 사용가능하도록 만들어졌습니다.- 롤백..
[JVM Internal] JVM 메모리 구조 JVM이란? JVM(Java Virtual Machine)을 어떻게 정의할 것인가 고민하기에 앞서 기본적 JVM 원어로부터 알아보겠습니다. JVM은 물리적인 형태가 아닌 소프트웨어로서 하나의 개념으로 존재합니다. 이것이 "VIRTUAL"을 뜻하는 것입니다. 그리고 JVM은 독자적으로 작동할 수 있는 메커니즘과 구조를 가지고 있습니다. 이는 하나의 축약된 컴퓨터와 같은 의미에서 "MACHINE"이라는 단어가 조합된 것입니다. 그러나 "JVM"이 구체적으로 무엇이냐는 질문에 정확한 정의를 내린다기 보다는, 하나의 개념, 스펙(Specification)에 지나지 않는 즉, 어느 누구도 정확하고 자세한 설계도를 제공하지 않고 단지 이렇게 저렇게 해야 한다는 식의 표준화된 정의만으로 존재할 뿐입니다. 이러한 표준..
[자바] Future 패턴 future라는 것은 "미래", "(경제 용어로는)선물"이라는 의미입니다. 실행 결과를 얻기까지 시간이 걸리는 메소드가 있다고 합시다. 실행 결과를 얻기까지 기다리는 대신 "교환권"을 받게 됩니다. 교환권을 받는 것에는 시간이 걸리지 않습니다. 이 때의 "교환권"을 Future라고 부릅니다. Future라고 하는 교환권을 받은 쓰레드는 나중에 Future를 사용해서 실행 결과를 받으러 갑니다. 그것은 교환권을 가지고 케이크를 받으러 가는 것과 비슷합니다. 만일 실행 결과가 나와 있으면 바로 그것을 받습니다. 준비가 되지 않으면 준비가 될 때까지 기다리게 됩니다. Future는 케이크의 교환권, 예매권, 정리권, "미래"에 현금으로 바꿀수 있는 약속 어음이라고 생각하면 됩니다. Thread-Per-Mess..
[자바] Thread-Per-Message 패턴 thread per message를 직역하면 "메세지마다의 쓰레드"라는 의미가 됩니다. message라는 것은 여기서는 "명령"이라고 생각해도 좋고 "요구"라고 생각해도 좋습니다. 어떤 명령이나 요구마다 새롭게 하나의 쓰레드가 할당되어 그 쓰레드가 처리를 행합니다. 이것이 바로 Thread-Per-Message 패턴입니다. Thread-Per-Message 패턴을 사용하면 메시지는 "의뢰하는 측"과 메시지를 "처리하는 축"이 다른 쓰레드로 되어 있습니다. 메시지를 의뢰하는 측의 쓰레드가 처리하는 측의 쓰레드에 "이 일 좀 해주세요"라고 맡기는 것입니다. Thread-Per-Message 패턴을 사용한 예제 프로그램을 읽어 보겠습니다. 예제 프로그램에서는 Main 클래스가 Host 클래스로 문자의 표시를 ..
[자바] Event-Dispatching Thread 이벤트-디스패칭 쓰레드란? GUI 응용 프로그램을 작성할 때에는 이벤트-디스패칭 쓰레드(the event-dispatching thread)를 의식할 필요가 있습니다. GUI 응용 프로그램을 사용할 때 우리들은 버튼을 누른다든지 마우스를 움직인다든지 합니다. 우리들의 그러한 동작에 대응해서 GUI 응용 프로그램 처리가 수행됩니다. "버튼을 누른다" 혹은 "마우스를 움직인다"라고 하는 것은 이벤트(event)라고 부르고 Swing 클래스로서 표현되고 있습니다. 버튼을 누르면 java.awt.event.ActionEvent라는 클래스의 인스턴스가 생성되고 마우스를 움직이면 java.awt.event.MouseEvent라는 클래스의 인스턴스가 생성됩니다. 그리고 각각의 인스턴스는 Swing이 내부에 가지고 있..