개발 등/중급 20

JNI : Java Native Interface

2008/03/18 10:03 ★ 자바 네이티브 인터페이스를 이용한 C/C++ 코드와 결합보통 서로 다른 장, 단점을 갖고 있는 JAVA와 C++, 이 두 언어를 결합할 수만 있으면 큰 시너지를 발휘할 수 있다고 생각한다. 뭐, 어느 정도의 범위에서는 그렇긴 하지만...그러나 왠만하면, 정말 어쩔 수 없는 경우를 제외하고는 이 JNI 기술은 활용하지 않는 것이 최상이라고 난 생각한다. -_-;;이제 마소에서 두 언어를 결합하는 방법을 전격 공개한다. 먼저 자바의 JNI를 이용해 C로 작성된 Win32 DLL을 호출하는방법을 알아볼 텐데, 자바 코드에서 만든 데이터를 C 코드로 전달하거나 혹은 C 코드에서 생성된 데이터를 자바로 전달하는 방법,한글 문제를 해결..

개발 등/중급 2008.09.03

Object 클래스 : clone()

자바에서 인스턴스를 참조할 때는 대부분 주소값을 복사하는 차원에서 이루어졌다. 즉 Test t1 = new Test(); Test t2 = t1; 따라서 t1.hashCode() == t2.hashCode(); 의 결과는 True 가 된다. 하지만 주소값의 복사가 아닌 메모리 차원에서 복사를 하려면 어떻게 해야 할 것인가? 그럴 때 필요한 것이 바로 clone 메서드이다. clone 메서드는 Object 클래스에 정의되어 있는 메서드이다. protected native Object clone(); Creates and returns a copy of this object. 즉 API에서 정의된 대로 해당 객체를 생성한 후 리턴하는 역할을 한다. 만일 clone() 을 오버라이딩 하겠다면 반드시 super..

개발 등/중급 2008.09.03

Layout Manager

(1) 개요 -FlowLayout Manager - 컴포넌트의 기본크기대로 (화면 정중앙기준) -GridLayout Manager -그리드(2,3)처럼 화면을 나누어서 모든 영역을 다 사용 -BorderLayout Manager - 화면을 다섯개의 방향으로 나눔 -CardLayout Manager -카드게임처럼 여러 개의 카드를 겹쳐놓은듯하게 구성 -GridBagLayout Manager - 적절한 위치에 마음대로 배치하도록 함 (2) 예제 FlowLayout import java.awt.*; class Exam_04_Sub extends Frame { private Button bt1 = new Button("1"); private Button bt2 = new Button("2"); private B..

개발 등/중급 2008.09.02

checkedException / uncheckedException

1. checkedException : 명시적 - try/catch로 예외를 처리하거나 혹은 메서드에서 throws 를 해야한다. RuntimeException을 제외한 Exception 클래스와 모든 하위클래스들. (ClassNotFoundException, IOException...) 2. uncheckedException : 암묵적 - 예외를 처리하든 안하든 상관없다. RuntimeException과 하위클래스들 (NullPointerException,AtithmeticException,IndexOutOfBoundsException..) 예) public class ExceptionTest{ public static void main(String[] args){ System.out.println("..

개발 등/중급 2008.08.28

Scanner class

Name.java package stat; //API중 Scanner 클래스를 사용 import java.util.Scanner; //APi중 InputMismatchException 예외처리를 사용 import java.util.InputMismatchException; public class Name { Scanner scan; public static void main(String[] args) { // 새로운 Name 객체 생성 new Name(); } //숫자를 입력해 값을 출력하는 Name 메소드 public Name(){ //새로운 Scanner객체 scan을 생성 scan = new Scanner(System.in); System.out.println("반복할 숫자를 입력하세요.\n"); ..

개발 등/중급 2008.08.07

System.exit();

자바 프로그램을 종료하면서 운영체제에 에러 코드를 돌려주는 방법입니다. C언어에서는 return 0; 이나 return 1; 등으로 반환할 수 있지만, 자바의 main (메인 메서드;함수) 은 반환값이 void형이기에 return문으로 값을 돌려 주지 못합니다. 만약 강제로 돌려주면 cannot return a value from method whose result type is void 이런 에러가 납니다. 그렇다고 해서 메인을 "public static int main(String[] args)" 이렇게 정수형으로 고치면, Exception in thread "main" java.lang.NoSuchMethodError: main 이런 에러가 납니다. 자바의 메인 메서드에서는 return문이 아닌, ..

개발 등/중급 2008.08.07

윤년의 개념

우리가 일반적으로 사용하는 1년은 태양년 또는 회귀년(tropical year)입니다. 이것은 태양이 춘분점에서 출발하여 다시금 춘분점에 도달할 때까지 걸리는 시간입니다. 1 태양년의 길이는 365일 5시간 48분 46초 또는 365.2422일입니다. 여기서 일은 평균 태양일입니다. 기 원전 46년경에 Julius Caesar는 당시의 혼란스러운 역법을 정리하면서 1년을 365일로 두었습니다. 그런데, 1 태양년은 365.2422일이므로 해마다 0.2422일이 남았고, 4년이 지나면, 0.2422 x 4 = 0.9688일로서 거의 하루가 남게 되었습니다. 이 때문에 시저는 4년마다 한번씩 윤년을 두어 그 해의 1년은 366일이 되도록 하였습니다. 이것을 율리우스력(Julian Calendar)이라고 합니..

개발 등/중급 2008.08.04

Collection 정리 2

자바 프로그램이 실행되는 동안 프로그램에서는 많은 객체들이 살고 있는 셈입니다. 일반적인 객체의 생명은 new + 생성자를 통해서 만들어진후에, 레러펀스와 결합되어 사용되다가, 가비지 컬렉터에 의해서 정리됩니다. 필요한 객체의 수가 얼마되지 않은 간단한 프로그램에는 객체가 필요할 때마다 하나씩 만들어 사용하면 그만이지만, 실제로는 객체를 모아서 관리해야 하는 경우가 생기기도 하고또는 여러 개의 객체를 하나의 유닛 단위로 연산해야하는 경우도 생깁니다.또 어떤 경우는 만들어진 객체를 사용하다가 잠시 저장하고, 또 다시 꺼내 쓰다가 다시 저장 하기도 합니다.  저장된 객체를 뭉치로 다른 객체의 메소드의 인자로 넘겨준다던가하는 행동들을 해야 하는 경우가 생깁니다.이러한 경우 객체를 저장하는 도구, 저장했다가 다..

개발 등/중급 2008.08.03

Collection 정리

여태 개발하면서 무지 많이 써오던 컬랙션들. 성능이나 별다른 고민없이 걍 대충 써왔던 것 같다. "켄트 벡의 구현 패턴"이란 책을 보다 보니 자세한 설명이 있어서 그 동안 알고 있던것과 더불어 정리해 두는 게 좋을 것 같다.1. 인터페이스The core collection interfaces. Queue는 거의 사용하지 않고 책에 없으니까 생략 ^^ - 배열가장 단순하지만 가장 유연하지 못한 컬렉션.크기가 고정되어 있고 원소 접근 방법이 용이하면 빠르다.단순한 연산의 경우 배열은 다른 컬렉션에 비해 시간, 공간 모든 면에서 효율적이다.일반적으로 배열 접근(element[i])은 ArrayList를 사용했을 때(elements.get(i))에 비해 10배 이상 빠르다고 한다.대부분의 경우 유연성 문제 때문..

개발 등/중급 2008.08.03