Java ¿ä¼Ò ¹× ÀÚ¿ø

Java ¸ðµ¨Àº Java ÇÁ·Î±×·¥ÀÇ ÀÛ¼º, ÆíÁý ¹× ºôµå¿Í ¿¬°üµÈ ¿ÀºêÁ§Æ®¸¦ ¸ðµ¨¸µÇϴ Ŭ·¡½º ¼¼Æ®ÀÔ´Ï´Ù. Java ¸ðµ¨ Ŭ·¡½º´Â org.eclipse.jdt.core.* ÆÐŰÁö¿¡ Á¤Àǵ˴ϴÙ. ÀÌ·¯ÇÑ Å¬·¡½º´Â ÀÚ¿ø¿¡ ´ëÇÑ Java °íÀ¯ÀÇ ÀÛµ¿À» ±¸ÇöÇÏ°í ³ª¾Æ°¡ Java ÀÚ¿øÀ» ¸ðµ¨ ¿ä¼Ò·Î ºÐÇØÇÕ´Ï´Ù.

Java ¿ä¼Ò

org.eclipse.jdt.core ÆÐŰÁö´Â Java ÇÁ·Î±×·¥À» ±¸¼ºÇÏ´Â ¿ä¼Ò¸¦ ¸ðµ¨¸µÇϴ Ŭ·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù. JDT´Â ³»ºÎ ¸Þ¸ð¸® ¿ÀºêÁ§Æ® ¸ðµ¨À» »ç¿ëÇÏ¿© Java ÇÁ·Î±×·¥ÀÇ ±¸Á¶¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ¸ðµ¨Àº °èÃþÀûÀÔ´Ï´Ù. ÇÁ·Î±×·¥ÀÇ ¿ä¼Ò´Â ÇÏÀ§ ¿ä¼Ò·Î ºÐÇØµÉ ¼ö ÀÖ½À´Ï´Ù.

Java ¿ä¼Ò´Â ÀÚ¿ø ¿ÀºêÁ§Æ®¿Í ¸Å¿ì À¯»çÇÕ´Ï´Ù. Java ¿ä¼Ò¿¡ ´ëÇÑ ÀÛ¾÷À» ÇÒ ¶§´Â ½ÇÁ¦·Î ÀϺΠ±âº» ¸ðµ¨ ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Ã³¸® ÀÛ¾÷À» ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÛ¾÷°ø°£¿¡ ¿ä¼Ò°¡ ÀÖ´ÂÁö ÆÇº°ÇÏ·Á¸é exists() ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. 

´ÙÀ½ Å×À̺íÀº ¿©·¯ °¡Áö À¯ÇüÀÇ Java ¿ä¼Ò¿¡ ´ëÇØ ¿ä¾àÇÕ´Ï´Ù.

¿ä¼Ò

¼³¸í

IJavaModel

ÀÛ¾÷°ø°£¿¡ ÇØ´çÇÏ´Â ·çÆ® Java ¿ä¼Ò¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¸ðµç Java ÇÁ·ÎÁ§Æ®ÀÇ »óÀ§.

IJavaProject

ÀÛ¾÷°ø°£ÀÇ Java ÇÁ·ÎÁ§Æ®¸¦ Ç¥½ÃÇÕ´Ï´Ù(IJavaModelÀÇ ÇÏÀ§).

IPackageFragmentRoot

ÀÏ·ÃÀÇ ÆÐŰÁö ´ÜÆíÀ» Ç¥½ÃÇÏ°í ´ÜÆíÀ» Æú´õ, JAR ¶Ç´Â ZIP ÆÄÀÏÀÎ ±âº» ÀÚ¿øÀ¸·Î ¸ÊÇÎÇÕ´Ï´Ù(IJavaProjectÀÇ ÇÏÀ§).

IPackageFragment

Àüü ÆÐŰÁö ¶Ç´Â ÆÐŰÁö ÀϺο¡ ÇØ´çÇÏ´Â ÀÛ¾÷°ø°£ÀÇ ÀϺθ¦ Ç¥½ÃÇÕ´Ï´Ù(IPackageFragmentRootÀÇ ÇÏÀ§).

ICompilationUnit

Java ¼Ò½º(.java) ÆÄÀÏÀ» Ç¥½ÃÇÕ´Ï´Ù.

IPackageDeclaration

ÄÄÆÄÀÏ ´ÜÀ§ÀÇ ÆÐŰÁö ¼±¾ðÀ» Ç¥½ÃÇÕ´Ï´Ù(ICompilationUnitÀÇ ÇÏÀ§).

