Développement Java efficace pour le Raspberry Pi : 11 étapes (avec photos)
Développement Java efficace pour le Raspberry Pi : 11 étapes (avec photos)
Anonim

Ce Instructable décrit une approche très efficace pour développer des programmes Java pour le Raspberry Pi. J'ai utilisé cette approche pour développer des capacités Java allant de la prise en charge des périphériques de bas niveau aux programmes multithreads et basés sur le réseau. La démarche n'est pas seulement efficace, elle est gratuite !

Fondamentalement, l'approche est le développement à distance à l'aide de NetBeans. NetBeans fonctionne sur un poste de travail (un ordinateur de bureau ou portable, pas le Raspberry Pi) connecté via Wifi au Raspberry Pi. Une fois que tout est configuré correctement, vous pouvez écrire un programme Java dans NetBeans, puis un simple clic compile et construit le programme sur le poste de travail, télécharge le programme sur le Pi, exécute le programme sur le Pi et fournit la sortie à la console NetBeans. La magie! Vous pouvez même déboguer le programme en cours, définir des points d'arrêt et examiner les valeurs des variables. Plus de magie !

Le reste de cette introduction décrit la motivation pour l'utilisation de Java et pour le développement à distance à l'aide de NetBeans. Si vous vous souciez de la motivation, lisez la suite. Si vous ne vous en souciez pas, passez à l'étape 1.

Pourquoi utiliser Java sur le Raspberry Pi ?

Il existe de nombreux langages de programmation disponibles pour le Raspberry Pi, mais je limiterai la discussion aux langages de programmation "de qualité professionnelle" qui ciblent les programmes autonomes, prennent en charge le multitâche, autorisent l'accès au matériel et au réseau, etc. Cela signifie Java, Python ou C/C++. Les versions les plus récentes de Raspbian incluent le développement et la prise en charge de l'exécution pour tous ces langages.

Python est en effet « promu » pour une utilisation sur le Pi, au moins en partie pour sa facilité d'apprentissage pour les nouveaux programmeurs. Je suis un programmeur expérimenté et je n'aime pas Python en raison d'une aversion certes subjective pour un certain nombre de ses caractéristiques, par exemple le typage dynamique. Il y a une caractéristique de Python pour laquelle je n'aime pas l'objectif: la performance. Cette source montre que Java est toujours plus rapide que Python 3 et peut en fait s'exécuter des centaines de fois plus rapidement, selon la tâche.

C à mon avis, est un "langage machine de haut niveau", c'est-à-dire quelque chose qui est très proche du matériel du système, ou du moins du système d'exploitation. Vous pouvez faire à peu près n'importe quoi, et vous pouvez le faire aussi vite que possible; en fait, cette source suggère que C peut fonctionner jusqu'à 7 fois plus vite que Java. Je n'aime pas non plus le C car je n'aime pas (subjectivement) certaines de ses caractéristiques que je trouve obscures, archaïques ou les deux; par exemple, des pointeurs explicites. Objectivement, le fait que vous puissiez faire n'importe quoi signifie que vous n'êtes qu'un bogue obscur (par exemple, une mauvaise arithmétique de pointeur ou un memcpy errant) loin de l'écrasement de la mémoire et du plantage potentiel du programme ou même de l'ensemble du système. Java prévient de tels dangers, Java est donc plus sûr. Je pense que la sécurité améliore également la productivité du programmeur. Je considère le C++ comme un « wrapper » orienté objet autour du C qui ne fait rien pour éliminer les dangers du C.

L'essentiel: Java est plus rapide que Python. Java est plus sûr que C.

Y a-t-il des limitations lors de l'utilisation de Java ?

