Ceylon (programovací jazyk)

Projekt Ceylon je objektovo orientovaný programovací jazyk a SDK. Je založený na jazyku Java, vyvíjaný spoločnosťou Red Hat. Programy napísané v jazyku Ceylon sú spustiteľné nad Java Virtual Machine a JavaScript Virtual Machine. Názov "Ceylon" je nepriamou referenciou k Jave, keďže oba ostrovy Jáva a Srí Lanka (kedysi známa pod menom Ceylon) produkujú kávu.

História

Vývojari stojaci za projektom Ceylon sú fanúšikmi Javy a to až do takej miery, že sa rozhodli jazyk si prispôsobiť vlastným predstavám a požiadavkam dnešného moderného sveta. Prvé zmienky o novom jazyku boli zverejnené približne v polovici roka 2011, pričom prvá funkčná predprodukčná verzia Milestone 1 bola vydaná 20. decembra 2011, prvá produkčná verzia 1.0.0 uzrela svetlo sveta takmer dva roky po tom, 12. novembra 2013 a momentálne je Projekt Ceylon vo verzii 1.1.0.

Vlastnosti jazyka

Jazyk Ceylon dedí väčšinu syntaxe od Javy. Program Hello World vyzerá následovne:
shared void hello() {
    print("Hello, World!");}

Polymorfizmus operátorov

Ceylon nepodporuje preťaženie operátorov, keďže tento princíp je vo všeobecnosti považovaný za mätúci. Namiesto toho jazyk podporuje polymorfizmus operátorov, pričom operátor je skratka pre metódu zabudovaného typu. Tento prístup je považovaný za jednoduchší a bezpečnejší ako skutočné preťažovanie operátorov.

Rozhrania

Rozhrania sú dátové štruktúry, ktoré obsahujú definície členov, avšak nie ich implementáciu. Sú nápomocné pre definovanie kontraktu medzi členmi rôznych typov, ktorí majú rozdielne implementácie. Každé rozhranie je implicitne abstraktné.
Rozrhanie je implementované triedou, ktorá používa kľúčove slovo satisfies. Je povolené implementovať viac ako jedno rozhranie. V tomto prípade sú rozhrania napísané po kľúčovom slove satisfies v zozname oddelenom čiarkou. Ceylon umožňuje mať v rozhraniach okrem definícií aj obmedzený kód. Rozrhanie nemôže obsahovať inicializačnú logiku, avšak môže obsahovať mixiny (trieda, ktorá obsahuje kombináciu metód iných tried).
shared interface Comparable<in T> {
   shared formal Comparison compare(T other);

   shared Boolean largerThan(T other) {
      return compare(other)==larger;
   }

   shared Boolean smallerThan(T other) {
      return compare(other)==smaller;
   }
   ...}

Dedenie

Takisto ako v Jave, aj v jazyku Ceylon môžu triedy dediť iba od jednej triedy. Dedičnosť je deklarovaná kľúčovým slovom extends. Trieda môže odkazovať sama na seba pomocou kľúčového slova this.
Abstraktné triedy sú triedy, ktoré slúžia iba ako šablóna a nemôžu mať inštancie. Okrem toho fungujú presne ako bežná trieda.
Abstraktné metódy môžu mať iba abstraktné triedy. Abstraktné metódy nemajú žiadnu implementáciu a musia byť nahradené podtriedou, s výnimkou prípadu, kedy je aj táto trieda abstraktná.

Licencia

Celá práca na projekte, vrátane jej webstránky, špecifikácie jazyka a Ceylon Herd (repozitár pre moduly jazyku Ceylon) je voľne dostupná pod licenciami open source.

Prijatie

Ryan Paul tvrdí, že aj napriek tomu, že je motivácia Red Hatu "výstredná", King ju vie dobre obhájiť. Neil McAllister na druhej strane ale tvrdí, že Ceylon je chyba a snaha Red Hatu by bola viac prínosná, ak by sa rozhodli podporiť existujúce alternatívy založené na JVM, ako napríklad Scala. Andrew Oliver z magazínu JavaWorld popisuje jazyk Ceylon vo verzii pred 1.0.0 ako nádejný, avšak v momentálnej podobe nepripravený na použitie.