Java Tutorial :

Making the Java Real !

305-350 ´ëÀü±¤¿ª½Ã À¯¼º±¸ °¡Á¤µ¿ 161¹øÁö
Çѱ¹ÀüÀÚÅë½Å¿¬±¸¼Ò ¸ÖƼ¹Ìµð¾îÇ¥ÁØ¿¬±¸½Ç
½Å¸í±â
E-mail : mkshin@pec.etri.re.kr
URL : http://pec.etri.re.kr/~mkshin/
Abstract:
ÀÚ¹Ù´Â ÀÎÅͳÝÀ» À§ÇÑ Â÷¼¼´ë °´Ã¼ÁöÇâ ¾ð¾î·Î¼­, À¥¿¡ Àû¿ëµÇ¾î ºê¶ó¿ìÀú¿¡ ¾Ö´Ï¸ÞÀ̼Ç, ÀζóÀÎ-»ç¿îµå, ½Ç½Ã°£ ÀÎÅÍ¾×Æ¼ºê ±â´ÉÀ» °¡´ÉÇÏ°Ô Çß´Ù´Â ´«¿¡ º¸ÀÌ´Â ÀåÁ¡¿Ü¿¡µµ »õ·Î¿î µ¥ÀÌŸ ŸÀÔ°ú ÇÁ·ÎÅäÄÝÀ» Ç÷¯±×-ÀÎ ÇÒ ¼ö ÀÖ°í, µ¥ÀÌŸ »Ó¸¸ ¾Æ´Ï¶ó Äڵ带 ´Ù¿î·Îµå ÇØ¼­ »ç¿ëÇÒ ¼ö Àִ Ư¡À¸·Î ÀÎÇØ ±âÁ¸ ÄÄÇ»ÅÍ »ê¾÷ Àü¹Ý¿¡ °ÉÃÄ Ä¿´Ù¶õ Çõ¸íÀ» ¿¹°íÇϰí ÀÖ´Ù.
º» ÀÚ¹Ù Æ©Å丮¾ó¿¡¼­´Â ÀÚ¹Ù¿¡ ´ëÇÑ Àü¹ÝÀûÀÎ ÀÌÇØ¸¦ ¸ñÀûÀ¸·Î ÀÚ¹ÙÀÇ °³¹ß ¹è°æ°ú WWWÀÇ Àû¿ë È¿°ú, ÀÚ¹ÙÀÇ ÇÁ·Î±×·¥ÀûÀÎ ±â´Éµé°ú Ư¡, ±¸¹®À» »ìÆìº¸¸ç, JDK 1.0°ú ÀÚ¹Ù °³¹ß ȯ°æ, ÃֽŠÀÚ¹Ù ÀÀ¿ë±â¼úÀÎ ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇØ ¾Ë¾Æº»´Ù. ¶ÇÇÑ ÀÚ¹Ù·Î °¡´ÉÇÑ ÇÁ·Î±×·¥ÀÇ ³×°¡Áö À¯ÇüÀÎ ÀÚ¹Ù ¾ÖÇø´, ¾ÖÇø®ÄÉÀ̼Ç, ÇÁ·ÎÅäÄÝ Çڵ鷯, ÄÁÅÙÆ® Çڵ鷯ÀÇ ÀÛ¼º¹ý°ú °£´ÜÇÑ ÇÁ·Î±×·¥ À¯ÇüÀ» »ìÆìº»´Ù.
Keywords:
Java, WWW(World Wide Web), JDK(Java Developers Kit), IDE(Integrated Development Environment), JavaScript, Applet, Application, Protocol Handler, Content Handler

1. Â÷¼¼´ë WWW ±â¼ú°ú ÀÚ¹Ù

WWWÀº NCSA Mosaic, Netscape NavigatorÀÇ µîÀåÀ¸·Î ±× ±â´ÉÀº ´Ü¼øÈ÷ Á¤º¸°Ë»ö µµ±¸ Â÷¿øÀ» ³Ñ¾î ÀÎÅͳݻ󿡼­ »ç¿ëµÇ´Â ¸ðµç ¼­ºñ½º(ÀÀ¿ë)ÀÇ GUI·Î Á¡Â÷ È®»êµÂ¾î °¡°í ÀÖ´Â Ãß¼¼À̸ç, ÀÎÅͳÝÀ» Â÷¼¼´ë Åë½Å¸ÁÀ¸·Î ¹ßÀü½Ãų ÁÖ¿äÇÑ ¿øµ¿·ÂÀ¸·Î Æò°¡¹Þ°í ÀÖ´Ù. 1994³â ~ 1995³âÀÇ ÇÑÇØ°¡ WWW ´ëÁßÈ­¿¡ ¾ÕÀå¼± NetscapeÀÇ ÇØ¿´´Ù¸é 1995³â ~ 1996³âÀº ÀÚ¹Ù¸¦ ºñ·ÔÇÑ Â÷¼¼´ë WWWÀ» À̲ø¾î°¥ »õ·Î¿î ±â¼úµéÀÇ °³¹ß°ú °æÀïÀÇ ÇÑÇØ°¡ µÉ °ÍÀ¸·Î ¿¹ÃøÇϰí ÀÖ´Ù. ÃÖ±Ù Â÷¼¼´ë WWWÀ» °áÁ¤ÁöÀ» ±â¼ú·Î¼­ Æò°¡¹Þ°í ÀÖ´Â ºÐ¾ß´Â ´ÙÀ½°ú °°´Ù.
WWW API´Â Å©°Ô Ŭ¶óÀ̾ðÆ®, ¼­¹öÂÊÀ¸·Î ±¸ºÐÇÏ¿© Client API, Server API·Î ³ª´µ¸ç, ÃÖ±Ù Netscape¿¡¼­ Á¦°øÇÏ´Â Ç÷¯±×-ÀÎÀ» Áö¿øÇϱâ À§ÇÑ APIÀÎ Inline Plug-in API ±â¼úµµ ÀÌ¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. Server APIÀÎ °æ¿ì, Netscape Server¿¡¼­ NSAPI(Netscape Server API)¶õ À̸§À¸·Î Á¦°øÇϰí ÀÖÀ¸¸ç, CGIÀÇ ´ÜÁ¡À» º¸¿ÏÇÏ¿© ¼º´ÉÇâ»ó°ú Securityµî »õ·Î¿î ±â´ÉÀ» Ãß°¡ÀûÀ¸·Î È®ÀåÇÒ ¼ö ÀÖ´Ù´Â ¿©·¯°¡Áö ÀåÁ¡À» °¡Áö°í ÀÖ´Ù. Client API´Â WWW ºê¶ó¿ìÀú¿Í »ç¿ëÀÚ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÅëÇÕ°ú Á¦¾î¸¦ À§ÇØ »ç¿ëµÇ¸ç NCSA Mosaic¿¡¼­´Â CCI(Common Client Interface), Netscape¿¡¼­´Â NCAPI(Netscape Client API)¶õ À̸§À¸·Î ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. WWW Client APIÀÇ ´ÜÁ¡Àº Ç÷§Æû ȯ°æÀÌ Unix, Windows, Mac¿¡ µû¶ó ±¸Çö ¹æ½ÄÀÌ ´Þ¶óÁö¸ç, Ç÷§ÆûÀÌ ´Ù¸¥ ȯ°æ¿¡¼­´Â °¢ ÀÀ¿ë°£ÀÇ Á¦¾î¿Í ÅëÇÕÀÌ ºÒ°¡´ÉÇÏ´Ù´Â Á¡¿¡ ÀÖ´Ù. Netscape¿¡¼­ Á¦°øÇÏ´Â NPAPI(Netsape Plugin API)´Â ÀÎÅͳݻóÀÇ ´Ù¾çÇÑ ¸ÖƼ¹Ìµð¾î µ¥ÀÌŸ¸¦ Netscape¿¡¼­ ¿ÜºÎ ºä¾î¸¦ »ç¿ëÇÏÁö ¾Ê°í ¹Ù·Î ºê¶ó¿ì¡ Çϱâ À§ÇØ Ç¥ÁØÈ­µÈ API¸¦ Á¦°øÇÏ´Â °ÍÀ¸·Î ÇöÀç ¾à 20¿©°³ÀÇ Á¦Ç°ÀÌ À̸¦ ÀÌ¿ëÇÏ¿© Netscape¿¡ Ç÷¯±×-ÀÎ µÇ¾î ÀÖÀ¸¸ç À̸¦ ÀÌ¿ëÇÏ¿© ¾Ö´Ï¸ÞÀ̼Ç, VRML µ¥ÀÌŸ µîÀ» WWW ºê¶ó¿ìÀú ÀÔÀå¿¡¼­ ¼Õ½±°Ô ó¸®ÇÒ ¼ö ÀÖ´Ù.

VRML(Virtual Reality Modeling Language)Àº ½Ç¸®ÄÜ ±×·¡ÇȽº¿¡¼­ °³¹ßÇÑ 3Â÷¿ø ¸ðµ¨¸µ ¾ð¾î·Î À¥ÀÇ ´ÜÁ¡ÀÎ 2Â÷¿øÀûÀÎ Á¢±Ù ¹æ½ÄÀÇ ¹®Á¦Á¡À» ÇØ°áÇϱâ À§ÇØ °³¹ßÇÑ ¾ð¾îÀÌ´Ù. VRMLÀº ±× ±â´É¿¡ ´ëÇÑ ¿ì¼ö¼ºÀÌ ¿¹ÀüºÎÅÍ ³ô°Ô Æò°¡µÇ°í ÀÖ¾úÀ¸³ª ±âÁ¸ HTML°úÀÇ È£È¯ÀÇ ¹®Á¦Á¡À¸·Î ÀÎÇØ ¸¹Àº Àå¾Ö¸¦ °¡Áö°í ÀÖ¾ú´Ù. ÇöÀç Áö±ÝÀº Netscape¿¡¼­ VRMLÀ» Áö¿øÇϱâ À§ÇØ ¸î°¡Áö Á¦Ç°ÀÇ Ç÷¯±×-ÀÎÀ» Á¦°øÇϰí ÀÖÀ¸¸ç, ÀÚ¹Ù ¾ð¾î¿¡¼­µµ ¿Ã ¿©¸§¿¡ ³ª¿Ã JDK 1.1 APIÂÊ¿¡ VRMLÀ» Ç¥ÇöÇϱâ À§ÇØ Å¬·¡½º ¶óÀ̺귯¸®°¡ È®ÀåµÉ ¿¹Á¤À̾ °á±¹ VRML°ú ÀÚ¹Ù´Â µ¿ÀÏ ¼±»ó¿¡ ³õ¿©Áú °ÍÀ¸·Î ±â´ëµÇ°í ÀÖ´Ù.

À§¿¡¼­ ¿­°ÅÇÑ µÎ°¡Áö ±â¼úÀÇ °øÅëÁ¡Àº °á±¹ ±âÁ¸ À¥ÀÌ °¡Áö´Â ´ÜÆíÀûÀÌ°í Æò¸éÀûÀÎ ¹®Á¦Á¡µéÀ» ÇØ°áÇϱâ À§ÇÑ ´ë¾ÈÀ¸·Î¼­ Á¦¾ÈµÈ °ÍÀÓÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÚ¹Ù´Â ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­ °³¹ßÇÑ Â÷¼¼´ë °´Ã¼ÁöÇâ ¾ð¾î·Î Ãâ¹ßÁ¡¿¡¼­´Â À§ÀÇ µÎ°¡Áö ±â¼úµé°ú ¸¹Àº Â÷ÀÌ´Â ÀÖÁö¸¸ ÀÚ¹Ù ¿ª½Ã, ±Ã±ØÀûÀ¸·Î´Â ±âÁ¸ À¥ÀÇ ´ÜÁ¡À» º¸¿ÏÇϱâ À§ÇÑ ÇÁ·Î±×·¥ ¾ð¾î¶ó°í º¼ ¼ö ÀÖ´Ù. ƯÈ÷ ÀÚ¹Ù´Â ¾ð¾î ÀÚü¿¡¼­ ºÐ»êȯ°æÀ» Áö¿øÇÏ´Â ³×Æ®¿÷ ¾ð¾îÀÓÀ¸·Î WWW API¿Í °°Àº ±â´ÉÀ» Áö¿øÇϸ鼭µµ Ç÷§Æû¿¡ µ¶¸³ÀûÀΠȯ°æÀ» ±¸ÃàÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡À» °¡Áö°í ÀÖÀ¸¸ç, VRMLÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù´Â È®À强À¸·Î ÀÎÇØ À§¿¡¼­ ¿­°ÅÇÑ µÎ°¡Áö Â÷¼¼´ë ±â¼ú·ÂÀ» ¸ðµÎ Æ÷ÇÔÇÏ´Â WWWÀÇ ÁÖ¿äÇÑ ±â¼ú·Î ÀÎÁ¤µÇ°í ÀÖ´Ù.

2. ÀÚ¹Ù, ±× ¹«ÇÑÀÇ ÀáÀç·Â

ÇöÀç ÀÚ¹ÙÀÇ °¡´É¼ºÀº WWW¿¡¼­ ºÎÅÍ Á¤º¸ »ê¾÷ Àü¹Ý¿¡ °ÉÃÄ ¹«ÇÑÇÑ ÀáÀç·ÂÀÌ Àִ°ÍÀ¸·Î Æò°¡µÇ°í ÀÖ´Ù.

2.1 ´ÙÀ̳ª¹ÍÇÑ WWW ºê¶ó¿ìÀú

ÀÎÅͳݻóÀÇ µ¥ÀÌÅ͵éÀº Á¡Â÷ µ¿È­»ó, »ç¿ëÀÚ¿ÍÀÇ »óÈ£ÀÛ¿ëÀ» ¿ä±¸ÇÏ´Â º¹ÀâÇÑ µ¥ÀÌŸ Æ÷¸ËÀ» ¿ä±¸Çϴµ¥ ¹ÝÇØ ±âÁ¸ÀÇ À¥ ºê¶ó¿ìÀú´Â À̹ÌÁö¿Í ÅØ½ºÆ®¸¦ ³ª¿­ÇÏ´Â ´Ü¼øÇÑ È­¸é¸¸À» º¸¿©ÁÙ ¼ö ÀÖ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ¾ú´Ù ÀÚ¹Ù°¡ Áö¿øµÇ´Â ºê¶ó¿ìÀú¿¡¼­´Â ÀÌ·¯ÇÑ ¹®Á¦Á¡À» ÇØ°áÇÑ´Ù. ÀÚ¹Ù ¾ÖÇø´À» »ç¿ëÇϸé À¥ ºê¶ó¿ìÀú³»¿¡¼­ ¾Ö´Ï¸ÞÀ̼Ç, ÀζóÀÎ »ç¿îµå, ½Ç½Ã°£ »óÈ£ÀÛ¿ëÀÌ °¡´ÉÇÏ´Ù. ÀÚ¹Ù´Â ±âÁ¸ À¥ ºê¶ó¿ìÀú¸¦ ´ÙÀ̳ª¹ÍÈ÷°Ô ¸¸µé¾ú´Ù.

