Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
151 lines (132 sloc) 6.03 KB
---
layout: default
title: Welcome to Ceylon
tab: home
unique_id: homepage
author: Emmanuel Bernard
---
#core-page
:markdown
# #{page.title}
Ceylon is a programming language for writing large programs in a team
environment. The language is elegant, highly readable, extremely typesafe,
and makes it easy to get things done. And it's easy to learn for
programmers who are familiar with mainstream languages used in business
computing. Ceylon has a full-featured Eclipse-based
[development environment][ide], allowing developers to take
best advantage of the powerful static type system.
Programs written in Ceylon execute on any JVM.
[intro]: /documentation/current/introduction
[tour]: /documentation/current/tour
[spec]: /documentation/current/spec
[roadmap]: /documentation/current/roadmap
[ide]: /documentation/current/ide
## What?
Ceylon is a general-purpose, imperative, statically-typed, block-structured,
object-oriented, higher-order language featuring a syntax similar to
Java and C#, and a type system based on the notion of *principal types*.
Since 'Hello World' is the traditional way to introduce a language,
here's how it looks in Ceylon:
<pre class="brush: ceylon">
void hello() {
print("Hello, World!");
}
</pre>
To learn more, you can start with our [quick introduction][intro]
or take an in-depth [tour of Ceylon][tour].
## Why?
Ceylon is deeply influenced by Java. You see, we're fans of Java, but we know
its limitations inside out. Ceylon keeps the best bits of Java but improves
things that in our experience are annoying, tedious, frustrating, difficult
to understand, or bugprone. Furthermore, Ceylon makes it much easier to
write generic code (frameworks or libraries), or to naturally describe
treelike structures (especially user interfaces). Of course, Java isn't
the only language with good ideas, so Ceylon looks for inspiration in other
language families, in everything from Smalltalk to ML.
The design of Ceylon is guided by [five important concerns](/blog/2012/01/10/goals/)
that serve as a kind of mission statement for the project.
## When?
Our second milestone release, [Ceylon M2 "Minitel"][M2], is already available
for [download][download M2]. It includes a reasonably complete and stable
[specification][spec] and a complete command line toolset
(compiler, runtime, documentation compiler). A compatible release of
[Ceylon IDE][ide] will soon follow, but you can still use the previous
[release][M1 IDE], which is [available][install M1 IDE].
We've divided our work into [five milestones][roadmap]. The
second milestone covered perhaps 85% of the language, along with the core
language module (the types mentioned in the language specification). The
remaining milestones cover the rest of the language, along with the basic
class libraries, and will incorporate any adjustments to the language that
we find necessary based on community feedback.
The development team, which includes volunteers from the community and a
number of Red Hat employees, is currently developing the second milestone
release. Their work is always visible in the [public GitHub repositories](/code).
For more details, see the [roadmap][roadmap].
[M2]: /blog/2012/03/20/ceylon-m2-minitel
[M1 IDE]: /blog/2012/01/10/ceylon-ide-m1-newton
[download M2]: /download#command_line_tools
[install M1 IDE]: /download#ceylon_ide
<a href="/+" style="cursor:pointer;margin-left:auto;margin-right:auto;display:block;text-align:center;padding:50px">
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px;margin-top:8px;">Follow Ceylon on</span>
<img src="https://ssl.gstatic.com/images/icons/gplus-32.png" alt="" style="border:0;width:32px;height:32px;"/>
</a>
#sidebar
.point-dark-top
&nbsp;
.sidebar-dark
:markdown
### Latest release: M2
Ceylon M2 "Minitel" is available - [read about it][M2] and [download it now][download M2].
Ceylon IDE was released (an M2 release will follow soon) - [install it from our update site] [install M1 IDE]!
[M2]: /blog/2012/03/20/ceylon-m2-minitel
[download M2]: /download?utm_source=news&utm_medium=web&utm_content=download&utm_campaign=latestrelease
[install M1 IDE]: /documentation/current/ide/install?utm_source=blog&utm_medium=web&utm_content=ide_install&utm_campaign=1_0_M1release
.point-dark-bottom
&nbsp;
.point-light-top
&nbsp;
.sidebar-block
%h3 News
- news = site.news.values.sort{|l,r| r.effective_date <=> l.effective_date}
- for entry in news[0,2]
.news_entry
%h4
- if ( entry.more_info_url )
%a{:href=>entry.more_info_url}
= entry.title
- else
= entry.title
.news_date
#{entry.date}
.news_detail
#{entry.content}
%hr
:markdown
To stay up to date, follow our [blog](/blog) ([feed](/blog/blog.atom)).
- events = site.events.values
- now = Time.now
- next_2_month = now + 2 * 31 * 24 * 60 * 60 #around two month later
- events = events.find_all{|item| item.effective_date.to_s >= now.strftime("%Y%m%d") && item.effective_date.to_s <= next_2_month.strftime("%Y%m%d")}
- events = events.sort{|l,r| l.effective_date <=> r.effective_date}
- if events.size != 0
.point-light-bottom
&nbsp;
.point-light-top
&nbsp;
.sidebar-block
%h3 Events
- for entry in events[0,2]
.news_entry
%h4
- ref = '/community/events/#' + entry.effective_date.to_s
%a{:href=>ref}
= entry.event
.news_date
&= entry.event_date
.news_detail
#{entry.presentor} will present at #{entry.event} in #{entry.location}.
%hr
:markdown
[More events](/community/events)
.point-light-end
&nbsp;