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

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 !

Introduction à Ceylon, un Java moderne et sans legacy,
Un tutoriel de Nicolas Fedou

Le , par Mickael Baron

0PARTAGES

2  0 
La société Arolla, cabinet de conseil en technologies de l'information vous propose un article sur une introduction à Ceylon, un Java moderne et sans legacy.

Pour lire le tutoriel, accéder à : http://arolla.developpez.com/tutorie.../introduction/

N'hésitez pas à mettre vos critiques et impressions par rapport à cet article dans ce forum.

L'équipe Java

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

Avatar de Mickael Baron
Rédacteur https://www.developpez.com
Le 01/10/2014 à 13:14
Marre de nouveaux langages qui sont toujours mieux que les autres.
On peut penser que s'il y a de nouveaux langages c'est pour palier des insuffisances des anciens. Cela ne peut stimuler la compétition, non ?

Mickael
2  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 06/10/2014 à 9:16
Extrêmement intéressé pour ma part depuis plusieurs années.

On devrait avoir une version 1.1 de Ceylon qui devrait sortir sous peu. Comme je l'ai expliqué dans d'autres sujets, c'est l'un des rares langages récents qui me donnent l'impression d'avoir été pensé par des gens qui savent ce qu'est la maintenance de gros projets. Il échappe à cette tendance actuelle néfaste qui se caractérise par la recherche de la concision à n'importe quel prix. Dans Ceylon, l'accent est mis sur la lisibilité, lorsqu'on reprend du vieux code fait il y a plusieurs mois ou années par des équipes de niveaux inégaux, ça n'a pas de prix.
2  0 
Avatar de Mister Nono
Membre chevronné https://www.developpez.com
Le 01/10/2014 à 10:41
Citation Envoyé par Mickael Baron Voir le message
La société Arolla, cabinet de conseil en technologies de l'information vous propose un article sur une introduction à Ceylon, un Java moderne et sans legacy.

Pour lire le tutoriel, accéder à : http://arolla.developpez.com/tutorie.../introduction/

N'hésitez pas à mettre vos critiques et impressions par rapport à cet article dans ce forum.

L'équipe Java
Marre de nouveaux langages qui sont toujours mieux que les autres.

Résultat : des développements toujours plus morcelés et incompatibles entre eux, un coût de maintenance élevé, une conduite au changement sans cesse, des informaticiens qui doivent toujours apprendre de nouveaux langage (au lieu d'apprendre des principes) mais pas pour mieux travailler, des employeurs qui recherchent toujours des moutons à 5 pattes... et j'en passe.

A côté de cela pour faire avaler la pilule, on sort des normes à gogo pour essayer de fédérer cette pléthore d'outils logiciels hétérogènes à l'excès...

A+
3  2 
Avatar de Traroth2
Membre émérite https://www.developpez.com
Le 06/10/2014 à 17:34
Concernant Ceylon, j'ai commencé à écrire un article plutôt détaillé sur Wikipédia, si quelqu'un est intéressé pour l'approfondir :

https://fr.wikipedia.org/wiki/Ceylon
1  0 
Avatar de Logan Mauzaize
Rédacteur/Modérateur https://www.developpez.com
Le 09/10/2014 à 13:41
Annoncer qu'il peut y avoir des problèmes dynamique de typage en Ceylon, c'est ne pas connaître le langage (et la micro-plateforme qui vient avec). Comme dit précédemment, "value" n'existe qu'à l'écriture du code et disparaît complètement en "pré-compilation" où l'inférence de type fonctionne selon deux principes :
  1. Pour une référence (variable, valeur ou propriété), il s'agit du type de l'expression de la première assignation. Attention une expression peut être complexe, ainsi le type de "foobar" dans value foobar = foo then "maChaine" else 123; est "String|Integer".
  2. Pour les fonctions, il s'agit de l'union des types des expression en retour.

L'inférence de type ne peut être utilsé que dans des éléments non publique (shared) garantissant ainsi qu'à la lecteur cela se limite à des unités de compilation bien maîtrisées.
Quand au refactorting, Ceylon s'en prémunie beaucoup en versionnant obligatoirement tous les modules (bibliothèques, jar, etc.).

"value" existe pour faciliter la relecture en évitant d'avoir une déclaration de type longue de trois km qui casse toute la lisibilité au code. Par ailleurs le système de type (moteur d'inférence inclus) est un véritable calculateur qui se simplifie souvent la tâche. Ainsi déclarer une intersection de deux types sans parents communs est traduit par le type Nothing. Qui sert également de type pour l'ensemble vide !
Commencer à jouer avec les unions, intersections et génériques, je peux vous promettre que "value" n'est pas vide de sens. Tant sémantiquement c'est simple à comprendre mais à écrire ca peut vite dévenir illisible.

