**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.

Typový systém
-------------

Základné princípy typového systému sú:

* žiadne špecíalne typy, tj. žiadne primitívne alebo zložené typy, "všetko je objekt".
* žiadne špeciálne funkcie pre zabudované typy.
* všetko by malo fungovať "ako to očakávate" z Javy / C / atď.
* nepridávať zložitosť typovým systémom známym z Javy. Preto žiadne preťažovanie metód a wildcard typy.

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.

Referencie
----------

1. 1 2   *Ceylon: Quick introduction* [online]. [Cit. 2015-01-31]. Dostupné online.
2. ↑  Gavin King. *Introduction to Ceylon Part 1* [online]. [Cit. 2015-01-31]. Dostupné online.
3. ↑  Gavin King. *First official release of Ceylon* [online]. [Cit. 2015-01-31]. Dostupné online.
4. ↑  Gavin King. *Ceylon 1.0.0 is now available* [online]. [Cit. 2015-01-31]. Dostupné online.
5. ↑  Gavin King. *Ceylon 1.1.0 is now available* [online]. [Cit. 2015-01-31]. Dostupné online.
6. ↑   *Ceylon: Licenses* [online]. [Cit. 2015-01-31]. Dostupné online.
7. ↑  Gavin King. *The Ceylon Type System* [online]. [Cit. 2015-01-31]. Dostupné online. Archivované 2012-11-22 z originálu.
8. ↑  PAUL, Ryan. *The rationale for Ceylon, Red Hat’s new programming language* [online]. 15.4.2011, [cit. 2015-01-31]. Dostupné online.
9. ↑  MCALLISTER, Neil. *Red Hat's Ceylon language is an unneeded tempest in a teapot* [online]. 22.4.2011, [cit. 2015-01-31]. Dostupné online.
10. ↑  OLIVER, Andrew. *A first look at Gavin King's Ceylon* [online]. 25.4.2013, [cit. 2015-01-31]. Dostupné online. Archivované 2014-10-24 z originálu.

Externé odkazy
--------------

* Oficiálna stránka jazyka Ceylon (po anglicky)

Zdroj
-----

*Tento článok je čiastočný alebo úplný preklad článku Ceylon (programming language) na anglickej Wikipédii.*