47 votes

Quelles sont vos expériences en développement à Scala / Lift?

J'ai entendu beaucoup de bonnes choses au sujet de la Scala et de l' Ascenseur framework Web récemment, en particulier à partir de Foursquare, les gars de là, je pourrais utiliser cette technologie dans mes prochains projets.

  • Est-ce que vous Scala/Ascenseur Développeurs?
  • Quelle a été votre expérience de développement sur cette plate-forme et quels sont ses avantages par rapport à Ruby on Rails ou Python/Django?
  • Voyez-vous cela comme une solution de technologie et de "quelque chose à garder un oeil sur" pour les deux prochaines années?

Est-il utile? Partagez vos expériences sur la Scala/Plateforme élévatrice.

28voto

soc Points 10868
  1. Je suis actuellement en train de faire la plupart de mes choses dans la Scala droit maintenant. (Je dois préciser que je pense que la Scala est la meilleure chose depuis l'invention de la roue, il y a quelques temps. :-D )

    À mon humble avis c'est la seule langue qui permet réellement les gens à choisir la meilleure approche pour une tâche sans une certaine inutile fossé entre les (plus) et orientée objet (plus) les approches fonctionnelles.

    En regardant les langues qui a coûté quelque chose comme ça avant, je pouvais voir les deux concurrents de la langue de la conception des camps:

    • Ceux de l'orientée objet côté qui a vu que la programmation fonctionnelle gagné du terrain ces derniers temps et de la pensée "eh Bien, nous ne comprenons pas vraiment que fonctionnelle thingie, mais nous allons ajouter un peu de fantaisie syntaxiques de sucre dans notre langue, nous pouvons affirmer qu'il est fonctionnel aussi!" (exemples: Java, Python)

    • Puis celles du côté fonctionnel, qui pensé "eh Bien, notre approche fonctionnelle est de loin supérieure à toute autre chose et qu'orientée objet non-sens est ennuyeux, mais mettons des mots-clés supplémentaires dans notre langue, qui fera de notre langue s'échapper des universités, pour sûr!" (exemples: F#, OCaml)

    Scala designers unifiée de nombreuses approches à venir des deux côtés et a créé une certaine bien-conçu de la langue, qui est - à mon humble avis - la plus grande différence à d'autres langues, qui a décidé de prendre le "Frankenstein" de l'approche de programmation langage de conception.

  2. Après avoir fait seulement de petites choses avec Ascenseur et seulement superficielle de l'expérience avec des Rails et Django, je dois admettre que la plupart du temps quand j'ai demandé pourquoi quelque chose dans l'Ascenseur travaillé différemment de ce que j'attendais, c'était dû au fait que mes attentes étaient entachées d'irrégularités et de l'Ascenseur approche supérieure.

    L'ascenseur est certainement pas "une introduction simple à la Scala", mais d'apprendre comment Soulever des œuvres a été aussi fructueuse que l'apprentissage de la Scala avant.

    La possibilité d'avoir un "nettoyage" de point de vue, sans aucune logique, c'est une grande amélioration par rapport à d'autres cadres qui a coûté la même, mais elle est insuffisante. Scala littéral XML support permet de vérifier le bien-formation de votre réponse: Le compilateur va prouver au moment de la compilation que vous n'émettent XML bien formé pour un client.

  3. L'ascenseur est une technologie viable et pour le moment la seule véritable approche si vous souhaitez créer des applications web qui regarder, sentir et se comporter comme des "vraies" applications de bureau sans avoir à écrire de fou quantités de code vous-même.

9voto

Chris Hagan Points 2280

Je travaille sur mon deuxième Ascenseur application pour le moment - il est très fortement dans l'Ascenseur sweet spot - très en temps réel, beaucoup de simultanéité.

Le premier que nous avons wimped après quelques jours de lutte avec la DB de la couche (c'est mieux maintenant, je suis amené à croire), et ensuite à Jouer/Scala à la place. Qui maximise la somme des connaissances de notre équipe, et rendent possible la réalisation de date limite. Mais la chaude du code de rechargement assez bien arrêté de passe une fois que notre projet a reçu d'assez grande taille (restent en cours d'exécution hors de la PermGen - c'est un problème permanent avec Scala compilation assez beaucoup n'importe où), et le manuel de jonglerie de choses comme appel de la méthode des paramètres et de l'emplacement de la sécurité dans des endroits différents dans le site a reçu assez encombrant. Nous avons été heureux quand il a été fait - de la même manière que j'ai tendance à trouver Rails 1, l'augmentation de la vitesse a diminué à mesure que le projet la taille augmente, et à la fin c'était tout aussi fastidieux et source d'erreurs comme le fait de travailler dans une Vélocité/Printemps/XML++ quoi que ce soit).

Cette fois, nous avons été engagés à l'élaboration de la façon dont l'Ascenseur est ce qu'il fait, et la bonne façon de faire les choses. Cela a entraîné beaucoup de navigation informelle, par le biais de la liste de diffusion (discussions qui sont en plusieurs versions anciennes sont encore souvent pertinentes), et surtout, une nouvelle éthique de l'équipe. Il a été nécessaire d'internaliser très fortement la devise:

"C'est un sentiment difficile et répétitif. Je parie qu'ils ont fait un moyen plus facile de faire cela."

La mesure de l'Ascenseur n'a jamais déçus. Je ne parle pas, par ailleurs, sur des choses comme le plan du site et de la liste de la concaténation de la syntaxe, vous DEVEZ avoir une assez bonne sur la poignée de la fonctionnelle de la Scala, ou vous ne serez pas en mesure de lire le code source ou même de configurer votre application.

Cela dit, il n'est pas fou IO monades ou quoi que ce soit, juste certaines des expressions communes que vous devez chercher dans quelques semaines de la Scala de toute façon.

Le problème le plus important pour nous a été une lente compiler cycle. Il faut environ 20 secondes pour jetty:run de notre projet, qui est un sentiment différent à Jouer qui (quand elle fonctionne) chaud compile tous vos trucs. D'autre part, nous avons chronométré que l'autre jour, lorsque l'un de nos développeurs se sont plaints à ce sujet, et cela a fonctionné que, bien que Jouer techniquement chaud compilé, la page a fallu 12 secondes pour se charger en Dev mode. Donc il n'y a pas une perte énorme, il se sent juste un peu lent à avoir à sauter à la ligne de commande.

L'ascenseur vous permet de faire des une grande, et il ya beaucoup d'endroits dans notre application, où (parce qu'il est disponible), nous avons dit "Oui, nous avons vraiment préférerait que mis à jour en direct immédiatement à tous les téléspectateurs de la page, au lieu de les découvrir plus tard qu'ils sont à jour (pensez à toutes les fois que vous avez affiché simultanément à quelqu'un, avec la même réponse). La COMÈTE est partout, il s'avère - ce n'est pas un spécialiste des cas d'utilisation, c'est la façon dont les choses devraient fonctionner. Et Soulevez le rend vraiment facile.

Nous aimons aussi la forte, en programmant configurable, modèle de sécurité - une fois que nous avons changé les mentalités "Nous avons à la liste blanche chaque emplacement, et précisant les conditions d'entrée", nous n'avons jamais vu une autre session problème - vous savez, ceux où l'on suppose que l'utilisateur aurait parcouru un certain chemin, et, donc, de savoir tout un tas de paramètres? Comme, un nom d'utilisateur valide et un domaine d'intérêt ou quoi? (Je suis peut être intentionnellement vague). Qui peut être l'un des maladroits choses à propos d'un stateful cadre, que vous allez vouloir avoir utilisable lorsque l'utilisateur accède à une page, au lieu de (par exemple) en exigeant que tous les états se laisse à chaque demande.

Mes plats à emporter à partir de ce regain de tir à l'Ascenseur:

Il en vaut la peine. Non seulement pour créer de l'application que vous essayez de construire, mais de construire l'application que vous ne saviez pas que vous aviez besoin.

Il y a beaucoup de casse-tête, mais pas beaucoup de code. Et quand il fonctionne, il fonctionne vraiment. Il est rapide et propre, et pour tous les miracles qu'il travaille entre le navigateur et le serveur, je n'ai jamais encore vu, il se confondre.

7voto

kajo Points 1937

Je suis le développement financière des entreprises d'application dans l'Ascenseur pour plus de 6 mois et j'ai été programmeur JAVA ancien. J'ai remarqué quelques points qui pourraient vous aider:

  1. J'écris perceptible moins de lignes de codes (bon exemple)

  2. Autour de l'Ascenseur il y a fort a très gentiment de la communauté. Ils essaient toujours d'apporter une réponse de fond. Je n'ai pas de mauvaise expérience. Même qu'ils sont ouverts à de nouvelles suggestions pour de nouvelles fonctionnalités dans l'Ascenseur. Ils ont approuvé deux de mes suggestions!

  3. Nouveau stable version mineure de l'Ascenseur est annoncé sur toutes les 6 à 8 semaines. Nouvelle étape est régulièrement toutes les deux semaines.

  4. L'ascenseur est excellent pour les applications web. Vous pouvez lire sur les sept principales caractéristiques de l'Ascenseur.

  5. Ascenseur ORM par défaut du module Mappeur n'est pas pour les grands et les avancées de la base de données des modèles avec beaucoup de clés étrangères et les contraintes. Nous avons dû utiliser Squeryl.

Je ne peux pas imaginer que j'ai pour revenir au code JAVA maintenant. Mais mon petit conseil est d'essayer de code de demande simple et vous verrez.

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