# Useful Kotlin Features Compared with Java

DevFeed: [Useful Kotlin Features Compared with Java](<https://devfeed.tech/articles/kotlin-useful-but-unfairly-not-mentioned-features-38636.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_05_03_kotlin_useful_but_unfairly_not_mentioned_features/>)

Published: 2020-05-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Java](<https://devfeed.tech/topics/java.md>), [Development](<https://devfeed.tech/topics/development.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [hashcode](<https://devfeed.tech/tags/hashcode.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [modifiers](<https://devfeed.tech/tags/modifiers.md>), [package-private](<https://devfeed.tech/tags/package-private.md>), [process](<https://devfeed.tech/tags/process.md>), [smart-cast](<https://devfeed.tech/tags/smart-cast.md>), [visibility](<https://devfeed.tech/tags/visibility.md>)

## AI overview

This article compares Kotlin with Java through several less-discussed language differences. The supplied text covers immutable method-parameter references in Kotlin and contrasts Java visibility modifiers, including protected and package-private access.

## Source excerpt

Source Introduction Many of us first learned Kotlin after Java. Learning process was fairly simple because Kotlin has many similarities when at the same time improves development experience by fighting common pain points Java developer (especially on Java 6, which is common in Android world) has to encounter every day. There are a bunch of articles about cool Kotlin features like immutability, handling nullability, smart-cast, data classes, and so forth. Yes, these features are great. Having to add a bunch of nullability annotations, final keywords, override equals/hashCode methods, create additional local variables after type checks -- all of this adds unnecessary work that needs to be done all the time.