.
.
Core Java
Technologies Technical Tips
.
 
2005³â 5¿ù 31ÀÏ  


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

³¯¾¾ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ Å×À̺íÀÌ Ç¥½ÃµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.

Simple Table

µð½ºÇ÷¹ÀÌµÈ Å×ÀÌºí¿¡¼­ÀÇ ¿­ Á¦¸ñÀº ÀϹÝÀûÀ¸·Î 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>

ÀÌÁ¦ Å×À̺íÀº ¹æ±Ý ¸¸µç ¿­ÀÇ Á¦¸ñÀÌ Æ÷ÇÔµÈ »óÅ·Π´ÙÀ½°ú °°ÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

Labeled Table

¿­¿¡ ·¹À̺íÀ» ºÙÀÎ ´ÙÀ½ º¸ÀÌ°Ô ÇÒ ¿­°ú ±× ¼ø¼­¸¦ ½±°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Ç¥½ÃÇϰíÀÚ ÇÏ´Â °¢°¢ÀÇ ¿­¿¡ ´ëÇØ column ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔÇÏ´Â columns ¿¤¸®¸ÕÆ®¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº Æ÷ÇÔµÈ ¿­À» ÁöÁ¤ÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀÌ´Ù.

   <column title="Station" binding="STATION"/>

¶ÇÇÑ µ¥ÀÌÅÍ ÀÚ¸®¸ÂÃãÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î, ¿Âµµ µ¥ÀÌÅ͸¦ Áß¾Ó¿¡ ¿Àµµ·Ï Çϸé Å×À̺íÀÌ ´õ º¸±â ÁÁÀ» °ÍÀÌ´Ù. ¾Æ·¡¿Í °°ÀÌ °£´ÜÇÑ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

   <column title="&#176;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>
Reduced Table

À̹ø¿¡´Â 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>

Å×À̺íÀº ÁÙ¹«´Ì ÇàÀ¸·Î Ç¥½ÃµÇ°í, ÇàÀº ¿Âµµ ±âÁØÀ¸·Î ³»¸²Â÷¼ø Çü½ÄÀ¸·Î Á¤·ÄµÈ´Ù.

Sorted Table

JDNC¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº JDNC project page¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

.
.
.

Reader Feedback

  ¸Å¿ì ÁÁ´Ù    ÁÁ´Ù    ±×Àú ±×·¸´Ù 

 

ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀÌ ±Ã±ÝÇϼ¼¿ä? Java Online SupportÀ» Âü°íÇϼ¼¿ä.

.
.

º» ¸ÞÀÏÀº ¼ö½ÅÀ» µ¿ÀÇÇÑ È¸¿ø´Ô¿¡°Ô¸¸ ¹ß¼ÛµË´Ï´Ù.
º» ¸ÞÀÏÀÇ ¼ö½ÅÀ» °ÅºÎÇϰųª ¼ö½ÅÁÖ¼Ò¸¦ º¯°æÇÏ·Á¸é SKDN@Sun.comÀ¸·Î ¹®ÀÇ Áֽñ⠹ٶø´Ï´Ù.

SKDN(Sun Korea Developers Network)¿¡¼­ J2EE/J2SE Å×Å©ÆÁ µî ´Ù¾çÇÑ ¾ÆÆ¼Å¬µéÀ» Âü°íÇϼ¼¿ä.

Copyright 2003-2005 Sun Korea, Inc. All rights reserved.


Sun Microsystems, Inc.
.

 


I Love Solaris 10 ÄÁÅ×½ºÆ®°¡ °³Ãֵ˴ϴÙ.
1) Why I Love Solaris
2) Solaris ÃÖ°í¼ö¸¦ ã¾Æ¶ó
À§ÀÇ µÎ°¡Áö Ä·ÆäÀο¡ Âü°¡ÇϽðí ǪÁüÇÑ »óǰÀ» ¹Þ¾Æ°¡¼¼¿ä.
->ÄÁÅ×½ºÆ® ¹Ù·Î°¡±â

¾Æ¿ï·¯, SKDN¿¡¼­´Â ¸Å¿ù 1ȸ Solaris °³¹ßÀÚ ´º½º·¹Å͸¦ ¹ß¼ÛÇÒ ¿¹Á¤ÀÔ´Ï´Ù. Ãֽе¿Çâ°ú ±â¼úÀ» ÀüÇØµå¸³´Ï´Ù.
Áö±Ý ¹Ù·Î ½ÅûÇϼ¼¿ä.
->ÀÚ¼¼È÷ º¸±â


.