Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Java 9 : premier aperçu de JShell
L'implémentation de REPL

Le , par Hinault Romaric

36PARTAGES

1  0 
De nombreux index sur le classement des langages s’accordent sur le fait que Java est l’un des langages de programmation les plus utilisés à travers le monde.

Cependant, de nombreuses universités se détournent du langage Java pour l’initiation à la programmation. Le langage est maintenu dans les programmes essentiellement à cause de sa popularité en entreprise. Mais, pour des universités américaines de référence comme le MIT, l’initiation à Java commence à partir du niveau 1 ou 2.

Plusieurs universités américaines ont opté pour l’utilisation du langage Python pour l’initiation à la programmation de niveau 0 et niveau 1, selon un sondage qui avait été réalisé par l’ACM il y a un an.

Les grandes écoles américaines se tournent vers Python à cause de sa simplicité pour l’apprentissage. Une simplicité qu’elle doit en partie à l’implémentation de REPL (Read Evaluate Print Loop), qui permet aux étudiants de rapidement avoir un aperçu de leur code, car les modifications sont exécutées instantanément.

Pour pallier à cela, les développeurs de Java ont décidé d’intégrer à Java 9 des fonctionnalités REPL, à travers le projet Kulla. Ce projet a donné naissance à JShell qui permet une programmation interactive, de telle sorte que tout ce qui entre au clavier est systématiquement évalué.

Avec ce mode de fonctionnement basé sur une boucle : lecture - évaluation – impression (REPL), l'interpréteur :

• R : lit une expression ;
• E : évalue (calcule le résultat de) cette expression ;
• P : imprime sur la sortie standard le résultat de l'évaluation ;
• L : recommence en R.

JShell est un outil en ligne de commande, qui permet d’exécuter des instructions Java directement. Il offre une API qui permet d’évaluer de manière interactive les déclarations et les expressions du langage Java.


Pour plus de simplicité et de rapidité dans l’écriture du code pour les apprenants, JShell interprète directement des expressions sans avoir besoin qu’elles soient enveloppées dans une classe ou une méthode, qui n’a pas également besoin d’une classe pour être interprétée. Le « ; » à la fin d’une instruction devient optionnel avec JShell.

L’outil pour plus de facilité supportera des fonctions comme l’autocomplexion, l’ajout automatique des points-virgules, les importations, etc.

La prise en charge de REPL est l’une des fonctionnalités les plus attendues de Java 9, qui sortira en version stable le 22 septembre 2016.

Toutefois, la fonctionnalité a ses détracteurs, qui remettent en cause l’utilité d’un outil orienté expression pour un langage comme Java qui est orienté déclaration.

Télécharger une préversion du JDK

Et vous ?

Etes-vous pour ou contre le support de REPL dans Java ? Pourquoi ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de yahiko
Rédacteur/Modérateur https://www.developpez.com
Le 06/08/2015 à 19:53
Cet outil donne une vision un peu erronée de la structure et de la logique d'un programme Java. Pas certain que le but pédagogique soit bien atteint avec une telle approche.
3  0 
Avatar de Lacunasaurus
Membre régulier https://www.developpez.com
Le 07/08/2015 à 15:05
La prise en charge de REPL est l’une des fonctionnalités les plus attendues de Java 9
Plus que le projet Jigsaw, l'api Json, et autres ?

Personnellement, sans vouloir critiquer négativement cet ajout qui reste bon à prendre, je ne vois pas trop ce que ça va apporter en plus à part à ne pas à avoir à lancer un IDE pour pouvoir tester en live 3 ligne de codes.

Tant d'énergie dépensée pour séduire des débutants qui n'en seront pas moins performant en java en ayant commencé (et continué) sur un langage permettant une plus grande facilité de compréhension de la programmation.

Ça me donne l'image d'un vendeur de produit qui va faire les sorties d'écoles afin de rendre le plus tôt possible accro à sa marque...

Pendant ce temps Microsoft sort son IDE phare en gratuit avec un émulateur Android et des fonctionnalités web qui semble (sur le papier) géniales,
Google prévois un langage spécifique à Android et le support de Dart pour cette dernière plateforme histoire de ne plus être dépendant d'Oracle (sans compter les X langages et frameworks avant-gardistes),
Php améliore ses performances,
Javascript permet de faire des applications robustes aussi bien en client qu'en serveur....

Bref si oracle veut prendre la place des langages débutants, autant qu'ils le fasse en améliorant le langage, ses fonctionnalités, son accèssiblité, sa pérennité (cf: google et android) ... pas en lachant un shell qui sera utilisé pendant 4 heures par les débutant avant de lancer un éclipse, netbeans, intellij, etc...
4  1 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 25/08/2015 à 22:45
Citation Envoyé par sekaijin Voir le message
je maistrise suffisement JS pour le savoir
mais là dans JJS il s'agit de manipuler des objet Java de la JVM
il s'agit d'instance de classe java.
Oui il s'agit d'instance de classe Java manipulé en JavaScript.
C'est une des fonctionnalité du moteur Nashorn...

Et ?
Ca ne change rien au fait que le language soit du JavaScript... pas du Java.

Et je ne vois toujours pas le problème à proposer deux "REPL" pour deux langages distinct.

