자바 오픈소스 라이브러리 사용시 jdk 버전 관련해서 질문 남겨요.

2017-06-20 12:57

안녕하세요. commons-io 라이브러리 사용하면서 궁금한점이 있어서 질문 남깁니다. 현재 저는 jdk 1.6환경에서 개발을 하고 있는데요.

FileUtils 클래스의 메소드들을 살펴보다 보니 FileUtils.isSymlink(file) 기능이 있더라구요. 아래는 소스 구현부입니다.

/**
* Determines whether the specified file is a Symbolic Link rather than an actual file.
* <p>
* Will not return true if there is a Symbolic Link anywhere in the path,
* only if the specific file is.
* <p>
* When using jdk1.7, this method delegates to {@code boolean java.nio.file.Files.isSymbolicLink(Path path)}
*
* <b>Note:</b> the current implementation always returns {@code false} if running on
* jkd1.6 and the system is detected as Windows using {@link FilenameUtils#isSystemWindows()}
* <p>
* For code that runs on Java 1.7 or later, use the following method instead:
* <br>
* {@code boolean java.nio.file.Files.isSymbolicLink(Path path)}
* @param file the file to check
* @return true if the file is a Symbolic Link
* @throws IOException if an IO error occurs while checking the file
* @since 2.0
*/
public static boolean isSymlink(final File file) throws IOException {
if (file == null) {
    throw new NullPointerException("File must not be null");
}
return Files.isSymbolicLink(file.toPath());
}

여기서 궁금한 점이 jdk 1.6 환경에서도 commons-io라이브러리의 FileUtils.isSymlink(file) 사용하는데 별 문제가 없는지요? isSymlink메소드 구현부의 Files 클래스가 jdk 1.7부터 지원하는 걸로 알고 있는데요. 이클립스 환경에서 jdk 1.6 설정하고 테스트 돌려보니 에러 없이 잘 돌아가네요. 라이브러리를 사용하는 사용자 입장에서는 jdk버전 상관없이 그냥 사용만 하면 되는 건가요?

평소에 라이브러리를 사용법 위주로 사용만 하다가 commons-io 소스 내려받아서 테스트 소스 하나씩 돌려가면서 분석하다보니 공부가 많이 되네요.

그리고 오픈 소스 중에 초보자들도 분석해 볼만한 오픈소스가 있다면 추천 부탁드려요. 감사합니다.

2개의 의견 from SLiPP

2017-06-20 13:49

주석 내용을 보면 jdk 1.6에서 사용할 수 있지만 항상 false가 반환된다고 나와 있네요.

다른 오픈 소스를 참고하는 것도 좋지만 jdk 자체 소스 코드도 공개하기 때문에 jdk 소스 코드를 참고하는 것도 좋아보이네요. 그나마 작은 규모는 지금과 같은 apache commons와 같은 util 성격의 라이브러리 코드가 작고 보기 좋을 것 같네요.

의견 추가하기

연관태그

← 목록으로