Две вещи:
- 99% кода Java можно выразить в Scala
- Вы можете писать проекты, которые поддерживают смешанную компиляцию Java + Scala. Ваш код Scala может вызывать ваш код Java, а ваш код Java может вызывать ваш код Scala. (Если вы хотите сделать последнее, я предлагаю определить интерфейс в Java, а затем просто реализовать его в Scala. В противном случае вызов кода Scala из Java может стать немного уродливым.)
Так что ответ таков: какие бы части вы ни хотели. Ваш код Scala не обязательно должен быть чисто функциональным. Ваш код Scala может вызывать библиотеки Java. Так что практически все части, которые вы можете написать на Java, вы можете написать на Scala.
Теперь несколько практических соображений. При первом запуске Scala некоторые люди выбирают относительно изолированные, не критически важные части своей программы для написания в Scala. Модульные тесты - хороший кандидат, если вам нравится такой подход.
Если вы знакомы с Java и изучали Haskell в прошлом, я предлагаю рассматривать Scala как «лучшую Java». По сути, Scala компилирует в байт-код JVM, который очень и очень похож на то, что выводит Java. Единственное отличие состоит в том, что Scala более «продуктивен»: он производит больше байт-кода на строку кода, чем Java. Scala имеет много общего с Haskell (первоклассные функции, for-comp понять - как do-нотация Haskell, ограниченный вывод типов), но она также очень отличается (по умолчанию она не ленивая, она не чистая). Таким образом, вы можете использовать некоторые из ваших идей из Haskell, чтобы вдохновить ваш стиль Scala, но «под капотом» это все байт-код Java.