±×¸² 1Àº ÀÚ¹Ù ¾ÖÇø´À» ÀÌ¿ëÇÏ¿© ³×Æ®¿÷À» ÅëÇØ ¿©·¯ »ç¿ëÀÚ°£ÀÇ ½Ç½Ã°£ ½Ã¹Ä·¹ÀÌ¼Ç °ÔÀÓÀÇ ¿¹¸¦ ³ªÅ¸³½°ÍÀÌ´Ù.


±×¸² 1 ½Ç½Ã°£ ½Ã¹Ä·¹ÀÌ¼Ç °ÔÀÓÀ» Áö¿øÇÏ´Â ÀÚ¹Ù

2.2 »õ·Î¿î µ¥ÀÌŸ ŸÀÔ°ú ÇÁ·ÎÅäÄÝÀÇ Ç÷¯±×-ÀÎ

Á¡Â÷ ¸ÖƼ¹Ìµð¾îÈ­ µÇ´Â µ¥ÀÌŸ¿Í »õ·Î¿î ÇÁ·ÎÅäÄÝÀÇ È®ÀåÀ» À§ÇØ ±âÁ¸ÀÇ ºê¶ó¿ìÀú´Â ÄÚµåÀÇ ¼öÁ¤À» ÅëÇÑ ¼ÒÇÁÆ®¿þ¾î ¾÷±×·¹ÀÌµå ¶ó´Â °úÁ¤ÀÌ ¿ä±¸µÇ¾ú´Ù. ÀÚ¹ÙÀÇ ÄÁÅÙÆ® Çڵ鷯, ÇÁ·ÎÅäÄÝ Çڵ鷯¶ó´Â °³³äÀ» ÀÌ¿ëÇÏ¸é ±âÁ¸ ºê¶ó¿ìÀú ¼ÒÇÁÆ®¿þ¾î ÄÚµåÀÇ ¾Æ¹«·± ¼öÁ¤¾øÀÌ »õ·Î¿î µ¥ÀÌŸ ŸÀÔ°ú ÇÁ·ÎÅäÄÝÀÇ Ã³¸® ·çƾÀ» Ãß°¡·Î È®ÀåÇÒ ¼ö ÀÖ´Ù.

±×¸² 2´Â VRML°ú °°Àº »õ·Î¿î µ¥ÀÌŸ ŸÀÔÀÇ Ç÷¯±×-ÀÎ »Ó¸¸ ¾Æ´Ï¶ó S-HTTP, Multicast°ú °°Àº ÇÁ·ÎÅäÄݵµ Ç÷¯±×-ÀÎ ÇÒ ¼ö ÀÖ´Ù. Âü°í·Î NetscapeÀÇ Ç÷¯±×-ÀÎ ±â¼úÀº µ¥ÀÌŸ¸¸À» Ç÷¯±×-ÀÎ ÇÒ ¼ö ÀÖ´Ù.


±×¸² 2 »õ·Î¿î µ¥ÀÌŸ ŸÀÔ°ú ÇÁ·ÎÅäÄÝÀÇ Ç÷¯±×-ÀÎ

2.3 ¼ÒÇÁÆ®¿þ¾î °³¹ß°úÁ¤ÀÇ Çõ¸í ¿¹°í

±âÁ¸ ¼ÒÇÁÆ®¿þ¾î º¥´õµéÀÇ °¡Àå Å« °í¹ÎÀº °è¼ÓÀûÀÎ Á¦Ç°ÀÇ ¹öÁ¯°ü¸®¿Í ¾÷±×·¹ÀÌµå ¹®Á¦¿´´Ù. ±âÁ¸ÀÇ ¼ÒÇÁÆ®¿þ¾î ±â¼úÇõ½Å°ú »ç¿ëÀÚ Áõ°¡ÀÇ »çÀÌŬÀº ¼­·Î ¹Ýºñ·ÊÀÇ °ü°è°¡ À¯ÁöµÇ°ï Çß¾ú´Ù. Áï, °³¹ßµÈ ±â¼úÀÇ »ç¿ëÀÌ È®´ëµÉ ¼ö·Ï, ´õÀÌ»óÀÇ ±â¼úÇõ½ÅÀº ¾î·Æ°Ô µÇ´Âµ¥. ±× ÀÌÀ¯´Â °è¼ÓÀûÀÎ ¾÷±×·¹ÀÌµå °¡ ¾î·Á¿ì¸ç, »õ·Î¿î ±â¼ú°£ÀÇ »óÈ£¿î¿ë¼º°ú ȣȯ¼ºÀ» º¸ÀåÇÏ´Â ¹®Á¦µµ Å©±â ¶§¹®ÀÌ´Ù. ÀÚ¹Ù »ç¿ëÀ¸·Î ÀÎÇÑ °¡Àå Å« È¿°ú´Â ±â¼úÇõ½ÅÀÇ °úÁ¤ÀÌ »ç¿ëÀÚÀÇ Áõ°¡¿Í ÇÔ²² ±×´ë·Î À¯ÁöµÈ´Ù´Â Á¡¿¡ ÀÖ´Ù. ÀÚ¹Ù¸¦ ÀÌ¿ëÇϸé, ȣȯ¼º°ú »óÈ£¿î¿ë¼ºÀ» À¯ÁöÇÏ´Â µ¿½Ã¿¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡ÀûÀ¸·Î ½ÇÇèÇÒ ¼ö ÀÖ´Ù.

±×¸² 3 »ç¿ëÀÚÀÇ Áõ°¡¿Í ÇÔ²² ¼ÒÇÁÆ®¿þ¾î ±â¼úÇõ½Å ½ÎÀÌŬµµ ÇÔ²² Áõ°¡

2.4 ³×Æ®¿÷ ÄÄÇ»ÅÍ(Network Computer:NC)ÀÇ µîÀå ?

ÀÚ¹ÙÀÇ Àû¿ëÀº ½ÇÁ¦·Î ³×Æ®¿÷¿¡ Àû¿ëµÇ¾î ÀÎÅͳݿ¡ º¸´Ù ³î¶ó¿î ÀÏ´ë º¯ È­¸¦ °¡Á®¿Â´Ù. ±×Áß¿¡¼­ ´ëÇ¥ÀûÀÎ °ÍÀÌ ³×Æ®¿÷ ÄÄÇ»ÅÍÀÇ µîÀåÀÌ´Ù. ³×Æ®¿÷ ÄÄÇ»ÅͶõ ÀÏ¹Ý Å¬¶óÀÌ ¾ðÆ®´Â ¼­¹ö·Î ºÎÅÍ ±âÁ¸ÀÇ µ¥ÀÌÅÍ »Ó¸¸ ¾Æ´Ï¶ó ÀÀ¿ë ÇÁ·Î±×·¥µµ ´Ù¿î·Îµå ¹Þ¾Æ »ç¿ëÇÒ ¼ö ÀÖµµ ·Ï ÇÏ´Â °³³äÀÌ´Ù. Áï, ÀÌÁ¦±îÁö CD-ROMÀ̳ª µð½ºÄÏ¿¡ ´ã¾Æ Á¦°øÇÏ´ø ¸ðµç ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±× ·¥Àº ³×Æ®¿÷ ÄÄÇ»ÅͶõ °³³äÀÇ µîÀåÀ¸·Î ¾ø¾îÁö°Ô µÈ´Ù. Oracle¿¡¼­´Â °ð ³×Æ®¿÷ ÄÄÇ»ÅÍ Á¦Ç°À» Ãâ½ÃÇÒ °ÍÀ¸·Î ¾Ë·ÁÁö°í ÀÖÀ¸¸ç, SunSoft¿¡¼­µµ À¥ ºê¶ó¿ìÀú¸¦ ÀåÂøÇÑ ÀÚ¹ÙÅ͹̳ÎÀ̶ó´Â À̸§À» °®´Â ³×Æ®¿÷ ÄÄÇ»Å͸¦ °³¹ßÁßÀÌ´Ù. ³×Æ®¿÷ ÄÄÇ»ÅÍÀÇ ¼º°ø¿©ºÎ´Â Àû¾îµµ ¾ÆÁ÷±îÁö ³×Æ®¿÷ ºÎÇÏÀÇ ¹®Á¦·Î ¸¹Àº ¹Ì°á °úÁ¦°¡ ³²¾ÆÀÖ´Ù.

±×¸² 4 ³×Æ®¿÷ ÄÄÇ»ÅÍÀÇ °³³ä

3. Àڹ٠ȯ°æ°ú »õ·Î¿î ÀÀ¿ë ±â¼ú

3.1 ÀÚ¹ÙÀÇ °³¹ß ¹è°æ

1990³â "±×¸° ÇÁ·ÎÁ§Æ®"¶ó´Â À̸§À¸·Î ½ÃÀÛÇÑ ÀÚ¹Ù °³¹ßÀÇ µÞ ¸ð½ÀÀº Áö±Ý±îÁöÀÇ WWW ±â¼ú°ú´Â ´Ù¸¥ ÀϸéÀ» º¸¿©ÁØ´Ù. 1991³â, °¡ÀüÁ¦Ç°ÀÇ »óÈ£¿î¿ë¼º È®º¸¸¦ ¸ñÇ¥·Î(ÀÎÅÍ³Ý ½ÃÀåÀÌ ¾Æ´Ñ) ½ÃÀÛÇÏ¿© ¿ÀÅ©(ÀÚ¹ÙÀÇ Àü½Å)¶ó´Â ¾ð¾îÀÇ °³¹ß°ú ÇÔ²² 1993³â ÀÎÅÍ¿¢Æ¼ºê TV¿¡ Àû¿ëÀ» ½ÃµµÇß¾ú´Ù. À¥ÀÌ ÀÌó·³ Æø¹ßÀûÀÎ Àα⸦ ²ø±âÀÌÀü, °¡ÀüÁ¦Ç°¿¡ ´ëÇÑ »óÈ£¿î¿ë¼ºÀÇ È®º¸´Â ¼ÒºñÀÚ Ãø¸é¿¡¼­ ÀÚ¹Ù¸¦ Àû¿ëÇÒ ¼ö ÀÖ´Â ÁÁÀº ȯ°æÀ¸·Î ÀνĵǾî ÀÖ¾ú ´Ù. ÀÎÅÍ¿¢Æ¼ºê TV¿¡ ´ëÇÑ Àû¿ëÀÌ ±âÁ¸ ½ÃÀ强ÀÇ ¹®Á¦·Î ÀÎÇØ ºÒ°¡´ÉÇÏ°Ô µÇÀÚ ÀÚ¹ÙÀÇ °³¹ßÀÚÀÎ Á¦ÀÓÁî °í½½¸µÀº ÀÚ¹ÙÀÇ »õ·Î¿î Àû¿ë ȯ°æÀ¸·Î WWWÀÇ ÅÃÇÏ°Ô µÈ´Ù. ±×·¸°Ô 4³âÀÌ ³Ñ°Ô ¾öû³² ÅõÀÚ ºñ¿ë°ú ¿¬±¸ °³¹ß, Àû¿ë ȯ°æÀÇ ½ÃÇà Âø¿À¸¦ °ÅµìÇÏ´ø ÀÚ¹Ù´Â 1995³â 5¿ù ¼±¿ùµå '95¿¡¼­ ÀÚ¹Ù ºê¶ó¿ìÀúÀÎ ÇÖÀÚ¹Ù¿Í ÇÔ²² °ø½ÄÀûÀ¸·Î ¼±º¸ÀÌ°Ô µÊÀ¸·Î¼­ ±× ³î¶ó¿î ¿ª»çÀÇ ¼­¸·À» ¿­°ÔµÈ´Ù.

3.2 ÀÚ¹Ù ¾ð¾îÀÇ Æ¯Â¡

3.2.1 °´Ã¼ÁöÇâ ¾ð¾îÀÇ ÀåÁ¡À» °®´Â´Ù(Object-Oriented)

Àڹٴ ĸ½¶È­, Æú¸®¸ðÇÇÁò Áò, »ó¼Ó(inheritance)°ú °°Àº C++, Smalltalk°ú °°Àº ±âÁ¸ °´Ã¼ÁöÇâ ¾ð¾îÀÇ Æ¯Â¡µéÀ» °¡Áö°í ÀÖ´Ù.
 
class Car {
   int door;

   public Car() {
        door = 4;
   }
   void number_of_door() {
        System.out.println(door);
    }
   int maxSpeed() {
        return 180;
    }
}
 
class Granduer extends extends Car {
   int maxSpeed() {
       return 220;
   }
}

À§ÀÇ ÀÚ¹Ù·Î ±¸ÇöÇÑ µÎ Ŭ·¡½º°£ÀÇ °ü°è¸¦ º¸¸é, Granduer´Â extends·Î Á¤ÀǵǾî CarÀÇ ¼­ºêŬ·¡½ºÀÌ´Ù. Áï CarÀÇ ¸ðµç ¼Ó¼º(variable, ¸Þ¼Òµå ..)µéÀº Porsche·Î »ó¼ÓµÈ´Ù. »Ó¸¸¾Æ´Ï¶ó Porsche Ŭ·¡½º¿¡¼­´Â maxSpeed()¸¦ ´Ù½Ã Á¤ÀÇÇÔÀ¸·Î¼­ ¸Þ¼Òµå ¿À¹ö¶óÀ̵尡 °¡´ÉÇÏ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡µéÀº ÀϹÝÀûÀÎ °´Ã¼ÁöÇâ ¾ð¾î°¡ °¡Áö°í ÀÖ´Â ±â´ÉµéÀÌ´Ù.

3.2.2 ´Ü¼øÇϸç ÇÁ·Î±×·¡¸Ó¿¡°Ô Ä£¼÷ÇÑ ¾ð¾î´Ù(Simple)

