Mam na myśli to, że mając klasę w Javie, można ją przetłumaczyć (w większości przypadków nawet automatycznie) na Kotlina, bez zmieniania jej zewnętrznego interface'u. W drugą stronę podobnie. Nulsafety w Kotlinie jest compile time, więc w Javie tego zwyczajnie nie ma i trzeba się z tym pogodzić, albo iść w Optional
, czy inne vavr. Streamy z kotlina są przyjemniejsze, ale znowu da się je odtworzyć w Javie. Oczywiście, po takim szybkim tłumaczeniu kod wygląda paskudnie.
Modyfikatory dostępu - default w Javie jest porażką i Kotlin faktycznie robi to lepiej, podobnie zresztą jak klasy generyczne, ale nadal nie są to problemy nie do rozwiązania - można podbić jedno i drugie do public (tak, będzie źle), gorzej z typami generycznymi, to w tym przypadku trochę się już trzeba nakombinować.
Nie ma co toczyć świętej wojny, wiadomo, że Kotlin ułatwia pisanie i czytanie kodu, oraz prowokuje swoimi cechami do pisania go dobrze. Banał - konieczność wpisania przed każdą zmienną var
, lub val
wymusza świadomą decyzję (zamiast wynikającej z lenistwa) czy chcemy użyć zmiennej, czy stałej. Nazwane i domyślne parametry zwalniają z zastanawiania się, jakiej kombinacji parametrów ktoś będzie chciał użyć. I oczywiście suma tych detali sprawia, że całość robi dużą różnicę.