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

Play 2.0 + Java против Play 2.0+ Scala?

Я подумываю о переносе игры 2.0 после игры 1.2. Меня беспокоит то, что люди говорят, что Scala является более предпочтительным для приложения 2.0. Я знаю различия по сравнению с 1.2 и 2.0, но я не уверен, есть ли различия между Play 2.0 с Java и Play 2.0 с помощью Scala

Итак, у меня есть вопросы:

  • Есть ли что-то, что я не могу сделать с java над Scala в Play 2.0?
  • Какие преимущества у меня есть, если я начну учиться и использовать Scala в play 2.0?
4b9b3361

Ответ 1

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

Это не просто обычное обсуждение Java и Scala - проблема, поскольку я вижу это с платформой Play, заключается в том, что она заставляет Scala идиомы на Java. Пример из документации о вызов нескольких веб-сервисов:

public static Result feedComments(String feedUrl) {
  return async(
    WS.url(feedUrl).get().flatMap(
      new Function<WS.Response, Promise<Result>>() {
        public Promise<Result> apply(WS.Response response) {
          return WS.url(response.asJson().findPath("commentsUrl").get().map(
            new Function<WS.Response, Result>() {
              public Result apply(WS.Response response) {
                return ok("Number of comments: " + response.asJson().findPath("count"));
              }
            }
          );
        }
      }
    )
  );
}

Он работает, но не похож на обычную Java. Эти круглые скобки выглядят очень страшно. Даже Eclipse запутывается и никогда не знает, какие дженерики мне нужны или хотят использовать - мне всегда приходится выбирать их вручную.

Также обратите внимание, что в документации они сделали это довольно красивым, удалив аннотации @Override, используя только два пробела для отступов и в целом выбирая очень простой пример без проверки или восстановления ошибок, поэтому они не используют слишком много строк. Я даже не уверен, что вы можете настроить форматировщик кода, чтобы выводить его таким образом, не перепутав другой код полностью.

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

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

Ответ 2

AFAIK, лучше пойти с Scala, потому что он предлагает больше функциональности.

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

Кроме того, Java API игры является верхним уровнем в архитектуре Play, ядро ​​написано с помощью Scala; поэтому, если вы хотите опираться на то, что происходит внутри, перейдите к Scala.

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

Ответ 3

Я был новичком в Play и просто написал проект небольшого среднего размера со стороной Java.

Он работает и является мощным, но многие функции просто очень ориентированы на Scala, а поддержка Java - под-пар. Java API Doc практически не существует, что уберет некоторый комфорт в среде IDE (IntelliJ - я рекомендую его). Интеграция в Java-мире не очень "естественна" (SBT..), она не строится как модуль войны или maven (но, похоже, для этого есть плагины). Вы потеряете преимущества существующего инструмента Java.

Понятия, которые различают Play от других Frameworks, почти кажутся Scala native и Java second.

Я наткнулся на некоторые ошибки и причуды, и я всегда получал код Scala, который мне приходилось читать и понимать, чтобы исправить или обойти его. (Действия, материал RequestBody, Async, маршруты, implicits шаблона и т.д.)

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

Теперь, после проекта, я бы сказал, что он очень полезен и даже будет использовать его снова (на Java).

Ответ 4

Какие преимущества у меня есть, если я начну учиться и использовать scala в игре 2.0?

Как отметил djangofan, когда вы используете Google для справки Play, вы можете привести примеры в Scala.

Есть ли что-то, что я не могу сделать с java над scala в Play 2.0 приложение?

Однако я еще не (новичок) нашел эквивалент Ebean для Scala. В примерах scala я нашел, что все используют прямой SQL для сохранения. Где абстракция базы данных?

Так как я не нашел абстракции базы данных для Play с помощью Scala, я продолжаю использовать Java...