IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres Java Discussion :

[YNOT] Langage de script Java - présentation


Sujet :

Autres Java

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut [YNOT] Langage de script Java - présentation
    Présentation de YNot, un langage de script Java
    Pouvant accéder à toute l'API Java SE, créé par un jeune développeur



    Je travaille sur un projet personnel depuis maintenant 2 ans (sur mon temps libre). Il s'agit d'un nouveau langage que j'ai appelé "Ynot" (se prononçant "why not").

    J'ai 26 ans et je suis passionné par le développement (j'ai commencé la programmation à l'âge de 12 ans en Pascal... le premier niveau d'un Pacman très très mal codé...)
    Sinon je suis développeur J2SE/J2EE depuis 6 ans (je fais un peu d'android, C++, C#, PHP, ...)

    Naissance:

    J'ai dans mon entourage un ami qui m'a toujours étonné par ses connaissances (divers et variées) et par sa faculté à apprendre. Un jour, je me mis en tête de lui faire découvrir le merveilleux monde de la programmation (où l'imagination est la seule limite à respecter). On commença donc à parcourir les différents éléments (boucle, condition, recursivité, ...) de l'algorithmie. Puis on aborda le principe de la "réutilisabilité" = en gros de ne pas refaire la roue à chaque foi. Je lui pris comme exemple un lecteur MP3. En tant que grand partisan de Java, j'ouvris Google pour trouver une libraire (.jar) capable de lire des mp3. Rapidement on trouva ce que l'on cherchait et en regardant la documentation on compris comment l'utiliser. C'est lorsque j'ouvris Eclipse que je le perdis (définitivement). Le fait de gérer des projets, d'importer des jar, de devoir compiler, de devoir packager en .jar notre programme (pour avoir une version standalone) le découragea. C'est à ce moment que je me suis dit: N'y a-t-il pas un langage de script simple permettant de faire du Java et d'utiliser des .jar facilement ? La réponse fût "non". Le projet "Ynot" était né...

    Version actuelle

    Le développement a duré 2 ans car entre la première version qui marchouillait et la version actuelle tout a changé. Surtout qu'entre temps j'ai lu "Coder Proprement" de Robert C. Martin. Du coup, j'ai repris tout mon code (c'est fou comme ce livre vous change votre façon de coder). J'estime que la release actuelle est assez stable pour l'utiliser (même si c'est une beta). J'ai maintenant besoin de gens qui l'utilisent pour avoir leurs retours et améliorer le projet... merci au gens qui tenteront l'aventure.

    Description

    Le mieux étant d'aller directement voir le site http://www.ynotscript.com.
    Une vidéo montre en live la réalisation d'un "helloworld" à la sauce Ynot.
    Vous y trouverez aussi la syntaxe détaillée ainsi que quelques tutos.

    En quelques mots:
    - C'est un language de script (donc plus besoin de compilation)
    - La syntaxe est très simple (entre du PHP et du Pascal)
    - Le projet est libre (licence GPLv3)
    - L'Interpréteur est en Java.
    - Les scripts ynot peuvent accéder à toute l'API Java SE (swing, sound...)
    - Il suffit de mettre des jar à côté du script pour être capable de les utiliser.
    - Pour installer le projet il suffit de le dézipper
    - Pour lancer un script il suffit de faire clic droit, ouvrir avec et choisir le .sh ou .bat du projet ynot.

    Je serais déjà très content si des gens prennent la peine de visiter le site et encore plus s'ils prennent le temps de l'essayer.

    Merci d'avance à tous ces gens.

    PS: Dans la section "Project Definition" tout le projet (son fonctionnement) est expliqué. Ce dont je suis le + fiert est le principe "Request-Definition-Command"... mais n'allez pas vous perdre directement dans cette section.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le projet semble intéressant, je l'ai téléchargé, testé et ai aussi téléchargé les sources qui m'intéressent vraiment
    J'ai une question cependant : as-tu regardé les langages de script existants qui tournent sur la jvm ? notamment les plus connus : jython, jruby et groovy.

    Une chose aussi que j'ai remarqué au premier abord : la syntaxe fait un usage intensif des chaînes de caractères ce qui la rend un peu lourde. Au premier coup d'oeil ça permet d'avoir un parser ultra simple et très peu de mot clef vu que tout est une requête (arrête moi si je me trompe), donc techniquement et conceptuellement c'est une bonne unification des choses.
    Après à voir si l'utilisateur aime ça
    En tout cas bravo et je vais me plonger un peu dedans, à voir aussi si l'utilisation des dictionnaires est assez flexible.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par George7 Voir le message
    Le projet semble intéressant, je l'ai téléchargé, testé et ai aussi téléchargé les sources qui m'intéressent vraiment
    Je te salue bien bas pour avoir pris la peine de tester

    Citation Envoyé par George7 Voir le message
    J'ai une question cependant : as-tu regardé les langages de script existants qui tournent sur la jvm ? notamment les plus connus : jython, jruby et groovy.
    Oui j'avais regardé. Groovy est celui qui se rapprochait le plus de ce que je souhaitai. Le truc c'est que je n'avais pas trouvé comment utiliser des jar externes facilement. Ensuite je voulais pouvoir prendre la main sur le language lui-même. Histoire que si quelque chose manque on puisse ajouter la fonctionalité soit-même (+ d'autres fonctionnalités cités plus bas).

    Citation Envoyé par George7 Voir le message
    vu que tout est une requête (arrête moi si je me trompe)
    Tu as tout compris

    Citation Envoyé par George7 Voir le message
    En tout cas bravo et je vais me plonger un peu dedans, à voir aussi si l'utilisation des dictionnaires est assez flexible.
    Si tu as le moindre problème n'hésite pas...

    Par contre la doc est pas encore complète. Je souhaite cleaner encore le code (à coup de checkstyle, findbugs et sonarsource) avant de générer et mettre en ligne la Javadoc. De même que la documentation pour créer des mini parseur n'est pas encore rempli...

    PS: le projet est découper de façon à ce qu'on puisse refaire une partie sans impacter les autres. Par exemple on peut envisager de lire les requêtes depuis une base de données ou encore un webService. J'ai utilisé le principe Request-Definition-Command pour faire un interpreteur de script mais on peut aussi l'utiliser pour faire un serveur FTP, un serveur web, un chat, .... tout ce qui traite des requêtes qui donnent lieu à des actions.

    Je présente YNOT comme un language de script pour ne pas perdre les gens... mais en fait c'est un peu + que ça

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Salut,

    Tout d'abord bravo c'est toujours cool d'arriver à releaser ce genre de projet

    Ensuite, c'est cool aussi de voir un ancien de l'ECML (non j'y suis pas mais je connais j'ai des amis là bas).

    Pour finir, je ne veux pas détruire tout ce que t'as fait mais ... pourquoi avoir créer un langage pour tirer des dépendances ? Tu ne pense pas qu'une simple libraire qui utilise des annotations et APT permettrai de faire cela ? Maven le fais déjà à coup de descripteur.

    J'ai pas vu grand chose mais j'ai eu l'impréssion à voir la doc de voir du php tourner dans une JVM
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Tout d'abord bravo c'est toujours cool d'arriver à releaser ce genre de projet
    Merci et il y a tant d'améliorations que je souhaite encore faire

    Citation Envoyé par Alain Defrance Voir le message
    Ensuite, c'est cool aussi de voir un ancien de l'ECML (non j'y suis pas mais je connais j'ai des amis là bas).
    L'ECML est une petite famille... qui sait je les connais peut-être

    Citation Envoyé par Alain Defrance Voir le message
    Pour finir, je ne veux pas détruire tout ce que t'as fait mais ... pourquoi avoir créer un langage pour tirer des dépendances ? Tu ne pense pas qu'une simple libraire qui utilise des annotations et APT permettrai de faire cela ? Maven le fais déjà à coup de descripteur.
    Tu ne détruis rien ne t'en fais pas. Plus j'en parle et j'échange sur Ynot et mieux le projet pourra évoluer vers quelque chose de mieux.
    Pour ma part dans un vrai projet Java/J2EE j'utilise effectivement MAVEN + HUDSON + SONARSOURCE + ARTIFACTORY.
    Ynot ne se prête pas (encore) à des projets énormes mais à de petit programmes, script backoffice, mini serveur, ... d'ailleurs je n'ai nativement pas mis la possibilié d'inclure des script à l'intérieur des scripts, car chaque script doit etre fait pour marcher en solo... l'idée c'est de développer vite en réutilisant les libraries des autres.

    Citation Envoyé par Alain Defrance Voir le message
    J'ai pas vu grand chose mais j'ai eu l'impréssion à voir la doc de voir du php tourner dans une JVM
    Lol oui on pourrait le voir comme ça. Maintenant essayes de lire des mp3 en PHP, de faire du textToSpeech ou encore de manipuler une Kinect (oui le tuto arrivera bientôt) en seulement quelques lignes de code... voilà la différence

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Ok c'est cool je regarderai
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    N'ayant jamais eut l'utilité d'un langage de script comme Groovy, je ne peux pas comparer, ni donner d'avis technique.

    Mais dans un premier temps, je trouve ça très ludique.
    Donc je fais joujou avec, et la doc est cool.

    Je suis souvent limité en bash, et j'ai la flemme de faire du jolie java pour un besoin minime... finalement ça va surement me servir.
    Simple et Cool, c'est un bon début

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par sebastien.moratinos Voir le message
    Je suis souvent limité en bash, et j'ai la flemme de faire du jolie java pour un besoin minime... finalement ça va surement me servir.
    C'est un très bon résumé de la situation ça.... plutôt que faire de long monologue de pourquoi utiliser Ynot, j'utiliserai maintenant cette phrase

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Hier soir test de Ynot, donc ce matin test de Groovy.

    Premières impressions...

    Facilité de mise en oeuvre du premier programme :

    Ynot (+) : 1 Download + 1 variable d'environnement + 1 fichier texte + Clique droit "Ouvrir avec Ynot"

    Groovy (-) : 1 Download + 1 variable d'environnement + 1 fichier texte + 1 classe java (+ 1 bat ou sh optionnel)

    //j'oublie la console Groovy qui était une bonne chose au premier abord mais qui ne ressemble en rien à la facilité de Ynot.
    //C'est tout bête un Main qui lance le script groovy, mais c'est déjà de trop !

    Apprentissage syntaxe :

    Ynot (-) : ne ressemble pas à du java, pas d'auto-complétion actuellement

    Groovy (+) : réellement du java, auto-complétion grâce au plugin IDE


    La suite
    Passage Java vers Groovy... bof
    J'ai décidé de ne pas aller plus loin avec Groovy, la mise en oeuvre ne me plait pas. Le gain en productivité par rapport au java ne m'a pas convaincu, d'un côté mon expérience en java de l'autre apprendre une nouvelle syntaxe, proche du java mais une nouvelle syntaxe.

    Passage Java vers Ynot... on va essayer
    Par contre, je vais approfondir un peu plus Ynot. Un fichier texte avec clique droit -> Go, ça me plait comme approche.
    Je vais devoir apprendre les quelques mots clefs Ynot mais après je me ferai un dictionnaire suivant le besoin.
    Celà ressemble à du "bricolage" (ce n'est pas péjoratif) d'admin système et ça ressemble bien à ma vision d'un langage de script.
    Si l'utilisation des librairies externes est aussi bien que tu le dis, je vais surement regarder le principe Request-Definition-Command et les sources.

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut
    Déjà je te remercie d'avoir pris le temps de tester Ynot et de faire ce comparatif

    Pour l'IDE avec auto-completion j'y ai pensé ça serait vraiment cool (et bien sûr il serait codé en ynot )

    Le composant Shell déroule les commandes de ligne en ligne (appelé "Step") et toutes les variables sont rassemblées dans un VariableManager. Pourquoi je parle de toute cela... car je l'ai désigné en gardant à l'esprit que je souhaitais faire un editeur ynot mais avec une sorte de debuggeur pas à pas...

    Je suis le premier utilisateur de Ynot et ce que je peux critiqué (hé oui dans la vie il faut savoir s'auto-critiquer) :

    - la gestion des erreurs qui n'est pas encore assez simple. En gros quand un truc pète (erreur de syntaxe, methode inexistante, ...) et bien ça peut générer de longues lignes d'exception... perturbant au premier abord.
    - la gestion des exceptions -> actuellement pas de gestion de try/catch
    - autre truc génant c'est qu'en faisant "open with" si le script pète une exception et bien il se ferme dessuite... du coup on a pas le temps de la voir... du coup obligé d'ouvrir un terminal pour lancer en ligne de commande pour voir l'erreur.

    Voilà, le projet Ynot n'est pas parfait (même si en 2 ans il a beaucoup progressé).
    En tout ça c'est un projet "honnête", je ne veux pas cacher les défauts mais au contraire les montrer du doigt, et grâce à vous les débusquer au plus tôt et les corriger pour améliorer le langage.

    Vous l'avez compris y a plein de nouvelles choses à faire (améliorer/finir la doc, faire un exemple avec kinect, faire + de tutos, cleaner le code et générer la javadoc, ...) et des choses à améliorer ET bien sûr continuer à prospecter pour faire découvrir ce projet aux autres personnes.

    Bien sur comme je fais ça sur mon temps libre, il faut donc faire des priorités (et ça sera selon les retours des utilisateurs qui dicteront l'importance des choses à faire).

    Merci en tout ça de ce retour qui est vraiment très constructif

  11. #11
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Salut,

    As tu prévu quelque chose en terme d'ORM ? Je peux utiliser JPA ?
    Est-ce que ton language est annotable ?
    Est-ce qu'il y a une compilation ?

    Alain.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Points : 409
    Points
    409
    Par défaut
    Ca a l'air sympa, je vais regarder.
    Pour l'IDE, on peut regarder du coté de netbeans, faire une extension à partir du support de PHP
    Sinon une petite question comme ça, vu que tu mettais l'accent sur la facilité de lire un mp3 par exemple, de distribution, ça peut tourner sur une page web Ynot?
    Dans tous les cas encore bravo

  13. #13
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Salut et bravo.
    J'avoue que j'avais depuis quelques temps un vague projet ou plutôt une envie de faire un truc dans ce genre, mais, hélas, pas le courage !

    Donc double bravo ! De plus je trouve le site super bien fait.

    Sur le fond j'ai commencé à regarder mais je suis pas encore allé très loin.
    Deux remarques :
    = Peut être rajouter une rubrique 'exemples' (éventuellement accessibles à des contributeurs externes) qui listerait des scripts permettant de voir les différentes possibilités.
    =Penser à rajouter des exemples d'accès base de données et de gestion 'système'.

  14. #14
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    As tu prévu quelque chose en terme d'ORM ? Je peux utiliser JPA ?
    Est-ce que ton language est annotable ?
    Est-ce qu'il y a une compilation ?
    -> J'ai rien prevu de particulier mais comment on peut accéder à tout java tu peux effectivement utiliser JPA (ou simplement un utilisation jdbc classique)
    -> Je viens de faire un exemple (JPA généré avec Spring ROO - tuto sur les pizza) - ça utilise hibernate/hypersonic
    -> Unzip le et lancer le script ynot à l'intérieur
    http://www.ynotscript.com/download/pizza.zip

    ===================================================================
    import("javax.persistence")
    import("com.springsource.roo.pizzashop.domain")

    $persistenceClass := static("Persistence")

    $emf := $persistenceClass.createEntityManagerFactory("persistenceUnit")
    $em := $emf.createEntityManager()
    $transac := $em.getTransaction()
    $transac.begin()
    $pizza := new("Pizza")
    $id := 1
    $pizza.setId([$id.longValue()])
    $pizza.setName("Fromage")
    $em.persist($pizza)
    $transac.commit()
    $restoredPizza := $em.find([$pizza.getClass()], [$id.longValue()])
    $em.close()
    $emf.close()
    echo([$restoredPizza.toString()])
    sleep(3000)
    =======================================================================

    -> Je n'ai pas prévu de déclaration de classe grace à Ynot (juste implémenter des interfaces).
    -> ynot étant un script il n'y a pas de compilation.

    Citation Envoyé par galien Voir le message
    Ca a l'air sympa, je vais regarder.
    Pour l'IDE, on peut regarder du coté de netbeans, faire une extension à partir du support de PHP
    Sinon une petite question comme ça, vu que tu mettais l'accent sur la facilité de lire un mp3 par exemple, de distribution, ça peut tourner sur une page web Ynot?
    Dans tous les cas encore bravo
    -> Il se fait tard là mais en cas je ferais vite un serveur web qui executera les script ynot si tu veux (comme on peut le voir avec apache et php)

    Citation Envoyé par philnext Voir le message
    Deux remarques :
    = Peut être rajouter une rubrique 'exemples' (éventuellement accessibles à des contributeurs externes) qui listerait des scripts permettant de voir les différentes possibilités.
    =Penser à rajouter des exemples d'accès base de données et de gestion 'système'.
    -> Oui les exemples seront une priorité. D'ailleurs si vous faites des scripts interessant n'hésitez pas à me les envoyer et je les mets en lignes

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/04/2011, 16h56
  2. Langage de script avec Java
    Par K2R Nolween dans le forum Général Java
    Réponses: 6
    Dernier message: 12/05/2009, 10h38
  3. Utiliser du Java depuis un langage de script et + si affinité. . .
    Par Yannick_from_31 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/11/2006, 18h22
  4. [langage] perl script pour balancer un B-arbre
    Par RonMaster dans le forum Langage
    Réponses: 5
    Dernier message: 22/10/2004, 17h35
  5. [langage] cherche script pour formater une chaine
    Par MASSAKA dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2003, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo