|
Core Java Technologies Tech Tips¿¡ ¿À½Å ¿©·¯ºÐÀ» ȯ¿µÇÕ´Ï´Ù. Java
2 Platform, Standard Edition (J2SE)¿¡ ±â¹ÝÇÑ core Java technologies
¿Í APIsÀÇ »ç¿ë¿¡ °üÇÑ ÃֽŠÁ¤º¸¸¦ ¾ò¾î °¡½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌ ±Û¿¡¼´Â Java 2 Platform
Standard Edition Development Kit 5.0(JDK 5.0)À» »ç¿ëÇÕ´Ï´Ù.
Download
JDK 5.0
À̹ø È£¿¡¼´Â,
AUTOBOXING
¼Ò°³
JNDC¸¦ ÀÌ¿ëÇÑ Å×ÀÌºí ¼Ò°³
¸¦ ´Ù·ç°Ô µË´Ï´Ù.
ÀúÀÚ Daniel H. Steinberg
AUTOBOXING ¼Ò°³
Java ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â °´Ã¼ÁöÇâÀû ¾ð¾îÀ̱ä ÇÏÁö¸¸ ¿ø½Ã ŸÀÔÀ¸·Î ÀÛ¾÷À» ÇØ¾ß ÇÒ °æ¿ì°¡ Á¾Á¾
ÀÖ´Ù. J2SE 5.0 ÀÌÀü¿¡´Â ¿ø½Ã ŸÀÔÀ¸·Î ÀÛ¾÷ÇÒ °æ¿ì ¿ø½Ã ŸÀÔ°ú ·¡ÆÛ Ŭ·¡½º(wrapper
class)°£¿¡ Çüº¯È¯ ÀÛ¾÷À» ¹Ýº¹ÇØ¾ß Çß´Ù. À̹ø Å×Å©ÆÁ¿¡¼´Â, J2SE 5.0ÀÇ »õ·Î¿î ±â´ÉÀÎ
¿ÀÅä¹Ú½Ì(autoboxing)À» ÀÌ¿ëÇØ Çüº¯È¯--À̸¦ Å׸é, int ŸÀÔÀÇ °ª°ú Integer ŸÀÔÀÇ
°ª »çÀÌ¿¡--À» ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.
2004³â 10¿ù 5ÀÏÀÚ Å×Å© ÆÁ, »õ·Î¿î
Æ÷¸ÅÅÍ·Î Ãâ·Â¹° Æ÷¸ËÇϱ⿡¼´Â C ¾ð¾îÀÇ printf()¿Í À¯»çÇÑ
Ãâ·Â Æ÷¸ËÀ» ¸¸µå´Â »õ·Î¿î ¹æ¹ý¿¡ ´ëÇØ ´Ù·ç¾ú´Ù. ÀÌ Å×Å©ÆÁÀÇ ¿¹Á¦¿¡¼´Â printf()
¸Þ¼Òµå¸¦ integral °ªÀ» Ãâ·ÂÇϱâ À§ÇØ »ç¿ëÇÏ¿´´Ù. ´ÙÀ½Àº printf()
¸Þ¼Òµå¸¦ ÀÌ¿ëÇÑ °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù.
public class FormatPrint {
public static void main(String[] args) {
System.out.printf("There is only %d thing.", 1);
}
}
FormatPrint ¿¹Á¦¿¡¼ printf() ¸Þ¼ÒµåÀÇ ¿ë¹ýÀº ´ÙÀ½°ú °°´Ù:
printf(String format, Object... args)
¼ýÀÚ 1Àº ¿ø½Ã ŸÀÔÀÌ°í ¿ÀºêÁ§Æ®°¡ ¾Æ´Ï¹Ç·Î, ¾Æ·¡ ¶óÀÎ
System.out.printf("There is only %d thing.", 1);
Àº ÄÄÆÄÀÏ µÇÁö ¾Ê´Â´Ù°í »ý°¢ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ¿ÀÅä¹Ú½ÌÀº ÀûÀýÇÑ ·¡ÆÛ ¿ÀºêÁ§Æ®¿¡ ÀÖ´Â integer °ªÀ¸·Î ÀÚµ¿ ·¡ÇÎÇÏ¿© »óȲÀ» ÀνÄÇÑ´Ù.
J2SE 1.4¿¡¼´Â new Integer(1)°ú °°Àº ½ÄÀ» ÀÌ¿ëÇØ ¿ø½Ã°ªÀ»
¼öµ¿À¸·Î ·¡ÇÎÇØ¾ß ÇÒ Çʿ䰡 ÀÖ´Ù.
¿ø½Ã ŸÀÔÀ¸·ÎºÎÅÍ ÀÚµ¿ º¯È¯ÀÌ À¯¿ëÇÑ ¶Ç ´Ù¸¥ °æ¿ì´Â ÄÝ·º¼Ç API¸¦ »ç¿ëÇÏ´Â °æ¿ìÀε¥, ÄÝ·º¼Ç
Ŭ·¡½º´Â ¿ÀºêÁ§Æ®¸¦ ÀúÀåÇϱâ À§ÇØ ¸¸µé¾îÁ³´Ù. ´ÙÀ½Àº ArrayList¿¡¼
0¿¡¼ 9±îÁöÀÇ int°ªÀ» ÀúÀåÇÏ´Â °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù.
import java.util.ArrayList;
public class Autoboxing {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < 10; i++){
list.add(i);
}
}
}
J2SE 1.4.2ÀÇ
°æ¿ìÀÇ ºñ±³ÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°´Ù:
import java.util.ArrayList;
public class ManualBoxing {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for(int i = 0; i < 10; i++){
list.add(new Integer(i));
}
}
}
ManualBoxingÀ» ÀÌ¿ëÇÏ´Â °æ¿ì¿¡´Â list.add(new Integer(i))¸¦
»ç¿ëÇÏ¿© Integer ¿ÀºêÁ§Æ®¸¦ ¸í½ÃÀûÀ¸·Î »ý¼ºÇØ¾ß ÇÑ´Ù. ¿ÀÅä¹Ú½ÌÀ» ÀÌ¿ëÇÒ
°æ¿ì¿Í´Â ´Þ¸® int i´Â list.add(i) ¶óÀο¡¼
Integer ¿ÀºêÁ§Æ®·Î ¿ÀÅä¹Ú½Ì µÇ¾ú´Ù.
¿ÀÅä¹Ú½ÌÀº J2SE 5.0ÀÇ ´Ù¸¥ »õ·Î¿î ±â´Éµé°ú ÇÔ²² Àß µ¿ÀÛÇÑ´Ù. ¿¹¸¦ µé¸é, ¿ÀÅä¹Ú½Ì ±â´ÉÀ»
ÅëÇØ Á¦³×¸¯ ŸÀÔ°ú ¿ø½Ã ŸÀÔÀ» °áÇÔ ¾øÀÌ ÅëÇÕÇÒ ¼ö ÀÖ´Ù. ManualBoxing
¿¹Á¦¿¡¼, ArrayListÀÇ ¿¤¸®¸ÕÆ®(element)´Â Object
ŸÀÔÀε¥ ºñÇØ ¿ÀÅä¹Ú½Ì ¿¹Á¦¿¡¼ÀÇ ¸®½ºÆ® ŸÀÔÀº IntegerÀÌ´Ù. (Á¦³×¸¯¿¡
´ëÇÑ »ó¼¼ Á¤º¸´Â Á¦³Ê¸¯
Å×Å© ÆÁÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù.)
¿ÀÅä¹Ú½Ì ¿¹Á¦¸¦ ArrayListÀÇ Àüü ¿¤¸®¸ÕÆ®¸¦ ¼øÈ¯Çϸç À̵éÀÇ ÇÕÀ»
±¸ÇÏ´Â °æ¿ì·Î È®À庸ÀÚ. À̹ø »õ ¹öÀü¿¡¼´Â ¿¤¸®¸ÕÆ® ¼øÈ¯À» À§ÇØ ¿ª½Ã J2SE 5.0 ·çÇÁ °È(enhanced
for loop)°¡ »ç¿ëµÈ´Ù´Â Á¡¿¡ À¯ÀÇÇϱ⠹ٶõ´Ù.
import java.util.ArrayList;
public class Autoboxing {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < 10; i++){
list.add(i);
}
int sum = 0;
for ( Integer j : list){
sum += j;
}
System.out.printf("The sum is %d.", sum );
}
}
¿ÀÅä¹Ú½ÌÀº »õ·Î¿î ¿ÀÅä¹Ú½Ì ¿¹Á¦¿¡¼ ÀÚÁÖ »ç¿ëµÇ¾ú´Ù. ¿ì¼± ints´Â ArrayList¿¡
Ãß°¡µÉ ¶§ Integers·Î ¹Ú½ÌµÇ¾ú´Ù°¡, ±× ÇÕÀ» °è»êÇÒ ¶§¿¡´Â int·Î
¾ð¹Ú½Ì µÇ¸ç(unboxed), °á±¹ ÇÕÀ» Ç¥ÇöÇÏ´Â ints´Â printf()¹®¿¡¼
»ç¿ëµÉ ¶§ ´Ù½Ã ¹Ú½ÌµÈ´Ù.
¹Ú½Ì(boxing)°ú ¾ð¹Ú½Ì(unboxing)ÀÌ ¸íÈ®Çϱ⠶§¹®¿¡ ¿ÀÅä¹Ú½ÌÀº ¸Å¿ì À¯¿ëÇÏ´Ù. ±×·¯³ª
¿ÀÅä¹Ú½Ì ±â´ÉÀ» »ç¿ëÇÏ·Á¸é »ó´çÇÑ ÁÖÀǰ¡ ÇÊ¿äÇÏ´Ù. ƯÈ÷, ¿ÀÅä¹Ú½ÌÀ¸·Î »ý¼ºµÈ ¿ÀºêÁ§Æ®ÀÇ µ¿µî¼º(equality)¿¡
´ëÇÑ Å×½ºÆ®´Â ¿ÀÅä¹Ú½ÌÀ¸·Î »ý¼ºµÇÁö ¾ÊÀº ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ µ¿µî¼º Å×½ºÆ®¿Í´Â ´Ù¸£´Ù. À̰ÍÀ» ¾Ë¾Æº¸±â
À§ÇØ, ´ÙÀ½ÀÇ BoxingEquality Ŭ·¡½º¸¦ »ìÆìº¸±â·Î ÇÏÀÚ.
import java.util.ArrayList;
public class BoxingEquality {
public static void main(String[] args) {
int i = 2;
int j = 2;
ArrayList <Integer> list = new ArrayList<Integer>();
list.add(i);
list.add(j);
System.out.printf("It is %b that i ==j.\n",
(i==j)); //(1)
System.out.printf("It is %b that " +
"list.get(0) == list.get(1).\n",
list.get(0)==list.get(1)); //(2)
System.out.printf("It is %b that " +
"list.get(0).equals(list.get(1)).",
list.get(0).equals(list.get(1))); //(3)
}
}
BoxingEqualityÀÇ Ã¹ ¹øÂ° print¹®Àº ¿ø½Ã°ª i¿Í j°¡
°°ÀºÁö¸¦ ºñ±³ÇÏÀÚ. µÎ ¹øÂ° print¹®Àº ¿ÀÅä¹Ú½Ì i¿Í j¿¡
ÀÇÇØ »ý¼ºµÈ ¿ÀºêÁ§Æ®°¡ µ¿ÀÏÇÑÁö¸¦ ºñ±³Çϰí, ¼¼ ¹øÂ° print¹®Àº ¿ÀÅä¹Ú½Ì i¿Í
j¿¡ ÀÇÇØ »ý¼ºµÈ ¿ÀºêÁ§Æ®ÀÇ °ªÀ» ºñ±³ÇÑ´Ù. ù ¹øÂ°¿Í ¼¼ ¹øÂ° print¹®ÀÌ
ÂüÀ» ¸®ÅÏÇÑ´Ù°í º¼ ¼ö ÀÖÁö¸¸, µÎ ¹øÂ°´Â ¾î¶»°Ô µÉ±î¿ä? BoxingEquality ÇÁ·Î±×·¥ ½ÇÇà½Ã
Ãâ·ÂÀº ´ÙÀ½°ú °°´Ù.
It is true that i ==j.
It is true that list.get(0) == list.get(1).
It is true that list.get(0).equals(list.get(1)).
ÀÌÁ¦ i¿Í jÀÇ °ªÀ» 2000À¸·Î ¹Ù²Ù¾î º¸ÀÚ.
import java.util.ArrayList;
public class BoxingEquality {
public static void main(String[] args) {
int i = 2000;
int j = 2000;
// . . .
}
ÀúÀåÇϰí ÄÄÆÄÀÏ ÇÑ ´ÙÀ½, BoxingEquality¸¦ ½ÇÇàÇÑ´Ù. ÀÌ °æ¿ì °á°ú´Â ´Þ¸® ³ªÅ¸³´Ù.
It is true that i ==j.
It is false that list.get(0) == list.get(1).
It is true that list.get(0).equals(list.get(1)).
¿ø½Ã°ªÀº µ¿ÀÏÇÏ°í ¹Ú½ÌµÈ int °ªµµ µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÀÌ °æ¿ì °¢°¢ÀÇ int °ªÀº ¼·Î
´Ù¸¥ ¿ÀºêÁ§Æ®¸¦ °¡¸®Å°°í ÀÖ´Ù. ÀÛÀº Á¤¼ö°ªÀÇ °æ¿ì¿¡´Â ¿ÀºêÁ§Æ®°¡ String°ú ¸Å¿ì À¯»çÇÏ°Ô ÇϳªÀÇ
Ç®(pool)¿¡ ij½Ã(cache)µÈ´Ù. i¿Í j°¡
2ÀÏ °æ¿ì¿¡´Â ÇϳªÀÇ ¿ÀºêÁ§Æ®°¡ 2°³ÀÇ ¼·Î ´Ù¸¥ À§Ä¡¿¡¼ ÂüÁ¶µÇ°í, i¿Í
j°¡ 2000ÀÎ °æ¿ì¿¡´Â °¢±â ´Ù¸¥ µÎ °³ÀÇ ¿ÀºêÁ§Æ®°¡ ÂüÁ¶µÈ´Ù. ¿ÀÅä¹Ú½ÌÀº
[-128, 127] ¹üÀ§¿¡ ÀÖ´Â Á¤¼ö°ªÀÇ °æ¿ì °°Àº ¿ÀºêÁ§Æ®ÀÇ ¸®ÅÏÀ» º¸ÀåÇÏÁö¸¸, ±¸Çö¿¡ µû¶ó
±× ¹üÀ§ ¹ÛÀÇ ÀÓÀÇÀÇ °ªÀ» ij½ÃÇÒ ¼öµµ ÀÖ´Ù. Äڵ忡¼ ÀÌ Ä³½Ã°ª¿¡ ÀÇÁ¸ÇÏ´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù.
»ç½Ç»ó, ==¸¦ »ç¿ëÇÏ¿© ¿ÀºêÁ§Æ® µ¿µî¼ºÀ» Å×½ºÆ®ÇÏ¸é ¿ø·¡ ÀǵµÇß´ø °Í°ú
´Ù¸¥ °á°ú¿Í ³ª¿À´Â °ÍÀº ´ç¿¬ÇÏ´Ù. ÄÄÆÄÀÏ·¯°¡ ¿ø½Ã°ª°ú ¿ÀºêÁ§Æ® »çÀ̸¦ ¿À°¡±â ½±°Ô ÇÒ °æ¿ì, »ç¿ëÀÚ´Â
À̵é Áß ¾î´À °ÍÀ» ´Ù·ç°í ÀÖ´ÂÁö ³õÄ¡´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ À̹ø Å×Å©ÆÁ¿¡¼´Â ÀÌ¿Í
°°ÀÌ ÁÖÀǸ¦ ¿äÇÏ´Â ¿¹Á¦¸¦ ÇÔ²² ´Ù·ç°í ÀÖ´Ù.
¿ÀÅä¹Ú½Ì¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â AutoboxingÀ»
ÂüÁ¶Çϱ⠹ٶõ´Ù.
JDESKTOP NETWORK COMPONENTS (JNDC)¸¦ ÀÌ¿ëÇÑ Å×ÀÌºí ¼Ò°³
°øÅë Swing ÄÄÆ÷³ÍÆ®¸¦ »ý¼º, ±¸¼º, µð½ºÇ÷¹ÀÌÇϱâ À§ÇØ ÀÛ¼ºÇÏ´Â ·çƾ, »óÅõ Äڵ带 »ý°¢ÇØ
º¸ÀÚ. À̸¦ Å׸é, ÇϳªÀÇ Å×ÀÌºí¿¡¼ µ¥ÀÌÅ͸¦ µð½ºÇ÷¹ÀÌÇϱâ À§ÇØ ÇÊ¿äÇÑ ¸ðµç °ÍµéÀ» »ý°¢ÇØ º¸ÀÚ.
JDesktop Network
Components (JDNC) project´Â dzºÎÇÑ µ¥ÀÌÅÍ Á᫐ Java Desktop
Ŭ¶óÀ̾ðÆ®ÀÇ »ý¼ºÀ» ¿ëÀÌÇÏ°Ô ÇÏ´Â °ÍÀÌ ¸ñÇ¥·Î Çϰí ÀÖ´Ù. À̹ø Å×Å©ÆÁ¿¡¼´Â JDNC¸¦ ÀÌ¿ëÇÏ¿©
ÇϳªÀÇ ÆÄÀϷκÎÅÍ ÅÇÀ¸·Î ºÐ¸®µÈ µ¥ÀÌÅ͸¦ Àаí Å×À̺í·Î Ç¥½ÃÇϰí, °¢ ¿¿¡ Á¦¸ñÀ» ºÙÀÌ°í µð½ºÇ÷¹ÀÌÇϰíÀÚ
ÇÏ´Â ºÎºÐÀ» ¼±ÅÃÇØº¸µµ·Ï ÇÏÀÚ. ¾î¶² ƯÁ¤ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÇุÀ» Ç¥½ÃÇϵµ·Ï ÇàÀ» ÇÊÅ͸µ ÇÒ ¼öµµ
ÀÖÀ¸¸ç, ÀÌ ¸®½ºÆ®¸¦ Á¤·ÄÇÏ¿© °¢±â ´Ù¸¥ ¿©·¯ »ö»óÀ¸·Î Àå½ÄÇÒ ¼öµµ ÀÖ´Ù.
¿ì¼± ³¯¾¾ µ¥ÀÌÅ͸¦ ÅØ½ºÆ® ÆÄÀÏ¿¡¼ Àоîµé¿© JScrollPane ³»ºÎÀÇ
JTable¿¡ µð½ºÇ÷¹ÀÌ ÇÏ´Â °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. JScrollPaneÀº
JPanelÀÇ ³»ºÎÀ̸ç, JPanelÀº
JFrameÀÇ ³»ºÎÀÌ´Ù. 2005³â 3¿ù 8ÀÏÀÚ Å×Å© ÆÁ
JTable Ãâ·ÂÇϱ⿡¼ ÀÌ¿Í ºñ½ÁÇÑ ÀÛ¾÷ ¹æ½ÄÀ» ´Ù·éÀûÀÌ ÀÖ´Ù. JDNC¸¦ ÀÌ¿ëÇϸé, ³¯¾¾
µ¥ÀÌÅ͸¦ ´ÙÀ½ XML·Î ÀÐÀ» ¼ö ÀÖ´Ù.
<table>
<tabularData source="weather.txt"/>
</table>
´Ù½Ã ¸»ÇØ, Å×ÀÌºí ¿¤¸®¸ÕÆ®¸¦ Çϳª »ý¼ºÇϰí, ±× µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ ÆÄÀÏÀÇ À§Ä¡¸¦ ÁöÁ¤Çϱ⸸ ÇÏ¸é µÈ´Ù.
ÀÌ ¿¹Á¦¸¦ ½ÇÇàÇϱâ À§Çؼ´Â JDNC ÃֽйèÆ÷ÆÇÀ» ´Ù¿î·ÎµåÇϱâ
¹Ù¶õ´Ù. ÃֽйöÀüÀº 0.7À̸ç J2SE 5.0À» ÇÊ¿ä·Î ÇÑ´Ù. jdnc-0_7-bin.zipÀ»
´Ù¿î·ÎµåÇÏ¿© ¾ÐÃàÀ» Ǭ´Ù. À̹ø Å×Å©ÆÁÀÇ °æ¿ì¿¡´Â jdncTipÀ̶ó´Â µð·ºÅ丮¸¦
¸¸µé°í jdnc-0_7/lib (code>jdnc-0_7-all,
jdnc-runner, jlfgr-1_0)¿¡¼ jar
ÆÄÀÏ 3°³¸¦ º¹»çÇÑ´Ù. jdnc-0_7/demo/data¿¡¼ weather.txt
ÆÄÀÏÀ» º¹»çÇÏ¿© jdncTip directory¿¡ ³Ö´Â´Ù. ´ÙÀ½ ÆÄÀÏÀ» »ý¼ºÇϰí
jdncTip¿¡ µð·ºÅ丮¿¡ table.jdnc·Î ÀúÀåÇÑ´Ù.
´ÙÀ½Àº ±âº»ÀûÀ¸·Î jdnc-0_7/demo¿¡ Æ÷ÇÔµÈ °£´ÜÇÑ simpleTable.jdnc
¿¹Á¦ÀÌ´Ù.
<?xml version='1.0'?>
<om:resource xmlns:om="http://www.openmarkup.net/2004/05/om"
xmlns="http://www.jdesktop.org/2004/05/jdnc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.jdesktop.org/2004/05/jdnc schema/ jdnc-1_0.xsd">
<table>
<tabularData source="weather.txt"/>
</table>
</om:resource>
ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϱâ À§Çؼ´Â ƯÁ¤ Ŭ·¡½º °æ·Î(classpath)¿¡ ¹æ±Ý º¹»çÇÑ jar ÆÄÀÏ 3°³°¡ ÀÖ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ ¸ÞÀÎ
Ŭ·¡½º°¡ org.jdesktop.jdnc.runner.ApplicationÀ̶ó´Â
Á¡À» ¹Ýµå½Ã ¸í½ÃÇØ¾ß ÇÑ´Ù. jdnc ÆÄÀÏÀÇ À̸§Àº ¸í·É¹® Àμö·Î ÁÖ¾îÁø´Ù.
Unix³ª Linux ¸Ó½Å¿¡¼ ÀÌ ¸í·É¹®Àº ´ÙÀ½°ú °°´Ù:
java -cp jdnc-runner.jar:jdnc-0_7-all.jar:jlfgr-1_0.jar
org.jdesktop.jdnc.runner.Application table.jdnc
Windows ÄÄÇ»ÅÍ¿¡¼ ¸í·É¹®Àº ´ÙÀ½°ú °°´Ù:
java -cp jdnc-runner.jar;jdnc-0_7-all.jar;jlfgr-1_0.jar
org.jdesktop.jdnc.runner.Application table.jdnc
³¯¾¾ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ Å×À̺íÀÌ Ç¥½ÃµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.
µð½ºÇ÷¹ÀÌµÈ Å×ÀÌºí¿¡¼ÀÇ ¿ Á¦¸ñÀº ÀϹÝÀûÀ¸·Î column0, column1
µîÀ¸·Î ÀϹÝȵǾî ÀÖ´Ù. ¿ÀÇ Á¦¸ñÀ» µð½ºÇ÷¹ÀÌÇϱâ À§Çؼ´Â Àüü ¿ÀÇ ¸®½ºÆ®¸¦ ¼ø¼´ë·Î Á¦°øÇؾß
Çϴµ¥, ÀÌ´Â tabularData ¿¤¸®¸ÕÆ®ÀÇ Â÷Àϵå·Î metaData
¿¤¸®¸ÕÆ®¸¦ Ãß°¡ÇÏ¸é µÈ´Ù. ÀÌ ¿µé¿¡ ´ëÇÑ ·¹À̺íÀº ´ÙÀ½°ú °°ÀÌ Åױ׸¦ ÀÌ¿ëÇØ ºÙÀδÙ:
<columnMetaData name="ICAO"/>
¿ÀÇ ³»¿ëÀº µðÆúÆ®·Î string ÀÎ °ÍÀ¸·Î 󸮰¡ µÇ¸ç, string ŸÀÔÀÌ ¾Æ´Ñ µ¥ÀÌÅÍ´Â ´ÙÀ½°ú °°Àº ű׸¦ ÀÌ¿ëÇØ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
<columnMetaData name="ELEVATION" type="float"/>
°¡´ÉÇÑ Å¸ÀÔÀº string, float, integer, date,
hrefÀÌ´Ù. table.jdnc file¿¡ ¸ÞŸµ¥ÀÌÅÍ
¿¤¸®¸ÕÆ®¸¦ Ãß°¡ÇÏ¿© ´ÙÀ½°ú °°Àº ÇüÅ·Π¸¸µç´Ù.
<?xml version='1.0'?>
<om:resource xmlns:om="http://www.openmarkup.net/2004/05/om"
xmlns="http://www.jdesktop.org/2004/05/jdnc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jdesktop.org/2004/05/jdnc
schema/jdnc-1_0.xsd">
<table>
<tabularData source="weather.txt">
<metaData>
<columnMetaData name="ICAO"/>
<columnMetaData name="STATION"/>
<columnMetaData name="REGION"/>
<columnMetaData name="COUNTRY"/>
<columnMetaData name="ELEVATION" type="float"/>
<columnMetaData name="LATITUDE" type="float"/>
<columnMetaData name="LONGITUDE" type="float"/>
<columnMetaData name="TIMESTAMP"/>
<columnMetaData name="TEMPERATURE" type="float"/>
<columnMetaData name="DEWPOINT" type="float"/>
<columnMetaData name="HUMIDITY" type="integer"/>
<columnMetaData name="VISIBILITY_QUAL"/>
<columnMetaData name="VISIBILITY" type="float"/>
<columnMetaData name="WIND_DIR"/>
<columnMetaData name="WIND_DEG" type="integer"/>
<columnMetaData name="WIND_SPEED" type="float"/>
<columnMetaData name="GUST_SPEED" type="float"/>
</metaData>
</tabularData>
</table>
</om:resource>
ÀÌÁ¦ Å×À̺íÀº ¹æ±Ý ¸¸µç ¿ÀÇ Á¦¸ñÀÌ Æ÷ÇÔµÈ »óÅ·Π´ÙÀ½°ú °°ÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.
¿¿¡ ·¹À̺íÀ» ºÙÀÎ ´ÙÀ½ º¸ÀÌ°Ô ÇÒ ¿°ú ±× ¼ø¼¸¦ ½±°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Ç¥½ÃÇϰíÀÚ ÇÏ´Â °¢°¢ÀÇ
¿¿¡ ´ëÇØ column ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔÇÏ´Â columns
¿¤¸®¸ÕÆ®¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº Æ÷ÇÔµÈ ¿À» ÁöÁ¤ÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀÌ´Ù.
<column title="Station" binding="STATION"/>
¶ÇÇÑ µ¥ÀÌÅÍ ÀÚ¸®¸ÂÃãÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î, ¿Âµµ µ¥ÀÌÅ͸¦ Áß¾Ó¿¡ ¿Àµµ·Ï Çϸé Å×À̺íÀÌ ´õ º¸±â ÁÁÀ» °ÍÀÌ´Ù. ¾Æ·¡¿Í °°ÀÌ
°£´ÜÇÑ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
<column title="°C" binding="TEMPERATURE"
horizontalAlignment="center"/>
title ¼Ó¼ºÀº ±× ¿¿¡ ´ëÇÑ »õ·Î¿î Á¦¸ñÀ» ÁöÁ¤ÇÑ´Ù. ÀÌÀü ¿¹Á¦¿¡¼´Â title ¼Ó¼ºÀÌ
ÁöÁ¤µÇÁö ¾Ê¾ÒÀ¸¹Ç·Î °¢ columnMetaData ű׿¡¼ ÁöÁ¤ÇÑ À̸§ÀÌ
»ç¿ëµÇ¾ú´Ù. ´ÙÀ½Àº µð½ºÇ÷¹À̸¦ À§ÇØ 5°³ÀÇ ¿À» Á¤ÀÇÇÏ´Â column ¿¤¸®¸ÕÆ®¸¦
Ãß°¡Çϰí, ÀÌ ¿µéÀÌ µð½ºÇ÷¹ÀÌ µÉ Á¦¸ñ, ±×¸®°í ÀÚ¸®¸ÂÃãÀ» ÁöÁ¤Çϸé table.jdnc
ÆÄÀÏÀÌ ¾î¶»°Ô µÇ´ÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
<?xml version='1.0'?>
<om:resource xmlns:om="http://www.openmarkup.net/2004/05/om"
xmlns="http://www.jdesktop.org/2004/05/jdnc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.jdesktop.org/2004/05/jdnc schema/ jdnc-1_0.xsd">
<table>
<tabularData source="weather.txt">
<metaData>
<columnMetaData name="ICAO"/>
<columnMetaData name="STATION"/>
<columnMetaData name="REGION"/>
<columnMetaData name="COUNTRY"/>
<columnMetaData name="ELEVATION" type="float"/>
<columnMetaData name="LATITUDE" type="float"/>
<columnMetaData name="LONGITUDE" type="float"/>
<columnMetaData name="TIMESTAMP"/>
<columnMetaData name="TEMPERATURE" type="float"/>
<columnMetaData name="DEWPOINT" type="float"/>
<columnMetaData name="HUMIDITY" type="integer"/>
<columnMetaData name="VISIBILITY_QUAL"/>
<columnMetaData name="VISIBILITY" type="float"/>
<columnMetaData name="WIND_DIR"/>
<columnMetaData name="WIND_DEG" type="integer"/>
<columnMetaData name="WIND_SPEED" type="float"/>
<columnMetaData name="GUST_SPEED" type="float"/>
</metaData>
</tabularData>
<columns>
<column title="Station" binding="STATION"/>
<column title="Country" binding="COUNTRY"/>
<column title="°C" binding="TEMPERATURE"
horizontalAlignment="center"/>
<column title="Wind Direction" binding="WIND_DIR"/>
<column title="Wind Speed" binding="WIND_SPEED"
horizontalAlignment="center"/>
</columns>
</table>
</om:resource>

À̹ø¿¡´Â Bolivia¿¡ ´ëÇÑ µ¥ÀÌÅ͸¸ µð½ºÇ÷¹ÀÌÇÏ´Â °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. COUNTRY°¡
Bolivia °ªÀ» °¡Áö°í ÀÖ´Â ¿¤¸®¸ÕÆ®¸¦ Á¤º¸¸¦ ÇÊÅ͸µ ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô
ÇØ¼ tabularData¿Í columns ¿¤¸®¸ÕÆ®
»çÀÌ¿¡ filters ű׸¦ Ãß°¡ÇÑ´Ù.
<filters>
<patternFilter expression="Bolivia"
match="caseInsensitive unicodeCase"
testColumn="COUNTRY" />
</filters>
ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» Àç½ÇÇàÇÑ´Ù. ÀÌÁ¦ Å×À̺íÀº Bolivia¿Í ÀÏÄ¡ÇÏ´Â 21°³ÀÇ Çุ µð½ºÇ÷¹ÀÌ ÇÒ °ÍÀÌ´Ù.
¿À¸§Â÷¼øÀ̳ª ³»¸²Â÷¼øÀ¸·Î Å×À̺íÀ» Á¤·ÄÇϱâ À§Çؼ´Â ¾î´À ¿ÀÇ ·¹À̺íÀÌ´ø Ŭ¸¯¸¸ ÇÏ¸é µÈ´Ù.
filters ¿¤¸®¸ÕÆ®ÀÇ Â÷Àϵå(child)·Î¼ ´ÙÀ½ sorter
¿¤¸®¸ÕÆ®¸¦ Ãß°¡Çϸé ÇÁ·Î±×·¥ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ½±°Ô Á¤·ÄÇÒ ¼öµµ ÀÖ´Ù:
<sorter testColumn="TEMPERATURE" direction="descending"/>
ÀÌÁ¦ ÇàÀº ¿Âµµ°¡ °¡Àå ³·Àº À§Ä¡ºÎÅÍ ¿Âµµ°¡ °¡Àå ³ôÀº À§Ä¡±îÁö ³ªÅ¸³ª°Ô µÉ °ÍÀÌ´Ù.
¸¶¹«¸®·Î, ´ÙÀ½ highlighters ű׸¦ Ãß°¡ÇÏ¿© Ȧ¼öÇàÀº ³²»öÀ¸·Î
¦¼öÇàÀº ¹àÀº ȸ»öÀ¸·Î ³ª¿À°Ô ÇÑ´Ù.
<highlighters>
<alternateRowHighlighter oddRowBackground="cyan"
evenRowBackground="light grey"/>
</highlighters>
¿©±â±îÁöÀÇ Á¤º¸¸¦ ¸ðµÎ ³ÖÀ¸¸é table.jdnc ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ µÈ´Ù.
<?xml version='1.0'?>
<om:resource xmlns:om="http://www.openmarkup.net/2004/05/om"
xmlns="http://www.jdesktop.org/2004/05/jdnc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.jdesktop.org/2004/05/jdnc schema/ jdnc-1_0.xsd">
<table>
<tabularData source="weather.txt">
<metaData>
<columnMetaData name="ICAO"/>
<columnMetaData name="STATION"/>
<columnMetaData name="REGION"/>
<columnMetaData name="COUNTRY"/>
<columnMetaData name="ELEVATION" type="float"/>
<columnMetaData name="LATITUDE" type="float"/>
<columnMetaData name="LONGITUDE" type="float"/>
<columnMetaData name="TIMESTAMP"/>
<columnMetaData name="TEMPERATURE" type="float"/>
<columnMetaData name="DEWPOINT" type="float"/>
<columnMetaData name="HUMIDITY" type="integer"/>
<columnMetaData name="VISIBILITY_QUAL"/>
<columnMetaData name="VISIBILITY" type="float"/>
<columnMetaData name="WIND_DIR"/>
<columnMetaData name="WIND_DEG" type="integer"/>
<columnMetaData name="WIND_SPEED" type="float"/>
<columnMetaData name="GUST_SPEED" type="float"/>
</metaData>
</tabularData>
<filters>
<patternFilter expression="Bolivia"
match="caseInsensitive unicodeCase"
testColumn="COUNTRY"/>
<sorter testColumn=
"TEMPERATURE" direction="descending"/>
</filters>
<highlighters>
<alternateRowHighlighter oddRowBackground="cyan"
evenRowBackground="light grey"/>
</highlighters>
<columns>
<column title="Station" binding="STATION"
prototypeValue="Santa Cruz / El Trompillo city"/>
<column title="Country" binding="COUNTRY"/>
<column title="°C" binding="TEMPERATURE"
horizontalAlignment="center"/>
<column title="Wind Dir." binding="WIND_DIR"/>
<column title="Wind Speed" binding="WIND_SPEED"
horizontalAlignment="center"/>
</columns>
</table>
</om:resource>
Å×À̺íÀº ÁÙ¹«´Ì ÇàÀ¸·Î Ç¥½ÃµÇ°í, ÇàÀº ¿Âµµ ±âÁØÀ¸·Î ³»¸²Â÷¼ø Çü½ÄÀ¸·Î Á¤·ÄµÈ´Ù.
JDNC¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº JDNC
project page¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.
º» ¸ÞÀÏÀº ¼ö½ÅÀ» µ¿ÀÇÇÑ È¸¿ø´Ô¿¡°Ô¸¸ ¹ß¼ÛµË´Ï´Ù.
º» ¸ÞÀÏÀÇ ¼ö½ÅÀ» °ÅºÎÇϰųª ¼ö½ÅÁÖ¼Ò¸¦ º¯°æÇÏ·Á¸é SKDN@Sun.comÀ¸·Î
¹®ÀÇ Áֽñ⠹ٶø´Ï´Ù.
SKDN(Sun Korea
Developers Network)¿¡¼ J2EE/J2SE Å×Å©ÆÁ µî ´Ù¾çÇÑ ¾ÆÆ¼Å¬µéÀ»
Âü°íÇϼ¼¿ä.
Copyright 2003-2005 Sun Korea, Inc. All rights reserved.
|