Going functional and fullstack with Spring Fu and Kotlin

Spring Fu is an experimental Kotlin micro-framework that makes it easy to create lightweight Spring-powered applications with functional APIs instead of annotations. Fu is for functional API, but that’s also a wordplay with the -fu suffix which means skill, the chinese character which means “good luck” and the chinese poetry. Sébastien Deleuze announced this interesting new Micro framework on twitter:

One of the interesting features is that Spring Fu really allows you to develop the full stack using Kotlin by writing your Gradle build file and application code in Kotlin.

Josh Long has put up a great youtube video to get you started with Spring Fu:

The micro part for me is due to minimal reflection usage, no classpath scanning and no annotation processing. While this requires you to be a bit more explicit in the configuration, it boosts startup of you application significantly. For more details make sure to check out the project on github: https://github.com/spring-projects/spring-fu

Posted in Blog, Kotlin | Leave a comment

Optional Kotlin

Last week I was working on a code base which had been partially converted from Java to Kotlin. The converted Java code base was making extensive use of java.util.Optional. The use of Optional might be helpful in situations where you want to be very explicit about the fact that a function or variable might be empty (null), to avoid java.lang.NullPointerExceptions.

But do you still need this in Kotlin? Continue reading

Posted in Blog, Kotlin | Leave a comment

Kotlin properties – from basic to lazy

Kotlin has many things going for it, with one of the main qualities being its built-in null-safety. This guarantees that properties will always have a non-null value at runtime, greatly reducing the risks of coding errors and NullpointerExceptions. In languages where this isn’t the case — Java, anyone? — the lack of this feature is sometimes (ab)used by the libraries and frameworks we utilize (Spring and its property injection for instance).

This post will cover the way Kotlin deals with properties and their initialization.

Continue reading

Posted in Blog, Kotlin | Leave a comment

Do we need a whole new ekosystem?

There’s a joke that if you ask a developer to code a program to process widgets, they’d rather build a domain specific language and tool stack first to make life easier for when they might one day build the software that does the actual work.

A lot of development effort is under way to build a true Kotlin ecosystem: MockK for mocking, Kara for building web sites and Ktor for your obligatory asynchronicity. None of these frameworks let you do radically new things — they just do it the Kotlin way — but it’s proof that the language is gaining some real traction.

Continue reading

Posted in Blog, Kotlin | Tagged , | 1 Comment

Kotlin Quick Tip: Annotation targets

If you — like me — are a sucker for reducing boilerplate and are using JSR-303 – Bean Validation (I use it as part of Spring Boot) then you may have noticed how it can help you reduce validation boilerplate code. We can define REST endpoints on our application, which consume objects, that we can have Spring Boot automatically validate if we use the @Valid annotation.

Continue reading

Posted in Blog, Kotlin | Tagged , | Leave a comment