WWW

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ WWW ] in KIDS
글 쓴 이(By): seasons (오히려전법)
날 짜 (Date): 1996년08월31일(토) 11시51분13초 KDT
제 목(Title):  WWW 강좌 10 : Java 배우기 (26)


A.Fun.A.Day(402) WWW 강좌 10 : Java 배우기 (26)
-----------------------------------------------



< 자바 백서 > 계속

4.1 동적 로딩과 바인딩(Dynamic Loading and Binding)
   
   자바언어의 이식할 수 있고, 인터프리트하는 본성은 높은 동적이고 동적으
   로 확장되는 시스템을 만든다. 자바언어는 진화하는 환경에 적응하기 위해 
   설계되었다. 클래스들은 요구되는 대로 링크되고, 네트워크상에서 다운로드 
   받을 수 있다. 새로 받은 코드는 실행을  위해 인터프리터 되기 전에 갱신
   된다.
   
   객체지향 프로그램밍은 데이터의 캡슐화와 부합하는 프로시져와  코드들의 
   재활용을 높여 "소프트웨어의 위기"의 적어도 한 부분을 풀기 위한 수단으
   로 받아들여졌다. 오늘날 객체지향 개발로  작업하는 대부분의 프로그래머
   는 그들이 선택한 언어로써  C++에 적응했다. 그러나  C++은 "소프트웨어 
   IC"의 생산과 분배에서 광범위한 사용을 방해하는 심각한 문제로 고통받고 
   있었다. 이 결점은  약한 슈퍼클래스 문제(Fragile  Superclass Problem)로 
   알려져 있다.
   
   약한 슈퍼클래스 문제(Fragile Superclass Problem)

   이 문제는 C++이 보통 구현될 때 발생하는 역효과(Side-Effect)이다.  클래
   스에 새로운 메쏘드나 새로운 인스탄스 변수를  삽입할 때, 앞의 클래스를 
   참조하는 모든 클래스는 재컴파일 되어야 하거나, 아니면 깨져버린다. 클래
   스의 정의와 그들의 클라이언트들간의 의존성에 대한 정보를  유지하는 것
   은 심지어 "Make"같은 유틸리티의 도움이 있다해도, C++의 풍부한 프로그
   래밍 원시코드의 에러로 되는 것이 증명되었다. 약한 슈퍼클래스의 이슈는 
   "계속되는 재컴파일의 문제(Constant Re-Compilation Problem)"로써  다루
   어지기도 한다. 엄청난 어려움을 통해 C++에서이 문제들을 피할 수 있지
   만, 그렇게 하는 것은 직접적으로 언어의  객체지향의 특성을 전혀 효과적
   으로 사용하지 않는 것이다. C++의 객체지향 특성을 피함으로써  개발자는 
   "소프트웨어 IC"를 재사용 하는 목적을 물리쳤다.
   
   ⊙ 약한 슈퍼클래스 문제를 해결하는 법
   
   자바언어는 여러 단계로 약한 슈퍼클래스  문제를 해결한다. 자바컴파일러
   는 숫자 값으로 레퍼런스를 컴파일하지 않는다. - 대신에, 바이트코드 갱신
   자와 인터프리터에게 상징화된 레퍼런스 정보를  제공한다. 클래스들이 링
   크될  때,  자바인터프리터는  단번에  최종적인  이름  분석(Final  Name 
   Resolution)을 수행한다. 한 번 이름이 분석되면, 레퍼런스는 자바인터프리
   터가 완전한 속도로 수행할 수 있는, 상대적인 숫자 값으로 재 작성된다.
   
   마지막으로, 객체의 저장윤곽은 컴파일러가 결정하지 않는다.  메모리 상에
   서 객체의 윤곽은 인터프리터가 결정하며, 실행 시에 결정된다.  새로운 인
   스탄스 변수와 메쏘드로 갱신된 클래스는 존재하는 코드 없이 링크된다.
   
   작은 소모를 통한 이름 찾기에서, 첫 번째 시도에서 어떤 이름이 발견되면, 
   자바언어는 약한 슈퍼클래스 문제를 제거한다.  자바 프로그래머는 객체지
   향프로그래밍 기술을 C++이  발생시킨 계속되는 재컴파일  문제의 무거운 
   짐없이 더욱 더 똑바로 사용할 수  있다. 라이브러리는 클라이언트에 어떤 
   영향도 주지 않고 새로운 메쏘드와 인스탄스 변수를 추가할 수 있다. 프로
   그래머로써 당신의 삶은 간결해진다.
   
   ⊙ 인터페이스(Interfaces)
   
   자바언어는 Objective C에서 빌려  오고 클래스와는 유사한  인터페이스의 
   개념을 구현한다. 인터페이스는 객체가 응답하는 메쏘드 집합의 간결한 설
   명이다. 인터페이스는 인스탄스 변수나 구현이 없다. 정형화된 클래스의 상
   속구조가 만든 상속의 어려움 없이 다중 상속의 이점을 주는, 유동적인 방
   법으로 여러 개의 인터페이스를 사용할 수 있다. 
   
   실행시 표현(Run Time Representations)
   
   자바언어에서 클래스는 실행시 표현을 가지고 있다. 클래스라 이름 붙여진 
   클래스, 실행시 클래스 정의를 포함하는 인스탄스가 여기에 속한다. 객체를 
   가지고 있다면, 그 객체가 어느 클래스에 속한지 알 수 있다. C와  C++ 프
   로그램에서, 객체를 가르키는 포인터를 조작해야 했고, 그럼에도 무슨 종류
   의 객체인지 모른다면, 알아낼  방법이 없었다. 자바언어에서 실행시  종류 
   정보에 근거한 찾아내기(Finding Out)는 똑바로 할 수 있다.
   
   이름을 가지는 주어진 스트링의 클래스의  정의를 찾는 것도 또한  가능하
   다. 이것은 Data Type Name을 계산하고, 쉽게 실행시스템에서 동적인 링
   크를 가질 수 있음을 의미한다.
   
   




--
     ___o            ___o            ___o           ___o           ___o
   __ \\ __        __ \\ __        __ \\ __       __ \\ __       __ \\ __
  (*)/  (*)       (*)/  (*)       (*)/  (*)      (*)/  (*)      (*)/  (*)
+---------------------------------------------------------------------------+
| Won Geun Baek               E-Mail: wgbaek@pharaoh.telecom.samsung.co.kr  |
| Samsung Electronics co.     TEL   : 02-405-1376 (7:00-18:00 Korea)        |
+---------------------------------------------------------------------------+

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.