C++°ú À¯»çÇÑ °´Ã¼ÁöÇâ ¾ð¾îÀ̸鼭µµ ÀÚ¹Ù´Â ²À ÇÊ¿ä·Î ÇÏ´Â ±â´É¸¸À» À§ÇØ ºÒÇÊ¿äÇÑ ¿ä¼Ò´Â ¸ð µÎ »èÁ¦Çß´Ù. ¿¹¸¦µé¾î C Ãʺ¸ÀÚµéÀÌ ¹è¿ì´Âµ¥ °¡Àå ±î´Ù·Î¿î Æ÷ÀÎÅÍ ¿¬»êÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸ç, ½ºÆ®·°Æ® ŸÀÔ°ú °°Àº Áߺ¹ÀûÀÎ ±â´ÉÀ» »èÁ¦Çß´Ù. ¶ÇÇÑ C++¿¡¼­ °³³äÀÌ º¹ÀâÇÏ¿© È¥µ¿À» À¯¹ßÇÏ °ï ÇÏ´Â ¿¬»êÀÚ ¿À¹ö·Îµù, ´ÙÁß »ó¼Ó, ÀÚµ¿ ÄÚ¼Ç µîÀÇ ±â´ÉÀ» »èÁ¦Çß´Ù.

¶ÇÇÑ ÀÚ¹Ù´Â ÀÌ·¯ÇÑ ´Ü¼øÇÔÀ» °¡Áö¸é¼­µµ C/C++¿¡¼­ Á¦°øµÇÁö ¾ÊÀº °¡ºñÁö ¼öÁý(garbage collection), ¾²·¹µå µ¿±âÈ­, dzºÎÇÑ Å¬·¡½º ¶óÀ̺귯¸® µî Ãß°¡ÀûÀÎ ±â´ÉÀ» Á¦°øÇÑ´Ù. ÀÚµ¿ÀûÀÎ °¡ºñÁö ¼öÁýÀ¸·Î ¸Þ¸ð ¸® °ü¸®¸¦ À§ÇØ »ç¿ëÀÚ°¡ ÀÏÀÏÀÌ ÇÁ¸®(free) ¼±¾ðÀ» ÇØ ¿À´ø ºÒÆíÇÔÀ» ÇØ¼ÒÇßÀ¸¸ç, Xerox CeDAr/Mesa¿¡¼­ µû¿Â ¾²·¹µå µ¿±âÈ­´Â ¸ÖƼ¾²·¹µå ÇÁ·Î±×·¥À» ´õ¿í °£´ÜÈ÷ ±¸¼ºÇϵµ·Ï µµ¿ÍÁØ ´Ù. ¶ÇÇÑ ±¸¹® ÀÚü°¡ ´Ü¼øÇØ Áø ¹Ý¸é, »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±×·¡ÇÈ, ³×Æ®¿öÅ© µîÀ» Áö¿øÇϴ dzºÎÇÑ Å¬·¡½º ¶óÀ̺귯¸®¸¦ Áö¿øÇÔÀ¸·Î¼­ »ç¿ëÀÚ°¡ Á÷Á¢ ÇÁ·Î±×·¥ÇØ¾ß ÇÏ´Â ·Îµå¸¦ ¸¹ÀÌ ÁÙ¿©ÁØ´Ù.

3.2.3 ºÐ»êȯ°æ¿¡ ¾Ë¸ÂÀº ³×Æ®¿÷ ¾ð¾î´Ù(Distributed)

ÀÚ¹Ù´Â ³×Æ®¿÷»óÀÇ ¿î¿µÀ» °í·ÁÇÏ¿© ¼³°èµÈ ¾ð¾î·Î ¼ÒÄÏ ¹ÙÀεù°ú °°Àº TCP/IP ÇÁ·ÎÅäÄݰú URL ó¸®¿Í °°Àº HTTP ÇÁ·ÎÅäÄÝÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. ÀÚ¹ÙÀÇ ³×Æ®¿÷ ÆÐŰÁö¿¡´Â À̸¦ À§ÇÑ Content Handler, InetAddress, ServerSocket, Socket, SocketImpl, URL, URL Connection, URLStreamHandler Ŭ·¡½ºµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù.

3.2.4 ÀÚ¹Ù´Â ÀÎÅÍÇÁ¸®Æ® ¾ð¾î´Ù(Interpreted)

C/C++°ú °°Àº ±âÁ¸ÀÇ ¾ð¾î¿Í´Â ´Þ¸®, ÀÚ¹Ù ÄÄÆÄÀÏ·¯´Â ¼Ò½º Äڵ带 ±âÁ¾¿¡ ¹«°üÇÑ ÄÚµåÀÎ ¹ÙÀÌÆ® ÄÚµå·Î ¸¸µé°í, À̸¦ ÀÚ¹Ù ·±-ŸÀÓ ½Ã½ºÅÛ(Virtual Machine)»ó¿¡¼­ µ¿ÀÛÇϵµ·Ï ÇÑ´Ù.

3.2.5 °ß°íÇÏ´Ù(Robust)

C/C++¿¡¼­ »ç¿ëÇÏ´Â Æ÷ÀÎÅÍÀÇ °³³äÀº µð¹ö±ëÀÌ ¾î·Á¿î ·±Å¸ÀÓ ¿À·ù¸¦ ¸¹ÀÌ ¹ß»ý½ÃŲ´Ù. ÀÚ¹Ù¿¡¼­´Â Æ÷ÀÎÅÍ Ã³¸®¸¦ ¾ø¾ÚÀ¸·Î¼­ ·±Å¸ÀÓ ¿¡·¯¸¦ ÁÙÀÏ ¼ö ÀÖÀ¸¸ç, ¸Þ¸ð¸® Æ÷ÀÎÅÍÀÇ »ç¿ëÀ¸·Î ÀÎÇÑ ÁÖ¼Ò ±â¾ïÀÇ Çʿ伺À» ¾ø¾Ý´Ù.

3.2.6 Ç÷§Æû¿¡ ¹«°üÇÑ À̽ÄÀÌ °¡´ÉÇÑ ¾ð¾î´Ù(Platform Independent/Portable)

³×Æ®¿÷À» ÅëÇØ ÇÁ·Î±×·¥À» ´Ù¿î¹Þ¾Æ Çϵå¿þ¾î¿¡ °ü°è¾øÀÌ »ç¿ëÇϱâ À§Çؼ­´Â ±Ùº»ÀûÀ¸·Î ¾ÆÅ°ÅØÃÄ¿¡ µ¶¸³ÀûÀ̰í À̽ļºÀ» º¸ÀåÇÏ´Â ±¸Á¶°¡ ¿ä±¸µÈ´Ù. ÀÚ¹Ù´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ Çϵå¿þ¾î ¾ÆÅ°ÅØÃÄ, ¿î¿µÃ¼Á¦ ÀÎÅÍÆäÀ̽º, À©µµ¿ì ½Ã½ºÅÛ¿¡ µ¶¸³ÀûÀÎ ¹ÙÀÌÆ® Äڵ带 »ç¿ëÇÑ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥Àº Windows95/NT, Solaris2.x, Mac OS7.5¿Í °°Àº ÀÚ¹Ù°¡ Áö¿øµÇ´Â ¸ðµç Ç÷§Æû»ó¿¡¼­ ÀÚ¹Ù ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¹ÙÀÌÆ®ÄÚµå ÇüÅ·ΠÄÄÆÄÀϵǰí, ÀÎÅÍÇÁ¸®ÅͰ¡ µ¿ÀÛÇÏ´Â ÀÚ¹Ù °¡»ó ±â°è¿¡ ÀÇÇØ ¾î¶² ±âÁ¾ÀÇ ½Ã½ºÅÛ¿¡¼­µµ ½±°Ô ÇØ¼®µÈ´Ù.

3.2.7 °í¼º´É ¾ð¾î´Ù(High Performance)

ÀÚ¹Ù´Â ÀÎÅÍÇÁ¸®Æ® ¾ð¾îÀ̹ǷΠCPU 󸮸¦ ¸¹ÀÌ ¿äÇÏ´Â ÇÁ·Î±×·¥ÀÇ °æ¿ì, 20 ~ 30 ¹è, ³×Æ®¿÷ ÇÁ·Î±×·¥ÀÇ °æ¿ì 5 ¹èÁ¤µµ ±âÁ¸ ÇÁ·Î±×·¥º¸´Ù ó¸® ¼Óµµ°¡ ´À¸®´Ù. ÀÌ·¯ÇÑ ´ÜÁ¡À» º¸¿ÏÇϱâ À§ÇØ ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­´Â ¿Ã ¿©¸§ Ãâ½ÃµÉ JDK 1.1¿¡¼­ "just-in-time" ÄÄÆÄÀÏ·¯¸¦ µµÀÔÇÏ¿© ¼Óµµ¸é¿¡¼­ C/C++À» ¾ÕÁö¸¦ °ÍÀ̶ó°í ¹ßÇ¥Çß´Ù.

3.2.8 ¾ÈÀüÇÏ´Ù(Secure)

ÀÚ¹Ù´Â ³×Æ®¿öÅ© ȯ°æ¿¡¼­ ¿î¿µµÇ´Â ¾ð¾îÀÓÀ¸·Î ´Ù¸¥ ¾ð¾îº¸´Ù ¾ÈÀü¼º¿¡ ´ëÇÑ Á߿伺ÀÌ ¿ä±¸µÈ´Ù. ÀÌ·¯ÇÑ ¹®Á¦´Â ¾ÖÇø´°ú °°Àº ÇÁ·Î±×·¥ÀÇ ´Ù¿î·Îµå½Ã¿¡ ÀûÀýÇÑ Á¦Á¦¸¦ °¡ÇÏÁö ¾ÊÀ¸¸é º¸¾È»ó ¸¹Àº ¹®Á¦¸¦ ¾ß±â½Ãų ¼ö Àֱ⠶§¹®ÀÌ´Ù. µû¶ó¼­ ÀÚ¹Ù ÄÚµå´Â ¹ÙÀÌ·¯½º, È­ÀÏÀÇ »èÁ¦³ª ¼öÁ¤, µ¥ÀÌŸ ÆÄ ±« ÀÛ¾÷À̳ª ÄÄÇ»ÅÍ ¿À·ù ¿¬»ê µîÀ» ¹æÁöÇÒ ¼ö Àִ ȯ°æ¿¡¼­ ½ÇÇàµÇµµ·Ï ¼³°èµÇ¾ú´Ù.

3.2.9 ¸ÖƼ¾²·¹µå¸¦ Áö¿øÇÑ´Ù(Multithreaded)

¸ÖƼ¾²·¹µå¶õ ÇÑ ÇÁ·Î±×·¥³»¿¡ ¿©·¯°³ÀÇ ¾²·¹µå°¡ Á¸ÀçÇÏ¿© µ¿½Ã¿¡ ¿©·¯°¡Áö ÀÏÀ» ¼öÇàÇÏ´Â °ÍÀÌ´Ù. ÀÚ¹Ù´Â ¾ð¾î ÀÚü¿¡¼­ ¸ÖƼ¾²·¹µå¸¦ Áö¿øÇÑ´Ù. Áï ÇϳªÀÇ ´ÜÀÏ ÀÚ¹Ù ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ¾²·¹µå ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÉ ¼ö ÀÖÀ¸¸ç, ÀÌ ¾²·¹µå´Â µ¶¸³ÀûÀ¸·Î ´Ù¸¥ ÀÏÀ» ¿¬¼ÓÀûÀ¸·Î ÇÒ ¼ö ÀÖ´Ù.
public synchronized void stop() {
        if (kicker != null) {
             kicker.stop() ;
             kicker = null;
               }
}

private syncronized void startSort() {
        if (kicker ==null || !kicker.isAlive()) {
             kicker = new Thread(this);
             kicker.start();
               }
}
ÀÌ ÇÁ·Î±×·¥Àº ÀÚ¹Ù ¸ÖƼ¾²·¹µå ÇÁ·Î±×·¥ÀÇ µ¿±âÈ­¿¡ ´ëÇÑ ¿¹Á¦·Î¼­ ÇÑ ÇÁ·Î±×·¥³»¿¡ µÎ °³ÀÇ ¸Þ¼Òµå stop()°ú startSort()¸¦ ¾²·¹µå·Î ±¸ÇöÇÑ °ÍÀÌ´Ù. stop()°ú startSort(), µÎ ¸Þ¼Òµå´Â kicker¶ó´Â °øÅëµÈ º¯¼ö¸¦ °øÀ¯Çϰí ÀÖ´Ù. ÀÌ µÎ ¸Þ¼Òµå´Â syncronized ¶ó°í ¼±¾ðµÇ¾î µ¿½Ã¿¡ ¼öÇàµÉ ¼ö ¾ø´Ù. µû¶ó¼­ °øÀ¯µÇ´Â º¯¼ö kickerÀÇ ¸ð´ÏÅ͸µÀ» ÅëÇØ ÀÏÁ¤ ¼ø°£¿¡ ÇÑ ¸Þ¼Òµå¸¸ÀÌ ¼öÇàµÇ°Ô µÇ¾î kicker º¯¼öÀÇ °ª¿¡ µû¸¥ ¿¬¼ÓÀûÀÎ ÀÏÀ» ¼öÇàÇÏ°Ô µÈ´Ù.

3.2.10 ´ÙÀ̳ª¹ÍÇÏ´Ù(Dynamic)

ÀÚ¹Ù´Â ·±Å¸ÀӽñîÁö ¸µÅ©°úÁ¤À» ¿¬±âÇÔÀ¸·Î¼­ ÀÀ¿ëµéÀÌ ´ÙÀ̳ª¹ÍÇÏ°Ô ÆÐÄ¡µÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀº ¼öÆÛŬ·¡½º°¡ ¼öÁ¤µÇ¾úÀ»¶§ ÀÌÀÇ ¼­ºêŬ·¡½º±îÁöµµ ´Ù½Ã ÄÄÆÄÀÏÇØÁÖ¾î¾ß ÇÏ´Â "superclass problem"À» ÇØ°áÇÑ´Ù.

3.3 ÀÚ¹Ù °³¹ß ÁÖº¯

3.3.1 ÀÚ¹Ù¿Í ÇÖÀÚ¹Ù, Netscape

