Какие части Java-экосистемы и языка должен освоить разработчик, чтобы максимально использовать Scala? - PullRequest
20 голосов
/ 20 января 2011

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

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

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

Ответы [ 3 ]

9 голосов
/ 20 января 2011

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

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

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

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

  • Концепция изменчивой коллекции Java и изменчивое / неизменяемое дифференцирование Scala
  • static методы (Java) и одноэлементные объекты (Scala)
  • for петли
  • Java return оператор против функционального стиля Scala («каждое выражение возвращает значение»)
  • Использование Java null для "без значения" против более явного Option типа
  • импорт
  • Java switch против Scala match

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

  • IO
  • GUI (в Scala есть оболочка для Swing, но эй)
  • URL, URI, файлы
  • дата
  • Таймеры

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

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

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

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

4 голосов
/ 20 января 2011

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

4 голосов
/ 20 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...