<story><title>Show HN: Javalin 1.0 – A Kotlin/Java web framework</title><url>https://javalin.io/news/javalin-1.0.0-stable.html</url></story><parent_chain><item><author>danneu</author><text>Good job reaching a stable release.&lt;p&gt;I have a Kotlin microframework that never made it past hobby-level stability[1].&lt;p&gt;One thing I found out is that you really have to write a library in Java if you want it to be used in both Java and Kotlin. Java -&amp;gt; Kotlin is effectively one-way interop.&lt;p&gt;I also found async programming to be really hard in Java which is why I wrapped Jetty. Meanwhile async APIs like Netty and Undertow were completely exotic to me.&lt;p&gt;For example, I couldn&amp;#x27;t figure out how to go from `Request -&amp;gt; Response` to `Request -&amp;gt; Promise&amp;lt;Response&amp;gt;` by wrapping Netty.&lt;p&gt;One thing I did find out was that Kotlin is probably my favorite language. Very similar to Swift, though I wish you could re-open 3rd party classes to make them conform to additional interfaces which you can do with Swift protocols.&lt;p&gt;I also never figured out how to hot reload code without restarting the server. Even JRebel didn&amp;#x27;t work for me. Looking at Jetbrains&amp;#x27; own framework, their code that implements reloading is pretty intimidating[2].&lt;p&gt;OP is also the author of &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;tipsy&amp;#x2F;j2html&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;tipsy&amp;#x2F;j2html&lt;/a&gt; which I&amp;#x27;ve been using in my own small servers. I couldn&amp;#x27;t figure out a better way to get typesafe html templating in the ecosystem.&lt;p&gt;[1]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;danneu&amp;#x2F;kog&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;danneu&amp;#x2F;kog&lt;/a&gt;
[2]: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;ktor.io&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;ktor.io&lt;/a&gt;</text></item></parent_chain><comment><author>edem</author><text>This is &lt;i&gt;&lt;/i&gt;definitely NOT TRUE&lt;i&gt;&lt;/i&gt;. I&amp;#x27;ve written a library which &lt;i&gt;&lt;/i&gt;is used&lt;i&gt;&lt;/i&gt; from both Java &lt;i&gt;&lt;/i&gt;and&lt;i&gt;&lt;/i&gt; Scala and it just works. Here: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;Hexworks&amp;#x2F;zircon&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;Hexworks&amp;#x2F;zircon&lt;/a&gt;&lt;p&gt;Just because you didn&amp;#x27;t manage to get it working does not mean that interop is not two-way.</text></comment>
<story><title>Show HN: Javalin 1.0 – A Kotlin/Java web framework</title><url>https://javalin.io/news/javalin-1.0.0-stable.html</url></story><parent_chain><item><author>danneu</author><text>Good job reaching a stable release.&lt;p&gt;I have a Kotlin microframework that never made it past hobby-level stability[1].&lt;p&gt;One thing I found out is that you really have to write a library in Java if you want it to be used in both Java and Kotlin. Java -&amp;gt; Kotlin is effectively one-way interop.&lt;p&gt;I also found async programming to be really hard in Java which is why I wrapped Jetty. Meanwhile async APIs like Netty and Undertow were completely exotic to me.&lt;p&gt;For example, I couldn&amp;#x27;t figure out how to go from `Request -&amp;gt; Response` to `Request -&amp;gt; Promise&amp;lt;Response&amp;gt;` by wrapping Netty.&lt;p&gt;One thing I did find out was that Kotlin is probably my favorite language. Very similar to Swift, though I wish you could re-open 3rd party classes to make them conform to additional interfaces which you can do with Swift protocols.&lt;p&gt;I also never figured out how to hot reload code without restarting the server. Even JRebel didn&amp;#x27;t work for me. Looking at Jetbrains&amp;#x27; own framework, their code that implements reloading is pretty intimidating[2].&lt;p&gt;OP is also the author of &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;tipsy&amp;#x2F;j2html&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;tipsy&amp;#x2F;j2html&lt;/a&gt; which I&amp;#x27;ve been using in my own small servers. I couldn&amp;#x27;t figure out a better way to get typesafe html templating in the ecosystem.&lt;p&gt;[1]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;danneu&amp;#x2F;kog&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;danneu&amp;#x2F;kog&lt;/a&gt;
[2]: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;ktor.io&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;ktor.io&lt;/a&gt;</text></item></parent_chain><comment><author>tsvetkov</author><text>&amp;gt; Java -&amp;gt; Kotlin is effectively one-way interop&lt;p&gt;Could you provide some more details? 
I&amp;#x27;m a bit surprised by your statement because Kotlin team has put a lot of effort into providing mostly seamless two way interop. Kotlin project  itself is ~50% Java (specifically to test interop).</text></comment>