Google Goyave est une fantastique bibliothèque, il n'y a pas de doute à ce sujet. Cependant, elle est implémentée en Java et souffre de toutes les restrictions que cela implique:
- Immuable interface de collecte dans la bibliothèque standard
- Pas de lambda littéraux (fermetures), donc il y a un peu lourd passe-partout à travers le SAM types de nécessaires pour, par exemple, les prédicats
- beaucoup de chevauchement dans le type de spécifications, en particulier là où les génériques sont impliqués
La goyave a également exister dans la présence de Java standard de la collection de la bibliothèque, de sorte qu'il est rare qu'une 3ème partie les bibliothèques exposent goyave-compatible littéraux de fonction ou de faire usage de goyave spécifiques à des types de collection. Cela provoque une mauvaise adaptation d'impédance pour chaque tiers de la bibliothèque que vous utilisez. Par exemple, vous serez généralement voulez convertir retourné collections de ces bibliothèques à la appropriée de goyave immuable de la collection, surtout si vous travaillez dans un environnement multithread.
Scala collections ont un design qui est beaucoup mieux intégré dans la langue, vous trouverez largement utilisé tout au long de la scala de la bibliothèque standard et à la 3ème partie des produits mis en œuvre en Scala. Scala collections sont aussi immuables par défaut, si vous vous retrouvez avec beaucoup plus sûr de code qui ne nécessite pas une couche supplémentaire de protection de l'emballage.
Si vous pouvez utiliser Scala, puis le faire, il a de nombreux avantages au-delà des collections cadre. Si vous devez utiliser Java, la Goyave est un bon choix, surtout étant donné que la Scala collections ne sont pas particulièrement facile à utiliser, sans les fonctionnalités de langage que la Scala offre.
Dans un projet mixte, la Goyave, les collections sont parfaitement utilisables à partir de l'intérieur de la Scala, mais la langue fournit également des mécanismes vous permettant d'utiliser Java collections (y compris la Goyave, qui exposent les mêmes interfaces) comme s'ils étaient Scala propres collections.