Java 7 버전의 JDK에서 존재하지 않는 API 들을 Guava
가 보완해주고 있었기 때문에, Guava
의 어떤 기능들은 Java 7 애플리케이션에서 사용하기 분명 효과적이었습니다.
하지만 Java 8에 와서는 이런 한계들을 수정했습니다.
Java 8 버전으로 마이그레이션 하시거나, Java 8을 이용해 새로운 프로젝트를 시작하신다면, Guava
의 API를 사용하는 것 보다 Java 8 API를 우선시해서 사용하는 것을 (유지 보수 관점에서) 추천드립니다.
그래야 개발자는 두 API를 사용하는 방법을 배울 필요가 없고, 표준 API를 지키면 됩니다.
Java 9에 와서는 더 많은 효과적인 메소드들이 표준 자바 라이브러리에 생겼습니다. 따라서 Java 9 버전 이상을 사용하신다면, 마찬가지로 표준 메소드들을 사용하는게 우선시되어야 합니다.
이 규칙은 다음과 같은 Guava API
를 사용하는 경우 동작합니다.
참고: 이 규칙은 프로젝트의 sonar.java.source의 값이 8보다 낮은 경우(java8) 검사하지 않습니다.
Guava API | Java 8 API |
---|---|
com.google.common.io.BaseEncoding#base64() | java.util.Base64 |
com.google.common.io.BaseEncoding#base64Url() | java.util.Base64 |
com.google.common.base.Joiner.on() | java.lang.String#join() or java.util.stream.Collectors#joining() |
com.google.common.base.Optional#of() | java.util.Optional#of() |
com.google.common.base.Optional#absent() | java.util.Optional#empty() |
com.google.common.base.Optional#fromNullable() | java.util.Optional#ofNullable() |
com.google.common.base.Optional | java.util.Optional |
com.google.common.base.Predicate | java.util.function.Predicate |
com.google.common.base.Function | java.util.function.Function |
com.google.common.base.Supplier | java.util.function.Supplier |
com.google.common.io.Files.createTempDir | java.nio.file.Files.createTempDirectory |
Guava API | Java 9 API |
---|---|
com.google.common.collect.ImmutableSet#of() | java.util.Set#of() |
com.google.common.collect.ImmutableList#of() | java.util.List#of() |
com.google.common.collect.ImmutableMap#of() | java.util.Map#of() or java.util.Map#ofEntries() |
같이보면 좋은 자료
- https://bugs.openjdk.java.net/browse/JDK-8153414
- https://bugs.openjdk.java.net/browse/JDK-8154077
If you like SONARKUBE, don’t forget to give me a star.