Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Scala를 Java와 같이 사용하기

Scala에서 Scala클래스 사용하기
Scala 스크립트내에서 Scala클래스를 사용할때는 컴파일되지 않은 상태에서도 사용이 가능하며 클래스명.scala 혹은 클래스명.class 파일에서 해당클래스를 찾을 수 있으며 이미 찾은 파일내에 다른 클래스가 있어도 사용이 가능합니다. 클래스파일이 같은 폴더에 있지 않다면 scala -sourcepath 폴더명:. 스칼라파일명.scala 처럼 소스파일의 위치를 지정해서 사용이 가능합니다.

스칼라스크립트가 아닌 클래스내에서 다른 클래스를 사용하려면 해당 클래스는 반드시 컴파일이 되어 있어야 하고 scalac -d . -classpath 클래스파일위치 스칼라파일명.scala 명령을 통해서 컴파일 할 수 있습니다. ( -d는 캄파일된 파일을 둘 위치를 지정합니다.)



Scala에서 Java클래스 사용하기
Scala에서 JDK의 클래스를 사용할 때는 java.lang는 그냥 사용하고 그 외에는 import하면 사용할 수 있습니다. 그외의 자바클래스에 대해서도 import로 사용하고 컴파일(scalac)과 실행(scala)시에 -classpath 로 클래스파일의 디렉토리를 지정해서 사용할 수 있습니다.



Java에서 Scala클래스 사용하기
자바에서 스칼라클래스를 사용할 때는 scala코드는 scalac로 자바코드는 javac로 컴파일 한 후 java -classpath \ /스칼라SDK경로/lib/scala-library.jar:classes 와 같이 간단히 클래스패스에 scala-library.jar를 추가하여 자바파일 로 실행할 수 있습니다. 하지만 클로저같이 자바에서 지원되지 않는 기능을 사용할 메서드는 사용할 수 없습니다. Trait의 경우에는 구현부가 없는 Trait는 Interface와 동일하기 때문에 Java에서도 인터페이스처럼 사용할 수 있지만 구현부가 섞여있는 Trait의 경우에는 사용상에 어려움이 있습니다.


싱클톤 오브젝트와 컴페니언 오브젝트
Scala는 Singleton Object나 Companion Objec를 Java에서는 static메서드를 사용하는 Singleton Class(클래스명 뒤에 $ 심폴을 붙힌 클래스로 objext Example는 Example$ 클래스가 됩니다.)로 컴파일 하기 때문에 Java에서는 Static메서드를 사용하는 것과 동일하게 사용할 수 있습니다. 컴패니언 오브젝트를 위해서는 클래스명$ 사용해서 접근하면 컴페니언 클래스에 대해서는 클래스명을 그대로 사용하면 됩니다.

예외의 경우에는 스칼라는 throws 절이 없고 메서드에서 예외를 바로 던질 수 있기 때문에 Java에서 이러한 클래스를 사용하려면 오류가 생기기 때문에 이러한 클래스는 스칼라에서 @thorws을 사용해서 이 문제를 피하여야 합니다.
2010/08/23 01:57 2010/08/23 01:57