De zéro à Hello World à Scala

Scala est l’un des langages de programmation les plus attrayants du moment. Il y a beaucoup de battage médiatique autour de cela et les programmeurs du monde entier reconnaissent publiquement que c'est la prochaine grande chose possible dans la programmation. Voici pourquoi. Scala concerne la programmation fonctionnelle dans un contexte orienté objet. Il essaie de prendre le meilleur des deux mondes et de les combiner dans un langage très efficace, intelligent et relativement facile à comprendre. Il est actuellement le leader de la renaissance actuelle des langages de programmation fonctionnels.

J'ai récemment terminé le cours de Scala de Martin Odersky et j'ai eu beaucoup de difficulté à comprendre comment commencer. Vous savez, cette première étape lorsque vous souhaitez commencer à coder, mais vous ne savez pas quels outils sont à votre disposition, quel IDE utiliser ou quel framework de test unitaire choisir. Ce tutoriel traitera de vous, le nouveau venu de Scala, préparant votre environnement de développement pour vous permettre de démarrer plus facilement..


Les pièces du puzzle

Voici les pièces du puzzle dont nous allons parler dans cette leçon; n'hésitez pas à passer outre celles que vous connaissez déjà:

  • Outils de construction simples (SBT) - c'est l'outil qui génère des projets, dépendances, etc. pour Scala
  • NetBeans avec des plugins Scala - comment intégrer Scala à NetBeans
  • Bonjour le monde - nous allons créer notre premier fichier source Scala
  • Scalatest - le cadre de tests unitaires recommandé pour Scala

Nous prendrons chaque sujet de la liste et en discuterons au niveau débutant et nous verrons enfin comment toutes ces pièces fonctionnent ensemble..


Logiciels requis

Avant de commencer, assurez-vous que le dernier SDK Java est installé sur votre ordinateur. Étant donné que Scala s'exécute sur la machine virtuelle Java (JVM), le SDK est requis. Le reste des sujets de notre liste peut nécessiter le SDK Java, directement ou indirectement, il est donc bon d’avoir.

Vous ne ont pas besoin d'avoir Scala lui-même installé. Nous en reparlerons dans le prochain chapitre.


Les outils de construction simples de Scala (SBT)

Si vous êtes un développeur PHP, alors vous connaissez probablement Composer. Si vous êtes un gourou Ruby, vous connaissez et aimez Bundler. Si vous programmez dans une autre langue, je suis sûr qu’il existe également un gestionnaire de paquets..

SBT est similaire aux gestionnaires de paquets ci-dessus, mais si Composer requiert que PHP soit préinstallé de la même manière que Bundler a besoin de Ruby, Scala n'a pas besoin d'être installé sur le système avant de pouvoir utiliser SBT. En fait, la version spécifique de Scala que vous souhaitez utiliser pour votre projet peut simplement être spécifiée en tant que dépendance dans SBT. Vous pouvez vous demander comment cela est possible. Comme je l'ai mentionné précédemment, Scala fonctionne sur la machine virtuelle Java; fondamentalement, c'est juste une bibliothèque Java. Les packages pour Scala peuvent également être de simples fichiers .jar. SBT n’est donc en réalité qu’un programme Java. Vous avez seulement besoin de Java, que vous avez probablement déjà de toute façon.

Vous pouvez aborder l’installation de SBT de différentes manières. Pour des raisons multi-plateformes entre Linux, Mac et Windows, ma méthode préférée pour installer SBT est simplement de prendre l'archive, de la placer dans un répertoire, de l'extraire dans mon répertoire personnel et d'ajouter son chemin d'accès au système..

Un moyen indépendant de la plate-forme pour installer SBT

Téléchargez le dernier SBT stable à partir du référentiel officiel. Rechercher un dossier sans "Bêta" ou "R" ou "M" à la fin. Ce sera la version stable. Au moment d'écrire ce tutoriel, la dernière version stable est la 0.12.3..

L'archive contient un sbt répertoire à l'intérieur de celui-ci. Il suffit d'extraire ceci dans votre emplacement préféré. Je préfère que ce soit quelque part dans mon répertoire personnel comme / home / csaba / Programmation / Scala / sbt