ÀÚ¹Ù´Â ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­ °³¹ßÇÑ Â÷¼¼´ë °´Ã¼ÁöÇâ ¾ð¾î·Î, ÇöÀç JDK 1.0±îÁö Á¦°øµÇ°í ÀÖÀ¸¸ç, Ç÷§ÆûÀ¸·Î´Â Solaris2.x, Windows NT/95, MacOS 7.5 ¸¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÖÀÚ¹Ù´Â ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­ °³¹ßÇÑ ÀÚ¹Ù·Î ¸¸µç ºê¶ó¿ìÀú·Î¼­ ÇöÀç 1.0 ¾ËÆÄ 3 ¹öÁ¯±îÁö Á¦°øÇϸç, Ç÷§ÆûÀ¸·Î´Â Solaris2.x, Windows NT/95¸¸À» »ç¿ëÇÑ´Ù. Netscape´Â ¼±¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿Í ÀÚ¹Ù ¶óÀ̼¾½º ü°áÇÔÀ¸·Î¼­ 2.0 ÀÌÈÄ ¹öÁ¯Àº º£Å¸ ÀÌÈÄ(JDK 1.0) ¾ÖÇø´¸¸À» ºê¶ó¿ì¡ ÇÒ ¼ö ÀÖ´Ù. Solaris2.x, Windows NT/95, SunOS4.1.x, HP/UX, IRIX, Linux µî¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÀÚ¹Ù¿Í ÇÖÀÚ¹ÙÀÇ °ü°è´Â ÇÖÀÚ¹Ù°¡ ÀÚ¹Ù·Î ¸¸µç ºê¶ó¿ìÀú¶ó°í ÀÌÇØÇÏ¸é ½±°Ô ÀÔÁõµÇ´Â ¹Ý¸é, WWW ºê¶ó¿ìÀúÀÇ 75 %À» Â÷ÁöÇÏ´Â Netscape¿Í ÃÖÃÊÀÇ ÀÚ¹Ù ºê¶ó¿ìÀúÀÎ ÇÖÀÚ¹Ù¿Í´Â ±× Àǹ̺ÎÅÍ Á¶±Ý ´Ù¸£´Ù. ÇÖÀÚ¹ÙÀÇ ÁøÁ¤ÇÑ Àǹ̴ ¾ÖÇø´ ºê¶ó¿ì¡¿¡µµ ÀÖÁö¸¸, ½ÇÁúÀûÀ¸·Î´Â ÀÚ¹Ù ¾ÖÇø®ÄÉÀÌ¼Ç À̶ó´Â Áß¿äÇÑ Àǹ̸¦ °¡Áö°í ÀÖ´Ù. Áï, ÀÚ¹Ù ¾ÖÇø´(96³â 2¿ù ÇöÀç ¾ËÆÄ ¾ÖÇø´¸¸À» Áö¿ø)À» À¥ ºê¶ó¿ìÀú¿¡¼­ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù´Â °Í¿Ü¿¡µµ, ÀÚ¹ÙÀÇ Æ¯Â¡ÀÎ ÇÁ·ÎÅäÄÝÀÇ µ¿ÀûÀÎ °áÇÕ, »õ·Î¿î µ¥ÀÌŸ ŸÀÔÀÇ È®ÀåÀÌ °¡´ÉÇÑ ºê¶ó¿ìÀú·Î¼­ ÀÚ¹Ù·Î ÀÎÇÑ ±â¼úÇõ½ÅÀ» ¿¹°íÇÏ´Â ÀÚ¹Ù ¼ÒÆ®ÇÁ¿þ¾î¶ó´Â Àǹ̸¦ °®°íÀÖ´Ù.

3.3.2 ÀÚ¹Ù ¾ÖÇø´°ú ¾ÖÇø®ÄÉÀ̼Ç

ÀÚ¹Ù´Â ÇÁ·Î±×·¥¹Ö ¾ð¾îÀÓÀ¸·Î ÀÌ ¾ð¾î·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥Àº ´Ü¿¬È÷ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀÌ µÈ´Ù. ÀÌ·¸°Ô ±¸ÇöµÈ ¾ÖÇø®ÄÉÀ̼ÇÀº ÇϳªÀÇ main() ºÎºÐÀ» °¡Áö°í ÀÖÀ¸¸ç µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥ÀÌ´Ù. ¹Ý¸é, ÇöÀç À¥¿¡¼­ ÀÚ¹Ù¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ ¹æ¹ýÀº ÀÚ¹Ù ¾Ö Çø´À» ÀÛ¼ºÇÏ´Â °ÍÀÌ´Ù. ¾ÖÇø´À̶õ HTML ¹®¼­³»¿¡ Æ÷Ç﵃ ¼ö ÀÖ´Â ÀÚ¹Ù ÇÁ·Î±×·¥À» °¡¸®Å² ´Ù.

¾ÖÇø´Àº ´Ù¿î·ÎµåµÇ¾î »ç¿ëµÇ¾î Áø´Ù. µû¶ó¼­ Ŭ¶óÀ̾ðÆ®ÂÊÀÇ ¾ÈÀü¼º°ú º¸¾ÈÀÇ ¹®Á¦·Î ¾ÖÇø®ÄÉ À̼ǰú´Â ´Ù¸¥ ´ÙÀ½°ú °°Àº Á¦¾àÁ¡À» °¡Áö°í ÀÖ´Ù.

3.3.3 JDK 1.0

ÀÚ¹Ù JDK¶õ ÀÚ¹Ù °³¹ßÀÚ¸¦ À§ÇÑ ¾ð¾î ÀÔÀå¿¡¼­ÀÇ Åø µéÀ» °¡¸®Å²´Ù. Áï, ÀÚ¹Ù ¾ÖÇø´ °³¹ß, ÀÚ¹Ù ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß, ÀÚ¹Ù µð¹ö±ëÀ» À§ÇÑ ¿©·¯ °¡Áö ȯ°æÀ» Á¦°øÇÑ´Ù. ÀÚ¹ÙÀÇ °³¹ß ȯ°æÀº ¾ËÆÄ ¹öÁ¯¿¡¼­ JDK º£Å¸ ¹öÁ¯À¸·Î ÀüȯµÇ¾î ÇöÀç JDK 1.0 ¹öÀüÀÌ ¹ßÇ¥µÈ »óÅÂÀÌ´Ù. JDK 1.0 ¹ÙÀ̳ʸ®´Â Àº ´ÙÀ½ÀÇ Çѱ¹ °ø½Ä ÀÚ¹Ù ¹Ì·¯¸µ »çÀÌÆ®¿¡¼­ ¹«·á·Î Á¦°øµÈ´Ù.
        ftp://cair-archive.kaist.ac.kr/pub/WWW/Java/Javasoft/pub/*
JDK 1.0 ¹öÁ¯Àº Netscape¿Í °°Àº ÀÚ¹Ù-°¡´É ºê¶ó¿ìÀú¿¡ ÀÇÇØ Áö¿øµÇ¸ç, ÆÐŰÁö³»¿¡´Â ÇÖÀÚ¹Ù ºê¶ó¿ìÀú ´ë½Å ¾ÖÇø´ ºä¾î¸¸ Æ÷ÇԵǾî ÀÖ´Ù. ÇÖÀÚ¹Ù JDK 1.0 ¹öÁ¯µµ 96³â »ó¹Ý±âÁß¿¡ ¹ßÇ¥µÉ ¿¹Á¤ÀÌ´Ù. Solaris2.x¿ëÀ¸·Î Á¦°øµÇ´Â JDK 1.0Àº ´ÙÀ½°ú °°Àº ±¸¼ºÀ¸·Î µÇ¾îÀÖ´Ù. classes.zip ÆÄÀÏÀº ÄÄÆÄÀÏ·¯¿Í ÀÎÅÍÇÁ¸®ÅÍ¿¡ ÀÇÇØ »ç¿ëµÇ¾î Áö´Â Ŭ·¡½º ¶óÀ̺귯µéÀ̸ç Netscape¿¡¼­ Á¦°øÇÏ´Â ÀÚ¹Ù ¶óÀ̺귯¸®ÀÎ moz_2.0.zip°ú ¿ªÇÒÀÌ °°´Ù), src.zip ÆÄÀÏÀº ¼Ò½º ÆÄÀÏÀ» °¡¸®Å²´Ù. ÀÚ¹Ù ¾ÖÇø´ ºä¾î´Â ÇöÀç ÇÖÀÚ¹Ù ºê¶ó¿ìÀúÀÇ º£Å¸ ¹öÀüÀÌ Á¦°øµÇÁö ¾ÊÀ½À¸·Î HTML ºê¶ó¿ì¡ ±â´ÉÀº ¾ø°í ´Ü¼øÈ÷ ¾ÖÇø´ ºäÀ׸¸À» ÇÒ ¼ö ÀÖ´Ù. »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.
	% appletviewer [option] URL | file
ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ µð¹ö±ëÀ» À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ¾ÖÇø´ ºä¾îÀÇ ±¸µ¿½Ã¿¡ µð¹ö°Å ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
	% appletviewer -debug URL | file
ÀÚ¹Ù ÄÄÆÄÀÏ·¯´Â ÀÚ¹Ù ¾ÖÇø´°ú ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÒ ¶§ »ç¿ëµÇ¸ç,
	% javac Source_filename 
ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ´Â ÀÚ¹Ù ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ »ý¼ºµÈ ¹ÙÀÌÆ® Äڵ带 ¼öÇàÇϰíÀÚ ÇÒ ¶§ »ç¿ëµÈ´Ù.
 
	% java Byte_Code_filename 

3.3.4 APPLET ÅÂ±× »ç¿ë¹ý

JDK 1.0 APPLET ű×ÀÇ ¿ÏÀüÇÑ ±¸¹®Àº ´ÙÀ½°ú °°´Ù.
    <APPLET
        [CODEBASE = codebaseURL]
        CODE = appletFile
        [ALT = alternateText]
        [NAME = appletInstanceName]
        WIDTH = pixels HEIGHT = pixels
        [ALIGN = alignment]
        [VSPACE = pixels] [HSPACE = pixels]
    >
    [< PARAM NAME = appletAttribute1 VALUE = value >]
    [< PARAM NAME = appletAttribute2 VALUE = value >]
    . . .
    [alternateHTML]
    </APPLET>
°¢ ÅÂ±× »ç¿ë¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¸é ´ÙÀ½°ú °°´Ù.

3.3.5 ÀÚ¹Ù ÅëÇÕ °³¹ß ȯ°æ(IDE:Integrated Development Environment)

ÇöÀç ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ °³¹ß ȯ°æÀº ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîÀÇ "Workshop for Java"¸¦ ºñ·ÔÇÏ¿© ÀÚ¹Ù ¶óÀ̼¾½º¸¦ ¸ÎÀº ¿©·¯ ¾÷ü¿¡¼­ ÀÚ¹Ù ÇÁ·Î±×·¥ °³¹ßÀ» À§ÇÑ ÅëÇÕ ÇѰæÀ» °³¹ßÁßÀÌ´Ù. TEAÀÇ °æ¿ì, DimensionX¿¡¼­ °³¹ßÇÑ ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ ÀÚ¹Ù °³¹ß ȯ°æÀ¸·Î Àڹ٠Ŭ·¡½º·Î ±¸ÇöµÇ¾î ÀÖÀ¸¸ç µû¶ó¼­ Solaris2.x, Windows95/NTµî JDK 1.0ÀÌ Áö¿øÇÏ´Â ¸ðµç Ç÷§Æû¿¡ µ¶¸³ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ãʱâ È­¸é ¹× À̹ÌÁö ±¸¼ºÀ» À§ÇÑ pop-up À©µµ¿ì´Â ¾Æ·¡ È­¸é°ú °°´Ù.



3.3.6 ÀÚ¹Ù ÀÀ¿ë±â¼ú : ÀÚ¹Ù½ºÅ©¸³Æ®

Netscape»ç¿¡¼­´Â ÀÚ½ÅÀÇ Netscape Navigator¿¡ ÇÁ·Î±×·¥ÀûÀΠƯ¡À» ºÎ°úÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·Î LiveScript¶ó´Â À̸§ÀÇ ½ºÅ©¸³Æ®¸¦ Netscape 2.0 º£Å¸ ¹öÁ¯ºÎÅÍ ¼±º¸À̱⠽ÃÀÛÇÏ¿©, ÀÚ¹Ù ¾ð¾î¿Í´Â º°µµ·Î, ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîµî°ú ÀÚ¹Ù½ºÅ©¸³Æ® ¶óÀ̼¾½º¸¦ ÃİáÇÔÀ¸·Î¼­ À̸§À» ÀÚ¹Ù½ºÅ©¸³Æ®¶ó°í ¼öÁ¤ÇÏ¿´´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®´Â ÀÚ¹ÙÀÇ ±¸¹®°ú built-in functionÀ» µû¿À±â ÇßÀ¸³ª, ÀÚ¹Ù¿Í´Â µ¶¸³ÀûÀ¸·Î ±¸ÇöµÈ´Ù. Áï, Windows3.1À» Æ÷ÇÔÇÑ ¸ðµç Netscape 2.0 ¹öÁ¯¿¡¼­ ÀÚ¹Ù½ºÅ©¸³Æ®°¡ Áö¿øµÈ´Ù.

ÀÚ¹Ù¿Í ÀÚ¹Ù ½ºÅ©¸³Æ®ÀÇ Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.

ÇöÀç ÀÚ¹Ù½ºÅ©¸³Æ®´Â Netscape Á¦Ç°¿¡¼­ Client-Side ¿Í Server-Side·Î ±¸ºÐÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù.
3.3.6.1 Client-Side ÀÚ¹Ù½ºÅ©¸³Æ®
Client-Side ÀÚ¹Ù½ºÅ©¸³Æ®´Â Netscape 2.0¿¡ ÀÇÇØ »ç¿ëµÇ¸ç, HTML³»¿¡ »ðÀÔµÇ¾î ±× ÆäÀÌÁö°¡ ·ÎµåµÈ ÈÄ Netscape Navigator¿¡ ÀÇÇØ ÀÎÅÍÇÁ¸®Æ®µÈ´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ functuin, variableÀº <script> .. </script> ű׻翡¿¡ ³õÀÌ°Ô µÈ´Ù.

ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ »ç¿ë°¡´ÉÇÑ °³Ã¼µéÀº ´ÙÀ½°ú °°´Ù.

