По-моему, они более или менее одинаковы.
Это точно так же. Компилятор Scala компилируется в байт-код Java, так же, как компилятор Java также компилируется в байт-код JVM. Следовательно, scala.Byte
приведет к тому же байт-коду, что и использование java.lang.Byte
.
Каковы причины, по которым существует две реализации?
«Scala работает на JVM, поэтому стеки Java и Scala можно свободно смешивать для полной плавной интеграции». Так Scala описывается на https://www.scala -lang.org / . Так что на самом деле в Scala нет двух реализаций. Вы только что получили возможность использовать вещи из Java, если хотите / должны.
Есть ли различия в производительности или функциональности
Как уже упоминалось выше, вы можете считать их на уровне байт-кода равными. Тем не менее, они, по крайней мере, разные в использовании. Если вы напишите свой код Scala, как в Java, вы можете ожидать такой же производительности.
Какой из них рекомендуется использовать?
Если можете, используйте реализацию Scala. Просто потому, что вы не покинете «мир Scala» и, следовательно, сможете воспользоваться потенциальными улучшениями, сделанными языком.