Ensuite, ajoutez le chemin d'accès à votre répertoire bin SBT, à votre variable PATH. Sur les systèmes de type UNIX, si vous utilisez Bash, ajoutez une ligne de ce type à votre ~ / .bash_profile ou ~ / .bashrc fichier:

PATH = $ PATH: $ HOME / Programmation / Scala / sbt / bin export PATH

le $ HOME variable pointe généralement vers votre répertoire personnel. Vous pouvez le réutiliser dans vos fichiers de configuration. Les utilisateurs Windows peuvent avoir une variable différente pour cela. N'oublie pas le exportation commande sur la deuxième ligne, sinon votre CHEMIN variable ne sera disponible que dans le fichier de configuration.

Maintenant, testez que votre installation SBT a réussi. Ouvrez une console ou un outil de ligne de commande et tapez:

$ sbt --version sbt launcher version 0.12.2

le $ signe est l'invite Bash, le reste est la commande que vous allez entrer. Comme vous pouvez le voir, j'ai la version 0.12.2 installée.

Pour d’autres méthodes d’installation de SBT, vous pouvez consulter la documentation officielle d’installation..

Créer un nouveau projet

Créez un dossier dans lequel vous souhaitez placer votre futur code, ouvrez une console, accédez au nouveau répertoire créé et exécutez simplement la commande. sbt.

csaba @ csaba ~ / Personnel / Programmation / NetTuts / De zéro à Hello World dans Scala / Sources $ sbt [info] Chargement des plugins globaux depuis /home/csaba/.sbt/plugins [info] Mise à jour file: / home / csaba / .sbt / plugins / default-e430ed… [info] Résolution de org.scala-sbt # precompiled-2_10_0; 0.12.2… [info] téléchargement http://repo.typesafe.com/typesafe/ivy-releases/org. scala-sbt / actions / 0.12.2 / jars / actions.jar… [info] [SUCCÈS] org.scala-sbt # actions; 0.12.2! actions.jar (3648ms) […] Beaucoup plus téléchargeable ici [info] [SUCCESSFUL] org.scala-tools.testing # test-interface; 0.5! Test-interface.jar (239ms) [info] Terminé la mise à jour. [info] Définit le projet actuel sur default-f502c6 (dans le fichier de construction: / home / csaba / Personnel / Programmation / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Sources /)>

Notez que le projet actuel a été défini sur le dossier dans lequel vous vous trouvez et que votre console a été modifiée. Vous êtes maintenant dans la console SBT. Vous pouvez quitter cette console en appuyant sur CTRL + d ou CTRL + c ou en entrant la commande sortie.

Dans cette console, vous pouvez dire à SBT de faire beaucoup de choses. Appuyez deux fois sur TAB et confirmez avec y pour voir la liste complète des commandes disponibles.

Configuration de construction basée sur le projet

L'utilisation des paramètres système ou utilisateur pour tous vos projets peut ne pas être la meilleure option. Chaque projet est différent, il nécessite des dépendances différentes, un nom différent, etc. Pour informer SBT de telles informations, nous devons créer un fichier appelé build.sbt. Il doit être placé dans le dossier racine du projet, que vous pouvez trouver sur la dernière ligne, dans l'exemple précédent..

Le langage utilisé dans ces fichiers est un DSL ressemblant à la syntaxe de Scala, mais beaucoup moins complexe. Pour rester simple, vous ne définissez généralement que des valeurs telles que le nom et la version de votre projet ou des dépendances, telles que les versions Scala ou SBT à utiliser. Les noms de ces valeurs sont appelés "clés". Nous ne travaillerons qu'avec quelques-uns d'entre eux. Consultez la page Keys.scala pour une liste complète des clés..

Pour notre projet, nous ne spécifierons que quatre clés. Leurs noms les rendent assez explicites:

nom: = version "Hellow World": = "1.0" scalaVersion: = "2.10.1" sbtVersion: = "0.12.3"

Soyez très prudent avec les lignes vides dans le fichier de configuration. Chaque définition de valeur-clé doit être séparée par une ligne vide. Maintenant courir mise à jour de sbt dans le répertoire de votre projet.

