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 ¹®¼³»¿¡ Æ÷Ç﵃ ¼ö ÀÖ´Â ÀÚ¹Ù ÇÁ·Î±×·¥À» °¡¸®Å²
´Ù.
¾ÖÇø´Àº ´Ù¿î·ÎµåµÇ¾î »ç¿ëµÇ¾î Áø´Ù. µû¶ó¼ Ŭ¶óÀ̾ðÆ®ÂÊÀÇ ¾ÈÀü¼º°ú º¸¾ÈÀÇ ¹®Á¦·Î ¾ÖÇø®ÄÉ
À̼ǰú´Â ´Ù¸¥ ´ÙÀ½°ú °°Àº Á¦¾àÁ¡À» °¡Áö°í ÀÖ´Ù.
- ¾ÖÇø´Àº Ŭ¶óÀÌ¾ðÆ® ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡ ÆÄÀÏÀÇ read/write¸¦ ±ÝÁöÇÑ´Ù.
- ¾ÖÇø´Àº Ŭ¶óÀÌ¾ðÆ®»óÀÇ ´Ù¸¥ ÇÁ·Î±×·¥À» µ¿ÀÛ½ÃŰ°Å³ª »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼º½ÃŰÁö ¸ø
ÇÑ´Ù.
- ¾ÖÇø´Àº ¼¹öÂÊÀÇ ¿¬°áÀ» Á¦¿ÜÇÏ°í ´Ù¸¥ È£½ºÆ®¿Í »õ·Î¿î ¿¬°áÀ» ¿¬°áÇÒ ¼ö ¾ø´Ù.
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
- src.zip
- ÀÚ¹Ù ¾ÖÇø´ ºä¾î
- ÀÚ¹Ù µð¹ö°Å API¿Í ÇÁ·ÎÅäŸÀÔ µð¹ö°Å
- ÀÚ¹Ù ÄÄÆÄÀÏ·¯
- ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ
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>
°¢ ÅÂ±× »ç¿ë¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¸é ´ÙÀ½°ú °°´Ù.
- <APPLET ...> ... </APPLET>
¾ÖÇø´ ű×ÀÇ Ã³À½°ú ³¡
- CODEBASE = codebaseURL
¾ÖÇø´ Äڵ带 ´ã°íÀÖ´Â µð·ºÅ丮 ÁöÁ¤
¿¹) CODEBASE = /home/java/mkshin/classes
- CODE = appletFile
¾ÖÇø´À» µ¿ÀÛ½Ãų Ŭ·¡½º ÆÄÀÏ À̸§(*.class)
¿¹) CODE = test.class
- ALT = alternateText
ÀÚ¹Ù ¾ÖÇø´À» µ¿ÀÛ½Ãų ¼ö´Â ¾øÁö¸¸ APPLET ű׸¦ ÀÌÇØÇÏ´Â ºê¶ó¿ìÀú¸¦ À§ÇØ
º¸¿©Áú ÅØ½ºÆ® ¸í½Ã
¿¹) ALT = "Sorry !, This Applet is written in JDK beta."
- NAME = appletInstanceName
¾ÖÇø´ ÀνºÅϽº¸¦ À§ÇÑ À̸§ ¸í½Ã
¿¹) NAME = AppletClient1
- WIDTH = pixels HEIGHT = pixels
¾ÖÇø´ÀÌ º¸¿©Áú ȸé»óÀÇ Ãʱ⠿µ¿ª ÁöÁ¤
¿¹) WIDTH = 300 HEIGHT = 200
- ALIGN = alignment
¾ÖÇø´ÀÌ º¸¿©Áú À§Ä¡ Á¶Á¤
¿¹) ALIGN = middle
- VSPACE = pixels HSPACE = pixels
¾ÖÇø´ÀÌ º¸¿©Áú ȸéÀÇ ¿©¹é Á¶Á¤
¿¹) VSPACE = 10 HSPACE = 20
- <PARAM NAME = appletAttribute1 VALUE = value >
¾ÖÇø´ ÆÄ¶ó¹ÌÅͰª ÁöÁ¤
¿¹) <PARAM NAME=lbl VALUE="This is the next best thing">
- alternateHTML
¾ÖÇø´À» ÀÌÇØÇÏÁö ¸øÇÏ´Â ºê¶ó¿ìÀú¸¦ À§ÇØ º¸¿©Áú ÅØ½ºÆ® ¸í½Ã
¿¹) <em>
You're viewing this page with a browser
that doesn't understand the APPLET tag.
</em>
3.3.5 ÀÚ¹Ù ÅëÇÕ °³¹ß ȯ°æ(IDE:Integrated Development Environment)
ÇöÀç ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ °³¹ß ȯ°æÀº ¼± ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîÀÇ "Workshop for Java"¸¦
ºñ·ÔÇÏ¿© ÀÚ¹Ù ¶óÀ̼¾½º¸¦ ¸ÎÀº ¿©·¯ ¾÷ü¿¡¼ ÀÚ¹Ù ÇÁ·Î±×·¥ °³¹ßÀ» À§ÇÑ
ÅëÇÕ ÇѰæÀ» °³¹ßÁßÀÌ´Ù.
- Workshop for Java, SunSoft
- TEA, DimensionX
- Latte, Java AppAccelerator¿Í GUI ºô´õ, º¼·£µå
- COSMO, SGI
- Dynamo
- Windows 95/NT
- Cafe(Exspresso), Symantec
- Diva(JavaSide)
- OEW(Object Engineering Workbench) for Java
- JavaMaker, ÃÖÈñâ
- Solaris
- SpecJava, ¼Ö¶ó¸®½º¿ë GUI ºô´õ
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 ¹öÁ¯¿¡¼
ÀÚ¹Ù½ºÅ©¸³Æ®°¡ Áö¿øµÈ´Ù.
ÀÚ¹Ù¿Í ÀÚ¹Ù ½ºÅ©¸³Æ®ÀÇ Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.
- ÀÚ¹Ù½ºÅ©¸³Æ®
- Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ ÇØ¼® - ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù.
- °´Ã¼±â¹Ý(Object-Based) ½ºÅ©¸³Æ®(Ŭ·¡½º, »ó¼Ó°ú °°Àº °³³äÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù)
- HTML ³»¿¡ ½ºÅ©¸³Æ® ÀÚü°¡ »ðÀԵȴÙ.
- loose tying
- ´ÙÀ̳ª¹Í ¹ÙÀεù
- ÀÚ¹Ù
- Ŭ¶óÀξðÆ®ÂÊ¿¡¼ ½ÇÇàµÇ±âÀü¿¡ ¼¹öÂÊ¿¡¼ ÄÄÆÄÀϵȴÙ.
- °´Ã¼ÁöÇâ ¾ð¾î´Ù.
- HTML ³»¿¡ ¾ÖÇø´ ű׸¸ »ðÀԵȴÙ.
- strong tying
- Á¤Àû ¹ÙÀεù
ÇöÀç ÀÚ¹Ù½ºÅ©¸³Æ®´Â Netscape Á¦Ç°¿¡¼ Client-Side ¿Í Server-Side·Î ±¸ºÐÇÏ¿©
»ç¿ëÇÒ ¼ö ÀÖ´Ù.
3.3.6.1 Client-Side ÀÚ¹Ù½ºÅ©¸³Æ®
Client-Side ÀÚ¹Ù½ºÅ©¸³Æ®´Â Netscape 2.0¿¡ ÀÇÇØ »ç¿ëµÇ¸ç,
HTML³»¿¡ »ðÀÔµÇ¾î ±× ÆäÀÌÁö°¡
·ÎµåµÈ ÈÄ Netscape Navigator¿¡ ÀÇÇØ ÀÎÅÍÇÁ¸®Æ®µÈ´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ functuin, variableÀº <script> .. </script>
ű׻翡¿¡ ³õÀÌ°Ô µÈ´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼ »ç¿ë°¡´ÉÇÑ °³Ã¼µéÀº ´ÙÀ½°ú °°´Ù.
- windows
- frames
- form elements
- link
´ÙÀ½ÀÇ ¿¹Á¦´Â 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 >
ű׻çÀÌ¿¡ ³õÀÌ°Ô µÈ´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼ ¼¿ëÇÏ´Â °´Ã¼µéÀº ´ÙÀ½À» Æ÷ÇÒ ¼ö ÀÖ´Ù.
- server state
- user state
- ÇöÀçÀÇ HTTP request
- backend database
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 ´Ü¼ø ÀÚ·áÇü, ½ºÆ®¸µ, ¹è¿
ÀÚ¹Ù¿¡¼ »ç¿ëµÇ´Â ÀÚ·áÇüÀº ´Ü¼ø ÀÚ·áÇü°ú º¹ÇÕ ÀÚ·áÇüÀ¸·Î ³ª´ ¼ö ÀÖÀ¸¸ç,
´Ü¼ø ÀÚ·áÇüÀº
Á¤¼öÇü, ½Ç¼öÇü, ¹®ÀÚÇü, ³í¸®ÇüÀ¸·Î ±¸ºÐµÈ´Ù. º¹ÇÕ ÀÚ·áÇüÀº
¹è¿, Ŭ·¡½º, ÀÎÅÍÆäÀ̽º µîÀ¸·Î ³ª´ ¼ö ÀÖ´Ù.
- Á¤¼öÇü
- byte : 8ºñÆ® , signed
- short : 16 ºñÆ®, signed
- int : 32 ºñÆ®, signed
- long : 64 ºñÆ®, signed
- ½Ç¼öÇü
- float 32 ºñÆ®, IEEE 754
- double : 64 ºñÆ®, IEEE 754
- ¹®ÀÚÇü
- char : 16 ºñÆ®, unsigned, À¯´ÏÄÚµå
- ³í¸®Çü
½ºÆ®¸µµµ ¿ª½Ã °´Ã¼·Î¼ 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 ¿Í
µ¿ÀÏÇÏ´Ù.
- if ¹®
if (expr) statment else statement
- for ¹®
for (expr; expr; expr) statement
- while ¹®
while (expr) statement
do statment whiel (expr);
- switch ¹®
switch (expr) { ... }
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´Â ´ÙÀ½°ú °°´Ù.
- public
- protected
- private
- defalut, friendly
- abstract
- final
- static
- native
- synchronized
ÀÌÁß¿¡¼ 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++¿¡¼´Â ´ÙÀ½ÀÇ µÎ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏÁö¸¸,
- argc - Ä¿¸Çµå ¶óÀλóÀÇ ¾Æ±Ô¸ÕÆ®ÀÇ ¼ýÀÚ
- argv - ±× ¾Æ±Ô¸ÕÆ®¸¦ ´ã°íÀÖ´Â ½ºÆ®¸µ ¹è¿ÀÇ Æ÷ÀÎÅÍ
ÀÚ¹Ù´Â ´ÙÀ½°ú °°ÀÌ ÇϳªÀÇ ÆÄ¶ó¹ÌÅ͸¸À» »ç¿ëÇØµµ °¡´ÉÇÏ´Ù.
- args - ±× ¾ÆÅ¥¸ÕÆ®¸¦ ´ã°íÀÖ´Â ½ºÆ®¸µ ¹è¿
¾ÆÅ¥¸ÕÆ®ÀÇ À妽º¸¦ ÁöÁ¤Çϱâ À§Çؼ´Â ¹è¿¿¡¼ Á¦°øµÇ´Â 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() { . . . }
. . .
}
±âº»ÀûÀ¸·Î »ç¿ëµÇ´Â ¸Þ¼ÒµåµéÀÇ ¿ªÇÒÀº ´ÙÀ½°ú °°´Ù.
- init()
¾ÖÇø´À» ÃʱâÈÇÑ´Ù.
- start()
¾ÖÇÁ¸´ÀÇ µ¿ÀÛÀ» ½ÃÀÛÇÑ´Ù.
- stop()
¾ÖÇø´ÀÇ µ¿ÀÛÀ» ÁßÁöÇÑ´Ù.
- destroy()
ºê¶ó¿ìÀú¸¦ ¶°³ª°í Å©¸°¾÷(clean-up)À» ¼öÇàÇÑ´Ù.
ÀÌ·¯ÇÑ ±âº»ÀûÀÎ ¾ÖÇø´ ¶óÀÌÇÁ »çÀÌŬ ¸Þ¼Òµå ¸¸À¸·Î ¾ÖÇø´ÀÌ ÀÛ¼ºµÇÁö´Â ¾Ê´Â´Ù.
¾ÖÇø´Àº À¥
ºê¶ó¿ìÀú¸¦ µ¿Àû(¾Ö´Ï¸ÞÀ̼Ç, ÀζóÀÎ À̹ÌÁö, »óÈ£ÀÛ¿ë µî)À¸·Î ¸¸µå´Â ¿ªÇÒÀ» ÇØ¾ßÇÔÀ¸·Î ÀÌ¿¡
°üÇÑ ¿©·¯ °¡Áö ÇʼöÀûÀÎ ¸Þ¼Òµå¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
6.2.2.2 ¾ÖÇø´ µå·ÎÀ× ¸Þ¼Òµå
¾ÖÇø´Àº Component Ŭ·¡½º¿¡¼ µå·ÎÀ×°ú À̺¥Æ® 󸮿¡ ±ÇÑ ¸Þ¼ÒµåµéÀ» »ó¼Ó¹Þ´Â´Ù.
¸ÕÀú »ç¿ëÀÚ È¸é ±¸¼ºÀ» À§ÇØ AWT ÆÐŰÁö¿¡¼ »ó¼Ó¹ÞÀº ´ëÇ¥ÀûÀÎ ¸î°¡Áö ¸Þ¼ÒµåµéÀ»
¾Ë¾Æº¸ÀÚ.
¾ÖÇø´ ÀÛ¼º½Ã¿¡ ȸé Ãâ·Â°ú °ü°èµÇ¾î ¿À¹ö¶óÀÌµå µÇ´Â ´ëÇ¥ÀûÀÎ ¸Þ¼Òµå·Î
paint()
¿Í
update()¸¦ µé ¼ö ÀÖ´Ù.
public class Simple extends Applet {
.....
public void paint(Graphics g) { ... }
public void update(Graphics g) { ... }
...
}
- paint()
±âº» µð½ºÇ÷¹ÀÌ ¸Þ¼Òµå.
ºê¶ó¿ìÀú³»¿¡¼ ¾ÖÇø´ ȸéÀ» µå·ÎÀ×Çϱâ À§ÇØ ´ëºÎºÐÀÇ ¾ÖÇø´Àº ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù.
- update()
µå·ÎÀ× ¼º´ÉÀ» Çâ»ó½Ã۱â À§ÇÏ¿© paint()¿Í ÇÔ²² »ç¿ëµÇ´Â ¸Þ¼Òµå
À§¿Í °°Àº µå·ÎÀ× ¸Þ¼Òµå´Â À̹ÌÁö 󸮸¦ À§ÇÑ ¸Þ¼Òµå¿Í ÇÔ²² »ç¿ëµÈ´Ù.
±âº»ÀûÀ¸·Î À̹ÌÁö 󸮸¦
À§ÇØ »ç¿ëµÇ´Â ¸Þ¼Òµå´Â 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 ¾ÖÇø´ À̺¥Æ® ¸Þ¼Òµå
À̺¥µå 󸮸¦ À§Çؼ ¿À¹ö¶óÀ̵åµÉ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ ¸Þ¼ÒµåµéÀº ´ÙÀ½°ú °°´Ù.
- keyDown()
Űº¸µå»ó¿¡¼ »ç¿ëÀÚ°¡ ´©¸£´Â ۸¦ È®ÀÎÇÑ´Ù.
- mouseDown(), mouseUp()
»ç¿ëÀÚ°¡ ´©¸£´Â ¸¶¿ì½º ¹öưÀ» È®ÀÎÇÑ´Ù.
- mouseEntry(), mouseExit()
Ä¿¼°¡ ¾ÖÇø´ ȸ鿡 µé·¯¿À°í ³ª°¨À» È®ÀÎÇÑ´Ù.
- mouseDrag()
¸¶¿ì½º ¹öưÀ» ´©¸£´Â µ¿¾È ¸¶¿ì½ºÀÇ ¿òÁ÷ÀÓÀ» È®ÀÎÇÑ´Ù.
- mouseMove()
¸¶¿ì½º¸¦ ´©¸£°í ÀÖÁö ¾ÊÀº µ¿¾È ¸¶¿ì½ºÀÇ ¿òÁ÷ÀÓÀ» È®ÀÎÇÑ´Ù.
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/