´ÙÀ½ÀÇ ¿¹Á¦´Â CGI ÇÁ·Î±×·¥°ú ÇÔ²² ¿¬µ¿ÇÏ¿© ÀÔ·Â Çʵ尪ÀÇ ¿À·ù¸¦ °ËÁõÇÏ´Â ÀÚ¹Ù½ºÅ©¸³Æ® ¿¹ÀÇ ÀϺκÐÀÌ´Ù.
<head>
...
<script language="javascript">
...
function isanum(s) { ... }
...
function qty_check(str) {
  if (!isanum(str) {
    alert("Please enter number for quantity");
    return false;
  }
  return true;
}
</script>
</head>
<body>
...
<form name="widget_order"
      action="foo.cgi" method="post">
How many widgets today?
<input type="text" name="quantity"
       onChange="qty_check(this.value)">
...
</form>
3.3.6.2 Server-Side ÀÚ¹Ù½ºÅ©¸³Æ®
Server-Side ÀÚ¹Ù½ºÅ©¸³Æ®´Â Netscape LiveWire ȯ°æ¿¡¼­ »ç¿ëµÇ¸ç, HTML³»¿¡ »ðÀÔµÇ¾î ±× ÆäÀÌÁö°¡ ·ÎµåµÉ¶§ ¼­¹ö¿Í LiveWire Åø¿¡ ÀÇÇØ ÄÄÆÄÀÏµÈ ÈÄ ½ÇÇàµÈ´Ù. functuin, variableÀº <server> .. </server > ű׻çÀÌ¿¡ ³õÀÌ°Ô µÈ´Ù.

ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ ¼­¿ëÇÏ´Â °´Ã¼µéÀº ´ÙÀ½À» Æ÷ÇÒ ¼ö ÀÖ´Ù.

4. ÀÚ¹Ù ¹®¹ý

4.1 ÁÖ¼®(comment), ½Äº°ÀÚ(identifier), Ű¿öµå(keyword)

ÁÖ¼®Àº ´ÙÀ½°ú °°Àº 3°¡Áö À¯ÇüÀÌ »ç¿ëµÈ´Ù.
 
	// comment on one line
	/* comment on one or more lines */
	/** decumenting comment
½Äº°ÀÚ´Â °´Ã¼¿Í º¯¼öÀÇ À̸§µéÀ» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëµÇ¸ç, ÀÏ¹Ý ¹®ÀÚ³ª "_", ¶Ç´Â "$"·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.

ÀÚ¹Ù¿¡¼­ »ç¿ëµÇ´Â Ű¿öµå´Â ¾Æ·¡¿Í °°À¸¸ç, ÀÌÁß¿¡¼­ const, future, generic, goto, operator, rest, var ´Â Á¤ÀÇ´Â µÇ¾úÀ¸³ª JDK 1.0¿¡¼­´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.

	abstrac     do         implements      package     throw
	boolean     double     import          private     throws
	break       else       inner           protected   transient
	byte        extends    instanceof      public      try
	case        final      int             rest        var
	cast        finally    interface       return      void
	catch       float      long            short       volatile
	char        for        native          tatic       while
	class       future     new             super
	const       generic    null            switch
	continue    goto       operator        synchronized
	default     if         outer           this

4.2 ´Ü¼ø ÀÚ·áÇü, ½ºÆ®¸µ, ¹è¿­

ÀÚ¹Ù¿¡¼­ »ç¿ëµÇ´Â ÀÚ·áÇüÀº ´Ü¼ø ÀÚ·áÇü°ú º¹ÇÕ ÀÚ·áÇüÀ¸·Î ³ª´­ ¼ö ÀÖÀ¸¸ç, ´Ü¼ø ÀÚ·áÇüÀº Á¤¼öÇü, ½Ç¼öÇü, ¹®ÀÚÇü, ³í¸®ÇüÀ¸·Î ±¸ºÐµÈ´Ù. º¹ÇÕ ÀÚ·áÇüÀº ¹è¿­, Ŭ·¡½º, ÀÎÅÍÆäÀ̽º µîÀ¸·Î ³ª´­ ¼ö ÀÖ´Ù. ½ºÆ®¸µµµ ¿ª½Ã °´Ã¼·Î¼­ 16ºñÆ® À¯´ÏÄÚµå´Ù.
	String hello = "Hello";
	String world = "World";
	System.out.println(hello + " " + world);
	int len = hello.length()
	String str = hello.substring(1, len);
	System.out.println("j" + str);
½ºÆ®¸µÀº Àڹ٠Ŭ·¡½º °èÃþ ±¸Á¶»ó, java.lang.String Ŭ·¡½º¿¡¼­ Á¤ÀÇµÈ Å¸ÀÔÀ¸·Î ÀÏ¹Ý °´Ã¼ÁöÇâ ¾ð¾î¿Í µ¿ÀÏÇÏ°Ô ±× Ŭ·¡½º¿¡¼­ Á¤ÀÇµÈ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î À§ÀÇ ¿¹¿¡¼­ »ç¿ëÇÑ length()´Â ½ºÆ®¸µÀÇ ±æÀ̸¦ ¾Ë¾Æ³»´Â ¸Þ¼ÒµåÀ̸ç, substring(1, len)Àº ÆÄ¶ó¹ÌÅÍ °ªÀ¸·Î ÁÖ¾îÁø À妽º¿¡ ¸Â´Â ½ºÆ®¸µÀÇ ÀϺκи¸À» °¡Á®¿À´Âµ¥ »ç¿ëµÇ´Â ¸Þ¼Òµå·Î Á¤ÀǵǾî ÀÖ´Ù. À§ÀÇ ¿¹¿¡¼­ len º¯¼ö¿¡´Â 5ÀÇ °ªÀÌ ÇÒ´çµÈ´Ù.

¹è¿­Àº ´Ù¸¥ º¹ÇÕ ÀÚ·áÇü°ú ¸¶Âù°¡Áö·Î new ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© »ý¼ºµÇ¸ç, ù¹øÂ° À妽º´Â 0¿¡¼­ ½ÃÀÛÇÑ´Ù

        int rgb[] = new int[3];
        rgb[0] = 255;
        rgb[1] = 100;
        ....
¹è¿­µµ ¸¶Âù°¡Áö·Î length¶ó´Â º¯¼ö¸¦ ÀÌ¿ëÇϸç, ¹è¿­ÀÇ Å©±â¸¦ ¾Ë¾Æ³½´Ù. »ç¿ëµÈ´Ù.
       int avg = rgb[1] / rgb.length;
´ÙÁß ¹è¿­À» »ç¿ëÇϱâ À§Çؼ­´Â ¹è¿­ÀÇ ¹è¿­À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
        int a[][] = new int[10][3]
À̶§ a.length¿¡´Â 10ÀÌ a[0].length¿¡´Â 3ÀÌ ÇÒ´çµÈ´Ù.

4.3 Á¦¾î¹®(control flow)

ÀÚ¹Ù¿¡¼­ »ç¿ëµÇ´Â Á¦¾î¹®À¸·Î´Â if, for, while, switch ¹® µîÀÌ »ç¿ëµÇ¸ç ANCI C ¿Í µ¿ÀÏÇÏ´Ù.

4.4 ¿¬»êÀÚ

ÀÚ¹Ù¿¡¼­ »ç¿ëµÇ´Â ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§°¡ ³ôÀº ¼ø¼­µ¥·Î ³ª¿­ÇÏ¸é ´ÙÀ½°ú °°´Ù.
.     []     ()
++   --
!     ~    instanceof
*     /     %
+     -
<<    >>     >>>
<     >   <=    >=   ==     !=
&    ^    |
&&   ||
?:
=   op= ,

4.5 Ŭ·¡½º

ÀÚ¹Ù¿¡¼­ »õ·Î¿î Ŭ·¡½º¸¦ »ý¼ºÇϱâ À§Çؼ­´Â ±âÁ¸ÀÇ Å¬·¡½º·ÎºÎÅÍ ¼­ºêŬ·¡½ºÀÇ °ü°è°¡ À¯ÁöµÇµµ·Ï Á¤ÀÇÇÑ´Ù. Ŭ·¡½º Á¤ÀǸ¦ À§ÇØ »ç¿ëµÇ´Â ±âº» ¹®¹ýÀº ´ÙÀ½°ú °°´Ù.
        [Class Modifiers] class Classname              
                [extends Superclassname]              
                [implements Interface, {, Interface}]   
           { 
                   ClassBody                          
          }         
Class Modifier´Â ±× Ŭ·¡½º¸¦ Á¢±ÙÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ̳ª Ư¡ µîÀ» ºÎ¿©ÇÏ´Â °ÍÀ¸·Î ´ÙÀ½°ú °°Àº Modifier°¡ »ç¿ëµÈ´Ù. ÀÚ½ÅÀÇ ¼öÆÛŬ·¡½º¸¦ ÁöÁ¤Çϱâ À§Çؼ­´Â extends¸¦ »ç¿ëÇϸç, ÀÎÅÍÆäÀ̽º¿ÍÀÇ °ü°è¸¦ ³ªÅ¸³»±â À§Çؼ­´Â implements¸¦ »ç¿ëÇÑ´Ù. ClassBody ºÎºÐ¿¡¼­´Â ¸Þ¼Òµå Á¤ÀÇ¿Í °°Àº Ŭ·¡½º ±¸ÇöºÎ°¡ Á¤ÀǵȴÙ.

¸Þ¼Òµå¶õ Ŭ·¡½º¿¡¼­ ¼öÇà°¡´ÉÇÑ ÀÏ(¿¬»ê)À» ³ªÅ¸³»¸ç, ¸Þ¼Òµå Á¤ÀÇ ºÎºÐÀº ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ ´Ù.

        [Modifier] returnType methodName (parameterList) {
           [method body]
        }
»ç¿ëµÇ´Â ¸Þ¼Òµå modifier´Â ´ÙÀ½°ú °°´Ù. ÀÌÁß¿¡¼­ native method ¸¦ »ç¿ëÇÏ¿© C¿Í ÀÚ¹Ù ÇÁ·Î±×·¥À» ÅëÇÕ½ÃŰ´Â ¹æ¹ýÀ» »ìÆìº¸ÀÚ. ¿¹Á¦´Â HelloWorld ¸¦ »ç¿ëÇß´Ù.

native ¸Þ¼Òµå·Î ¼±¾ðµÈ ÀÚ¹Ù ÄÚµå(Helloworld.java)¸¦ ÀÛ¼ºÇϰí, native ¸Þ¼Òµå¸¦ ºÎ¸£´Â ¸ÞÀÎ ÇÁ·Î±×·¥(Main.java)À» ÀÛ¼ºÇÑ´Ù.

        
       // Helloworld.java
       class HelloWorld {
              public native void displayHelloWorld();

              static {
                  System.loadLibrary("hello");
              }
          }

        // Main.java
        class Main {
              public static void main(String args[]) {
                new HelloWorld().displayHelloWorld();
               }
         }

ÀÚ¹Ù ¼Ò½º Äڵ带 ÄÄÆÄÀÏÇÑ´Ù.
          % javac HelloWorld.java
          % javac Main.java
ÀÚ¹Ù À¯Æ¿¸®Æ¼ÀÎ javah¸¦ ÀÌ¿ëÇÏ¿© Çì´õ ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
          % javah HelloWorld
javah¸¦ ÀÌ¿ëÇÏ¿© ½ºÅÓ ÆÄÀÏ(HelloWorld.c)À» »ý¼ºÇÑ´Ù.
   	      % javah -stubs HelloWorld
C·Î ±¸ÇöµÈ ÀÚ¹Ù¿Í ÅëÇÕÇÒ ÆÄÀÏÀÎ HelloWorldImp.c¸¦ ÀÛ¼ºÇÑ´Ù.
          // HelloWorldImp.c. 

          #include 
          #include "HelloWorld.h"
          #include 

          void HelloWorld_displayHelloWorld(struct HelloWorld *this) {
              printf("Hello World!\n");
              return;
          }
Loadable Library¿Í µ¿ÀûÀ¸·Î ÄÄÆÄÀÏ ÇÑ´Ù. UNIXÀÎ °æ¿ì¿¡´Â
          % cc -G HelloWorld.c HelloWorldImp.c -o libhello.so
ÇÁ·Î±×·¥À» µ¿ÀÛ½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú°¡ Ãâ·ÂµÈ´Ù.
         % java Main
          Hello World!

4.6 ÀÎÅÍÆäÀ̽º

ÀÎÅÍÆäÀ̽º´Â ½ÇÁ¦ Äڵ带 ¼öÇàÇÏÁö ¾Ê´Â ¸Þ¼Òµåµé¸¸ÀÇ ÁýÇÕÀ¸·Î¼­ Ŭ·¡½º¿Í À¯»çÇÑ Á¤ÀǺθ¦ °¡Áö°í ÀÖ´Ù. ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â °¢ Ŭ·¡½º¿¡¼­ Åõ¸íÇÏ°Ô ÀÎÅÍÆäÀ̽º ºÎ¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ ÀÖ´Ù.
        public interface String {
                void freezeDry(stream s);
                void reconstitute(Stream s);
        }

        public class Image implements Storing, Painting {
                  ...
                void freezeDry(stream s) {
                  // JPEG compress image before storing
                 ...
                }
                void reconstitute(Stream s) {
                // JPEG compress image before reading
                 ...
                }
        }

4.7 ÆÐŰÁö

ÆÐŰÁö´Â Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽ºÀÇ ±×·ìÀ» °¡¸®Å°¸ç, ³×ÀÓ ½ºÆäÀ̽º¸¦ °ü¸®Çϰí, Ãæµ¹À» ¹æÁöÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ÀÚ¹Ù JDK ¿¡¼­ Áö¿øÇϴ Ŭ·¡½º ¶óÀ̺귯¸®µµ ¸ðµÎ ÆÐŰÁö ´ÜÀ§·Î ±¸ÇöÇÑ °ÍÀ̸ç, °¢ ÆÐŰÁöº°·Î ÇÊ¿äÇÑ °Í¸¸À» importÇÏ¿© ÀÚ¹Ù ÇÁ·Î±×·¥À» Çϵµ·Ï µÇ¾îÀÖ´Ù.

ÆÐŰÁö¸¦ importÇØ¼­ »ç¿ëÇÏ´Â ¹æ½ÄÀº ´ÙÀ½°ú °°ÀÌ ¼¼°¡Áö À¯ÇüÀÌ Á¸ÀçÇÑ´Ù.

4.7 ÀÚ¹Ù ±¸¹®°ú C/C++ÀÇ Â÷ÀÌÁ¡

´ëºÎºÐÀÇ ÇÁ·Î±×·¡¸ÓµéÀº C¿Í C++¿¡ Àͼ÷ÇÏ´Ù. ÀÚ¹ÙÀÇ ÀåÁ¡À̶ó¸é À§¿¡¼­ ¼³¸íÇßµíÀÌ ¾ð¾îÀÇ ¹® ¹ý ÀÚü°¡ C/C++°ú À¯»çÇÏ¿© »õ·Î¿î ¾ð¾îÀÓ¿¡µµ »ç¿ëÀÚµéÀÌ ´ú ºÎ´ãÀ» °¡Áö°í ¹è¿ï ¼ö ÀÖ´Ù´Â Á¡¿¡ ÀÖ´Ù. ¸î°¡Áö C/C++°ú´Â ÀÚ¹ÙÀÇ ±¸¹®À» ¾Ë¾Æº¸ÀÚ

4.7.1 ÀÚ¹Ù´Â Æ÷ÀÎÅ͸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù.

ÀÚ¹Ù´Â Æ÷ÀÎÅÍ Å¸ÀÔÀ» »ç¿ëÇÏÁö ¾Ê´Â ´ë½Å ·¹ÆÛ·±½º¸¦ »ç¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀº Æ÷ÀÎÅ͸¦ »ç¿ëÇÔ À¸·Î¼­ ¾ß±âµÇ´Â º¹ÀâÇÔÀ» ÇØ¼ÒÇϱâ À§ÇÑ °ÍÀÌ´Ù.

4.7.2 struct¿Í unionÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.

ÀÚ¹Ù´Â struct¿Í unionÀ» Á¦°øÇÏÁö ¾Ê´Â ´ë½Å, º¹ÇÕ ±¸Á¶¸¦ °®´Â ŸÀÔÀÇ »ý¼ºÀ» À§ÇØ Å¬·¡½º³ª ÀÎ ÀÎÅÍÆäÀ̽º¶õ °³³äÀ» »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î C¿¡¼­ employee ±¸Á¶¸¦ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇß´Ù¸é,
        struct employee
                char name[NAMESIZE];
                char address[ADRSIZE];
                int tag_number;
                double salary;
                double (*compute_raise) (double, double);
        };
´ÙÀ½°ú °°Àº compute_raise() ÇÔ¼ö¸¦ Á¤ÀÇÇØ¾ß Çϰí,
        compute_raise(double salary, double percent)
        {
        return salary *percent;
        }
À̸¦ »ç¿ëÀ§ÇØ CÀÇ ¸ÞÀÎ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¿© »ç¿ëÇÑ´Ù.
        main()
        {
           struct employee Shin = {
             "Shin", "EXPO APT", 2419 
              2400.00, compute_raise
            };
           printf("raise = %f\n", Shin.compute_raise(George.salary, 0.10));
        }
ÀÚ¹Ù¸¦ »ç¿ëÇϸé À§¿Í °°Àº ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ °£´ÜÈ÷ ÇÁ·Î±×·¥µÈ´Ù. ¿ì¼± struct ¹®Àº Ŭ·¡½º³»¿¡ Á¤Àǰ¡ °¡´ÉÇϸç, Ŭ·¡½º³»¿¡ ³»¿¡ compute_raise´Â ¸Þ¼Òµå·Î¼­ Á¤ÀÇÇÑ´Ù.
        class Employee {
               String name;
               String address;
               int tag_number;
               private double salary;
               double compute_raise(double percent) {
                   return percent * salary;
               }
               Employee(String a_name, String a_address, 
                       int a_tag_number, double a_salary){
                   name = a_name;
                   address = a_address;
                   tag_number = a_tag_number;
                   salary = a_salary;
                };
         }
À̶§ ÀÚ¹ÙÀÇ ¸ÅÀΠŬ·¡½º´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ¿© »ç¿ë°¡´ÉÇÏ´Ù.
        class MainClass {
           public static void main(String args[]) {
            Employee shin = new Employee("Shin", "EXPO API", 2419, 2400.00);
               System.out.println("raise = " + shin.compute_raise(0.10));
               }
        }

4.7.2 Ä¿¸Çµå ¶óÀÎ ¾Æ±Ô¸ÕÆ®ÀÇ Â÷ÀÌÁ¡

C¿Í C++¿¡¼­´Â ´ÙÀ½ÀÇ µÎ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏÁö¸¸, ÀÚ¹Ù´Â ´ÙÀ½°ú °°ÀÌ ÇϳªÀÇ ÆÄ¶ó¹ÌÅ͸¸À» »ç¿ëÇØµµ °¡´ÉÇÏ´Ù. ¾ÆÅ¥¸ÕÆ®ÀÇ À妽º¸¦ ÁöÁ¤Çϱâ À§Çؼ­´Â ¹è¿­¿¡¼­ Á¦°øµÇ´Â length º¯¼ö¸¦ »ç¿ëÇÑ´Ù.

4.7.3 ±×¿ÜÀÇ ´Ù¸¥Á¡

±× ¿Ü·Î ÀÚ¹Ù´Â #define, typedef µîÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸ç, C++¿¡¼­ Á¦°øµÇ´Â ´ÙÁß »ó¼ÓÀº ±âº»ÀûÀ¸ ·Î Á¦°øµÇÁö ¾Ê´Â´Ù(À̰ÍÀº ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© °¡´ÉÇÏ´Ù). goto ¹®µµ Ű¿öµå·Î ÁöÁ¤µÇ¾î´Â ÀÖ À¸³ª ÇöÀç ±¸ÇöµÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î »ç¿ëÇÒ ¼ö ¾ø°í, ¿¬»êÀÚ ¿À¹ö ·Îµù°ú ÀÚµ¿ ÄÚ¼Ç µîµµ Áö¿øÇÏ Áö ¾Ê´Â´Ù.

5. Ŭ·¡½º ¶óÀ̺귯¸®

ÀÚ¹Ù API ÆÐŰÁö´Â JDK 1.0¿¡¼­ java.applet, java.awt, java.awt.image, java.awt.peer, java.lang, java.util, java.net ÀÌ ÀÖÀ¸¸ç, ±×¿Ü¿¡ ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­ ÀÚüÀûÀ¸·Î Á¦°øÇÏ´Â ÆÐŰÁöµé·Î ±¸ºÐµÈ´Ù. ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî¿¡¼­ Á¦°øÇÏ´Â ÆÐŰÁöÀÇ °æ¿ì ÀÚ¹Ù API Ç¥ÁØÀ¸·Î Á¤ÇØÁöÁö´Â ¾Ê¾ÒÀ¸³ª ¼± ÀÚüÀûÀ¸·Î À¯¿ëÇÏ´Ù°í »ý°¢µÇ´Â Ŭ·¡½º¸¸À» µû·Î Á¦°øÇÏ´Â °ÍÀ¸·Î, ƯÈ÷ ¾ËÆÄ ¹öÀüÀÇ °æ¿ì¿¡ java.net¿¡¼­ Á¦°øµÇ´ø À¯¿ëÇÑ Å¬·¡½ºµéÀÌ º£Å¸ ÀÌÈÄ·Î º¯È¯µÇ¸é¼­ Ç¥ÁØ API¿¡¼­ »èÁ¦µÇ°í °í, sun.net ÆÐŰÁö·Î ¿Å°Ü¿Ô´Ù. ¶Ç ÇѰ¡Áö ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº Ŭ·¡½º °èÃþ ±¸Á¶¿Í Ŭ·¡½º ÆÐŰÁö°¡ ¿Ïº®È÷ ÀÏÄ¡ÇÏÁö´Â ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. ±× ÀÌÀ¯´Â º£Å¸ ÀÌÈÄ ¹öÀüºÎÅÍ Å¬·¡½º °èÃþ ±¸Á¶¿¡ µû¸¥ ¸Þ¼Òµå Àç»ç¿ëÀ» ÃÖ´ëÈ­Çϱâ À§ÇØ Æ¯È÷ ¿¹¿Ü ºÎºÐ¿¡ ´ëÇÑ ³»¿ëµéÀÌ ¸¹ÀÌ ¼öÁ¤µÇ¾ú±â ±â ¶§¹®ÀÌ´Ù. ±×¸²¿¡¼­ *·Î Ç¥½ÃµÈ ºÎºÐÀº Ŭ·¡½º °èÃþ ±¸Á¶»ó ³õ¿©ÀÖÁö¸¸ ±× ÆÐŰÁö¿¡´Â ¼ÓÇÏÁö ¾Ê´Â Ŭ·¡½ºµéÀ» °¡¸®Å²´Ù.

ÆÐŰÁö³»¿¡¼­ »ç¿ëµÇ´Â Ŭ·¡½º °èÃþµµ´Â JDK 1.0À» ±âÁØÀ¸·Î ÀÛ¼ºÇÑ °ÍÀ̸ç,

        http://pec.etri.re.kr/java/JDK/class.ppt
°¢ ÆÐŰÁöº° »ç¿ëµÇ´Â ¸Þ¼Òµå´Â ¾Æ·¡¿¡ Á¤ÀǵǾî ÀÖ´Ù.
	    http://java.sun.com/JDK-1.0/api/packages.html

5.1 java.applet ÆÐŰÁö

java.applet ÆÐŰÁö´Â ÀÚ¹Ù ¾ÖÇø´ ÀÛ¼ºÀ» À§ÇØ ²À ÇÊ¿äÇÑ »ý¼º »çÀÌŬ¿¡ °üÇÑ Å¬·¡½º·Î, ÇÁ·Î±×·¥ À¸·Î ÀÛ¼ºÇÑ ¾ÖÇø´Àº ¸ðµÎ ¼öÆÛŬ·¡½º·Î AppletÀ» ¼±¾ðÇÑ´Ù. ¾ÖÇø´À» ÇÁ·Î±×·¥Çϴµ¥¿¡´Â ÀÌ Å¬·¡½º¿¡¼­ Á¤ÀÇµÈ ¸Þ¼ÒµåÀÎ init(), start(), play(), stop(), destroy() µîÀ» ÀçÁ¤ÀÇÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ÀÌ ÀϹÝÀûÀÌ´Ù.


5.2 java.awt ÆÐŰÁö

AWT´Â Abstract Window ToolkitÀÇ ¾àÀÚ·Î ÀÚ¹Ù´Â Windows, Motif ȯ°æ¿¡ ¹«°üÇÑ À©µµ¿ì »ý¼º ÅøÀ» Áö¿øÇÑ´Ù. java.awt ÆÐŰÁö´Â ¸Þ´º¹Ù, ½ºÅ©·Ñ ¹Ù, ¹öư, ÇÁ·¹ÀÓ, üũ ¹Ú½º, ´ÙÀ̾ó·Î±× ¹Ú½º, ÆùÆ® µî¿¡ °ü·ÃÇÑ »ç¿ëÀÚ ±×·¡ÇÈ È¯°æ ±¸¼ºÀ» À§ÇÑ Å¬·¡½ºµé·Î ±¸¼ºµÇ¾î ÀÖ´Ù.


5.3 java.awt.image ÆÐŰÁö

java.awt.image ÆÐŰÁö´Â È­¸é»óÀÇ À̹ÌÁö ±¸¼º°ú °ü·ÃµÈ Ŭ·¡½ºµé·Î ±¸¼ºµÇ¾î ÀÖ´Ù.


5.4 java.awt.peer ÆÐŰÁö

java.awt.peer ÆÐŰÁö¿¡´Â Ŭ·¡½º´Â Á¤ÀǵǾî ÀÖÁö ¾Ê°í, AWT¿Í °ü·ÃµÈ ´ÙÀ½°ú °°Àº ÀÎÅÍÆäÀ̽º¸¸ Á¸ÀçÇÑ´Ù.


5.5 java.io ÆÐŰÁö

java.io ÆÐŰÁö¿¡´Â ½ºÆ®¸² ÀÔÃâ·Â, ÆÄÀÏ ÀÔÃâ·Â µî¿¡ °ü·ÃµÈ Ŭ·¡½ºµéÀÌ ¸ð¿©ÀÖÀ¸¸ç, ƯÈ÷ ÀÔÃâ·Â¿¡ °ü·ÃµÈ ¿¹¿Ü 󸮸¦ À§ÇÑ ¿¹¿Ü Ŭ·¡½ºµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù.


5.6 java.lang ÆÐŰÁö

java.lang ÆÐŰÁö¿¡´Â ÀÚ¹Ù ±¸¹®°ú °ü°èµÈ Ŭ·¡½ºµéÀÌ ¸ð¿©ÀÖ´Ù. ÀÚ¹Ù ¾ð¾î¿¡ ´ëÇÑ ¿©·¯°¡Áö µ¥ÀÌŸ ŸÀÔ µî, ±¸¹®, ¹®¹ý¿¡ °üÇÑ Å¬·¡½ºÀÌ´Ù. ¿À·ù¿¡ ´ëÇÑ Å¬·¡½º°¡ ¸¹°í, ÀÚ¹Ù ¹®¹ýÀ» ó¸®ÇÏ´Â ºÎºÐÀ̹ǷΠ¿¹¿Ü¿¡ ´ëÇÑ Ã³¸® Ŭ·¡½º°¡ ¸¹ÀÌ Á¤ÀǵǾî ÀÖ´Ù. ƯÈ÷ Runable ÀÎÅÍÆäÀ̽º´Â °øÅëµÈ ÇÁ·ÎÅäÄÝÀ» À§ÇØ ¸¹ÀÌ »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽º ºÎºÐÀÌ´Ù.


5.7 java.net ÆÐŰÁö

³×Æ®¿÷¿¡ °ü·ÃµÈ Ŭ·¡½ºµé·Î ¼ÒÄÏ ¿¬°á°ú URL 󸮸¦ À§ÇÑ Å¬·¡½ºµé·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº ÀÌÀüÀÇ ¾ËÆÄ ¹öÀü¿¡¼­ Á¦°øµÇ¾ú´ø ³×Æ®¿÷À» À§ÇÑ NetworkClient/NetworkServer Ŭ·¡½º µéÀÌ sun.net ÆÐŰÁö·Î ¿Å°ÜÁ³´Ù´Â Á¡ÀÌ´Ù. À̿ʹ °ü°è¾øÀÌ ÀÌ Å¬·¡½ºµéÀ» »ç¿ëÇÏ°í ½ÍÀ¸¸é java.net.*°ú sun.net.*À» ÇÔ²² importÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù.


5.8 java.util ÆÐŰÁö

ÀÚ¹Ù¿¡¼­ »ç¿ëµÇ´Â À¯Æ¿¸®Æ¼µéÀÇ ÁýÇÕÀ¸·Î ½Ã°£ °è»ê, ÇØ½¬ Å×À̺í, ·£´ý ÇÔ¼ö µî ¿©·¯ °¡Áö ±â´ÉµéÀÌ µéÀÌ Á¦°øµÈ´Ù.



6. ÀÚ¹Ù ÇÁ·Î±×·¥

6.1 ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼Ç

6.1.1 ¾ÖÇø®ÄÉÀÌ¼Ç ÀÛ¼º¹ý

ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀº ÀÚ¹Ù·Î ±¸ÇöµÈ µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥À» °¡¸®Å²´Ù. ÀÚ¹Ù ¾ÖÇø´ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» HelloWorldApp.java¸¦ ÀÌ¿ëÇÏ¿© ´Ü°èº°·Î ¾Ë¾Æº¸ÀÚ. ¸ÕÀú ÀÚ¹Ù ¾ÖÇÁ¸®ÄÉÀ̼ÇÀ» À§ÇÑ ¼Ò½º ÇÁ·Î±×·¥ÀÎ HelloWorldApp.javaÀ» ÀÛ¼ºÇÑ´Ù.
        class HelloWorldApp {
            public static void main (String args[]) {
               System.out.println("Hello World!");
            }
        }
HelloWorldApp.javaÀ» ÄÄÆÄÀÏÇϸé HelloWorldApp.class¶ó´Â ¹ÙÀÌÆ® Äڵ尡 »ý¼ºµÈ´Ù.
        % javac HelloWorldApp.java  
CLASSPATH º¯¼ö¸¦ ¸ÂÃçÁØ´Ù.
        setenv CLASSPATH home/classes
ÀÚ¹Ù ÀÎÅÍÇÁ¸®Å͸¦ ÀÌ¿ëÇÏ¿© ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» µ¿ÀÛ½ÃŲ´Ù.
        % java HelloWorldApp
½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
         Hello World!

6.2 ÀÚ¹Ù ¾ÖÇø´

6.2.1 ¾ÖÇø´ ÀÛ¼º¹ý

ÀÚ¹Ù ¾ÖÇø´À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» Hello World ¾ÖÇø´À» ÀÌ¿ëÇÏ¿© ´Ü°èº°·Î ¾Ë¾Æº¸ÀÚ. ¸ÕÀú, ÀÚ¹Ù ¾ÖÇø´À» À§ÇÑ ¼Ò½º ÇÁ·Î±×·¥ÀÎ HelloWorldApplet.javaÀ» ÀÛ¼ºÇÑ´Ù.

	import java.applet.Applet;    
	import java.awt.Graphics; 
	public class HelloWorldApplet extends Applet {
  		public void init() {
        resize(150, 25);
         }
        public void paint(Graphics g) {
        g.drawString("Hello world!", 50, 25);
         }
    }
HelloWorldApplet.javaÀ» ÄÄÆÄÀÏÇϸé HelloWorldApplet.class¶ó´Â ¹ÙÀÌÆ® Äڵ尡 »ý¼ºµÈ´Ù.
    % javac HelloWorldApplet.java  
ÀÚ¹Ù ¾ÖÇø´À» Æ÷ÇÔÇÒ html È­ÀÏÀ» ÀÛ¼ºÇÑ´Ù.
	<HTML>;
	<HEAD>
	<TITLE> Hello World </TITLE>
	</HEAD>

	<BODY>
	This is the applet:<P>
	<APPLET code="HelloWorldApplet.class" width=200 height=200 >
	</APPLET>
	</BODY>
	</HTML>
Netscape 2.0À¸·Î ¾ÖÇø´À» Æ÷ÇÔÇÑ ±× HTML ¹®¼­¸¦ ·ÎµåÇÏ¸é ´ÙÀ½°ú °°ÀÌ Netscape ºê¶ó¿ìÀú¿¡ Hello World ¶õ ¹®ÀÚ°¡ Ãâ·ÂµÈ´Ù.



6.2.2 ¾ÖÇø´ ¸Þ¼Òµåµé

6.2.2.1 ¾ÖÇø´ ±âº» ¸Þ¼Òµå

¾ÖÇø´À» µ¿ÀÛ½ÃŰ´Â ±âº» ¸Þ¼ÒµåµéÀ» ¾Ë¾Æº¸±â À§ÇØ ´ÙÀ½ÀÇ ¾ÖÇø´ ¿¹Á¦¸¦ »ìÆìº¸ÀÚ. ¾ÖÇø´Àº ´ëºÎºÐ Applet Ŭ·¡½º¿¡¼­ ¼±¾ðµÈ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵åÇÏ¿© »ç¿ëÇÑ´Ù ´ëºÎºÐÀÇ ¾ÖÇø´Àº ÁÖ·Î ´ÙÀ½°ú °°Àº È帧À» °¡Áö°í ±¸¼ºµÈ´Ù.
    import java.awt.Graphics;
    public class MyAppletClass extends java.applet.Applet {
        . . .
 	   public void init() { . . . }
       public void start() { . . . }
       public void stop() { . . . }
       public void destroy() { . . . }
       . . .
    }
±âº»ÀûÀ¸·Î »ç¿ëµÇ´Â ¸Þ¼ÒµåµéÀÇ ¿ªÇÒÀº ´ÙÀ½°ú °°´Ù. ÀÌ·¯ÇÑ ±âº»ÀûÀÎ ¾ÖÇø´ ¶óÀÌÇÁ »çÀÌŬ ¸Þ¼Òµå ¸¸À¸·Î ¾ÖÇø´ÀÌ ÀÛ¼ºµÇÁö´Â ¾Ê´Â´Ù. ¾ÖÇø´Àº À¥ ºê¶ó¿ìÀú¸¦ µ¿Àû(¾Ö´Ï¸ÞÀ̼Ç, ÀζóÀÎ À̹ÌÁö, »óÈ£ÀÛ¿ë µî)À¸·Î ¸¸µå´Â ¿ªÇÒÀ» ÇØ¾ßÇÔÀ¸·Î ÀÌ¿¡ °üÇÑ ¿©·¯ °¡Áö ÇʼöÀûÀÎ ¸Þ¼Òµå¸¦ ÇÊ¿ä·Î ÇÑ´Ù.

6.2.2.2 ¾ÖÇø´ µå·ÎÀ× ¸Þ¼Òµå

¾ÖÇø´Àº Component Ŭ·¡½º¿¡¼­ µå·ÎÀ×°ú À̺¥Æ® 󸮿¡ ±­ÇÑ ¸Þ¼ÒµåµéÀ» »ó¼Ó¹Þ´Â´Ù. ¸ÕÀú »ç¿ëÀÚ È­¸é ±¸¼ºÀ» À§ÇØ AWT ÆÐŰÁö¿¡¼­ »ó¼Ó¹ÞÀº ´ëÇ¥ÀûÀÎ ¸î°¡Áö ¸Þ¼ÒµåµéÀ» ¾Ë¾Æº¸ÀÚ. ¾ÖÇø´ ÀÛ¼º½Ã¿¡ È­¸é Ãâ·Â°ú °ü°èµÇ¾î ¿À¹ö¶óÀÌµå µÇ´Â ´ëÇ¥ÀûÀÎ ¸Þ¼Òµå·Î paint() ¿Í update()¸¦ µé ¼ö ÀÖ´Ù.
    public class Simple extends Applet {
      .....
      public void paint(Graphics g) { ... }
      public void update(Graphics g) { ... }
      ...
    }
À§¿Í °°Àº µå·ÎÀ× ¸Þ¼Òµå´Â À̹ÌÁö 󸮸¦ À§ÇÑ ¸Þ¼Òµå¿Í ÇÔ²² »ç¿ëµÈ´Ù. ±âº»ÀûÀ¸·Î À̹ÌÁö 󸮸¦ À§ÇØ »ç¿ëµÇ´Â ¸Þ¼Òµå´Â getImage(), drawImage(), drawLine(), fillRect, drawString()µîÀÌ »ç¿ëµÇ¸ç À̰ÍÀº paint() ¸Þ¼Òµå³»¿¡ Á¤ÀǵǾîÁø´Ù. ÇöÀç ÀÚ¹Ù´Â GIF, JPEG ¸¸À» Áö¿øÇÑ´Ù. getImage(), drawImage()¸¦ ÀÌ¿ëÇÑ ¿¹Á¦´Â ´ÙÀ½°ú °°´Ù.
	Image im;
	public void init() {
	  im = getImage(getDocumentBase(), "mkshin.gif");
	 }
	public vpid paint(Graphics g) {
	  g.drawImage(im,x,y,this);
	}
¿Àµð¿À Ç÷¹À̸¦ À§Çؼ­´Â ¸Þ¼Òµå´Â play()¸¦ »ç¿ëÇÑ´Ù.
 
    play(URL soundDirectory, String soundfile);
    play(URL soundDirectory);
¿¹¸¦µé¾î ´ÙÀ½°ú °°ÀÌ ½Ã¿ëÇÒ ¼ö ÀÖ´Ù.
    play(getDocumentBase(), "mkshin.au");

6.2.2.3 ¾ÖÇø´ ¿Àµð¿À ¸Þ¼Òµå

¿Àµð¿À Ŭ¸³À» ·ÎµåÇϱâ À§Çؼ­´Â
 
    AudioClip sound = new AudioClip();
    sound = getAudioClip(getDocumentBase(), "mkshin.au");
ÀúÀå ¿Àµð¿À¸¦ Ç÷¹ÀÌÇϱâ À§Çؼ­´Â
    sound.play();
    sound.loop();
µîÀÌ »ç¿ëµÈ´Ù.

6.2.2.4 ¾ÖÇø´ À̺¥Æ® ¸Þ¼Òµå

À̺¥µå 󸮸¦ À§Çؼ­ ¿À¹ö¶óÀ̵åµÉ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ ¸Þ¼ÒµåµéÀº ´ÙÀ½°ú °°´Ù.

6.2.2.5 HTML ÆÄ¶ó¹ÌÅÍ °ª ó¸®

HTML ÆÄ¶ó¹ÌÅÍ °ªÀ» ¹Þ±â À§Çؼ­´Â getParameter() ¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù.
	import java.applet.Applet;    
	import java.awt.Graphics; 
             
	public class DrawStringApplet extends Applet {

	  String input_from_page;

	  public void init() {
	    input_from_page = getParameter("String");
	  }
  
	  public void paint(Graphics g) {
	    g.drawString(input_from_page, 50, 25);
	  }
	}
HTML ¹®¼­´Â ´ÙÀ½°ú °°ÀÌ PARAM ű׸¦ »ç¿ëÇÏ¿© Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
<HTML>
<HEAD>
<TITLE> Draw String 
</HEAD>

<BODY>
This is the applet:<P>
<APPLET code="DrawStringApplet.class" width=200 height=200>
<PARAM name="String" value="Anyone there!">
</APPLET>
</BODY>
</HTML>

6.3 ÇÁ·ÎÅäÄÝ Çڵ鷯(¾ËÆÄ 3 ¹öÁ¯)

ÇÁ·ÎÅäÄÝ Çڵ鷯¶õ ÇÖÀÚ¹Ù¿¡ »õ·Î¿î ÇÁ·ÎÅäÄÝÀ» °£´ÜÈ÷ È®Àå½ÃŰ´Â ±â¼úÀÌ´Ù. Áö±Ý±îÁö´Â JDK 1.0À» ±âÁØÀ¸·Î ¼³¸íÇßÀ¸³ª, ÇÖÀÚ¹Ù JDK 1.0 ¹öÀüÀÌ ¾ÆÁ÷±îÁö Á¦°øµÇÁö ¾Ê´Â °ü°è·Î, ÇÖÀÚ¹Ù ¾ËÆÄ ¹öÁ¯À» ±âÁØÀ¸·Î ¼³¸íÇÔÀ» À¯ÀÇÇÑ´Ù. ¿¹¸¦µé¾î multicast ¶ó´Â ÇÁ·ÎÅäÄÝ Çڵ鷯 À̸§À» °®´Â ¸ÖƼÄɽºÆÃÀÌ Áö¿øµÇ´Â ÇÖÀÚ¹Ù¸¦ ±¸ÇöÇØ º¸ÀÚ.

ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÌ À§Ä¡ÇÒ µð·ºÅ丮 ±¸Á¶´Â ´ÙÀ½°ú °°´Ù(ÀÚ¹Ù ¾ËÆÄ ¹öÀüÀÓÀ» À¯ÀÇ).

classes  --- net  --- www --- protocol --- multicast --- handler.java
                                                         handler.class
¸ÕÀú ÇÁ·ÎÅäÄÝ Çڵ鷯¸¦ À§ÇÑ µð·ºÅ丮¸¦ ¸¸µç´Ù.
          classes/net/www/protocol/multicast
´ëºÎºÐ ÀÛ¾÷À» ÇÏ´Â µð·ºÅ丮ÀÇ Ã³À½ ½ÃÀÛÀº ±× À̸§¿¡ °ü°è¾øÀ¸³ª(º» ¿¹Á¦¿¡¼­´Â classes·Î ½ÃÀÛÇß´Ù.) ±× ¾Æ·¡ µð·ºÅ丮 À̸§Àº ¹Ýµå½Ã net/www/protocolÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¸¶Áö¸· µð·ºÅ丮 À̸§ÀÎ multicast´Â ÇÁ·ÎÅäÄÝ Çڵ鷯ÀÇ À̸§ÀÌ´Ù.

run µð·ºÅ丮 ¾Æ·¡¿¡ ¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝ Ã³¸®¸¦ À§ÇÑ ÄÚµåÀÎ handler.java ÇÁ·ÎÅäÄÝ Çڵ鷯 ¼Ò½º¸¦ ÀÛ¼ºÇÑ ÈÄ ÄÄÆÄÀÏÇÑ´Ù.

       % cd net/www/protocol/run
       % javac handler.java
CLASSPATH ȯ°æ º¯¼ö¸¦ ¼ÂÆÃÇÑ´Ù.
        setenv CLASSPATH .:/home/classes
ÀÌ¹Ì ÇÖÀÚ¹Ù ºê¶ó¿ìÀú°¡ ¶ç¿öÁ® ÀÖ´õ¶óµµ CLASSPATH ȯ°æ º¯¼ö¸¦ ¼¼ÆÃÇÑ ÈÄ¿¡´Â ´Ù ½Ã ÇÖÁö¹Ù¸¦ ±¸µ¿½ÃŲ´Ù. ÇÖÀÚ¹ÙÀÇ URL ÀԷ¶õ¿¡ multicast:URL Çü½ÄÀ¸·Î ÀÔ·ÂÇÏ¸é Æ¯Á¤ ¹®¼­ÀÇ ·Îµå½Ã¿¡ ¸ÖƼij½ºÆÃ ÇÁ·ÎÅäÄÝÀÌ Àû¿ëµÇ°Ô µÈ´Ù.

6.4 ÄÁÅÙÆ® Çڵ鷯(¾ËÆÄ 3 ¹öÁ¯)

ÄÁÅÙÆ® Çڵ鷯´Â Ưº°ÇÑ MIME ŸÀÔÀÇ Å×ÀÌŸ¸¦ ºê¶ó¿ì¡ Çϱâ À§ÇØ ÇÖÀÚ¹Ù ºê¶ó¿ìÀú¸¦ È®ÀåÇÒ ¼ö ÀÖ´Â ±â¼ú·Î ¿¹¸¦µé¸é, image/mpeg°ú °°Àº ŸÀÔÀÇ µ¥ÀÌÅ͸¦ ¿ÜºÎ ºä¾î ¾øÀ̵µ ÀζóÀÎÀ¸·Î ºê¶ó¿ì¡ ÇÒ ¼ö ÀÖµµ·Ï È®Àå½ÃÄÑ ÁØ´Ù. Áö±Ý±îÁö´Â JDK 1.0À» ±âÁØÀ¸·Î ¼³¸íÇßÀ¸³ª, ÇÖÀÚ¹Ù JDK 1.0 ¹öÀüÀÌ ¾ÆÁ÷±îÁö Á¦°øµÇÁö ¾Ê´Â °ü°è·Î ÇÖÀÚ¹Ù ¾ËÆÄ ¹öÁ¯À» ±âÁØÀ¸·Î ¼³¸íÇÔÀ» À¯ÀÇÇÑ´Ù. ¿¹¸¦µé¾î image/mpeg ÄÁÅÙÆ® Çڵ鷯·Î ÇÏ¿©±Ý MPEG µ¥ÀÌŸ¸¦ ¿ÜºÎ ºä¾î¾øÀÌ ºê¶ó¿ì¡ ÇÒ ¼ö ÀÖµµ·Ï ÇÖÀÚ¹Ù¸¦ ±¸ÇöÇØ º¸ÀÚ. ¸ÕÀú ÆÄÀϵéÀÌ À§Ä¡ÇÒ µð·ºÅ丮 ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.
classes ----  net -- www - content - mpeg - handler.java
                                            handler.class
¸ÕÀú µð·ºÅ丮¸¦ ¸¸µç´Ù.
      classes/net/www/content/mpeg
ÇÁ·ÎÅäÄÝ Çڵ鷯¿Í ¹ÌÂù°¡Áö·Î ÀÛ¾÷À» ÇÏ´Â µð·ºÅ丮ÀÇ Ã³À½ ½ÃÀÛÀ» classes·Î Á¤ÀÇÇßÀ¸¸ç, ±× ¾Æ·¡ µð·ºÅ丮 À̸§Àº ¹Ýµå½Ã net/www/contentÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¸¶Áö¸· mpeg µð·ºÅ丮 À̸§Àº ÄËÅÙÆ® Çڵ鷯ÀÇ À̸§ÀÌ´Ù.

mpeg µ¥ÀÌŸ 󸮸¦ À§ÇÑ ÄÚµå(handler.java)¸¦ ÀÛ¼ºÇÑ ÈÄ ÄÄÆÄÀÏ ÇÑ´Ù.

     % javac handler.java
CLASSPATH ȯ°æ º¯¼ö¸¦ ¼ÂÆÃÇÑ´Ù.
      setenv CLASSPATH .:/home/classes
image/mpegÀÇ Ã³¸®¸¦ À§ÇÑ mailcap ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù. ÀÌ¹Ì ÇÖÀÚ¹Ù ºê¶ó¿ìÀú°¡ ¶ç¿öÁ® ÀÖ´õ¶ó CLASSPATH ȯ°æ º¯¼ö¸¦ ¼¼ÆÃÇÑ ÈÄ ´Ù½Ã ¶ç¿î´Ù. ÀÌÁ¦ ÄÁÅÙÆ® Çڵ鷯´Â image/mpeg MIME ŸÀÔÀ¸·Î µÈ ¹®¼­¸¦ ·ÎµåÇÒ ¶§¸¶´Ù ÀÚµ¿ÀûÀ¸·Î ºÒ·ÁÁö°Ô µÇ¾î 󸮵ȴÙ.

7. ÀÎÅͳݰú ÀÚ¹ÙÀÇ ¹Ì·¡

ÀÚ¹Ù´Â ÇöÀç ÀÎÅͳݻóÀÇ Â÷¼¼´ë °´Ã¼ÁöÇâ ¾ð¾î·Î¼­ »ç½Ç»ó ÀÎÅÍ³Ý ±¹Á¦ Ç¥Áؾð¾îÀÇ ¿ªÇÒÀ» ÇÑ´Ù °í ÇØµµ °ú¾ðÀÌ ¾Æ´Ï´Ù. WWW ºê¶ó¿ìÀúÀÇ 75% ÀÌ»óÀ» Á¡À¯Çϰí ÀÖ´Â Netscape¿¡¼­ ÀÚ¹Ù¸¦ »ç¿ëÇϰí ÀÖÀ¸¸ç, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çµµ ÀÚ»çÀÇ ÀÎÅÍ³Ý Ç¥ÁØÀ¸·Î ÀÚ¹Ù¸¦ äÅÃÇϰí ÀÖ´Ù(ÀÌ´Â ÀÚ¹Ù °¡ ¾÷ü Ç¥ÁØÀÌ µÇ¾úÀ»¶§¸¦ ´ëºñÇÑ ÀÏÁ¾ÀÇ º¸Çè ¼º°ÝÀÌ °­ÇÏÁö¸¸). ¶ÇÇÑ ÃÖ±Ù¿¡´Â ½Ç¸®ÄÜ ±×·¡ÇÈ ½º¿Í ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî´Â Â÷¼¼´ë °¡»óÇö½Ç ¸ðµ¨¸µ ¾ð¾îÀÎ VRML(Virtual Relality Modeling Lanugage)¸¦ ÀÚ¹Ù¿¡¼­ Æ÷ÇÔ ÇÒ ¼ö ÀÖµµ·Ï °è¾àÀ» ü°áÇÏ¿´´Ù. À̹ۿ¡ IBM, SGI, Toshiba, Oracle, Boland, Adobe, Macromedia, Spyglass µîµµ ÀÚ¹Ù ¶óÀ̼¾½º¸¦ °è¾àÇÏ¿© ÀÚ»ç Á¦Ç°¿¡ ÀÚ¹Ù¸¦ Áö¿øÇÑ »õ·Î¿î Á¦Ç°¿ï ÇöÀç °³¹ßÁßÀ̸ç, ÀÚ¹Ù½ºÅ©¸³Æ® ¿ª½Ã, ¾à 25°³ÀÇ È¸»çµéÀÌ °øµ¿À¸·Î °è¾àÀ» ü°áÇѹ٠ÀÖ´Ù. ÀÌ¿Í °°Àº Çö»óÀº ÀÎÅͳÝÀÇ ¹Ì·¡°¡ °ð ÀÚ¹Ù·Î ÀÎÇØ °áÁ¤µÈ´Ù´Â °ÍÀ» º¸¿©ÁÖ´Â ÇÑ ´Ü¸éÀ̶ó°í ÇϰڴÙ.

ÀÚ¹Ù´Â WWWÀ¸·Î ¼º°øÀûÀÎ Ãâ¹ßÀ» Àå½ÄÇß´Ù. ÀÚ¹Ù´Â Á¤º¸ â°íÀÎ ÀÎÅͳÝÀÇ È°¿ë ¹üÀ§¸¦ ³ÐÈú ¼ö ÀÖ´Â °¡À̵å¶óÀÎÀ» Á¦½ÃÇßÀ¸¸ç, ÄÄÇ»ÅÍ º¥´õ¿Í »ç¿ëÀÚ ¸ðµÎ¿¡°Ô »óÈ£¿î¿ë¼ºÀÇ ¹®Á¦¿¡ ´ëÇÑ ÇØ °áÃ¥À» Á¦½ÃÇÏ¿´´Ù. ¼ÒÇÁÆ®¿þ¾î Ãø¸é¿¡¼­µµ ÀÚ¹Ù°¡ ÀÖ´Â À¥Àº Ç÷¯±×-ÀÎ ±â´ÉÀ» ÀÌ¿ëÇÑ Â÷¼¼´ë ÅëÇÕ ÀÀ¿ë ȯ°æÀ» âÃâÇßÀ¸¸ç, À̸¦ ÅëÇØ ÀÎÅͳÝÀº ´õ¿í ´õ È®Àå ¹ßÀüµÉ °ÍÀ¸·Î º¸ÀδÙ.

ÀÚ¹Ù ÀÌÀüÀÇ Á¤º¸¸Á °üÁ¡¿¡¼­ º¸¸é, ÇöÀç ´ëºÐºÐÀÇ Á¤º¸ ¼­ºñ½º ¸ðµ¨ÀΠŬ¶óÀ̾ðÆ®-¼­¹ö ¸ðµ¨Àº »ç¿ëÀÚÀÇ Áõ°¡¿¡ µû¶ó º¸´Ù º¹ÀâÇÑ ¸Þ½º ÇüÅÂÀÇ ±¸Á¶¸¦ °¡Áö°Ô µÇ°í ÀÌ¿¡ ´ëÇÑ ¾ÖÇø®ÄÉÀ̼ǰú ¼­ºñ½ºÀÇ ¿øÇÒÇÑ Á¦°øÀÌ Ä¿´Ù¶õ ¹®Á¦Á¡À¸·Î ¾È°íÀÖ¾ú´Ù. °á±¹ ¶ÇÇÑ ÀÚ¹Ù·Î ÀÎÇØ º¯È­µÈ ÀÎÅͳÝÀº ÀÌ·¯ÇÑ ¹®Á¦µéÀÇ ¸ðµç ÇØ°áÃ¥À» Á¦½ÃÇÑ´Ù. »ç¿ëÀÚ´Â ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡ ÇÖÀÚ¹Ù¿Í °°Àº ÇϳªÀÇ ÇÁ·Î ±×·¥¸¸À» ÀνºÅçÇϸé (À̰ÍÀº ¸ðµç Ç÷§ÆûÀÇ »çÀÌÀÇ ÀϰüµÈ ȯ°æÀ» Á¦°øÇÏ°Ô µÈ´Ù), »õ·Î¿î ¾ÖÇà ¸®ÄÉÀ̼ÇÀ» ÀνºÅçÇϰųª, ±× ÆäÀÌÁö¿¡ ³»ÀåµÈ ¾ÖÇø´°ú´Â ¹«°üÇÏ°Ô ºê¸®¿ì¡À» ÅëÇØ¼­ »õ·Î¿î ¼­ºñ½º¸¦ Á¦°ø¹ÞÀ» ¼ö ÀÖ´Ù. ¼­ºñ½º Á¦°øÀÚ ÀÔÀå¿¡¼­´Â WWW ¼­¹ö³»¿¡ ¾ÖÇø´À» Æ÷ÇÔ½ÃÅ´À¸·Î ¼­ ÀÏ¹Ý Å¬¶óÀ̾ðÆ®ÀÇ ±âÁ¾¿¡ °ü¿©ÇÒ Çʿ䰡 ¾øÀ¸¸ç, ¾÷±×·¹À̵嵵 ¿ëÀÌÇÏ´Ù. À̰ÍÀº µ¥ÀÌŸ»Ó¸¸ ¾Æ´Ï¶ó Äڵ带 ÇÔ²² ´Ù¿î·Îµå¹ÞÀ½À¸·Î¼­ °¡´ÉÇØÁø´Ù.

ÀÌó·³ ÀÚ¹Ù¸¦ ÀÌ¿ëÇÑ ÄÄÇ»ÅÍ ¼¼»óÀº ±Ã±ØÀûÀÎ ³×Æ®¿÷ Ç÷§ÆûÀ¸·Î ÀÎÅͳÝÀ» ¼±ÅÃÇÏ°Ô µÇ¸ç, ÄÄÇ» ÅÍ »ê¾÷ Àü¹Ý¿¡ °ÉÃÄ »õ·Î¿î ±â¼ú Çõ½ÅÀ» °¡Á®¿À°Ô µÉ °ÍÀ¸·Î ±â´ëµÈ´Ù.

Âü°í¹®Çå(References)

[Sun 95a]
Sun Microsystems, Java, The Language(Presentation material), 1995.
[Sun 95b]
Sun Microsystems, The Java Language Environment, A White Paper, 1995.
[Sun 95c]
Sun Microsystems, The Java Language Specification Version 1.0 Beta, 1995.
[Sun 95d]
Sun Microsystems, Java Application Programming Interface(API) User's Guide(JDK 1.0), 1996.
[Sun 95e]
Sun Microsystems, The Java Language Tutorial : Object-Oriented Programming for the Internet,
URL: http://java.sun.com/tutorial/index.html
[SunService 96]
SunService, The Java Language Tutorial : Your First Jolt and Second Jolt,
URL: http://www.sun.com/sunservice/suned/javaday
[Frank 96]
Frank D. Greco, Java (in plain English): An Introduction, JavaWorld 1996. 3
URL: http://http://www.javaworld.com/
[Nelson 96]
Nelson Yu, The AWT Tutorial,
URL: http://ugweb.cs.ualberta.ca/~nelson/java/AWT.Tutorial.html
[Gosling 95]
James Gosling, Java & HotJava :A Platform for Building Safe Distributed Applications(Presentation matirial), 1995.
[Elliotte 96]
Elliotte Rusty Harold, Brewing Java: A Tutorial, 1995.
URL: http://sunsite.unc.edu/javafaq/javatutorial.html
[Hecker 96]
JavaScript, 1995.
URL: http://www.access.digex.net/~hecker/netscape/majug/javascript/