$ sbt update [info] Chargement de plugins globaux depuis /home/csaba/.sbt/plugins [info] Définissez le projet en cours sur Hellow World (dans le fichier de construction: / home / csaba / Personnel / Programmation / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Sources /) [info] Mise à jour file: / home / csaba / Personnel / Programmation / NetTuts / From% 20Zero% 20Zero% 20Hello% 20World% 20in% 20Scala / Sources / default-f502c6… [info] Résolution de org.scala-lang # scala-library; 2.10.1… [info] Mise à jour effectuée. [succès] Temps total: 1 s, terminé le 13 mai 2013 20:17:54 $ sbt [info] Chargement des plugins globaux depuis /home/csaba/.sbt/plugins [info] Définissez le projet actuel sur Hellow World (en construction). fichier: / home / csaba / Personnel / Programmation / NetTuts / De% 20Zero% 20 à% 20Hello% 20World% 20in% 20Scala / Sources /)> sbt-version [info] 0.12.3> scala-version [info] 2.10.1 > sortie

Comme vous pouvez le constater, Scala 2.10.1 a été automatiquement sélectionné et téléchargé si nécessaire. Nous avons également mis à jour SBT à la version 0.12.3 à la volée. Enfin, vous remarquerez qu’il appelle notre projet par son nom lors du chargement: "Définir le projet actuel sur Hellow World".

Conventions de structure d'annuaire dans SBT

Même si vous pouvez simplement mettre tous vos fichiers source dans le répertoire racine du projet, SBT recommande et utilise, par convention, une structure de répertoire similaire à Maven. Mettons à jour nos répertoires afin qu'ils ressemblent à l'arbre ci-dessous. Vous devez créer uniquement le src répertoire et ses enfants, le reste a été généré lorsque nous avons joué avec les commandes SBT. Si ce n’est pas le cas, ne vous inquiétez pas, vous êtes seulement intéressé par le src annuaire.

├── projet └── └── cible │ └── config-classes src │ principal │ │ ressources scala test │ ressources └─ ─ cible ─ scala

Intégration de Scala, SBT et NetBeans

Maintenant que nous avons appris les bases du SBT, nous avons besoin d'un IDE pour écrire notre code. Si vous préférez utiliser des éditeurs simples, tels que Sublime Text, vous pouvez le faire et ignorer cette étape..

NetBeans prenait en charge Scala bien avant SBT. Il existe un plugin appelé "nbscala" qui peut créer des projets Scala pour NetBeans et utiliser le langage Scala installé sur le système. Pour le moment, ce plugin est en train de passer à SBT et pourra éventuellement créer et gérer des projets SBT..

Actuellement, SBT et NetBeans s’intègrent très bien. La seule chose que vous devez créer manuellement au moment de la rédaction de cet article est le projet SBT initial. Ensuite, NetBeans peut alors s’intégrer parfaitement.

Installer le support Scala dans NetBeans

Ouvrons NetBeans, allez à Outils / Plugins, sélectionnez le Plugins disponibles onglet et faites défiler jusqu'à la lettre S. Vérifiez tous les plugins liés à Scala, cliquez sur Installer et laissez-le installer les plugins avec toutes les dépendances nécessaires.


Si vous êtes curieux de savoir comment ce plugin est écrit, vous pouvez vérifier son référentiel Github.

Installer le support NetBeans dans SBT

Oui, vous avez bien lu, SBT a son propre système de plug-in qui peut générer des projets NetBeans pour vous. Vous devez simplement extraire un référentiel git et le publier localement. Placez-vous dans un répertoire où vous souhaitez que votre plug-in soit extrait et installé, puis exécutez les commandes suivantes:

git clone [email protected]: dcaoyuan / nbsbt.git cd nbsbt sbt compilation propre publier-local

Ok, nous avons presque fini. Nous avons le plugin, nous devons maintenant dire à SBT de l'utiliser. Vous pouvez le faire par projet si vous le souhaitez, mais je vous recommande de l'ajouter aux paramètres SBT de votre utilisateur: ~ / .sbt / plugins / plugins.sbt

le ~ fait référence à votre répertoire personnel, vous devriez déjà avoir un répertoire appelé .sbt dedans (notez le point comme premier caractère). Vous pouvez ou non avoir un plugins répertoire, si vous ne le faites pas, créez-le, puis créez le plugins.sbt fichier. Ajoutez maintenant le texte suivant:

addSbtPlugin ("org.netbeans.nbsbt"% "nbsbt-plugin"% "1.0.2")

