본문 바로가기

DEVELOPMENT

JAVA , Byte Code Instrumentation 에 대해. JVM option 중 JavaAgent를 검색 하던 중 알아두면 좋은글을 발견하여 블로그에 남긴다. The Power of Byte Code Instrumentation in Java - Part1 Byte Code Instrumentation이란? Java에서 가장 원초적이고 강력한 프로그래밍 기법은? 나의 대답은 단연 BCI, 즉 Byte Code Instrumentation이다. (또는 Byte Code Insertion) Byte Code Instrumenation이란 Java의 Byte Code에 대해 직접 수정을 가해서, 소스 파일의 수정없이 원하는 기능을 부여하는 기법을 말한다. 이러한 특징 때문에 Java 프로파일러나 모니터링 툴들이 대부분 BCI 기능을 이용하고 있으며, BCI를 통해 ..
[Spring 설정] Spring3 - Mybatis Transaction Setting, 스프링3 마이바티스 연동 트렌젝션 설정. 정말 오랜만에 블로그를 작성한다. 하루에 글 하나씩 올리기로 했는데.... 초등학교 여름방학때 밀린 일기의 첫글같은 느낌.. 최대한 자주 올리도록 노력해보자! 오늘 작성할 글은 개발카테고리에 새로 추가한 Spring 에 관련된 내용이다. 어제 APM (Application Performance Management) 를 처음 사용하며, 외부에서 어떻게 운영중인 어플리케이션에 접근하여 트렌젝션을 실시간으로 추적할 수 있는지에 대한 의문으로 트랜젝션 자체를 다시 찾아보던 중 나중에 스프링-mabtis연동 시 xml에 트랜젝션을 설정하여 서비스영역에서 처리할 수 있게 세팅하는 방법이 있어, 기록해놓으면 유용하겠다 싶었다. @transactional 어노테이션으로 트랜잭션을 주는 방식도 있긴하지만, xml 설정을..
"JRE"란 무엇인가, 자바 런타임 환경의 이해 "JRE란 무엇인가", 자바 런타임 환경의 이해 자바 개발 키트(Java Development Kit, JDK), 자바 가상 머신(Java Virtual Machine, JVM), 자바 런타임 환경(Java Runtime Environment, JRE)은 자바 애플리케이션을 개발하고 실행하기 위한 자바 플랫폼의 3대 구성 요소다. JDK과 JVM에 대해서는 별도로 소개할 것이며, 이번 기사에서는 자바의 런타임 환경인 JRE에 대해 알아보자. Credit: Michael Hicks(CC BY 2.0) 런타임 환경은 다른 소프트웨어를 실행하기 위해 고안되는 일종의 소프트웨어다. 자바용 런타임 환경인 JRE에는 자바 클래스 라이브러리(Java class libraries)와 자바 클래스 로더(Java clas..
DB Connection Pool에 대한 이야기 웹 애플리케이션을 운영하다 보면 에러 로그로는 식별 할 수 없는 잠재적인 이슈가 발생 할 때가 있다. 애플리케이션내의 오류가 명확히 확인이 되지 않은 상태에서 Out of memory가 발생 하거나, DB 서버에서부터 발생한 장애로 인해 웹 서버가 뻗어 버리는 경우 말이다.실제로 서비스 운영 중에 문제가 발생 했을 때 원인을 파악하고 조치한 내용을 정리해 보려고 한다. 결론부터 말하면 이러한 문제는 대부분 애플리케이션의 비지니스 로직의 오류가 아닌 WAS와 DB 서버간의 이슈로 DB Connection Pool에 대한 이해가 필요한 내용이였다.왜 이러한 문제가 발생하게 될까?먼저, 웹 어플리케이션을 지탱하는 WAS에서 DB 서버에 접근을 시작하고 데이터를 가져오기까지의 단계에서 가장 비용이 드는 부분이 ..
JVM 이해를 통한 Java의 작동원리 [Java/JVM] JVM 이해를 통한 Java의 작동원리 이해하기 ## 1. JVM이란? JVM은 물리적 머신을 소프트웨어 구현한 Java 프로그램을 실행할 수 있게 해주는 추상컴퓨팅 시스템입니다. Java는 WORA(Write Once Run Anywhere)의 철학을 위해 VM을 개발하였습니다. JVM은 OS에 상관없이 어느 환경에서도 Java가 실행이 가능토록 만들어 준 것입니다. Java를 컴파일 언어로서 실행하기 위해서는 컴파일을 거쳐야 합니다. Java 컴파일러는 .java 파일을 .class 파일로 컴파일 합니다. 이는 .java 파일을 Java byte code로 변환하여 .class 만드는 것입니다. Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행이 되지 않습니다. 이를 ..