a++
2  0 
Avatar de OPi
Membre actif https://www.developpez.com
Le 06/08/2015 à 17:31
Citation Envoyé par sazearte Voir le message
Python […] langage non typé
Python est fortement typé, mais typé dynamiquement.
1  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 06/08/2015 à 19:56
Python est fortement typé, mais typé dynamiquement.
Oui mais c'est transparent pour le novice, qui pourras se concentrer sur autre chose de plus important que de déterminer si c'est un int, ou un short (j'exagère hein )

Pour l'apprentissage, certain pensent qu'il faudrait faire l'inverse, et plonger le novice directement dans le C, voir l'assembleur, c'est une vision que je ne partage pas, mais elle est intéressante.

Pour moi le plus important c'est l'algo, pas le langage.
1  0 
Avatar de codec_abc
Membre confirmé https://www.developpez.com
Le 07/08/2015 à 1:09
Citation Envoyé par sazearte
Python est utilisé pas uniquement car il peut être exécuter en mode interactif, il a d'autre avantage, langage non typé
Citation Envoyé par sazearte
Oui mais c'est transparent pour le novice, qui pourras se concentrer sur autre chose de plus important que de déterminer si c'est un int, ou un short (j'exagère hein )
Je crois que tu confonds plusieurs de choses à propos du typage. Comme tu n'es pas le seul (j'en vois souvent qui mélangent le vocabulaire voire les notions) je vais poursuivre l'effort initié par OPi et aller un peu plus loin.
-C'est faux de dire que python n'est pas typé. D'ailleurs un langage non typé je n'en connait pas (à part l'assembleur). Soit il est fortement typé (on ne mélange pas les torchons et les serviettes) ou soit faiblement (du genre "hello world" == true). Pour information, python est fortement typé.
-Python est typé dynamiquement. C'est-à-dire que si tu "mélanges les torchons et les serviettes" tu va pouvoir lancé ton programme mais c'est à l’exécution que ça mal se passer. A mettre en opposition avec les langages typés statiquement ou on va te le dire plus tôt (généralement à la compilation).
Enfin, ce n'est pas parce qu'on a un langage fortement typé avec vérification statique que le système de type vient te gêner constamment quand tu développes. L'auto-inférence de type (faire déduire les types de certains objet quand c'est possible par le compilateur) et les opérations de trans-typage implicite (du genre short vers int) permettent d'écrire du code "à la python" tout en bénéficiant des avantages de la vérification statique du typage. C'est typiquement le cas en Haskell, et en C# si tu choisies d'utiliser le mot-clé var pour déclarer tes variables.

Pour revenir plus sur la discussion, il me semble plus pertinent d'apprendre à programmer en utilisant un langage à typage fort et statique. De ce point de vue là, la repl-loop de Java me parait un bon outil pour l’apprentissage de la programmation. Je m'étais habitué à celle de Scheme quand on me l'a appris (le tout premier langage que l'on m'a appris) et c'est typiquement quelque chose que j'aurai aimé avoir lors de mon apprentissage de Java.
1  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 07/08/2015 à 5:44
Moi j'y vois surtout la possibilité a terme de pouvoir scripter du Java avec du Java plutôt qu'avec du JavaScript et donc c'est plutôt sympa vu que du coup, si ça se fait, ça donnerai encore plus de diversité au coté scripting de la JVM.
1  0 
Avatar de Anne Au Nîmes
Futur Membre du Club https://www.developpez.com
Le 12/08/2015 à 20:55
Pour les cours de programmation j'ai commencé direct en C mais si je m'en suis si bien sortie c'est parce-que j'ai commencé à faire du PHP(en autodidacte) 2 ans avant,
et de l'assembleur l'année précédente en terminale Electronique.
C'est pour ça que dans ma classe de BTS IRIS on était 4 les 3 premiers mois bien en avance sur les autres
Tiens c'est drôle, moi c'est tout l'inverse (pour un parcours presque similaire).
BTS IRIS également, après un Bac STI Electro..technique.
Je suis content d'avoir appris le C en premier, car cela te forme bien à la rigueur.

Personnellement je pense qu'apprendre un langage "difficile" comme le C/C++ ou le Java en premier est plus avantageux. Cela t'apprend la rigueur nécessaire au métier.
Alors que quand tu apprends direct le PHP, tu crois que tu peux faire n'importe quoi, et le passage à un autre langage est beaucoup plus difficile.

Apprendre le C ou le Java en premier t'apprend la rigueur. Ainsi quand tu passes à PHP (dans le sens professionnel du terme, pas en mode dimanche après-midi), et que tu découvres sa permissivité, tu sais de suite ce que tu peux faire et ce que tu ne dois pas faire.

Le gros point faible du PHP réside vraiment (toujours selon moi) dans son principal avantage: son ouverture pour réaliser des choses basiques. C'est comme cela que tu te retrouves avec des pseudo-dev PHP et des applications ultra bancales, et entendre des âneries du style "On s'en fout PHP c'est pas typé" ou avec des envies de meurtre pour ceux qui te disent "C'est quoi les PSR? Y'a pas de normes en PHP".
Ce qui au passage, donne énormément de grain à moudre aux anti-PHP, et autres trolls.
1  0 
Avatar de rdeman
Membre à l'essai https://www.developpez.com
Le 14/08/2015 à 8:50
Tiens, mais c'est beanshell ...
1  0 
Avatar de dissert
Membre averti https://www.developpez.com
Le 14/08/2015 à 15:34
le 14/08/2015 à 12:52
Sa me gêne un peu quand même, car Java n'as jamais été conçue pour pouvoir s'utiliser avec un interpréteur.
Surtout que c'est pour des fin éducative, on apprend quelque chose de "faux" aux étudiants. Ou en tous cas c'est pas une bonne utilisation de Java.
Ben non ... Java a été conçu pour fonctionner dans des mobiles (mais il fallait voir les prototypes de l'époque : rien à voir avec Android) et pour faire des applets dans des navigateurs.

Si on utilise une chose inventée uniquement pour son objet initial, on passe quasiment à côté des utilisations les plus intéressantes (cf. https://fr.wikipedia.org/wiki/S%C3%A...rendipit%C3%A9).
1  0