본문 바로가기

java

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. 디스크 컨트롤러에서 커널 영역의 버퍼로 데이터를 복사하.. 더보기
Java String interm String.intern() String클랫의 intern()은 String인스턴스의 문자열을 'constant pool'에 등록한다.'constant pool'에 이미 존재할 경우에는 해당 문자열의 주소를 반환한다. ------------------------------------------------------String s1 = "AAA"; String s2 = new String("AAA"); s2 = s2.intern();------------------------------------------------------ s2에는 s1과 같은 주소값이 저장되게 된다(기존의 s2의 인스턴스는 가비지 컬렉트 된다)intern은 Heap에 만들어진 객체를 놓아주고, String pool에 있는 객체를 가.. 더보기
OXM(Object XML Mapping) [XML 바인딩 기술들...] JAXB : JavaSE, JavaEE 표준에 포함이 되어 있음Castor XML : 설정파일이 필요 없는 인트로스펙션 모드를 지원하기도 하는 매우 간결하고 가벼운 바인딩 프레임워크JiBX : 뛰어난 퍼포먼스를 자랑하는 XML 바인딩 기술XmlBeans : 아파치 XML 프로젝트의 하나다. XML의 정보셋을 효과적으로 제공해준다.Xstream : 관례를 이용해서 설정이 없는 바인딩을 지원하는 XML 바인딩 기술의 하나다. 더보기
Java Doc JavaDoc 주석 다는 방법, 기본적인 예 여전이 주석이라는 것에 대해 긍정적인 면보다는 부정적인 면이 더 많다고 생각하고 있지만.. 소스 코드와 주석을 통해 멋지게 문서를 자동으로 생성해 주는 개념은 주석에 대한 부정적인 많은 부분을 불식시키고도 남는듯합니다. Java로 만든 어플리케이션(또는 서비스)의 소스를 협업자 또는 제3자에게 제공하기 위해 주석을 달때 JavaDoc의 도움을 받아 좀더 체계적으로 작업할 수 있도록 하기 위한 주석법입니다. 간단히 제 스스로 개발할때 참고하여 사용할만한 예제 코드로 정리해 봅니다. 먼저 클래스에 대한 주석의 예입니다. view plaincopy to clipboardprint?/** * 화면상에 윈도우를 나타내기 위한 클래스 * 사용 방법: * * Window .. 더보기
Java에서 직렬화(Serializable)가 불가능한 경우 1. 직렬화가 불가능한 경우 1) 직렬화가 불가능한 객체를 포함한 경우 2) 하위 클래스는 직렬화를 구현했지만 상위 클래스에서는 직렬화가 구현되지 않은 상태에서 상위 클래스의 생성자에 매개변수가 있는 경우 2. 직렬화 불가능한 클래스들 1) 이벤트 어댑터 2) 이미지 필터 3) AWT 클래스 4) beans 5) Socket 6) URLConnection ?1234567891011121314import java.io.IOException;import java.io.Serializable;import java.net.Socket; /** * Serializable은 구현했지만 직렬화할 수 없는 객체를 포함한 경우 */ public class MyNetwork implements Serializable { .. 더보기
Java enum java enumo 클래스처럼 보이게 하는 상수¡ 예를 들어 Config 라는 클래스를 만들고 맴버로 KVM,XenServer를 두고 싶음- 기존의 클래스로 구현하는 방식 (Config.java)public class Config { public static final int KVM = 1; public static final int XenServer = 2;}- 위와 같이 클래스로 구현한다.- 여기에서의 문제점은 1,2 값이 KVM, XenServer 만을 가르키지 않는다- 또한 3,4 와 같은 숫자가 들어 올 수도 있다 ¡ 이러한 문제점을 해결하기 위해서 JAVA 1.5 에서 enum 이 추가 되었다.public enum Config {KVM,XenServer} ¡ 출력public class Hell.. 더보기