Estive lendo um pouco sobre a nova linguagem que a Red Hat está construindo. O projeto Ceylon é liderado por Gavin King (aquele do Hibernate e do Seam) e tem como objetivo desenhar uma linguagem seguindo o seguinte princípio: como Java seria se fosse inventado hoje? Isso significa colher todas as coisas boas do Java, e corrigir e modernizar suas imperfeições.
Em uma apresentação recente, foram descritas algumas features da (ou do) Ceylon. São muito interessantes. O slide abaixo é sobre uma feature simples que achei genial:
Pelo que entendi, você declara a referência como nulável, aí as referências nulas ficam controláveis. Esta é apenas uma das diversas novas features da linguagem, descritas na apresentação. Ceylon tem ainda higher-order functions, closures, argumentos nomeados. E não tem sobrecarga de métodos!
O compilador ainda não está disponível. Vamos esperar pra ver, mas acho que aí vem algo grande.
Bem superficialmente falando, essa parada de nullable não acabará servindo apenas para contornar idiotices de programadores? Em tese, todo objeto invocado não deveria ter um ponteiro válido?
Já esse esquema de passar assinatura de métodos como parâmetros é muito jóia. Andei brincando com isso em Scala, levando o código a um nível de abstração impressionante se comparado com Java.
Acho que a questão do nullable é um pouco mais que isso. Creio que você terá toda a biblioteca de classes nullable ou not-nullable. Então, quando você criar uma referência not-nullable, você só poderá atribuir a ela expressões not-nullable, ficando totalmente a salvo do NPE. É como eu faria, não sei se vai ser assim. :-)