Öröklődés, method overloading, generikusok hiánya. Ez az implicit interface megvalósítás sem tetszik: elsőre klassznak tűnhet, hogy minden osztály implementálja az interface-t, ha a metódusok megvannak, de ez egy rémálom lehet refactorkor. Kell az az explicit két irányú kapcsolat (Javaban implements és @Override).
Nem a nyelv hibája, de az, hogy kapásból natív kódot fordít és így nem hordozható én nagy hátránynak tartom. Ez is akadályozza, hogy akkora lib környezet alakuljon ki hozzá, mint Javaban, ahol egy binárist elég feltölteni a központi maven repóba és minden java projekt használhatja (függetlenül attól, hogy hány bites, milyen architektúrás gépe van milyen oprendszerrel).
Én nem tartom olyan jelentős feature-nek, hogy gyorsan fordít (kit érdekel, a fordítási sebesség). Lehet, hogy ennek van jelentősége a C/C++ progikhoz képest, de Javaban én nem érzem lassúnak a fordítást (fejlesztéskor úgyis automatikus, inkrementális a fordítás, build-kor meg a tesztek lefuttatása sokkal több időt emészt fel, mint a fordítás).