Подтвердить что ты не робот

Какие части экосистемы и языка Java должны разработчик научиться максимально использовать возможности Scala?

Многие из доступных ресурсов для обучения Scala предполагают некоторый фон в Java. Это может оказаться сложным для тех, кто пытается изучить Scala без фона Java.

Каковы некоторые Java-представления, о которых должен знать новый разработчик Scala, когда они изучают язык?

Например, полезно знать, что такое CLASSPATH, какие параметры командной строки java и т.д.

4b9b3361

Ответ 1

Это действительно отличный вопрос! Я никогда не думал о людях, изучающих Java, чтобы они могли легче учиться Scala...

Помимо всех основ, таких как циклы for и т.д., изучение Java Generics может быть действительно полезным. Эквивалент Scala намного эффективнее (и намного сложнее), чем Java Generics. Возможно, вам захочется выяснить, где находятся пределы Java Generics, а затем в каких случаях конструкторы типов Scala могут использоваться для преодоления этих ограничений. На более базовом уровне важно знать, почему необходимы Generics и как Java является строго типизированным языком.

Java позволяет вам иметь несколько конструкторов для одного класса. Это знание будет бесполезным, если вы узнаете Scala, потому что Scala имеет другой способ, который позволяет вам предлагать несколько методов для создания экземпляров класса. Таким образом, вы не должны глубоко заглядывать в эту концепцию Java.

Вот несколько понятий, которые сильно отличаются между Java и Scala. Итак, если вы изучите концепции Java, а затем захотите узнать эквивалент в Scala, вы должны знать, что эквивалент Scala так сильно отличается от версии Java, что типичный разработчик Java будет испытывать трудности с адаптацией к мышлению Scala. Тем не менее, обычно это помогает сначала привыкнуть к Java-способу, потому что обычно проще и легче учиться. Я лично предпочитаю думать о Java как вводном курсе, а Scala является про-версией.

  • Концепция мутируемых Java-версий void Scala изменяемая/неизменяемая дифференциация
  • static методы (Java) против одиночных объектов (Scala)
  • for петли
  • Оператор Java return по сравнению с Scala функциональным стилем ( "каждое выражение возвращает значение" )
  • Использование Java null для "нет значения" по сравнению с Scala более явным Option type
  • импорт
  • Java switch vs. Scala match

И вот список вещей, которые вы, вероятно, будете использовать из стандартной библиотеки Java, даже если вы работаете в Scala:

  • IO
  • GUI (Scala имеет оболочку для Swing, но эй)
  • URL, URI, файлы
  • Дата
  • таймеры

И, наконец, некоторые из функций Scala, которые не имеют прямого эквивалента в Java или стандартной библиотеке Java:

  • перегрузка оператора
  • implicits и неявные преобразования
  • несколько списков аргументов /currying
  • анонимные функции/функции как значения
  • актеры
  • Потоки
  • Scala сопоставление образцов (которые скалы)
  • черты
  • вывод типа
  • for понимание
  • удивительные операции с коллекциями, такие как fold или map

Конечно, все списки неполны. Это только мой взгляд на то, что важно. Надеюсь, это поможет.

И, между прочим: вы должны определенно знать о пути класса и других основах JVM.

Ответ 2

Стандартная библиотека, прежде всего, потому что то, что Scala имеет больше всего с Java.

Вы также должны получить базовую идею синтаксиса Java, потому что многие книги в конечном итоге сравнивают что-то в Scala с чем-то на Java. Но кроме платформы и некоторых библиотек, они полностью отличительные языки.

Есть несколько тривиальных соглашений, передаваемых от одного к другому (например, параметры командной строки), но когда вы читаете книги и учебные пособия по Scala, вы должны выбирать их, как вы идете, независимо от предыдущего опыта Java.

Ответ 3

Серия " Scala для Java Refugees" может дать некоторые указания на типичные темы Java, которые вы должны знать, и как они переводятся в Scala.
Например, самая основная функция main() Java, которая переводится в черту Application, как только считается вредной, и теперь улучшено (для Scala 2.9 в любом случае).