Java 기능이 Guava보다 우선시되어야 합니다.

 

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. :star2:

원문으로 바로가기

Star This Project