Ça y est, votre SBT peut maintenant générer des projets NetBeans pour vous lorsque vous exécutez le netbeans commande dans la console SBT. Alternativement, dans NetBeans, vous pouvez simplement ouvrir (pas un nouveau projet, mais ouvrir) tout projet SBT et il générera automatiquement les éléments NetBeans pour vous..


Ensuite, toutes les dépendances du projet seront mises à jour et le netbeans La commande sera exécutée dans une console SBT, à l'intérieur de NetBeans.


Vous pouvez maintenant voir plus de texte défiler à l'écran en fonction des dépendances à installer, et vous devriez pouvoir voir que la netbeans la commande a été automatiquement exécutée pour nous.

Dans le volet gauche, sur le navigateur de projet onglet, vous pouvez même exécuter des commandes SBT de base en cliquant simplement avec le bouton droit de la souris sur le projet et en exécutant Recharger, Nettoyer, Compiler etc.


Bonjour tout le monde à Scala

Ce n’est pas un tutoriel pour apprendre Scala. Nous n'écrirons que du code très basique, un classique Hello World. Vous pouvez donc développer votre projet Scala et, dans l’entrée "Scala Packages", cliquez avec le bouton droit de la souris sur et sélectionnez Nouveau -> Objet Scala. Donnez-lui un nom, quelque chose comme "HelloWorld" fera l'affaire. Ensuite, à l'intérieur, entrez le code suivant:

objet HelloWorld def main (arguments: Array [String]) = println ("Hello World!")

Si vous ne connaissez pas totalement Scala, un objet s’exécutera automatiquement et une méthode appelée principale sera levé. La définition de la méthode est juste une simple ligne d'impression de Bonjour le monde.

Accédez à votre console SBT pour ce projet. Si vous l'avez fermée par erreur, cliquez avec le bouton droit de la souris sur le projet Scala dans le volet de gauche et sélectionnez Ouvrez la console sbt. Maintenant, tapez courir dans la console, pour exécuter le programme.



Ajout de tests

La première étape consiste à installer Scalatest afin de disposer d’un framework de test. Le moyen le plus simple de le faire est d’éditer notre build.sbt déposer et ajouter la ligne suivante; rappelez-vous que vous devez laisser une ligne vide entre chaque ligne.

libraryDependencies + = "org.scalatest" %% "scalatest"% "1.9.1"% "test"

Maintenant, dans votre console SBT, vous pouvez émettre une mise à jour (facultatif) et exécuter le tester commander. Nous n'avons pas encore de tests, donc la commande ne devrait pas échouer.


Créer notre premier test sera assez facile. La seule chose que vous devez savoir, c’est que ce doit être dans le src / test / scala dossier. Ou, si vous développez Scala Test Packages dans la visionneuse de votre projet et faites un clic droit sur , vous pouvez choisir Nouveau -> Classe Scala et créez-en une avec le nom "ExampleSuite" et ajoutez le code ci-dessous:

import org.scalatest.FunSuite, la classe ExampleSuite étend FunSuite test ("les valeurs attendues du test 2 sont égales") assert (2 === 2) test ("les valeurs du test 2 sont différentes et échouent") assert (2 == = 3)

Veuillez noter que NetBeans peut avoir quelques problèmes avec l'exécution de vos tests, car le plugin Scala n'est pas encore complet. Mais pas de panique, vous pouvez toujours exécuter les tests à partir de la console SBT.

Le test importe simplement la suite de tests Scalatest FunSuite (où "Fun" vient de fonctionnel) et exécute deux tests. Comme vous pouvez le comprendre à partir du code, le premier passera, le second échouera.


Si, pour une raison quelconque, SBT refuse de compiler vos tests, fermez simplement la console dans NetBeans, cliquez avec le bouton droit de la souris sur votre projet et sélectionnez Reload sbt Project. Cela résoudra le problème et vos tests se dérouleront comme prévu..


Dernières pensées

Voilà! Vous venez de terminer vos premiers pas vers l’apprentissage de Scala. J'espère que ce tutoriel vous a aidé à mieux comprendre comment commencer. Si, au lieu d’utiliser Netbeans, qui est mon IDE préféré, vous pouvez également effectuer une recherche sur Google pour trouver une documentation en ligne assez complète sur l’utilisation de SBT & Scala avec Eclipse, si vous le préférez..

Merci d'avoir lu.