←Older revision |
Revision as of 10:10, 10 October 2020 |
Line 44: |
Line 44: |
| ==== On Enhancing the [[Java]] Language ==== | | ==== On Enhancing the [[Java]] Language ==== |
| | | |
- | You are right that adding new language/JVM features can often mitigate | + | You are right that adding new [[language]]/[[JVM]] features can often mitigate |
- | compatibility issues. JDK team is in a unique position to make such changes | + | compatibility issues. [[JDK]] team is in a unique position to make such changes |
| (regular library API designers can't change the language), so it should be | | (regular library API designers can't change the language), so it should be |
- | even easier to keep 100% compatibility. I am not absolutely sure what was the | + | even easier to keep 100% [[BackwardCompatibility]]. Let's run a mental experiment. |
- | primary motivation for adding `CharSequence.isEmpty()` - was it meant as an | + | |
- | API, e.g. to let people call:
| + | I am not absolutely sure what was the primary motivation for adding `CharSequence.isEmpty()` - was it meant as a [[ClientAPI]], e.g. to let people call: |
| | | |
| <source lang="java"> | | <source lang="java"> |
Line 58: |
Line 58: |
| | | |
| or was it rather meant as a [[ProviderAPI|Service Provider Interface]]? E.g. allow implementors to effectively reply | | or was it rather meant as a [[ProviderAPI|Service Provider Interface]]? E.g. allow implementors to effectively reply |
- | `isEmpty() == false` in case computing exact `length()` is costly? Let's
| + | '''isEmpty() == false''' in case computing exact '''length()''' is costly? |
- | assume the primary motivation was the [[ClientAPI]] case - e.g. calling. Rather than | + | |
- | using default methods, one could add a compile time extension in a [competing | + | Let's assume the primary motivation was the [[ClientAPI]] case - e.g. calling. Rather than using default methods, one could add a compile time extension (like in the [[Kotlin]] language) to the |
- | language](https://kotlinlang.org/docs/reference/extensions.html) to the | + | {{JDK|java/lang|CharSequence}} interface. That would be purely [[ClientAPI]] (e.g. not [[SPI]]) addition - no impact on existing implementations - e.g. it would be 100% compatible. |
- | `CharSequence` interface. That would be purely API (not SPI) addition - no
| + | |
- | impact on existing implementations - e.g. it would be 100% compatible. True, | + | True, improving language features can help improve [[BinaryCompatibility]]. |
- | improving language features can help improving binary compatibility. | + | |
| | | |
| | | |
| [[Category:Video]] | | [[Category:Video]] |