Kotlin 1.8.0, the latest version of the popular statically-typed language, brings exciting new features for Kotlin app development, multiplatform mobile, web, and native development. This version adds experimental functions for JVM to recursively copy or delete directory content, stabilizes extension functions for working with Optional classes in Java, and introduces some standard library enhancements. Additionally, Kotlin 1.8.0 is now compatible with Java 19 and Gradle 7.3. In this blog, we’ll take a closer look at the new features in Kotlin 1.8.0 and explore how they can enhance your app development experience. So let’s just get started!
Recursive Copy or Delete Directories
One of the most significant additions to Kotlin 1.8.0 is the experimental functions for recursively copying or deleting directory content on the JVM. This feature allows developers to copy or delete an entire directory and its subdirectories with just one function call. Kotlin 1.8.0 now includes novel functions for java.nio.file.path in its standard library, which facilitate the recursive copying and deletion of directory contents. Developers can opt-in to use this new functionality, which can help save time and streamline the development process.
Simplified Process
Kotlin 1.8.0 stabilizes extension functions for working with Optional classes in Java, which simplifies the process of working with Java APIs that return optional values. The new extension functions enable developers to work with Java Optional objects as if they were native Kotlin nullable types, making code more concise and easier to read.
TimeMarks Functionality
Another noteworthy update in Kotlin 1.8.0 is the TimeMarks experimental functionality that allows elapseNow to read from multiple TimeMarks simultaneously. This feature enhances the performance of time measurements in Kotlin applications, which can be crucial for mission-critical applications that require accurate time tracking.
Here are some of the features of TimeMarks functionality in Kotlin new version 1.8.0:
- Elapsed time between multiple TimeMarks: With the new TimeMarks functionality in Kotlin 1.8.0, developers can calculate the elapsed time between multiple TimeMarks with greater accuracy. They can now subtract and compare TimeMarks from the same time source, which guarantees that the results collected from these calculations are relative to each other.
- Creation of new TimeMark instance: Developers can create a new TimeMark instance to represent the current time, and then subtract other TimeMarks from it to calculate the time difference. The execution of the two elapsedNow() function calls can now be synchronized, facilitating a more accurate comparison of the results.
- Read from multiple TimeMarks simultaneously: This new feature allows developers to read from multiple TimeMarks simultaneously. This can be useful in scenarios where developers need to track the time difference between multiple events happening at the same time.
- Stabilization of TimeMarks functionality: In addition to these features, Kotlin 1.8.0 enables the stabilization of TimeMarks functionality, making it more reliable and efficient. This means that developers can now use TimeMarks in their applications with greater confidence and ease.
Gradle 7.3 Compatibility
Kotlin 1.8.0 drops support for the old JVM back end, with the -Xuse-old-backend compiler option no longer supported. However, the new version adds Gradle 7.3 compatibility, which provides developers with better support for building and managing Kotlin projects.
Gradle is a popular build automation tool used by developers to automate and streamline the build process of their applications. Kotlin 1.8.0 offers full support for Gradle versions 7.2 and 7.3, enabling developers to leverage the latest Gradle features in their Kotlin projects. Here are some of the features available in Gradle:
- Exposing Kotlin compiler options as Gradle lazy properties: Kotlin 1.8.0 enables developers to expose Kotlin compiler options as Gradle lazy properties, making it easier to customize the build process for their Kotlin projects.
- Bumping the minimum supported versions: The latest version of Kotlin raises the minimum supported versions of Gradle, Java, and other related tools, ensuring that developers are using up-to-date and secure tools.
- Ability to disable the Kotlin daemon fallback strategy: Kotlin 1.8.0 allows developers to disable the Kotlin daemon fallback strategy, which can help improve the performance of the build process by preventing unnecessary daemon restarts.
- Usage of the latest kotlin-stdlib version in transitive dependencies: The latest version of Kotlin ensures that transitive dependencies use the latest kotlin-stdlib version, improving compatibility and reducing the risk of conflicts with older versions.
- Obligatory check for JVM target compatibility equality of related Kotlin and Java compile tasks: Kotlin 1.8.0 includes an obligatory check for JVM target compatibility equality of related Kotlin and Java compile tasks, ensuring that there are no issues when compiling Kotlin and Java code together.
- Resolution of Kotlin Gradle plugins’ transitive dependencies: The new version of Kotlin resolves the transitive dependencies of Kotlin Gradle plugins, reducing the risk of conflicts and improving compatibility.
- Deprecations and removals: Kotlin 1.8.0 deprecates and removes some features to improve the consistency and stability of the build process, such as the old JVM backend and support for Android Gradle plugin versions below 4.0.
Faster kotlin-reflect performance with internal cache migration to Java’s ClassValue
Kotlin 1.8.0 comes with improved kotlin-reflect performance, which is now compiled with JVM target 1.8. One of the major reasons for this improvement is the migration of the internal cache mechanism to Java’s ClassValue. Previously, only KClass was cached, but now KType and KDeclarationContainer are also cached, resulting in significant performance improvements when invoking typeOf(). These changes ensure that developers can now work with kotlin-reflect more efficiently, without having to worry about performance bottlenecks.
The use of Java’s ClassValue also brings other benefits, such as improved thread-safety and the ability to cache values in a more fine-grained manner. This means that developers can now use kotlin-reflect more effectively for Android and iOS app development projects and infuse this feature in their applications, regardless of the complexity or size of their projects.
Kotlin 1.8.0 Introduces Three New Annotations for Improved Interoperability with Objective-C and Swift
Kotlin 1.8.0 brings new annotations to improve interoperability with Objective-C and Swift. The @ObjCName annotation lets developers specify a more natural name for Swift or Objective-C instead of renaming Kotlin declaration. This customization is useful for developers who want to use a custom Objective-C and Swift name for a class, property, parameter, or function.
The @HiddenFromObjC annotation helps hide a Kotlin declaration from Objective-C, making Kotlin code more Objective-C/Swift-friendly. On the other hand, the @ShouldRefineInSwift annotation is handy for replacing a Kotlin declaration with a wrapper written in Swift. This annotation instructs the Kotlin compiler to mark a function or property as swift_private in the generated Objective-C API.
These new annotations allow developers to create Swift-friendly APIs while still using declarations in Swift code, making Kotlin more interoperable with Objective-C and Swift. By taking advantage of these new annotations, developers can improve their Kotlin code’s interoperability with Swift and Objective-C.
Conclusion
In conclusion, Kotlin 1.8.0 is a major update that brings exciting new features and improvements for app developers. From Java 19 support to experimental functions for JVM, this update offers a host of tools and enhancements that can enhance your development experience. Whether you’re working on multiplatform mobile, web, or native development, Kotlin 1.8.0 is sure to be a valuable addition to your toolkit.
As a leading Kotlin app development company, Whitelotus Corporation has been at the forefront of this powerful language’s adoption and has delivered numerous pathbreaking projects to help startups and companies accelerate their businesses. With a team of skilled and experienced Kotlin developers, Whitelotus Corporation is well-equipped to handle projects of any size and complexity. If you’re looking to hire Kotlin developers for your next project, get in touch with us today!
Also, Go Through
- The Benefits of Upgrading to Magento Version 2.4.6
- Harness The Benefits of React Native to Developing iOS and Android Applications From Scratch
Author
-
Sunil is a result-orientated Chief Technology Officer with over a decade of deep technical experience delivering solutions to startups, entrepreneurs, and enterprises across the globe. Have led large-scale projects in mobile and web applications using technologies such as React Native, Flutter, Laravel, MEAN and MERN stack development.
View all posts