IImportContainer

ÄÄÆÄÀÏ ´ÜÀ§ÀÇ ÆÐŰÁö °¡Á®¿À±â ¼±¾ð¿¡ ´ëÇÑ ÄÝ·º¼ÇÀ» Ç¥½ÃÇÕ´Ï´Ù(ICompilationUnitÀÇ ÇÏÀ§).

IImportDeclaration

´ÜÀÏ ÆÐŰÁö °¡Á®¿À±â ¼±¾ðÀ» Ç¥½ÃÇÕ´Ï´Ù(IImportContainerÀÇ ÇÏÀ§).

IType

ÄÄÆÄÀÏ ´ÜÀ§ ³»ÀÇ ¼Ò½º À¯ÇüÀ̳ª Ŭ·¡½º ÆÄÀÏ ³»ÀÇ 2Áø À¯ÇüÀ» Ç¥½ÃÇÕ´Ï´Ù.

IField

À¯Çü ³»ÀÇ Çʵ带 Ç¥½ÃÇÕ´Ï´Ù(ITypeÀÇ ÇÏÀ§).

IMethod

À¯Çü ³»ÀÇ ¸Þ¼Òµå³ª »ý¼ºÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù(ITypeÀÇ ÇÏÀ§).

IInitializer

À¯Çü ³»ÀÇ Á¤Àû ¶Ç´Â ÀνºÅϽº ÃʱâÈ­ ÇÁ·Î±×·¥À» Ç¥½ÃÇÕ´Ï´Ù(ITypeÀÇ ÇÏÀ§).

IClassFile

ÄÄÆÄÀϵÈ(2Áø) À¯ÇüÀ» Ç¥½ÃÇÕ´Ï´Ù(IPackageFragmentÀÇ ÇÏÀ§).

¸ðµç Java ¿ä¼Ò´Â IJavaElement ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÕ´Ï´Ù.

¿ä¼ÒÀÇ ÀϺδ ÆÐŰÁö º¸±â¿¡ Ç¥½ÃµË´Ï´Ù. ÀÌ·¯ÇÑ ¿ä¼Ò´Â Ž»öµÇ±â Àü¿¡ ¿­¾î¾ß Çϱ⠶§¹®¿¡ IOpenable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÕ´Ï´Ù. ¾Æ·¡ÀÇ ±×¸²Àº ÀÌ·¯ÇÑ ¿ä¼Ò°¡ ÆÐŰÁö º¸±â¿¡ ¾î¶»°Ô Ç¥½ÃµÇ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

IOpenableÀ» ±¸ÇöÇÏ´Â Java ¿ä¼Ò´Â ÁÖ·Î ±âº» ÀÚ¿ø ÆÄÀÏ¿¡ ÀÖ´Â Á¤º¸¿¡¼­ ÀÛ¼ºµË´Ï´Ù. µ¿ÀÏÇÑ ¿ä¼Ò´Â ÁÖ·Î ÀÚ¿ø ³×ºñ°ÔÀÌÅÍ º¸±â¿¡ Ç¥½ÃµË´Ï´Ù.

±âŸ ¿ä¼Ò´Â Java ÄÄÆÄÀÏ ´ÜÀ§¸¦ ±¸¼ºÇÏ´Â Ç׸ñ¿¡ ÇØ´çµË´Ï´Ù(.java ÆÄÀÏ). ¾Æ·¡ÀÇ ±×¸²Àº ¼Ò½º ¿ä¼Ò¸¦ ÄÄÆÄÀÏ ´ÜÀ§·Î Ç¥½ÃÇÏ´Â ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê¿Í Java ÄÄÆÄÀÏ ´ÜÀ§ÀÔ´Ï´Ù.

ÀÌ·¯ÇÑ ¿ä¼Ò´Â ÇØ´ç ¼Ò½º Äڵ带 °¡Áö°í Àֱ⠶§¹®¿¡ ISourceReference ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿ä¼Ò°¡ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʿ¡¼­ ¼±ÅõǸé ÇØ´ç ¼Ò½º ÄÚµå´Â Java ÆíÁý±â¿¡ Ç¥½ÃµË´Ï´Ù.

Java ¿ä¼Ò ¹× ÀÚ¿ø

