<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://api.springnote.com">
  <identifier type="integer">451490</identifier>
  <title>Java VM Spec Chapter8 The Linking Model</title>
  <relation_is_part_of type="integer">312968</relation_is_part_of>
  <date_modified type="datetime">2007-09-03T12:53:43Z</date_modified>
  <uri>http://chan.springnote.com/pages/451490</uri>
  <date_created type="datetime">2007-09-03T12:09:17Z</date_created>
  <source>&lt;h1&gt;&amp;nbsp;The Linking Model&lt;/h1&gt;
&lt;p&gt;&#54532;&#47196;&#44536;&#47000;&#47672;&#51032; &#44288;&#49452;&#50640;&#49436; Java &#50500;&#53412;&#53581;&#52432;&#51032; linking model&#51012;&amp;nbsp;&#51060;&#54644;&#54616;&#45716;&#44163;&#51008; &#51473;&#50836;&#54632;.&lt;/p&gt;
&lt;p&gt;&#51060;&#51204;&#50640; &#47568;&#54664;&#46319;&#51060; &#51088;&#48148; &#47553;&#53433; &#47784;&#45944;&#51008;&amp;nbsp;&#54532;&#47196;&#44536;&#47016;&#49892;&#54665;&#49884;&amp;nbsp;&#50976;&#51256; &#46356;&#54028;&#51064; &#53364;&#47000;&#49828; &#47196;&#46300;&#47484; &#46356;&#51088;&#51064;&#54616;&#45716;&#44163;&#51012;&amp;nbsp;&#54728;&#50857;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50976;&#51256; &#46356;&#54028;&#51064; &#53364;&#47000;&#49828; &#47196;&#45908;&#45716; &#45817;&#49888;&#51032; &#50612;&#54540;&#47532;&#52992;&#51060;&#49496;&#51060; &#52980;&#54028;&#51068;&#46104;&#50632;&#51012;&#46412; &#50508;&#51648;&amp;nbsp;&#47803;&#54664;&#44144;&#45208;, &#51316;&#51116;&#54616;&#51648; &#50506;&#50520;&#45912; &#53364;&#47000;&#49828;&#50752;&amp;nbsp;&#51064;&#53552;&#54168;&#51060;&#49828;&#47484;&amp;nbsp;load &#54616;&#44256; &#46041;&#51201; &#47553;&#53433;&#51012; &#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51088;&#48148;&#47553;&#53433;&#51008; &#47784;&#45944; &#48516;&#49437;&#48169;&#48277;&#51012;&amp;nbsp;&#50976;&#46020;&#54616;&#45716; &#50644;&#51652;&#51060;&#45796;. &#51060;&#51204;&#52309;&#53552;&#45716; class&#51032; life time&#50640; &#45824;&#54644;&#49436; &#48420;&#51648;&#47564; &#51088;&#49464;&#55176;&#45716; &#50504; &#48420;&#45796;. &#51060;&#51109;&#50640;&#49436; &#44618;&#51060;&#51080;&#44172; &#48372;&#51088;. &#44536;&#47532;&#44256; &#45796;&#51060;&#45208;&#48121; &#51061;&#49828;&#53584;&#49496;&#50640;&#49436;&#51032;&amp;nbsp;&#48516;&#49437;&#48277;&#51012; &#48372;&#51088;. &#47553;&#53433; &#47784;&#45944;&#51032;&amp;nbsp;overview, &#49345;&#49688;&#54400;&#51032; &#49444;&#47749;,&amp;nbsp;&#47700;&#49548;&#46300;&#53580;&#51060;&#48660;&#51032; &#44592;&#49696;(desc),&amp;nbsp;class loader&#51012; &#50612;&#46523;&#44172; &#51676;&#50556;&#54616;&#44256;, &#50612;&#46523;&#44172; &#49324;&#50857;&#46104;&#45716;&#51648; &#47751;&#44032;&#51648; &#50696;&#51228;&#46321;&#51012; &#48376;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Dynamin Linking&amp;nbsp;and Resolution&lt;/h2&gt;
&lt;p&gt;&#51088;&#48148;&#54532;&#47196;&#44536;&#47016; &#52980;&#54028;&#51068;&#54616;&#47732; class&#48143; interface&#44032; class File&#47196; &#45208;&#50728;&#45796;. &#51060; &#54868;&#51068;&#46308;&#51008;&amp;nbsp;&#46021;&#47549;&#51201;&#51060;&#47728;, &#45796;&#47480; &#53364;&#47000;&#49828;&#45208; &#51088;&#48148; API(rt.jar?)&#51032; &#49900;&#48380;&#47533; &#52964;&#45349;&#49496;&#51012; &#44032;&#51648;&#44256; &#51080;&#45796;. &#54532;&#47196;&#44536;&#47016;&#51012; &#49688;&#54665;&#54616;&#47732; JVM&#51060;&amp;nbsp;class&#50752; interface&#47484; load&#54616;&#44256; &#45796;&#51060;&#45208;&#48121; &#47553;&#53433;&#51032; &#52376;&#47532;&#50640;&#49436; &#44536;&#44163;&#46308;&#51012;&amp;nbsp;hook&#54620;&#45796;. ( &#45210;&#50500; &#52296;&#45796;.&amp;nbsp;-&amp;nbsp;&#52968;&#53944;&#47204; &#54620;&#45796;. )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#47560;&#52824; &#45817;&#49888;&#51032; &#54532;&#47196;&#44536;&#47016;&#51060; &#51064;&#53552;&#45367;&#49345;&#50640; &#51080;&#45716; &#53364;&#47000;&#49828;&#45208; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; JVM&#51060;&amp;nbsp;build&#54616;&#45716;&#44163; &#52376;&#47100; &#49688;&#54665;&#46108;&#45796;. class&#54868;&#51068;&#51008; &#47784;&#46304; &#49900;&#48380;&#47533;&#47112;&#54140;&#47088;&#49828;&#47484; &#49345;&#49688;&#54400;&#50640; &#51200;&#51109;, &#47784;&#46304; class File&#51008; &#49345;&#49688;&#54400;&#51012; &#44032;&#51648;&#44256; &#51080;&#44256; &#44033; &#53364;&#47000;&#49828;&#45208; &#51064;&#53552;&#54168;&#51060;&#49828;&#45716; JVM&#51060; &#44032;&#51648;&#44256; &#51080;&#45716; &#47088;&#53440;&#51076; &#52968;&#49828;&#53444;&#53944;&#54400;&#51060;&#46972;&#44256; &#48520;&#47532;&#45716; &#52968;&#49828;&#53444;&#53944;&#54400;&#47196; &#47196;&#46377;&#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;(&#52968;&#49828;&#53444;&#53944;&#54400; - &#53364;&#47000;&#49828;&#54868;&#51068;&#50640; &#44396;&#51312;&#52404;&#51032; &#44396;&#54788;&#51060; &#51221;&#51032;&#46104;&#50612; &#51080;&#45796;.&amp;nbsp;&amp;nbsp;) &#51060;&#50752; &#44057;&#51060; type&#51060; &#45796; &#47196;&#46300;&#46104;&#44256; &#45208;&#47732; &#47784;&#46304; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#45716; &#47088;&#53440;&#51076; &#52968;&#49828;&#53444;&#53944; &#54400;&#50640; &#51200;&#51109;&#46104;&#44172; &#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#54532;&#47196;&#44536;&#47016; &#46041;&#51089;&#51473;&#50640; &#44033; &#49900;&#48380;&#47533;&#47112;&#54140;&#47088;&#49828;&#44032; &#49324;&#50857;&#46104;&#50612;&#51652;&#45796;&#47732; &#47784;&#46160;&amp;nbsp;&#48516;&#49437;&#46104;&#50612;&#51256;&#50556;&#47564; &#54620;&#45796;. &#47112;&#51320;&#47336;&#49496;(&#48516;&#49437;)&#51060;&#46976; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#50752; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#47484; &#45796;&#51060;&#45208;&#48121; &#47112;&#54140;&#47088;&#49828;&#47196; &#50672;&#44208;&#54616;&#50668; &#44256;&#50976;&#54620;&amp;nbsp;&#50644;&#54000;&#54000;(&#51221;&#48372;&#45800;&#50948;)&#47484; &#52286;&#45716; &#44163;&#51060;&#45796;. &#47784;&#46304; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#45716; &#53080;&#49828;&#53444;&#53944; &#54400;&#50504;&#50640; &#51080;&#44592; &#46412;&#47928;&#51060;&#45796;. &#51060;&#47084;&#54620; &#44284;&#51221;&#51012;&amp;nbsp;constant&amp;nbsp;pool resoultion &#51060;&#46972;&#44256;&#46020; &#48512;&#47480;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;6&#51109;&#50640; &#51201;&#50632;&#45796; &#49884;&#54588;&amp;nbsp;&#52968;&#49828;&#53444;&#53944; &#54400;&#51008; &#50672;&#49549;&#46108; &#50500;&#51060;&#53596;&#51032; &#51665;&#54633;&#51060;&#45796;. &#44033; &#50500;&#51060;&#53596;&#51008;&amp;nbsp;&#44256;&#50976;&#54620; &#51064;&#45937;&#49828;&#47484; &#44032;&#51648;&#44256; &#51080;&#44256;, much&amp;nbsp;like an array item,&lt;/p&gt;
&lt;p&gt;&#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#45716; &#49345;&#49688;&#54400;&#50640;&#49436; &#45208;&#53440;&#45216;&#49688;&#51080;&#45716; &#50500;&#51060;&#53596;&#51032; &#54620; &#51333;&#47448;&lt;/p&gt;
&lt;p&gt;JVM &#47749;&#47161;&#46308;&#51060; &#49900;&#48380;&#47533;&#47112;&#54140;&#47088;&#49828;&#44032;&amp;nbsp;&#51080;&#45716;&amp;nbsp;constant pool&#50640;&#49436;&#51032; &#44033; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#50640; &#51648;&#51221;&#46108; index&#47484; &#49324;&#50857;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484;&#46308;&#47732;&amp;nbsp;static field&#44050;&#51012; stack&#50640; &#50732;&#47532;&#45716; getstatic opcode&#45716; constant pool&#51032; index&#47484; &#45208;&#53440;&#45236;&#45716;&amp;nbsp;bytecode&amp;nbsp;stream&#46244;&#50640;&amp;nbsp;&#45208;&#50728;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;CONSTANT_Fieldref_info&amp;nbsp;&#50644;&#53944;&#47532;&#51032; index&#45716; &#54596;&#46300;&#44032; &#51316;&#51116;&#54616;&#45716; class&#51032; fullName&#44284; &#54596;&#46300;&#51060;&#47492;&#44284;&amp;nbsp;type&#47484; &#44032;&#47532;&#53416;&#45796;. JBM&#51008; &#47196;&#46300;&#54620; &#44033; &#53364;&#47000;&#49828;&#50752; &#51064;&#53552;&#54168;&#51060;&#49828;&#51032;&amp;nbsp;&#46021;&#47549;&#51201;&#51064; runtime constant pool&#51012; &#44032;&#51652;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47749;&#47161;&#51060; &#53080;&#49828;&#53444;&#53944;&#54400;&#50640;&#49436; 5&#48264;&#51704; &#50500;&#51060;&#53596;&#51012; &#44032;&#47532;&#53412;&#44256; &#51080;&#45796;&#47732; &#54788;&#51116; &#49688;&#54665;&#51473;&#51064; &#47700;&#49548;&#46300;&#44032; &#51221;&#51032;&#46108; &#53364;&#47000;&#49828;&#51032;&amp;nbsp;constant pool&#51032; 5&#48264;&#51704; &#50500;&#51060;&#53596;&#51012;&amp;nbsp;&#44032;&#47532;&#53412;&#45716; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#46609;&#44057;&#44144;&#45208; &#45796;&#47480; &#47700;&#49548;&#46300;&#51060; &#47751;&#47751; &#47749;&#47161;&#50612;&#46308;&#51060; &#49345;&#49688;&#54400;&#51032; &#44057;&#51008;&amp;nbsp;&#50644;&#53944;&#47532;&#47484; &#52280;&#51312;&#54620;&#45796;&#47732; &#46385;&#54620;&#48264;&#47564; resolve &#46108;&#45796;.&amp;nbsp;&#54620; &#47749;&#47161;&#50640; &#51032;&#54644;&#49436; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#44032; &#54644;&#49437;&#46104;&#50612;&#51648;&#44256; &#45212; &#54980;&#50640;&#45716;, &#44536;&#51060;&#54980;&#50640; &#45796;&#47480; &#47749;&#47161;&#50640; &#51032;&#54644;&#49436; resolve&#47484; &#49884;&#46020;&#54616;&#44172; &#46104;&#47732;,&amp;nbsp;&#51060;&#48120; &#45149;&#45228;&#44592; &#46412;&#47928;&#50640;&amp;nbsp;hard work&#50640; &#45824;&#54620; &#51060;&#46301;&#51012; &#52712;&#54624; &#49688; &#51080;&#44256;&amp;nbsp;&#50896;&#47000;&#51032; &#47112;&#51320;&#47448;&#49496;&#51004;&#47196;&#48512;&#53552; &#44057;&#51008;&amp;nbsp; &#45796;&#51060;&#47113;&#53944; &#47112;&#54140;&#47088;&#49828;&#51032; &#44208;&#44284;&#47484; &#51060;&#50836;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#47553;&#53433; involve &#45716; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#47484; direct &#47112;&#54140;&#47088;&#49828;&#47196; &#48148;&#44984;&#50612;&#51452;&#44592;&#46020; &#54616;&#44256;, &#51060;&#49345;&#50630;&#51020;&#44284; &#44428;&#54620; &#52404;&#53356;&#46020; &#54620;&#45796;. 7&#51109;&#50640;&#49436; &#50616;&#44553;&#54664;&#46319;&#51060;&amp;nbsp;&#49900;&#48380;&#47533; &#47553;&#53356;&#51032; &#51316;&#51116;&#50668;&#48512;&#50752; &#54140;&#48120;&#49496;&#52404;&#53356;&#45716;&amp;nbsp;&#47112;&#51320;&#47336;&#49496;&#50640;&#49436; &#49688;&#54665;&#54620;&#45796;. &#50696;&#47484; &#46308;&#50612; JVM&#51060; &#45796;&#47480; &#53364;&#47000;&#49828;&#50640; &#51080;&#45716; field&#51032; getstatic&#47749;&#47161;&#51004;&#47196; &#49688;&#54665;&#54616;&#47140;&#44256; &#54620;&#45796;&#47732; &#52404;&#53356;&#54620;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A4&#50640; &#51221;&#47532; &#50557;&#44036;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;7&#51109;&#50640;&#51201;&#50632;&#46319;&#51060; JBM&#51032; &#44396;&#54788;&#51060; &#45796;&#47484;&#46412;&#50640;&#45716; &#49436;&#47196; &#45796;&#47480; &#49884;&#44036;(&#51648;&#51216;)&#50640;&#49436; &#47112;&#51320;&#47336;&#49496;&#51012; &#49688;&#54648;&#54620;&#45796;. &#52488;&#44592;&#53364;&#47000;&#49828;&#51032; &#47784;&#46304; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#44032; resolve &#46112;&#46412;&#44620;&#51648; &#52488;&#44592;&#53364;&#47000;&#49828;&#47196;&#48512;&#53552; &#47784;&#46304; &#49900;&#48380;&#47533;&#47112;&#54140;&#47088;&#49828;&#47484;&#46384;&#46972;&#49436; link everything up&#51004;&#47196; &#44396;&#54788;&#44032;&#45733;&#54620; &#48169;&#48277;&#46020; &#51080;&#45796;. main()&#51060; &#49688;&#54665;&#46104;&#44592; &#51204;&#50640; &#47784;&#46304; reference&#46308;&#51060; &#50756;&#51204;&#55176; link &#46108; &#49345;&#53468;&#51060;&#44256; &#51060;&#47484; early resolution&#51060;&#46972;&#44256; &#48512;&#47480;&#45796;.&lt;/p&gt;
&lt;p&gt;&#48152;&#45824;&#47196; &#47560;&#51648;&#47561;&#44620;&#51648; &#49900;&#47792;&#47533; &#47112;&#54140;&#47088;&#49828;&#51032;&amp;nbsp;resolution&#51012; &#44592;&#45796;&#47532;&#45716; &#48169;&#48277;&#51060; &#51080;&#45716;&#45936; JVM&#51060; &#54532;&#47196;&#44536;&#47016;&#51012; &#49688;&#54665;&#54616;&#45796;&#44032; &#52376;&#47492; &#47564;&#45208;&#45716; &#44221;&#50864;&#50640;&#47564; &#49688;&#54665;&#54616;&#44256; &#51060;&#47484; late resoltion&#51060;&#46972;&#44256; &#48512;&#47480;&#45796;. &#47932;&#47200; &#46160;&#44060;&#47484; &#49438;&#50612;&#49436;&amp;nbsp;&#49324;&#50857;&#54624; &#49688;&#46020; &#51080;&#45796;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#48708;&#47197;&amp;nbsp;JVM&#51032; &#44396;&#54788;&#51060; &#50616;&#51228; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#47484;&amp;nbsp;resolve&#54624;&#51648; &#51088;&#50976;&#47213;&#44172; &#49440;&#53469;&#54624; &#49688; &#51080;&#44592;&#45716; &#54616;&#51648;&#47564; &#47784;&#46304; JVM&#51060; late&amp;nbsp;resoltion&#51012; &#49324;&#50857;&#54616;&#46020;&#47197; &#50808;&#50517;&#51012; &#51456;&#45796;. (?)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#44033;&amp;nbsp;JVM&#51060; &#47112;&#51320;&#47448;&#49496;&#51012; &#49688;&#54665;&#54616;&#45716;&#44163;&#51008; &#47928;&#51228;&#44032;&amp;nbsp;&#50506;&#45716;&#45796;. &#54532;&#47196;&#44536;&#47016;&#51060; &#49688;&#54665;&#46112;&#46412; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#44032; &#52572;&#52488;&#47196; &#49892;&#51228; &#49324;&#50857;&#46104;&#50612;&#51648;&#45716; &#44275;&#50640;&#49436; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#47484;&amp;nbsp;resolve &#44208;&#44284;&#47484;&amp;nbsp;&#48201;&#51012;&#46412;&amp;nbsp;&#54637;&#49345; &#50612;&#46496;&#54620; &#50640;&#47084;&#44032; &#48156;&#49373;&#46112;&#44163;&#51060;&#45796;.&amp;nbsp;&#51060; &#48169;&#48277;&#51008; &#50976;&#51256;&#50640;&#44172; &#47112;&#51320;&#47336;&#49496;&#51060; &#45734;&#50632;&#45796;&#44256; &#45208;&#53440;&#45236; &#51460;&#44163;&#51060;&#45796;. ( late resoltion&#51012; &#49324;&#50857;&#54664;&#45796;&#45716; &#51032;&#48120;&#51064;&#44163; &#44057;&#51020; )&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#47564;&#50557; JVM&#51060;&amp;nbsp;early&#47112;&#51320;&#47336;&#49496;&#51012; &#50416;&#44256; ralry&#47112;&#51320;&#47336;&#49496;&#54616;&#45716; &#46020;&#51473;&#50640; class&amp;nbsp;file missing( &#53364;&#47000;&#49828; &#54868;&#51068;&#51012; &#52286;&#51012; &#49688; &#50630;&#51020; ) &#51060; &#48156;&#49373;&#54664;&#45796;&#47732;, &#54532;&#47196;&#44536;&#47016;&#51032; &#50612;&#46500; &#53364;&#47000;&#49828;&#50640;&#49436; &#49900;&#48380;&#47533; &#47112;&#54140;&#47088;&#49828;&#47484; &#49892;&#51228;&#47196; &#49324;&#50857;&#54624;&#46412;&#44620;&#51648; &#53364;&#47000;&#49828; &#54868;&#51068;&#51060; &#50630;&#45796;&#44256; &#50640;&#47084;&#47484;&amp;nbsp;report &#54616;&#51648; &#50506;&#45716;&#45796;. &#53364;&#47000;&#49828; &#54868;&#51068;&#51060; &#54532;&#47196;&#44536;&#47016;&#50640;&#49436; &#49324;&#50857;&#46104;&#50612;&#51648;&#51648; &#50506;&#45716;&#45796;&#47732; &#50640;&#47084;&#44032; &#48156;&#49373;&#54616;&#51648; &#50506;&#51012;&#44732;&#45796;.&amp;nbsp; ( &#50500;&#47560;&#46020; early&#47484; &#49324;&#50857;&#54644;&#46020; &#49324;&#50857;&#46104;&#51648; &#50506;&#45716;&#45796;&#47732; class &#47484; check&#54616;&#51648; &#47803;&#54620;&#45796;&#45716; &#51032;&#48120;&#47196; &#48372;&#51076; )&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Resolution &amp;amp; Dynamin Extenstion&lt;/h2&gt;
&lt;p&gt;&#47088;&#53440;&#51076;&#50640;&amp;nbsp;simple linking&amp;nbsp;type&#51008; Java Application&#51008; &#47088;&#53440;&#51076;&#50640; &#47553;&#53356;&#54624; type&#47484; &#44208;&#51221;&#54620;&#45796;.&amp;nbsp; &#51088;&#48148; &#50500;&#53412;&#53581;&#52432;&#45716; &#51088;&#48148;&#54532;&#47196;&#44536;&#47016;&#46308;&#51060; &#47088;&#53440;&#51076;&#50640; &#45796;&#47480; type&#47484; &#49324;&#50857;&#54616;&#45716;&#44163;, &#47196;&#46377;&#54616;&#45716;&#44163;, &#49324;&#50857;&#54616;&#45716;&#44163;&#51012; &#44208;&#51221;&#54616;&#45716; &#48169;&#48277;&#51064; dynamically extend&#47484; &#54728;&#50857;&#54620;&#45796;. Class class &#51032; forName()&#51060;&#45208;, ClassLoader&#47484; &#49345;&#49549;&#48155;&#50500; &#51649;&#51217; &#44396;&#54788;&#54620; &#51088;&#49885;&#53364;&#47000;&#49828;&#47196;&#45908;&#51032; &#44061;&#52404;&#51032; loadClass()&#51032; &#51064;&#51088;&#47196; name&#51012; &#45336;&#44200;&#49436; &#45796;&#51060;&#45208;&#48121; &#51061;&#49828;&#53584;&#46300;&#47484; &#54624; &#49688; &#51080;&#45796;. &#45817;&#49888; &#54532;&#44256;&#44536;&#47016;&#51032; &#49548;&#49828;&#53076;&#46300;&#50640; &#50630;&#45716; type&#47484; &#54532;&#47196;&#44536;&#47016; &#49892;&#54665;&#46020;&#51473;&#50640; &#51060;&#47492;&#47564;&#51012; &#44032;&#51648;&#44256; &#47196;&#46377;&#44032;&#45733;&#54616;&#44172; &#54644; &#51456;&#45796;. ( &#45824;&#52649; &#47924;&#49832; &#46907;&#51064;&#51648; &#50508;&#50500; &#47673;&#44192;&#51648;? &#12619;&#12619; )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#46308;&#50612; &#51088;&#48148;&#44032; &#46041;&#51089;&#44032;&#45733;&#54620; &#50937;&#48652;&#46972;&#50864;&#51256;&#50640;&#49436;&#45716; &#45348;&#53944;&#50892;&#53356;&#45336;&#50612;&#50640; &#51080;&#45716; &#50528;&#54540;&#47551;&#51012; &#50948;&#54620; &#53364;&#47000;&#49828;&#54868;&#51068;&#51012; &#47196;&#46300;&#54620;&#45796;. &#48652;&#46972;&#50864;&#51256;&#44032; &#49884;&#51089;&#46112;&#46412; &#45348;&#53944;&#50892;&#53356;&#45320;&#47672;&#51032; &#50612;&#46500; &#53364;&#47000;&#49828; &#54868;&#51068;&#51060; &#47196;&#46300;&#46104;&#50612;&#50556; &#54624;&#51648; &#47784;&#47480;&#45796;. &#50937;&#54168;&#51060;&#51648;&#50640; &#54252;&#54632;&#46104;&#50612; &#51080;&#45716; &#44033; &#50528;&#54540;&#47551;&#51032; &#53364;&#47000;&#49828; &#51060;&#47492;&#44284; &#51064;&#53552;&#54168;&#51060;&#49828; &#47749;&#51012; &#48652;&#46972;&#50864;&#51256;&#44032; &#50508; &#49688; &#51080;&#45796;.&amp;nbsp; ( &#44536;&#47111;&#44172; &#54644;&#49436; invokie &#54616;&#45716;&#44163;&#51064;&#44032; &#48372;&#45796;.&amp;nbsp;.... )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#51105;&#49444;&#51008; &#52824;&#50864;&#44256; Java App&#50640;&#49436; forName()&#47700;&#49548;&#46300;&#47484; &#50416;&#45716; &#45796;&#51060;&#45208;&#48121; &#51061;&#49828;&#53584;&#46300;&#47484; &#48372;&#51088;.&amp;nbsp;String&#45716; fullName&#51060; &#46308;&#50612;&#44032;&#50556; &#54616;&#44256; boolean&#51060;&amp;nbsp;true&#51060;&#47732; forName()&#51060; &#48152;&#54872;&#46104;&#44592; &#51204;&#50640;&amp;nbsp;link&#50752; &#52488;&#44592;&#54868;&#47484; &#49688;&#54665;&#54620;&#45796;. false&#51060;&#47732; load&#50752; link&#47564; &#54616;&#44256; &#52488;&#44592;&#54868;&#45716; &#54616;&#51648; &#50506;&#45716;&#45796;. &#44536;&#47100;&#50640;&#46020; &#48520;&#44396;&#54616;&#44256; type&#51060; &#51060;&#51204;&#50640; forName()&#47749;&#47161;&#50640; &#51032;&#54644;&#49436; &#51060;&#48120; &#52488;&#44592;&#54868; &#46104;&#50632;&#45796;&#47732;&amp;nbsp;&#50500;&#47924;&#47532; &#45768;&#44032; false&#47196; &#45336;&#44200;&#51452;&#50612;&#46020; &#52488;&#44592;&#54868;&#46108; type&#44032; &#48152;&#54872;&#46112;&#44163;&#51060;&#12623;&#12599;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#49464;&#48264;&#51704; &#54028;&#46972;&#48120;&#53552;&#51064; classloader&#45716; &#51060;&#45208; &#47564;&#46316; &#53364;&#47000;&#49828;&#47196;&#46300;&#47196;&#48512;&#53552;&amp;nbsp;forName()&#51012; &#54616;&#44256; &#49910;&#45796;&#47732; &#54028;&#47532;&#48120;&#53552;&#47196; &#45336;&#44200;&#51452;&#47732; &#46108;&#45796;. &#48512;&#53944;&#49828;&#53944;&#47017;&#47196;&#45908;&#47196;&#48512;&#53552; forName()&#51012; &#54616;&#44256; &#49910;&#45796;&#47732; null&#51012; &#45336;&#44592;&#47732; &#46108;&#45796;. &#47588;&#44060;&#48320;&#49688;&#44032; 1&#44060;&#48150;&#51064; forName()&#45716; current class loader&#47196; &#48512;&#53552; request &#54616;&#44256; type&#51012; &#54637;&#49345; &#52488;&#44592;&#54868; &#46108;&#45796;. Class class&#51032; instnace&#47484; &#48152;&#54872;&#54616;&#44256;, &#47196;&#44536;&#54616;&#51648; &#47803;&#54616;&#47732; ClassNotFoundException&#51012; &#48156;&#49373;&#49884;&#53416;&#45796;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#46608; &#45796;&#47480; &#48169;&#48277;&#51008; &#49324;&#51445;&#51088;&#51221;&#51032;&amp;nbsp;class loader&#51032;&amp;nbsp;loadClass()&#47484; &#49324;&#50857;&#54616;&#45716;&#44163;&#51060;&#45796;, &#51060; &#47700;&#49548;&#46300;&#45716;&amp;nbsp;&#50724;&#47084;&#47196;&#46377;&#46104;&#50612; &#51080;&#45716;&#45936; &#47784;&#46160; String&#50640;&#45716; fullName&#47484; &#49324;&#50857;&#54620;&#45796;.&amp;nbsp;loadClass()&#45716; forName()&#44284; &#48708;&#49847;&#54620; &#44208;&#44284;&#44032; &#45208;&#50724;&#44256;, loadClass&#45716; &#51060;&#48120; Type&#51060; &#47196;&#44613;&#46104;&#50612;&#51080;&#51004;&#47732; &#51060;&#51204;&#50640;&amp;nbsp;load&#54620; type&#47484; &#48152;&#54872;&#54620;&#45796;. &#44536;&#47084;&#45208; &#49324;&#50857;&#51088; &#51221;&#51032; &#53364;&#47000;&#49828;&#47196;&#45908;&#47484; &#47564;&#46304; &#49324;&#46988; &#47576;&#45824;&#47196; &#54624; &#49688; &#51080;&#45796;. &#51096; &#47196;&#46377;&#46104;&#50632;&#51088;&#47732; &#49352;&#47213;&#44172; &#47196;&#46377;&#46108;&amp;nbsp;Class&#51032; instance&#47484; &#48152;&#54872;&#54620;&#45796;.&amp;nbsp;&#51096;&#47803;&#46104;&#50632;&#51004;&#47732; ClassNotFoundException &#48156;&#49373;.&amp;nbsp;&#45208;&#47564;&#51032; &#53364;&#47000;&#49828;&#47196;&#45908; &#47564;&#46308;&#44592;&#45716; &#46244;&#50640;&#49436; &#48372;&#51088;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;boolean&#51008; load&#44032; &#51096; &#46104;&#47732; link&#44620;&#51648; &#54624;&#44163;&#51064;&#44032;&#47484; &#45208;&#53440;&#45240;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#51204;&#50640; &#47568;&#54664;&#46319;&#51060; &#47553;&#53433;&#51008; &#49464;&#44032;&#51648; &#45800;&#44228;&#47484; &#44032;&#51652;&#45796;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;&#44160;&#51613;&lt;/li&gt;
&lt;li&gt;&#51456;&#48708;&lt;/li&gt;
&lt;li&gt;(&#50741;&#49492;&#45216;) &#47112;&#51320;&#47448;&#49496;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;boolean&#51060; true&#51060;&#47732;&amp;nbsp;class&#51032; instance&#47484; resutnr&#54616;&#44592; &#51204;&#50640;&amp;nbsp;load&#54980;&#50640; link&#44032; &#51096; &#46104;&#50612; &#51080;&#45716;&#51648; &#54869;&#51064;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;false&#51060;&#47732; type&#51032; link&#45716; &#54616;&#51648; &#50506;&#44256; load&#47564;&#51012; &#49688;&#54665;&#54620;&#45796;. &#50780;&#45264;&#47732; JVM&#44396;&#54788;&#51060; &#47553;&#53416;Time&#50640; &#54540;&#47113;&#49436;&#48660;&#54616;&#44592; &#46412;&#47928;&#50640; &#45768;&#44032; false&#47484; &#45336;&#44600;&#46412; loadClass()&#50640;&#49436;&amp;nbsp;type&#51012; &#50619;&#50612;&#50732;&#46412; &#51060;&#48120; &#47553;&#53356;&#46104;&#50612; &#51080;&#51012; &#49688;&#46020; &#51080;&#44256; &#44536;&#47111;&#51648; &#50506;&#51012; &#49688;&#46020;&amp;nbsp;&#51080;&#44592; &#46412;&#47928;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#46160;&#44060;&#51032; &#54028;&#46972;&#48120;&#53552;&#47484; &#44032;&#51648;&#45716;&amp;nbsp;loadClass&#45716; Java1.1&#50640;&#49436;&#48512;&#53552;&#50728; &#47700;&#49548;&#46300;&#51060;&#45796;.&amp;nbsp;( &#50424;&#47784;&#50630;&#45716; ;&amp;nbsp;- &#50976;&#49328; ) &#51068;&#48152;&#51201;&#51004;&#47196; &#54028;&#46972;&#48120;&#53552; 1&#44060;&#51032;&amp;nbsp;load&amp;nbsp;Class&#47484; &#49324;&#50857;&#54616;&#47728;, &#51060;&#45716; &#54028;&#46972;&#48120;&#53552; 2&#44060;&#51676;&#47532;&#50640;&#49436; false&#47484; &#54840;&#52636;&#54620;&#44163;&#44285; &#12623;&#12620;&#45796;. 1&#44060;&#51676;&#47532;&#47484; &#50416;&#47732; load&#54616;&#44256; return&#46104;&#45208;&amp;nbsp;link&#44284; &#52488;&#44592;&#54868;&#45716; JVM&#47576;&#45824;&#47196; &#54620;&#45796;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;forName()&#44284; &#49324;&#50857;&#51088;&#51221;&#51032; &#53364;&#47000;&#49828;&#47196;&#45908;&#51032; loadClass()&#45716; &#54596;&#50836;&#50640;&#46384;&#46972;&#49436; &#50024;&#46972;. &#48324; &#45804;&#47532; &#54624;&#44172; &#50630;&#45796;&#47732;&amp;nbsp;forName()&#51012; &#49324;&#50857;&#54616;&#46972;. forName()&#51060; &#51328; &#45908; &#51649;&#51217;&#51201;&#51004;&#47196;( &#49789;&#44256; &#48736;&#47476;&#44172; ) &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;. &#47196;&#46300;, &#47553;&#53433;, &#52488;&#44592;&#54868;&#44032; &#45796; &#46108; &#45448;&#51060; &#54596;&#50836;&#54616;&#45796;&#47732; forName()&#51012; &#50416;&#47732; &#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;loadClass()&#45716; link&#46096;&#51012; &#49688;&#46020; &#51080;&#44256;, &#50500;&#45776; &#49688;&#46020; &#51080;&#45796;. &#49905;&#44544;&#54028;&#46972;&#48120;&#53552;&amp;nbsp;forName()&#45208;, 3&#54028;&#46972;&#48120;&#53552;&amp;nbsp;forName()&#50640;&#49436; &#52488;&#44592;&#54868;&#50640; true&#47484; &#51452;&#47732; &#47553;&#53356;&#50752; &#52488;&#44592;&#54868;&#44032; &#51060;&#48120; &#49688;&#54665;&#46108; type&#47484; &#48152;&#54872;&#48155;&#51012; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&#52488;&#44592;&#54868;&#45716; JDBC&#50640;&#49436; &#51068;&#48152;&#51201;&#51004;&#47196; forName()&#51004;&#47196; &#47196;&#46377;&#54616;&#45716; &#44163;&#51012; &#48372;&#47732; &#50508; &#49688; &#51080;&#45796;. JDBC&#46300;&#46972;&#51060;&#48652;&#45716; &#50612;&#54540;&#47532;&#52992;&#51060;&#49496;&#50640;&#49436; &#49324;&#50857;&#46104;&#50612;&#51648;&#44592; &#50948;&#54644;&#49436; &#47196;&#46300;&#49104;&#47564; &#50500;&#45768;&#46972; &#48152;&#46300;&#49884; &#52488;&#44592;&#54868; &#46104;&#50612;&#50556;&#47564; &#54620;&#45796;.&amp;nbsp;&#44033; JDBC &#46300;&#46972;&#51060;&#48652;&#45716; static initialize&#50640;&#49436; DriverManager&#50640; &#53364;&#47000;&#49828;&#47484; &#46321;&#47197;&#54616;&#44592; &#46412;&#47928;&#51060;&#45796;. &#47196;&#46300;&#47564; &#46104;&#47732; static&#51060; &#49688;&#54665;&#46104;&#51648; &#50506;&#51012;&#44732;&#44256;, DriverManager&#50640; &#46321;&#47197;&#54616;&#51648; &#47803;&#54624;&#44732;&#44256;, &#50612;&#54540;&#47532;&#52992;&#51060;&#49496;&#50640;&#49436; &#49324;&#50857;&#54616;&#51648; &#47803;&#54624;&#44163;&#51060;&#45796;.&amp;nbsp;forName()&#51012; &#50416;&#47732; &#46300;&#46972;&#51060;&#48652; &#52488;&#44592;&#54868;&#44032; &#51096; &#46112;&#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;forName()&#51004;&#47196; &#47803;&#54616;&#45716;&#44163;&#46308;, &#45367;&#50893;&#50640; &#51080;&#44144;&#45208;, database&#50640; &#51080;&#44144;&#45208;, &#50516;&#54840;&#54868;&#46104;&#50612; &#51080;&#44144;&#45208;, &#49900;&#51200;&#51060; &#51064;&#49604;&#51648;&#50948;&#50640; &#51080;&#45716;&#44172; &#54596;&#50836;&#54616;&#45796;&#47732; loadClass()&#51012; &#49324;&#50857;&#54644;&#50556; &#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#49324;&#50857;&#51088; &#51221;&#51032; &#53364;&#47000;&#49828;&#47196;&#45908;&#47484; &#47564;&#46308;&#50612;&#54672; &#54616;&#45716; &#51452;&#50836;&#54620; &#51060;&#50976;&#45716;&amp;nbsp; &#52964;&#49828;&#53552;&#47560;&#51060;&#51669;&#51012; &#54616;&#44592; &#50948;&#54644;&#49436;&#45796;.&amp;nbsp; ???&lt;/p&gt;
&lt;p&gt;( forName()&#48372;&#45796; &#45908; &#49884;&#53328;&#47532;&#54000;&#54616;&#44172; &#49324;&#50857;&#44032;&#45733; - &#50516;&#54840;&#54868; &#46108; class&#54868;&#51068;&#51012; &#54400;&#50612;&#49436; &#50424; &#49688; &#51080;&#51020; )&amp;nbsp; ???&lt;/p&gt;
&lt;p&gt;(&amp;nbsp;class file format&#47484; &#48320;&#44221;&#54624; &#49688; &#51080;&#51020;&amp;nbsp; - &#47932;&#47200; &#48373;&#54840;&#54868; &#54644;&#50556; &#54624;&#44163;&#51076; )&amp;nbsp; ???&lt;/p&gt;
&lt;p&gt;&#44057;&#51008;&amp;nbsp;namespace&amp;nbsp;&#50640;&#49436; &#47196;&#46300;&#46104;&#51648; &#50506;&#51008; type&#46308;&#51008; &#48380; &#49688; &#50630;&#46020;&#47197; &#51089;&#49457;&#54624; &#49688;&#46020; &#51080;&#51020; ???&lt;/p&gt;
&lt;p&gt;&#46020;&#47700;&#51064;&#51004;&#47196; &#48512;&#53552; &#54532;&#47196;&#53581;&#49496;&#51012; &#44152; &#49688;&#46020; &#51080;&#51020;&amp;nbsp;???&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;constance pool&#51032; entry&#44032; &#54596;&#50836;&#54616;&#47732; &#44536;&#44163;&#51012;&amp;nbsp; &#44032;&#47532;&#53412;&#44256; &#51080;&#45716; type&#51012;&amp;nbsp;load&#54624; class loader&#47484; &#51060;&#50857;&#54616;&#50668; &#54596;&#50836;&#54620;&amp;nbsp;type&#47484; &#47196;&#46321;&#54632;.&lt;/p&gt;
&lt;p&gt;Cat&#50640;&#49436; Mouse&#47484; &#49324;&#50857;&#54616;&#44256; &#51080;&#44256; Cat&#51060; userdefind class loader&#47196; &#48512;&#53552; &#47196;&#46377;&#51060; &#46104;&#50632;&#45796;&#47732;, Mouse&#44032; &#47196;&#46377;&#46104;&#50632;&#45716;&#51648; &#54869;&#51064;&#54616;&#44256;, &#47196;&#46377;&#51060; &#46104;&#51648; &#50506;&#50520;&#50500;&#47732; Cat&#51012; &#47196;&#46377;&#54620; &#53364;&#47000;&#49828; &#47196;&#45908;&#47196;&#48512;&#53552; Mouse&#47484; request&#54616;&#44172; &#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;Mouse&#46972;&#45716; &#51060;&#47492;&#51012; &#44032;&#51652; class&#44032; &#45796;&#47480;&amp;nbsp;name&amp;nbsp;space&#50640;&#49436; &#51060;&#48120; &#47196;&#46300;&#46104;&#50632;&#45796;&#44256; &#54644;&#46020; &#50948;&#50752; &#44057;&#51060; &#46041;&#51089;&#54620;&#45796;.&amp;nbsp; ( &#50500;&#47560;&#46020; &#45796;&#47480; class loader&#44032; &#47196;&#46300; &#54664;&#45796;&#45716; &#47568; &#44057;&#51020; )&lt;/p&gt;
</source>
  <rights nil="true"></rights>
  <creator>http://chan.myid.net/</creator>
  <contributor_modified>http://chan.myid.net/</contributor_modified>
  <version type="integer">90</version>
  <tags></tags>
</page>
