본문 바로가기

Language/Java

Log4j 사용법 logging-log4j-1.2.14.zip첨부파일 : 압축해제후 log4j-1.2.14.jar 파일을 JDK설치된 폴더의 lib/ext 디렉토리에 카피후 프로젝트 properties 의 Java Build Path > Library > Add External Jars ... 에서 추가시킴 LOG4J I. 들어가면서.. 그리고 log4j log4j는 자바 어플리케이션에서 빠르고 효과적으로 로깅 할 수 있도록 도와주는 오픈 소스 프로젝트입니다. 로깅(logging)은 코드의 가독성을 떨어뜨리는 단점이 있지만 애플리케이션에 문제가 있을 때 개발자가 자세한 상황을 파악할 수 있도록 해 주며 테스팅시 빠질 수 없는 요소입니다. 아마도 여러분들은 여러 어플리케이션이 추가되면서 각 개발자들만의 독특한 로깅방식이 서.. 더보기
J2EE란? 1. J2EE (Java 2 Enterprise Edition) ■ J2EE란? J2EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합입니다. J2EE를 만든 것은 Sun Microsystems이고 SUN에서 J2EE 스펙을 시범적으로 구현해두기는 하지만, IBM, BEA, Oracle, HP, Iona등 여러 벤더들도 그 스펙을 구현할 수 있으며 J2EE 호환성을 검증하 는 기구의 검증을 통과하기만 하면 J2EE 호환 제품으로 시장에 출시할 수 있습니다. 그리고 이런 벤더들은 J2EE 스펙을 개선하는 과정에도 활발히 참여하기 때문에, J2EE는 사실상 SUN의 독점적인 기술이라기 보다는 Java진영으로 불리는 여러 Vendor들과 개발자들이 같이 만들어 가고 공유하는.. 더보기
[Java Tip] clone()과 Cloneable Object 클래스에 clone() 메서드가 protected로 정의 되어있습니다. native 메서드입니다. 기본적으로는 메모리를 복사한다고 합니다. clone()을 지원하려면 그 클래스는 Cloneable 인터페이스를 implements 해야 합니다. 하지만, 우리가 일반적으로 알고있는 것과는 다르게 Cloneable 인터페이스에는 아무런 메서드도 정의되어 있지 않습니다. 제가 처음에 clone()에 대해서 굉장히 헷갈렸던 부분입니다. 일단, clone()을 지원하지 않을 거라면, 상관없고...clone()을 지원 할 클래스라면 Object 클래스에 정의 되어있는 protected Object clone() 메서드를 public으로 재정의 해서 사용해야 합니다. 재정의하지 않으면, 기본적으로 Obje.. 더보기
이클립스 프로젝트에 빨간 느낌표가 있다?? - 프로젝트명에 x 표시 외에 !표시는 import 시킨 jar 파일의 경로가 잘못되었거나 유효하지 않은 파일이나 디렉토리를 참조하고 있는 경우이다. 이 !표시가 있으면 소스파일을 수정해도 컴파일이 되지 않는다. SVN을 사용하는 경우 SVN 저장소와의 설정내역이 다를경우에도 나타날 수 있다. 해결방법 예시: jar파일이나 디렉토리를 참조하고 있는 내역을 확인한다. 삭제! 삭제! 느낌표가 사라졌음요! 더보기
Swing Layout [LayoutManager] _레이아웃 관리자 GUI프로그램의 화면구성은 매우 중요함 따라서 대부분의 GUI프로그램을 개발시 도구를 지원 그러나 자바에서는 GUI를 구성하는 개발 도구를 기본 버전에서는 지원하지 않음 도구를 사용하지 않고 가장 효율적으로 컴포넌트 배치관리 방법 레이아웃 관리자는 컴포넌트 배치 역할을 하는 레이아웃 관리자를 사용 컨테이너 클래스를 상속받는 클래스에서만 사용가능 Panel, Frame, Window, Dialog, ScrollPane등 레이아웃의 종류 FlowLayout, GridLayout, BorderLayout, CardLayout, GridBagLayer 등 수동 Layout의 장점 단점. 장점 : 수동으로 컴포넌트를 배치하는 작업은 개발자가 원하는 대로 화면을 구성할.. 더보기
Swing으로 만든 JAR파일을 EXE로 변환 자바 어플리케이션도 실행 jar ( Executable JAR ) 파일로 작성 하면, jar파일을 더블클릭하여 실행하는 것이 가능합니다만.. 정말? 자바어플리케이션을 실행할 PC에 자바구동환경( 자바런타임 JRE )이 미리 설치 되어 있지어야 한다는 약점이 있습니다. 이 때문에 자바 Swing/AWT등으로 작성된 GUI어플리케이션의 경우 어플리케이션 작성 후 Executable JAR파일을 윈도우용 실행 파일(exe)로 감싸는(Wrapping)하는 단계를 거치게 됩니다. Executable JAR 파일을 exe파일로 감싸데는 몇 가지 방법이 있지만 이번 포스팅에서는 launch4j를 이용해 자바 어플리케이션을 exe형태의 파일로 변환하는 방법을 소개토록 하겠습니다. 잠깐 launch4j를 소개하자면 so.. 더보기
Java arraycopy [Java 배열 복사] System.arraycopy(array, 0, copy, 1, 3 ); array[0] = 1; // 이거부터 3개니까 array[1] = 2; // 2번째 array[2] = 3; // 3번째 여까지 복사 array[3] = 4; array[4] = 5; copy[0] = 0; copy[1] = 0; // 복사되는 대상은 1번째 배열부터니 여기서부터 copy[2] = 0; // 저번째 copy[3] = 0; // 3번째 여까지 복사. copy[4] = 0; 결과 찍어보면> 1 2 3 4 5 0 1 2 3 0 public class Test { public static void main(String args[] ) { // 배열복사 int array[] = { 1,2,3,4,5 }; int copy[].. 더보기
JAVA NIO(non-blocking I/O) NIO 기존의 자바IO가 blocking IO였기 때문에 C,C++에 비해 상당히 느렸다. 또한 File Locking 같은 기능도 지원되지 못했다. 두가지 비 효율적인 부분1. 커널 영역 버퍼에서 프로세스 영역 안의 버퍼로 데이터를 복사[디스크]에서 [커널 영역 버퍼]로 데이터를 저장하는 것은 디스크 컨트롤러가 DMA 기술을 사용하기 때문에 CPU를 사용 하지 않는다. 하지만 [커널 영역]에서 [프로세스 영역 버퍼]으로 데이터를 전달하는 것은 CPU를 사용한다. 만약 커널 영역의 버퍼에 저장된 데이터를 직접 사용한다면 복사하는 시간을 단축 할 수 있고, 복사 대상인 데이터의 가비지 컬렉션도 필요 없다. 그리고 CPU자원도 최소화 할 수 있다. 2. 디스크 컨트롤러에서 커널 영역의 버퍼로 데이터를 복사하.. 더보기