´ëºÎºÐÀÇ Java ¿ä¼Ò´Â ÀÛ¾÷°ø°£ÀÇ ÀÏ¹Ý ÀÚ¿ø¿¡ ÇØ´çµË´Ï´Ù. JavaCore Ŭ·¡½º´Â ÀÏ¹Ý ÀÚ¿ø¿¡¼­ Java ¿ä¼Ò¸¦ ÀÛ¼ºÇÒ ¶§ ½ÃÀ۵Ǵ ÁöÁ¡ÀÔ´Ï´Ù. ´ÙÀ½ ÄÚµå ½º´ÏÆêÀº ÇØ´ç ÀÚ¿ø¿¡¼­ Java ¿ä¼Ò¸¦ °¡Á®¿À´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

private void createJavaElementsFrom(IProject myProject, 
    IFolder myFolder, IFile myFile) {

    IJavaProject myJavaProject = JavaCore.create(myProject);
    if (myJavaProject == null)
        // the project is not configured for Java (has no Java nature)
        return;

    // get a package fragment or package fragment root
    IJavaElement myPackageFragment = JavaCore.create(myFolder);

    // get a .java (compilation unit), .class (class file), or
    // .jar (package fragment root)
    IJavaElement myJavaFile = JavaCore.create(myFile);
}

JavaCore´Â ¼Ò½º ÄÚµå¿Í ¶óÀ̺귯¸®¸¦ ã´Â À§Ä¡¿Í Ãâ·Â 2Áø(.class) ÆÄÀÏÀ» »ý¼ºÇÏ´Â À§Ä¡¸¦ Æ÷ÇÔÇÏ¿© Java Ŭ·¡½º °æ·Î¸¦ À¯ÁöÇÏ´Â µ¥¿¡µµ »ç¿ëµË´Ï´Ù.

ÀÏ¹Ý ÇÁ·ÎÁ§Æ®¿¡¼­ Java ÇÁ·ÎÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¶§ JavaCore´Â ÇÁ·ÎÁ§Æ®°¡ Java ¼Ó¼ºÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù. JDT Ç÷¯±×ÀÎÀº ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀ» »ç¿ëÇÏ¿© Java ÀÛµ¿À» °¡Áöµµ·Ï ÇÁ·ÎÁ§Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¼Ó¼º(org.eclipse.jdt.core.javanature)Àº "»õ Java ÇÁ·ÎÁ§Æ®" ¸¶¹ý»ç°¡ ÇÁ·ÎÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¶§ ÇÁ·ÎÁ§Æ®¿¡ ÇÒ´çµË´Ï´Ù. ÇÁ·ÎÁ§Æ®¿¡ Java ¼Ó¼ºÀÌ ±¸¼ºµÇ¾î ÀÖÁö ¾Ê´Â °æ¿ì ÇÁ·ÎÁ§Æ® ÀÛ¼ºÀ» ¿äû¹ÞÀ» ¶§ JavaCore´Â ³ÎÀ» ¸®ÅÏÇÕ´Ï´Ù.

Java ÇÁ·ÎÁ§Æ®¿Í ´Ù¸¥ Á¡Àº ¹«¾ùÀԴϱî? Java ÇÁ·ÎÁ§Æ®´Â Ŭ·¡½º °æ·Î¸¦ ".classpath" ÆÄÀÏ¿¡ ±â·ÏÇϰí Java ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¸¦ ÇÁ·ÎÁ§Æ®ÀÇ ºôµå ½ºÆå¿¡ Ãß°¡ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì Java ÇÁ·ÎÁ§Æ®°¡ ÀÏ¹Ý ÇÁ·ÎÁ§Æ®À̹ǷΠÇ÷¯±×Àο¡ ÀÇÇØ ´Ù¸¥ ¼Ó¼º(¹× ´Ù¸¥ ÁõºÐ ºô´õ)À¸·Î ±¸¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·ÎÁ§Æ®¸¦ °íÀ¯ÀÇ ÀÛµ¿°ú Java ÀÛµ¿À¸·Î ±¸¼ºÇÏ´Â Ç÷¯±×ÀÎÀº "»õ Java ÇÁ·ÎÁ§Æ®" ¸¶¹ý»ç ÆäÀÌÁö¸¦ »ç¿ëÇÏ¿© Java ¼Ó¼ºÀ» ÀÚüÀÇ »ç¿ëÀÚ Á¤ÀÇ ¼Ó¼ºÀ̳ª ÀÛµ¿»Ó ¾Æ´Ï¶ó ÇÁ·ÎÁ§Æ®¿¡µµ ÇÒ´çÇÕ´Ï´Ù.

IJavaModelÀº Java ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀ» Áö´Ñ ÀÛ¾÷°ø°£ÀÇ ¸ðµç ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ »óÀ§·Î °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù(±×·¯¹Ç·Î IJavaProject·Î ó¸®µÉ ¼ö ÀÖÀ½.)