Jusqu'à présent, j'ai pu faire en Java tout ce que je peux faire en Python. Il y a des choses que l'on peut faire en C qu'on ne peut pas faire en Java, mais encore une fois, jusqu'à présent, tout ce que je voulais faire a été abordé par les fans de Java dans la communauté Pi. Je proposerai un exemple dans une étape ultérieure. Cela dit, j'ai acheté des capteurs auprès de fournisseurs qui fournissaient des "pilotes" pour les capteurs uniquement en Python (ou C/C++ pour l'Arduino), j'ai donc dû écrire l'équivalent Java; l'effort supplémentaire n'est pas nécessairement productif, mais peut permettre de mieux comprendre le fonctionnement d'un capteur.

Pourquoi le développement à distance basé sur NetBeans ?

J'ai découvert que le développement à distance basé sur NetBeans augmente considérablement la productivité lors de l'utilisation de Java pour le Raspberry Pi. Je suis convaincu que vous pouvez utiliser l'approche pour créer des programmes rapides et sûrs, en raison des caractéristiques inhérentes de Java, tout en les écrivant, en les construisant et en les déboguant beaucoup plus rapidement que les autres approches que j'ai trouvées, en raison du développement à distance utilisant le "professionnel grade" NetBeans Integrated Development Environment (IDE).

Il pourrait être utile de discuter brièvement de ces "autres approches". Tous répondent aux critères de base selon lesquels le Raspberry Pi n'a pas de clavier, de souris ou d'écran connecté. Il y a plusieurs raisons à ce critère, mais ma principale raison est que je développe des robots mobiles, et je ne veux pas que le Pi soit connecté à des périphériques, à l'exception des sous-systèmes robotiques, même pendant le développement.

Le serveur VNC inclus dans Raspbian fournit une interface utilisateur graphique (GUI) à distance qui permet une forme de développement à distance, où seule l'interface graphique distante s'exécute sur le poste de travail et tout le reste, l'écriture, la compilation et la construction, a lieu sur le Pi. Avec VNC, il est facile d'utiliser les outils de développement compatibles Java fournis dans Raspbian, comme BlueJ, Geany et Greenfoot. Certains d'entre eux peuvent être considérés comme un IDE; cependant, je les trouve loin d'être de qualité professionnelle.

Il est techniquement possible d'installer un IDE Java de qualité professionnelle comme Eclipse ou NetBeans sur le Raspberry Pi et de l'utiliser à distance via VNC. Les rapports et le bon sens suggèrent que les résultats seraient décevants, en raison de la grande empreinte mémoire et de la puissance CPU requise par ces IDE, ainsi que de la latence du réseau introduite par une interface graphique distante.

Eclipse et NetBeans fonctionnent très bien sur un poste de travail. Avec Eclipse, l'écriture de code est une expérience agréable, cependant, la construction du programme ne l'est pas; le téléchargement du programme doit avoir lieu en dehors d'Eclipse; l'exécution du programme sur le Pi est complètement indépendante d'Eclipse. Le résultat global est un processus en plusieurs étapes, presque douloureux, qui ne peut pas prendre en charge le débogage à distance. NetBeans intègre des fonctions de compilation, de construction, de téléchargement, d'exécution à distance et de débogage à distance, ce qui en fait une approche supérieure.

Étape 1: Configurer le Raspberry Pi

Pour utiliser l'approche de développement à distance, vous devez commencer par configurer le Raspberry Pi cible. Il existe de nombreuses ressources, y compris Instructables, disponibles pour vous aider à configurer un Raspberry Pi. Voir ceci pour les bases de la configuration du Pi (et plus).

Ce Instructable suppose que vous

  • installer le dernier Raspbian; assurez-vous d'enregistrer l'ID utilisateur et le mot de passe Pi
  • configurez le Wifi et connectez-vous à votre routeur (voir ceci); assurez-vous d'enregistrer l'adresse IP du Pi
  • activer SSH (voir ceci) pour permettre l'accès à distance au Pi depuis le poste de travail

Une fois la configuration terminée, vous pouvez éteindre et déconnecter l'écran, le clavier et la souris du Pi. C'est l'un des principaux avantages du développement à distance. Vous devez laisser n'importe quel dongle Wifi connecté (pas nécessaire, bien sûr, pour un modèle Pi 3 ou Pi Zero W), puis vous pouvez alimenter le Pi.

Pour tester, ouvrez un client ssh sur votre poste de travail, par exemple, Terminal sur MacOS ou putty sur Windows. Saisissez ensuite la commande ssh (secure shell) sous la forme suivante:

ssh the_pi_ip_address -l the_pi_user_id

Vous devriez recevoir une invite pour entrer le mot de passe de votre ID utilisateur Pi. Si aucune invite ne s'affiche, vérifiez que vous avez entré la bonne adresse IP dans la commande ssh. Entrez votre mot de passe (il sera caché) et vous devriez alors voir l'invite du shell Pi qui apparaît quelque chose comme ceci:

pi@raspberrypi:~ $

Si vous ne voyez pas l'invite, vérifiez l'ID utilisateur et le mot de passe que vous avez utilisés.

Vous devez maintenant trouver le chemin d'accès au runtime Java et confirmer que la version par défaut est Java 8 (devrait être vrai pour le dernier Raspbian). Pour trouver le chemin d'exécution Java, dans le client ssh, entrez la commande

sudo update-alternatives --display java

Vous devriez voir une réponse avec les deux premières lignes qui ressemblent à ce qui suit:

java - mode automatique

la meilleure version du lien est /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java

Le "-8-" dans la deuxième ligne confirme que l'environnement d'exécution par défaut est Java 8. Enregistrez le chemin dans la deuxième ligne car vous en aurez besoin pour configurer NetBeans pour le développement à distance dans une étape ultérieure.

Si l'environnement d'exécution par défaut n'est pas Java 8, dans le client ssh, entrez la commande suivante pour passer à Java 8 (en supposant qu'il soit installé)

