<commit_before><?xml version='1.0' encoding="iso-8859-1"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
                      "../support/docbook-dtd/docbookx.dtd"

[
<!ENTITY introduction              SYSTEM "modules/introduction.xml">
<!ENTITY declarations              SYSTEM "modules/declarations.xml">
<!ENTITY statementblocks           SYSTEM "modules/statementblocks.xml">
<!ENTITY expressions               SYSTEM "modules/expressions.xml">
<!ENTITY types                     SYSTEM "modules/types.xml">
]>

<book lang="en">

    <bookinfo>
        <title>Project Ceylon</title>
        <subtitle>A Better Java</subtitle>
        <releaseinfo>For internal discussion only</releaseinfo>
    </bookinfo>

    <toc/>
    
    <preface>
    <title>A work in progress</title>
    
    <para>This project is the work of a team of people who are fans of Java,
    and of the Java ecosystem, of its practical orientation, of its culture of 
    openness, of its developer community, of its unashamed participation in the 
    world of business computing, and of its strong commitment to portability. 
    However, we recognize that the language and class libraries designed more 
    than 15 years ago are now no longer the best foundation for solving today's
    business computing problems.</para>
    
    <para>The goal of this project is to make a clean break with the legacy 
    Java SE platform, by improving upon the Java language and class libraries, 
    and by providing a modular architecture for a new platform based upon the 
    Java Virtual Machine.</para>
    
    <para>Java is a simple language to learn and Java code is easy to read and
    understand. Java provides a level of typesafety that is appropriate for
    business computing and enables sophisticated tooling with features like
    refactoring support, code completion and code navigation. Ceylon aims to 
    retain the overall model of Java, while getting rid of some of Java's warts,
    including: primitive types, arrays, constructors, getters/setters, checked 
    exceptions, raw types, wildcard types, thread synchronization, finalizers, 
    serialization, unsafe typecasts and reflection, and the dreaded 
    <literal>NullPointerException</literal>.</para> 
    
    <para>Ceylon has the following goals:</para>
    
    <itemizedlist>
        <listitem>
            <para>to be appropriate for large scale development, but to also
            be <emphasis>fun</emphasis>,</para>
        </listitem>
        <listitem>
            <para>to execute on the JVM, and interoperate with Java code,</para>
        </listitem>
        <listitem>
            <para>to be easy to learn for Java and C# developers,</para>
        </listitem>
        <listitem>
            <para>to eliminate some of Java's verbosity, while retaining its 
            readability&mdash;Ceylon does <emphasis>not</emphasis> aim to be 
            the least verbose/most cryptic language around,</para>
        </listitem>
        <listitem>
            <para>to provide a declarative syntax for expressing hierarchical 
            information like user interface definition, externalized data, and 
            system configuration, thereby eliminating Java's dependence upon 
            XML,</para>
        </listitem>
        <listitem>
            <para>to provide a more elegant and more flexible annotation syntax
            to support frameworks and declarative programming,</para>
        </listitem>
        <listitem>
            <para>to support and encourage a more functional style of programming 
            with immutable objects and first class functions, alongside the
            familiar imperative mode,</para>
        </listitem>
        <listitem>
            <para>to expand compile-time typesafety with compile-time safe handling 
            of null values, compile-time safe typecasts, and a more typesafe approach 
            to reflection,</para>
        </listitem>
        <listitem>
            <para>to provide language-level modularity, and</para>
        </listitem>
        <listitem>
            <para>to improve on Java's very primitive facilities for meta-programming, 
            thus making it easier to write frameworks.</para>
        </listitem>
    </itemizedlist>
    
    <para>Unlike other alternative JVM languages, Ceylon aims to completely replace 
    the legacy Java SE class libraries.</para>
    
    <para>Therefore, the Ceylon SDK will provide:</para>
    
    <itemizedlist>
        <listitem>
            <para>the OpenJDK virtual machine,</para>
        </listitem>
        <listitem><commit_msg>blah blah<commit_after><?xml version='1.0' encoding="iso-8859-1"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
                      "../support/docbook-dtd/docbookx.dtd"