Il n'y a certes pas de NPE en Ceylon mais il n'y a pas non plus de ClassCastException !

En ce qui concerne l'overloading, je pense que c'est surtout une question de faciliter d'accès au métamodèle. Par exemple pour accéder à une référence de méthode, il suffit d'utiliser le nom de la fonction sans parenthèse. Et côté utilisation comme indiqué il suffit de faire varier le nom des méthodes (ce qui ajouté plus de sémantique et de lisibilité aux APIs) et pour les constructeurs, les "builder pattern" continueront à s'appliquer mais on peut éventuellement définir des méthodes "statiques" (c-à-d des méthodes déclarées au niveau des packages.
Les propriétés du constructeur étant souvent à utiliser comme propriétés de la classe. Ce que je reproche par contre au niveau de la syntaxe des constructeurs c'est qu'il n'y a pas de blocs bien définis, tout le corps de la méthode sert de bloc au constructeur. C'est une syntaxe trop proche du JavaScript à mon goût.

On le met beaucoup en concurrence avec Java mais la JVM n'est pas son seul terrain de jeu. Il se transpile également en JavaScript !

Pour information, la version 1.1.0 est disponible ! Et beaucoup de nouveautés sont arrivées.

Concernant le côté legacy, c'est que l'équipe (et Gavin King en particullier) ne s'est donné aucune contrainte en termes de rétrocompatibilité. Quit à casser beaucoup de code 1.0 avec la 1.1. Même si de l'avis de Gavin King la mise en production à grande échelle de Ceylon n'aura surement pas lieu avant les versions >1.2
1  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 12/10/2014 à 12:28
Sortie de ceylon 1.1 jeudi passé.
Des améliorations sur les outils, le support du déploiement vers OSGI, meilleure interop avec java standard et diverses améliorations.

http://ceylon-lang.org/blog/2014/10/09/ceylon-1/

++
1  0 
Avatar de Mister Nono
Membre chevronné https://www.developpez.com
Le 01/10/2014 à 13:32
Citation Envoyé par Mickael Baron Voir le message
On peut penser que s'il y a de nouveaux langages c'est pour palier des insuffisances des anciens. Cela ne peut stimuler la compétition, non ?

Mickael
Oui mais combien de langages tombent en désuétude au bon de quelques années ? Combien d'applications sont refaites car on ne peut plus les maintenir ?

A+
0  0 
Avatar de Mickael Baron
Rédacteur https://www.developpez.com
Le 01/10/2014 à 13:40
Les langages alternatifs Java que je connais sont encore bien vivants (Groovy, Scala, Ceylon...)

Mickael
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 06/10/2014 à 10:51
Avoir des alternatives a des avantages (les nouveaux concepts), comme des inconvénients (la maintenance).

Inspiré du C++, le "nouveau langage" Java ("nouveau" pour son époque en 1995) a révolutionné les langages interprétés par une VM, plus de pointeur car les objets sont gérés par un GC, mais après ?
Si le framework Spring n'avait pas existé, est-ce que l'injection de dépendance ferait parti du standard ?
Si les langages JavaScript, PHP (parmi les plus connus) n'avaient pas démocratisé les lambdas, est-ce qu'on les aurait aujourd'hui ?
Il y a tellement d'exemples comme ceux-là.

Java évolue lentement (amha c'est le marché et la transition Sun/Oracle qui veut cela), il aura fallu attendre Java 5 et Java 8 pour voir des évolutions au niveau de la syntaxe, mais Java n'a pas vraiment à envier aux autres langages aujourd'hui.

Le problème : Qu'est ce qu'on va faire de tous ces frameworks et langages une fois en avoir extrait les concepts ? qui va les maintenir ?
0  0 
Avatar de OButterlin
Modérateur https://www.developpez.com
Le 06/10/2014 à 11:28
Un langage de plus... à voir ce qu'il deviendra

Personnellement, sans vouloir le juger (je ne connais pas), je m'en fiche un peu, c'est plus ce qu'il y a autour d'un langage qui m'intéresse que le langage proprement dit. De ce point de vue, Java est tout simplement exceptionnel...

J'ai appris pas mal de langage de programmation, cobol, rpg, c/c++, pascal objet, java (pour les principaux) et ça ne m'a jamais posé de problème, on apprend d'abord un vocabulaire, ensuite le langage va permettre de "penser" autrement (surtout vrai pour les langages objets)

S'il s'agit de créer un nouveau langage pour simplifier une façon de faire, bof, je suis moins intéressé, c'est assimilable à de la flemme...
S'il apporte réellement quelque chose de plus et s'il est largement adopté, alors oui, pourquoi pas...
Même si je n'ai toujours rien à reprocher à Java... surtout la v8
0  0