sudo update-alternatives --config java

Étape 2: Installez NetBeans sur le poste de travail

Vous devez maintenant installer NetBeans sur votre poste de travail. Pointez le navigateur de votre poste de travail sur la page de téléchargement de NetBeans. Vous verrez plusieurs bundles possibles qui prennent en charge les deux éditions de Java ainsi que d'autres langages. Tout ce dont vous avez besoin pour le développement Java du Raspberry Pi est Java SE, mais vous pouvez obtenir le bundle Java EE ou le bundle All. Une fois que vous avez décidé quel pack vous voulez, cliquez sur le bouton Télécharger correspondant. Vous trouverez ici des instructions d'installation supplémentaires pour le système d'exploitation de votre poste de travail.

Une fois que vous avez installé NetBeans, démarrez-le (il peut le faire automatiquement après l'installation). Vous devriez voir la fenêtre principale de NetBeans comme indiqué dans l'image. La photo a été prise sur un Mac et la fenêtre principale peut être légèrement différente sur Windows.

Une fois que vous avez correctement installé et démarré NetBeans, passez à l'étape suivante.

Étape 3: Configurer le Raspberry Pi en tant que plate-forme distante dans NetBeans

Configurer le Raspberry Pi en tant que plate-forme distante dans NetBeans
Configurer le Raspberry Pi en tant que plate-forme distante dans NetBeans

Les actions suivantes configurent le Raspberry Pi en tant que plate-forme Java SE distante pour NetBeans. Cela permet à NetBeans de télécharger et d'exécuter des programmes Java sur le Pi. Vous pouvez trouver une description quelque peu générique ici.

REMARQUE: Dans cette étape et les suivantes, j'affiche des valeurs spécifiques à mon environnement pour divers aspects de la configuration et du codage; le vôtre sera évidemment différent.

Pour configurer le Pi en tant que plate-forme distante:

  1. Dans la barre de menu principale de NetBeans, sélectionnez Outils -> Plates-formes Java. Vous verrez la fenêtre contextuelle Java Platform Manager (image un).
  2. Cliquez sur Ajouter une plate-forme en bas à gauche. Vous verrez la fenêtre contextuelle Ajouter une plate-forme Java [type de plate-forme] (image deux).
  3. Choisissez Remote Java Standard Edition. Cliquez sur Suivant. Vous verrez la fenêtre contextuelle Ajouter une plate-forme Java [configurer une plate-forme distante] (l'image trois montre la fenêtre contextuelle après avoir entré les valeurs appropriées pour mon environnement dans les champs).
  4. Dans le champ Nom de la plate-forme, saisissez un nom pour le Pi. Vous pouvez utiliser à peu près n'importe quoi, mais il doit être unique.
  5. Dans le champ Hôte, saisissez l'adresse IP du Pi trouvée à l'étape 1.
  6. Dans le champ Nom d'utilisateur, saisissez le nom d'utilisateur que vous avez utilisé à l'étape 1.
  7. Laissez l'option Utiliser l'authentification par mot de passe sélectionnée et dans le champ Mot de passe, saisissez le mot de passe que vous avez créé à l'étape 1.
  8. Dans le champ Remote JRE Path, vous devez saisir la majeure partie du chemin d'accès à l'environnement d'exécution Java sur le Pi. À l'étape 1, il s'agissait de /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java. Cependant, vous devez déposer /bin/java dans la valeur du champ.
  9. NetBeans télécharge le programme exécutable dans un répertoire de travail sur le Pi, identifié dans le champ Working Dir. La valeur par défaut est /the_Pi_user_ID/NetBeansProjects/ et elle est parfaitement acceptable. Vous pouvez utiliser quelque chose de différent si vous le désirez, bien qu'il doive être disponible pour le_Pi_user_ID (image trois).
  10. Cliquez sur Terminer en bas à droite de la fenêtre contextuelle. Après le traitement, vous devriez à nouveau voir la fenêtre contextuelle Java Platform Manager. Vous devriez maintenant voir votre Pi distant (sous le nom que vous avez utilisé dans l'action 4 ci-dessus) dans la catégorie Remote Java SE (image quatre).
  11. Cliquez sur Tester la plate-forme en bas à gauche pour tester la connexion entre NetBeans et votre Pi. Vous verrez d'abord une fenêtre contextuelle indiquant Vérification de la plate-forme distante. En cas de succès, vous obtiendrez une deuxième fenêtre contextuelle indiquant la connexion… établie avec succès. Sinon, vous devez vérifier et corriger les informations que vous avez saisies dans la fenêtre contextuelle Ajouter une plate-forme Java [configurer la plate-forme distante] dans les actions 5 à 9 ci-dessus. Vous pouvez le faire à partir de la fenêtre contextuelle Java Platform Manager; sélectionnez simplement votre plate-forme Pi, puis modifiez les champs sur le côté droit de la fenêtre contextuelle.
  12. Après une connexion réussie, cliquez sur Fermer dans la fenêtre contextuelle Java Platform Manager. Vous verrez maintenant la fenêtre principale de NetBeans.

Maintenant, le vrai plaisir peut commencer !

Étape 4: Créer un projet Java sur le poste de travail

Ceci n'est pas destiné à être une explication complète de la façon d'utiliser NetBeans ou Java, mais je décrirai les actions minimales pour écrire un programme en NetBeans sur le poste de travail et, éventuellement, exécuter le programme à distance sur le Raspberry Pi.

Dans NetBeans, vous devez d'abord créer un projet pour contenir la ou les classes Java du programme. De plus, en Java, les classes résident dans des packages pour prendre en charge l'organisation et la sécurité. Pour créer le projet et éventuellement créer un package et un fichier de classe:

  1. Dans la fenêtre principale de NetBeans, cliquez sur l'icône du nouveau projet (2e à partir de la gauche). Vous verrez la fenêtre contextuelle Nouveau projet [choisir un projet] (image un).
  2. Les valeurs par défaut (Catégorie: Java, Projet: Application Java) sont correctes pour cet exemple, il vous suffit donc de cliquer sur Suivant. Vous verrez la fenêtre contextuelle Nouvelle application Java [nom et emplacement] (l'image deux montre les valeurs pour mon exemple). REMARQUE: j'ai rédigé mes informations utilisateur à l'aide des rectangles de couleur.
  3. Dans le champ Nom du projet, saisissez un nom de projet Java valide de votre choix. Le nom doit commencer par une majuscule, et la convention suggère le cas du chameau lors de la concaténation des mots.
  4. Le champ Emplacement du projet contrôle l'emplacement du projet dans votre système de fichiers. La valeur par défaut varie en fonction du système d'exploitation, mais peut être acceptée en toute sécurité.
  5. Le champ Dossier du projet vous permet de contrôler le nom du dossier du projet. Je trouve qu'il est préférable d'utiliser la valeur par défaut, qui est une concaténation du champ Emplacement et du champ Nom.
  6. Lorsque la case à cocher Créer une classe principale est cochée, NetBeans crée automatiquement un package et un fichier de classe principale (un programme qui peut être exécuté à partir de la ligne de commande) avec le même nom que le projet. Je pense qu'il devrait généralement être décoché, mais dans ce cas, je le laisserai coché, ce qui élimine les actions explicites autrement nécessaires pour le faire (image deux).
  7. Cliquez sur Terminer pour créer le projet, un package et un fichier de classe principal. Maintenant, le volet supérieur gauche de la fenêtre principale de NetBeans affiche votre projet, qui contient un seul package, qui à son tour contient un seul fichier de classe avec une méthode main(). Le volet supérieur droit contient le code source par défaut de la classe principale (le programme) généré automatiquement par NetBeans (image trois).

À ce stade, vous pouvez écrire du code dans la méthode principale et l'exécuter sur le poste de travail. Cela peut être souhaitable parfois, mais n'est pas nécessaire pour ce Instructable, alors passez à l'étape suivante.

Étape 5: Configurez le projet NetBeans pour qu'il s'exécute à distance sur le Raspberry Pi

Pour configurer le projet NetBeans et un programme qu'il contient afin qu'il s'exécute à distance sur le Raspberry Pi, procédez comme suit:

  1. Cliquez avec le bouton droit ou à 2 doigts (selon le système d'exploitation du poste de travail) sur le projet dans le volet Projets de la fenêtre principale de NetBeans pour afficher le menu du projet et cliquez sur Propriétés. Vous verrez la fenêtre contextuelle Propriétés du projet (l'image montre la fenêtre contextuelle avec les valeurs appropriées pour mon exemple).
  2. Sous Catégories sur la gauche, sélectionnez Exécuter.
  3. Cliquez sur Nouveau à droite du champ Configuration. Dans la fenêtre contextuelle Créer une nouvelle configuration résultante, entrez un nom pour la configuration et cliquez sur OK. Le nom peut être n'importe quoi; Je viens de réutiliser le nom de la plateforme ("My Pi"). Une fois de plus, vous verrez la fenêtre contextuelle Propriétés du projet.
  4. Cliquez sur l'icône déroulante à droite du champ Runtime Platform. Dans la liste de la fenêtre contextuelle, sélectionnez la plate-forme distante que vous avez créée précédemment (dans mon environnement, "Mon Pi").
  5. Cliquez sur OK pour configurer la plate-forme distante pour le projet. Vous verrez à nouveau la fenêtre principale.

Vous êtes maintenant prêt à écrire du code et à exécuter le programme à distance.

Étape 6: écrivez un programme Java sur la station de travail et exécutez-le sur le Raspberry Pi

Le panneau de droite de la fenêtre principale de NetBeans affiche le fichier de classe principal généré par NetBeans. Tapez une simple déclaration d'impression dans la méthode principale du fichier de classe (image un). C'est maintenant un programme Java complet qui fait quelque chose, bien que quelque chose de très simple.

Pour exécuter le programme sur le Pi, cliquez sur l'icône Exécuter (la flèche verte pointant vers la gauche) dans la fenêtre principale. NetBeans compile le code, crée un fichier jar, télécharge le fichier jar sur le Raspberry Pi identifié par la plate-forme distante, exécute le programme sur le Pi, capture la sortie (System.out) du programme et renvoie cette sortie à NetBeans Volet de sortie en bas à droite de la fenêtre principale (image deux).

Vous avez maintenant considérablement élargi vos compétences pour développer des projets sur le Raspberry Pi ! Mais attendez…. Il y a plus!

Étape 7: Déboguer le programme Java avec NetBeans

L'une des fonctionnalités les plus puissantes d'un environnement de développement intégré de puissance industrielle comme NetBeans est la possibilité de déboguer le programme pendant son exécution. NetBeans vous permet de tirer parti de la suite complète d'outils de débogage tout en s'exécutant à distance. Cela inclut la définition de points d'arrêt à des emplacements « importants » ou « problèmes » dans le programme et l'examen de la valeur des variables à l'état d'exécution actuel.

Le programme simple de la dernière étape est trop simple pour démontrer le débogage, j'ai donc ajouté du code supplémentaire au programme. Le code supplémentaire ajoute deux variables.

Pour tirer parti des outils de débogage, vous devez d'abord définir un ou plusieurs points d'arrêt. Pour définir un point d'arrêt, cliquez sur le numéro de la ligne où vous souhaitez suspendre l'exécution; une icône de rectangle rouge apparaît et la ligne entière acquiert un fond rouge (image un).

Pour déboguer le programme exécuté sur le Pi, cliquez sur l'icône Déboguer (immédiatement à droite de l'icône Exécuter) dans la fenêtre principale de NetBeans. Comme pour l'exécution normale, NetBeans compile, construit, télécharge, exécute, capture la sortie et renvoie cette sortie. Mais avec le débogage, NetBeans arrête l'exécution aux points d'arrêt et vous permet d'examiner l'état d'exécution (image deux, montrant le volet Variables en bas à droite).

L'exécution s'arrête au point d'arrêt avant d'exécuter l'instruction sur la ligne avec le point d'arrêt. Le fond vert indique la prochaine instruction à exécuter. Ainsi dans mon exemple, avec un point d'arrêt à la ligne 9, la variable a n'existe pas encore, encore moins a une valeur.

Passez maintenant le curseur sur l'icône du menu de débogage dans la fenêtre principale (la première icône à double flèche vers le bas à droite de l'icône de débogage) et cliquez sur l'icône Pas à pas (elle a un document bleu en arrière-plan et une flèche verte dans le sens inverse des aiguilles d'une montre au premier plan). [REMARQUE: si vous agrandissez suffisamment la fenêtre principale de NetBeans, le menu de débogage se développe et les icônes d'action de débogage s'affichent à droite de l'icône de débogage.] NetBeans exécute l'instruction au point d'arrêt et arrête l'exécution avant l'instruction suivante. Vous verrez maintenant que la variable a existe et a la valeur attendue (image trois).

Cliquez deux fois sur l'icône Pas à pas. Vous verrez que les trois variables ont des valeurs; notez que c est toujours nul (image quatre).

Cliquez une fois sur l'icône Pas à pas. Vous verrez que la variable c a maintenant la valeur appropriée, c'est-à-dire la somme des variables a et b (image cinq).

Enfin, dans le menu de débogage, cliquez sur l'icône Exécuter (un cercle vert avec une flèche blanche). Cela entraîne la poursuite de l'exécution jusqu'au prochain point d'arrêt ou jusqu'à la fin du programme, selon la première éventualité. Le volet Sortie apparaît maintenant et affiche la même sortie qu'avec l'exécution normale, dans ce cas le texte de l'instruction print.

Étape 8: Exécutez le programme indépendamment de NetBeans

Le moment viendra peut-être où vous voudrez exécuter votre programme sur le Raspberry Pi, sans « assistance » ou « interférence » de NetBeans. C'est très simple. Tout d'abord, ouvrez un client ssh sur votre Pi.

N'oubliez pas à partir de l'étape 3 que NetBeans place votre fichier jar de projet dans un répertoire de travail sur le Pi. La base par défaut est /home/pi/NetBeansProjects pour l'utilisateur pi. Le répertoire spécifique porte le même nom que votre projet. NetBeans place le pot dans un sous-répertoire appelé dist. Pour mon exemple, le chemin complet est /home/pi/NetBeansProjects/MyRemoteProg/dist. Dans le client ssh sur le Pi, pour exécuter le programme, vous pouvez utiliser la commande java avec l'option 'jar':

java -jar /home/pi/NetBeansProjects/MyRemoteProg/dist/MyRemoteProg.jar

Vous verrez les résultats de l'exécution dans le client ssh; dans mon exemple, la sortie sera

Bonjour de Raspberry Pi !

Cela fonctionne car les informations du fichier jar identifient la classe principale du jar à exécuter.

Vous pouvez également modifier le répertoire de travail (via cd) vers l'emplacement du fichier jar, puis émettre une commande plus courte pour produire les mêmes résultats.

java -jar MyRemoteProg.jar

Étape 9: Construisez et téléchargez, mais n'exécutez pas le programme via NetBeans

Il y a des situations où vous voulez que NetBeans construise et télécharge votre programme, mais ne l'exécute pas. Une telle situation se produit lorsque votre programme a besoin d'une entrée au clavier. Si tel est le cas, en utilisant la technique de l'étape précédente, une fois que vous avez créé et téléchargé, le programme s'exécute sur le Raspberry Pi et attend donc une entrée au clavier du Pi, mais bien sûr, il n'y a pas de clavier connecté au Pi, donc le programme se bloque -- pas bon.

Vous devez utiliser une technique quelque peu différente pour exécuter le programme. Fondamentalement, vous créez un fichier de classe principale "factice" qui ne fait essentiellement rien et l'identifiez comme le programme à exécuter après le téléchargement. Dans ce cas, le "factice" est exécuté et vous pouvez alors exécuter votre "vrai" programme directement sur le Pi.

Pour utiliser cette technique, créez d'abord une nouvelle classe principale:

  1. Affichez le menu du projet comme à l'étape 5 et cliquez sur Nouveau-> Classe principale Java. Vous verrez la fenêtre contextuelle Nouvelle classe principale Java.
  2. Dans le champ Nom de la classe, saisissez un nom. Le nom peut être tout ce que vous voulez; J'ai utilisé "Dummy". Le champ Package vous permet d'identifier le package de la classe; vous sélectionnez le forfait en utilisant le menu déroulant à droite du champ. La classe peut être dans le même package que votre "vrai" programme ou dans un package différent; J'ai mis la nouvelle classe dans le même package. Cliquez sur Terminer. Vous verrez maintenant la fenêtre principale de NetBeans avec le nouveau fichier dans le panneau supérieur droit (image un). J'ai ajouté une simple déclaration d'impression sur l'exécution sur le Pi, mais rien n'est vraiment nécessaire.

Pour exécuter "Dummy" après le téléchargement, vous devez en faire la "classe principale à exécuter par défaut" pour le projet:

  1. Ouvrez les propriétés du projet comme à l'étape 5. Sélectionnez la catégorie Exécuter. Cliquez sur Parcourir à droite du champ Classe principale. Vous verrez la fenêtre contextuelle Parcourir les classes principales (image deux).
  2. Sélectionnez la classe "Dummy". Cliquez sur Sélectionner la classe principale. Vous verrez à nouveau les propriétés du projet.
  3. Cliquez sur OK. Vous retournerez à la fenêtre principale.

Maintenant, lorsque vous cliquez sur l'icône Exécuter, NetBeans se conforme/construit l'intégralité du projet, télécharge le fichier jar contenant tous les fichiers de classe sur le Pi et exécute la classe "Dummy" (image trois).

Pour exécuter votre vrai programme sur le Pi, vous devez maintenant utiliser la commande java avec l'option 'classpath', ce qui nécessite que vous identifiiez explicitement la classe principale à exécuter. Depuis un client ssh, accédez au répertoire dist de votre projet. La commande appropriée est de la forme:

java -cp nom_projet.jar nom_paquet.nom_classe

Le project_name fait évidemment référence au projet; cela ne change que lorsqu'il s'agit d'un nouveau projet. Le package_name fait bien sûr référence au package, et le class_name fait référence à la classe principale à exécuter. Comme dit précédemment, un projet peut contenir plusieurs packages. De même, un package peut contenir de nombreuses classes, et toutes peuvent être des classes principales, ou des programmes, qui peuvent être exécutés à partir de la ligne de commande. Ainsi, la technique 'classpath' est très utile pour développer des programmes sophistiqués avec de nombreuses classes, dont certaines sont des classes principales uniquement pour assister les tests unitaires.

La commande suivante exécute mon exemple de programme:

java -cp MyRemoteProg.jar myremoteprog. MyRemoteProg

Étape 10: Tirez parti de la gestion de la bibliothèque NetBeans

L'un des aspects les plus difficiles mais les plus importants des programmes sophistiqués est de gérer les bibliothèques, c'est-à-dire le code que quelqu'un d'autre a déjà écrit. NetBeans fait un travail admirable en supprimant la plupart des problèmes de gestion de bibliothèque.

J'utiliserai comme exemple Pi4J, qui permet aux programmes Java d'accéder au GPIO Raspberry Pi, au bus I2C et à d'autres E/S matérielles. Pi4J n'est qu'un exemple de support pour faire beaucoup de choses amusantes sur le Pi avec Java.

Vous devez d'abord télécharger la bibliothèque sur votre poste de travail. Voir la page de téléchargement Pi4J. Puisque vous n'installez pas Pi4J sur le Pi, téléchargez le zip sur votre poste de travail. Vous devrez peut-être décompresser explicitement une fois le zip téléchargé.

Vous devez maintenant créer une "bibliothèque globale" dans NetBeans:

  1. Dans le menu principal de NetBeans, cliquez sur Outils ->Bibliothèques. Vous verrez la fenêtre contextuelle Ant Library Manager (image un).
  2. Cliquez sur Nouvelle bibliothèque en bas à gauche. Vous verrez la fenêtre contextuelle Nouvelle bibliothèque (image deux).
  3. Tapez un nom significatif que vous souhaitez utiliser et cliquez sur OK. Vous verrez à nouveau la fenêtre contextuelle Ant Library Manager. Il montre maintenant la nouvelle bibliothèque que vous avez créée (image trois).
  4. Cliquez sur Ajouter JAR/dossier sur la droite. Vous verrez la fenêtre contextuelle Browse JAR/Folder (image quatre).
  5. Accédez à, puis sélectionnez pi4j-core.jar. Cliquez ensuite sur Ajouter JAR/dossier. Vous reviendrez à la fenêtre contextuelle Ant Library Manager.
  6. Dans la fenêtre contextuelle Ant Library Manager, cliquez sur OK. Vous retournerez à la fenêtre principale de NetBeans.

Vous avez ajouté la bibliothèque afin qu'elle puisse être utilisée dans n'importe quel projet. Vous devez maintenant ajouter la bibliothèque à votre projet:

  1. Affichez la fenêtre contextuelle Propriétés du projet (voir étape 5) et sélectionnez la catégorie Bibliothèques (image cinq).
  2. Cliquez sur Ajouter une bibliothèque sur le côté droit de la fenêtre contextuelle. Vous verrez la fenêtre contextuelle Ajouter une bibliothèque (image six).
  3. Accédez à la bibliothèque et sélectionnez-la. Cliquez ensuite sur Ajouter une bibliothèque. Vous verrez à nouveau la fenêtre contextuelle Propriétés du projet. La bibliothèque apparaît maintenant dans la liste des bibliothèques de compilation dans la fenêtre contextuelle.
  4. Dans la fenêtre contextuelle Propriétés du projet, cliquez sur OK. Vous retournerez à la fenêtre principale.

Vous avez ajouté la bibliothèque à votre projet afin que votre programme puisse l'utiliser. Vous pouvez effectuer la même séquence d'actions pour toutes les bibliothèques dont vous avez besoin pour un programme.

Il y a trois fois où vous avez besoin de la bibliothèque: compilation, compilation et exécution. Heureusement, avec NetBeans, l'ajout de la bibliothèque comme indiqué ci-dessus gère tout. Pour confirmer cela, j'ai créé une autre classe principale qui fait le minimum absolu nécessaire pour utiliser la capacité I2C dans Pi4J (image sept). Le fait qu'aucune erreur ne s'affiche signifie que la classe TestPi4J se compile. En cliquant sur Exécuter, vous créez et téléchargez avec succès; NetBeans télécharge la bibliothèque en plus du fichier jar, donc le programme s'exécutera. Pour vérifier ce dernier, vous pouvez utiliser la technique de l'étape 9 et dans le client ssh saisir la commande suivante (à partir du répertoire dist):

java -cp MyRemoteProg.jar myremoteprog. TestPi4J

Il est instructif de comprendre comment NetBeans gère les bibliothèques. Dans le répertoire dist de votre projet, répertoriez le contenu du répertoire (utilisez la commande ls) et vous verrez un sous-répertoire lib. Répertoriez le contenu de ce répertoire et vous verrez le fichier jar identifié dans la bibliothèque globale, qui dans mon exemple est pi4j-core.jar. Toutes les bibliothèques que vous ajoutez au projet apparaîtront dans le répertoire lib et sont donc disponibles pour tous les programmes du fichier jar du projet.

Étape 11: Allez vous amuser

J'ai décrit une approche pour réaliser un développement Java très efficace pour le Raspberry Pi. Le Raspberry Pi est une technologie extrêmement populaire pour un large éventail de projets. Java est un langage de programmation de qualité professionnelle qui offre des avantages en termes de performances par rapport à Python et de sécurité par rapport à C/C++. NetBeans est un IDE de qualité professionnelle qui augmente considérablement la productivité des programmeurs.

Je pense que la combinaison est assez convaincante. Maintenant, amusez-vous à utiliser la combinaison pour vos projets.