36 votes

Jouer 2.0+Java vs Jouer 2.0+Scala?

Je pense à propos de la migration de jouer 2.0 après que la partie 1.2. Une chose qui me dérange, c'est que les gens disent Scala est plus "préféré" pour un jeu 2.0 de l'application. Je sais que les différences de plus de 1.2 et 2.0, mais je ne suis pas sur si il y a des différences entre le Jeu 2.0 avec Java et Jouer 2.0 avec Scala

Il y a donc des questions dans mon esprit:

  • Est-il quelque chose que je ne peux pas faire avec java sur scala dans un Jeu 2.0 application?
  • Quels avantages ai-je si je commence à apprendre et à utiliser scala dans un jouer 2.0 de l'application?

25voto

kapep Points 8925

Je viens de terminer un prototype à l'aide de Jouer avec Java et maintenant j'envisage d'apprendre Scala juste pour que je puisse passer pour le développement ultérieur.

Ce n'est pas seulement le Java vs Scala de discussion - le problème que je vois avec le Jeu-cadre est qu'il oblige Scala idiomes sur Java. Un exemple tiré de la documentation à propos de l'appel de plusieurs services web:

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"));
              }
            }
          );
        }
      }
    )
  );
}

Il fonctionne, mais n'a pas l'air comme des classiques de Java. Ces parenthèses vraiment me faire peur. Eclipse ne sait jamais ce que les génériques j'ai besoin ou envie de l'utiliser, j'ai toujours eu à les choisir manuellement.

Notez également que dans la documentation il a l'air assez en supprimant @Override des annotations, en utilisant seulement deux espaces pour l'indentation et de l'ensemble de choix d'un exemple très simple sans validation ou de reprise sur erreur, donc ils n'utilisent pas trop plusieurs lignes. Dans la pratique, j'ai fini avec un bloc illisible d'une horrible Java Scala-abomination juste pour obtenir des données à partir d'un autre service.

Je ne suis même pas sûr que vous pourriez configurer un formateur de code à la sortie comme ça, sans déconner autres code complètement.

Malheureusement, je ne peux pas trouver un exemple de combinaison de réponses à Scala. À moins d'appel unique des services web en Scala est beaucoup plus court et plus facile à lire.

12voto

nico_ekito Points 13977

Autant que je sache, il est préférable d'aller avec Scala, car il offre plus de fonctionnalités.

Par exemple (corrigez-moi si je me trompe), vous pouvez utiliser directement les Iteratees avec Scala (aka réactif de programmation), mais je ne sais pas comment l'atteindre qu'avec Java.

Aussi, l'API Java de Jeu est une couche supérieure dans le Jeu, l'architecture, le noyau est écrit avec Scala; donc, si vous voulez maigre ce qui se passe à l'intérieur, aller avec Scala.

Et notez également que vous pouvez mélanger Java et Scala dans la même pièce de projet, de sorte que vous pouvez passer en douceur à la Scala.

4voto

sleeplessnerd Points 2804

J'étais de nouveau à Jouer et vient d'écrire un petit-et moyennes Projet avec le Java côté d'elle.

Ça marche et c'est puissant, mais beaucoup de Fonctionnalités semblent juste être très Scala et centrée sur la prise en charge de Java est sous la normale. L'API Java Doc est pratiquement inexistante, ce qui enlève un peu de réconfort dans l'IDE (Ide, - je vous le recommande). L'intégration dans le monde Java n'est pas très "naturel" (SBT..), Elle ne construit pas comme une guerre ou d'un module maven (mais il semble y avoir des plugins pour ce faire). Vous perdez les avantages de l'existant, l'outillage Java.

Les concepts qui se différencient Jouer de l'autre les Cadres de presque tous semblent être scala natif de Java et de seconde.

Je suis tombé sur quelques bugs et de bizarreries et j'ai toujours de la Scala code que j'ai eu à lire et à comprendre pour le fixer ou de le contourner. (Actions, RequestBody trucs, Async, des routes, des modèles implicites et ainsi de suite)

De sorte que le Java côté des choses, se sent juste très deuxième niveau pour moi, même s'ils sont clairement de faire un effort pour être tout aussi bonne.

Maintenant, après le Projet, je dirais que c'est très utilisable et ce serait même l'utiliser à nouveau (en Java).

3voto

GreenAsJade Points 1729

Quels avantages ai-je si je commence à apprendre et à utiliser scala dans un jeu 2.0 application?

Comme djangofan commenté, lorsque vous faites une recherche google pour Jouer aider, vous obtenez des exemples en Scala.

Est-il quelque chose que je ne peux pas faire avec java sur scala dans un Jeu 2.0 application?

Cependant, je n'ai pas encore (encore un débutant) trouver un équivalent de Ebean pour Scala. La Scala exemples que j'ai trouvé tout directe d'utilisation de SQL pour la persistance. Où est la base de données abastraction?

Depuis je n'ai pas trouvé une abstraction de base de données pour Jouer avec Scala, je continue avec Java...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X