시소당
Java Beans
1. Beans란 무엇인가?
Java Beans Specification문서에서는 Java Bean을 다음과 같이 정의하고
있다.
A Java Bean is a reusable software component that can be manipulated
visually in a builder tool (자바 빈은 빌더 툴에서 가시적으로 다루어질
수 있는 재사용 가능한 소프트웨어 부품이다)
소프웨어 콤포넌트란 단어는 아마도 90년대를 가장 화려하게 장식한
단어중에 하나일 것이다. 비주얼 베이직과 같은 비주얼 개발툴에서
처음으로 사용된 이 개념은 이제 가장 대중적인 개발방법으로
자리잡았다. 윈도우즈 환경에서는 OCX(OLE Custom Control)라는
표준으로 자리잡은 실정이다.
자바에서 이러한 객체지향적인 소프트웨어 부품을 사용할 수 있게끔
해주는 기능을 하는 것이 바로 Bean이다.(내가 사전을 찾아본 바로는
Bean은 (커피)열매를 말한다. 콩깍지 같이 생긴...)
Java Bean이 다른 소프트웨어 부품(예를 들면 OCX)에 비해 가지는
장점은 무엇일까?
첫째, Java Bean은 자바로 만들어지기 때문에 자바 가상 기계가 돌아가는
어떠한 기계에서든 사용이 가능하다.(즉, OCX와 같이 기계의존적이
아니다) 따라서 앞으로 머지않아 Java Bean을 워드 문서나 엑셀, 또는
HTML문서에 그대로 삽입하는 것이 가능해 질 것이다.(물론 Apple이나
OS/2에서도 가능하다)
둘째 Java Bean은 만들기가 쉽다. easy to use라는 자바의 정신을 그대로
물려받았기 때문에 프로그래밍이 손쉽다.
세째, 보안성이 뛰어나다. 이 또한 자바본래의 특성을 그래로 물려받은
것이다.
앞으로 머지않은 장래에(물론 지금도 사용할 수는 있다) 비주얼
베이직이나 델파이와 유사한 자바빈즈용 개발툴이 발표될 것이고 많은
컴포넌트들이 발표될 것이다.
현재 윈도우즈 프로그래밍에서 OLE에 대한 지식이 필수적이듯이 자바
프로그래밍에서는 Beans에 대한 지식이 필수적이 될 것이다.
2. 무엇을 알아야만 하는가?
Java Beans는 JDK1.1부터 본격적으로 지원된다. 따라서 Beans를
공부하려면 JDK1.1을 가지고 있어야 하며 공개 자료실이나
http://www.javasoft.com 에서 다운로드받을 수 있다. 또한 Java Beans
Development Kit이 필요하다. 이것 역시 같은 장소에서 구할 수 있다.
그러나 Java Beans Spec 1.0에서는 이 스펙의 용도가 Component vender
를 위한 것이라고 되어 있다. Symantec Visual Cafe, Boland JBuilder,
IBM Visual Age for Java 등 자바 개발 툴(IDE)에 대부분 Beans를 만들
기 위한 도구가 다 들어 있다. 따라서 개발자들은 그러한 도구를 이용하여
Beans를 개발하면 된다.
JDK1.1에서는 이전의 버전에 없던 많은 요소가 더해졌다.
Beans는 JDK1.1의 새로운 요소에 크게 의존하고 있으므로 이들 요소들에
대해서 잠깐 알아볼 필요가 있다.
1) 새로운 이벤트 모델
이전 버전에서 이벤트를 다루는 방식은 handleEvent메소드를 이용하거나
특정 이벤트 발생시 불리게끔 되어있는 여러가지 이벤트 관련 메소드
(예를 들면 mouseMove, mouseEnter,.. 등등)를 재정의하는 것이었다.
물론 이러한 방식은 여전히 가능하지만 Beans를 이용하기 위해서는
새로운 이벤트 모델에 따라야 한다. 새로운 이벤트 모델이라고 해서
완전히 새로운 것은 아니고 기존의 이벤트 모델을 확장한 것이라고 보면
될 것이다. 개개의 빈은 이벤트의 소스(Source)가 되며 자신만의 고유한
이벤트를 생성하고 전달할 수 있다. 이렇게 전달된 이벤트를 받는 쪽을
listener라고 한다. 이 listener는 자바의 interface 키워드를 이용해 정의되기
때문에 이 inteface를 구현하는 어떠한 객체라도 이벤트를 전달받을 수
있다. 이벤트에 관계된 API는 java.util 패키지, java.awt.event 패키지에서
찾아볼 수 있다.
2) 프로퍼티(속성)의 개념 도입
기존의 멤버 데이타외에도 프로퍼티라는 새로운 개념이 도입되었다.
물론 이것은 비베나 델파이에서와 같이 언어적으로 정의된 것은 아니다.
(이들 언어(또는 개발도구)에서는 프로퍼티로 정의하기 위해서 새로운
키워드를 사용해서 지정해주는 방식을 취하고 있다..) 따라서 기존에
멤버 데이타를 정의하는 것과 똑같은 방법이 사용된다. 프로퍼티를
다루기 위해서는 이 프로퍼티를 다루는 두가지의 메소드를 정의해야만
한다. 하나는 프로퍼티의 값을 알아낼 수 있는 것(getter)이고 하나는
프로퍼티의 값을 바꾸어서 빈의 형태나 성질이 변하게끔 하는
것(setter)이다. 가령 비베에서 다음과 같은 문장이 있다면 이것은
프로퍼티를 이용하는 것이다.
Form1.Caption = Change the Caption property..
빈에서는 다음과 같은 형식을 취하게 될 것이다.(또는 취하고 있다..)
frame1.setTitle(Change the Caption property..);
프로퍼티의 변화는 마치 이벤트를 전달하듯이 Property Listener에 전달할
수 있다.
프로퍼티에 관계된 API는 java.benas 패키지에서 찾아볼 수 있다.
3) Object Serialization
빈은 자신의 상태나 특성을 어떤 매체(영구적인 저장장치나 네트웍으로
연결된 다른 지점)에 저장하고 그것을 다시 사용할 수 있어야 한다.
JDK1.1에서는 이를 위해 오트젝트를 저장하고 다시 읽을 수 있는 새로운
방식을 제공한다.
Object Serialization에 관계된 API는 java.io에서 찾아볼 수 있다.
4) Reflection
자바로 프로그래밍을 해본 사람이면 한번 쯤은 Class라는 특이한
클래스를 사용해 본 경험이 있을 것이다. Class오브젝트는 오브젝트
자체를 다룰 수 있는 아주 특별한 능력을 가지고 있다. JDK1.1에서는
이러한 오브젝트 자체를 다룰 수 있는 더욱 풍부한 클래스들과 메소드를
제공한다. 빈은 자신에 대한 정보를 다른 객체에 알리기 위해 이러한
새로운 클래스들과 메소드들을 이용한다.
또한 빈을 사용하는 객체또한 빈에 대한 정보를 얻기 위해 이것들을
사용한다. Reflection에 관계된 API는 java.lang.reflect 패키지에서 찾아볼 수
있다.
추후 다시 정리해서 올리겠습니다.
================================================
이원영(javaservice@hanmail.net)
236-1, Hyosung-2dong, Kyeyang-gu, Inchun,
407-042, KOREA
Phone:(82-32)540-5243, Fax:(82-32)540-5402
PCS:019-310-7324
http://math.kyungpook.ac.kr/~leewy/
================================================
자바빈즈란 이원영씨가 설명한 것처럼 GUI에서 재사용 가능한 자바의 컴포넌트 모델에서 출발합니다.
다만 jsp 에서 빈즈라는 개념은 이러한 자바의 자바빈즈의 개념을 이용해서 jsp에서 컴포넌트를
이용하여 개발한다는 뜻이 녹아들어가 있다는 것입니다. 따라서 굳히 GUI 를 위한 컴포넌트 개발이
아니더라도 재사용 가능한 컴포넌트를 만들어 사용한다는 측면에서의 '빈즈'라고 보시면 좋을 듯합니다
혹 어떤 저자의 책에서는 이러한 빈즈를 '서비스 빈즈', '데이터 빈즈', 'GUI 빈즈' 이런식으로
나누기도 하더군요.. 아무쪼록 너무 용어에 집착하지 않고 필요에 따라서 적절한 기술들을
잘 활용하는 것이 좋을 듯 합니다. [ 김 용희 ]
[출처] 자바빈즈(Java Beans)란?|작성자 준형빠
http://blog.naver.com/sms0909?Redirect=Log&logNo=80002003463