J'ai été libéré de la laisse J2EE l'année dernière, je voulais faire quelque chose de nouveau après 12 ans de Java dans l'entreprise à construire de très grands systèmes pour certaines des plus grandes sociétés du monde.
J'avais essayé Ruby on Rails dans le passé. Après avoir construit quelques exemples d'applications, je n'ai pas aimé la sensation qu'il procure ni le fait que je doive écrire une tonne de tests unitaires pour couvrir des choses qui sont normalement faites par un compilateur.
Groovy sur Grails était mon prochain port d'escale. Je dois dire que j'aime bien ce système, mais il souffre des mêmes problèmes de typage dynamique que ROR. Ne vous méprenez pas, je ne dénigre pas Grails, qui est un excellent framework, et je continuerai à l'utiliser. Chacun d'entre eux a sa place, selon moi.
J'ai ensuite sauté sur Scala et j'ai maintenant construit une application hybride basée sur Scala et Spring MVC. Au début, il est difficile de travailler avec Scala, mais cela devient plus facile et plus productif au fur et à mesure que l'on y consacre du temps. J'ai atteint un point de basculement où je veux maintenant investir du temps dans Lift également.
La combinaison des livres "Programming in Scala" et "Beginning Scala" de David Pollak est un bon moyen d'apprendre le langage, ce dernier ayant un caractère moins académique.
Scala est encore jeune et a encore du chemin à parcourir. Je pense qu'il a un brillant avenir et je vois que la dynamique s'accélère déjà. Récemment, l'un des créateurs du langage Groovy a déclaré dans un billet de blog qu'il n'aurait jamais pris la peine de concevoir Groovy si Scala avait existé à l'époque.
Je pense qu'un peu plus de travail sur une meilleure intégration de l'API Java donnera à Scala le coup de pouce dont il a besoin pour gagner de nouveaux adeptes. L'intégration de base est déjà là mais je pense qu'elle pourrait être un peu plus soignée.
Oui, le support IDE existe mais il est basique pour le moment. Le support de refactoring puissant d'Intellij n'est pas encore là et cela me manque beaucoup. Le support compilateur + IDE avec un mélange d'autres plugins n'est pas encore mature. J'obtiens parfois des erreurs de compilation internes très étranges causées par la façon dont Scala s'assoit avec l'amélioration de JDO pour le moteur d'application Goggle. Il s'agit toutefois de petites choses qui peuvent être facilement corrigées. L'adaptation précoce de nouvelles technologies et de nouveaux langages s'accompagne toujours d'un peu de douleur. Mais ce peu de douleur peut produire un grand plaisir à l'avenir.
Si je regarde les capacités de Scala par rapport aux débuts de Java, il est à des kilomètres devant. Lorsque je suis passé du C++ à Java, la JVM n'était pas encore prête en termes d'évolutivité. Il y avait de nombreux dumps bizarres de noyaux de JVM sur différents systèmes d'exploitation. Tout cela a maintenant été corrigé en Java et la JVM est solide comme un roc. Scals fonctionne dans la JVM, ce qui lui donne une longueur d'avance sur l'intégration des plates-formes natives. Il se tient sur les épaules de géants !
Après des années de construction et de support d'applications d'entreprise, je vote pour un langage où un compilateur peut attraper la plupart des bogues non fonctionnels avant même que les tests unitaires ne soient construits. J'aime le contrôle de type mélangé à la puissance de la programmation fonctionnelle. J'aime le fait de faire du OO++.
Je pense que la communauté des développeurs décidera si Scala est l'avenir ou non. L'inconvénient d'adopter Scala maintenant serait qu'il ne prenne pas son élan et ne s'adapte pas. Il serait très difficile de maintenir une base de code Scala avec très peu de développeurs Scala. Cependant, j'ai vu Java sortir des ateliers clandestins et entrer dans l'entreprise pour remplacer le C++, et tout cela a été poussé de bas en haut par la communauté des développeurs. L'avenir nous dira ce qu'il en est pour Scala, mais pour l'instant, il a mon vote.