[
<!ENTITY introduction              SYSTEM "modules/introduction.xml">
<!ENTITY declarations              SYSTEM "modules/declarations.xml">
<!ENTITY statementblocks           SYSTEM "modules/statementblocks.xml">
<!ENTITY expressions               SYSTEM "modules/expressions.xml">
<!ENTITY types                     SYSTEM "modules/types.xml">
]>

<book lang="en">

    <bookinfo>
        <title>Project Ceylon</title>
        <subtitle>A Better Java</subtitle>
        <releaseinfo>For internal discussion only</releaseinfo>
    </bookinfo>

    <toc/>
    
    <preface>
    <title>A work in progress</title>
    
    <para>This project is the work of a team of people who are fans of Java,
    and of the Java ecosystem, of its practical orientation, of its culture of 
    openness, of its developer community, of its unashamed participation in the 
    world of business computing, and of its strong commitment to portability. 
    However, we recognize that the language and class libraries designed more 
    than 15 years ago are now no longer the best foundation for solving today's
    business computing problems.</para>
    
    <para>The goal of this project is to make a clean break with the legacy 
    Java SE platform, by improving upon the Java language and class libraries, 
    and by providing a modular architecture for a new platform based upon the 
    Java Virtual Machine.</para>
    
    <para>Java is a simple language to learn and Java code is easy to read and
    understand. Java provides a level of typesafety that is appropriate for
    business computing and enables sophisticated tooling with features like
    refactoring support, code completion and code navigation. Ceylon aims to 
    retain the overall model of Java, while getting rid of some of Java's warts,
    including: primitive types, arrays, constructors, getters/setters, checked 
    exceptions, raw types, wildcard types, thread synchronization, finalizers, 
    serialization, unsafe typecasts and reflection, and the dreaded 
    <literal>NullPointerException</literal>.</para> 
    
    <para>Ceylon has the following goals:</para>
    
    <itemizedlist>
        <listitem>
            <para>to be appropriate for large scale development, but to also
            be <emphasis>fun</emphasis>,</para>
        </listitem>
        <listitem>
            <para>to execute on the JVM, and interoperate with Java code,</para>
        </listitem>
        <listitem>
            <para>to be easy to learn for Java and C# developers,</para>
        </listitem>
        <listitem>
            <para>to eliminate some of Java's verbosity, while retaining its 
            readability&mdash;Ceylon does <emphasis>not</emphasis> aim to be 
            the least verbose/most cryptic language around,</para>
        </listitem>
        <listitem>
            <para>to provide a declarative syntax for expressing hierarchical 
            information like user interface definition, externalized data, and 
            system configuration, thereby eliminating Java's dependence upon 
            XML,</para>
        </listitem>
        <listitem>
            <para>to provide a more elegant and more flexible annotation syntax
            to support frameworks and declarative programming,</para>
        </listitem>
        <listitem>
            <para>to support and encourage a more functional style of programming 
            with immutable objects and first class functions, alongside the
            familiar imperative mode,</para>
        </listitem>
        <listitem>
            <para>to expand compile-time typesafety with compile-time safe handling 
            of null values, compile-time safe typecasts, and a more typesafe approach 
            to reflection,</para>
        </listitem>
        <listitem>
            <para>to provide language-level modularity,</para>
        </listitem>
        <listitem>
            <para>to improve on Java's very primitive facilities for meta-programming, 
            thus making it easier to write frameworks, and</para>
        </listitem>
        <listitem>
            <para>to make it easy to <emphasis>get things done</emphasis>.</para>
        </listitem>
    </itemizedlist>
    
    <para>Unlike other alternative JVM languages, Ceylon aims to completely replace 
    the legacy Java SE class libraries.</para>
    
    <para>Therefore, the Ceylon SDK will provide:</para>
    
    <itemizedlist>
        <listitem>
            <para>the OpenJDK virtual machine,</para>
        </listitem>
        <listitem>
{'fraction_non_alphanumeric': 0.0750983937878949, 'fraction_numerical': 0.0025529199021380703, 'mean_word_length': 2.4938684503901896, 'pattern_counts': {'":': 0, '<': 181, '<?xml version=': 2, '>': 181, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 12}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5779917', 'n_tokens_mistral': 2464, 'n_tokens_neox': 2286, 'n_words': 944}