Saturday, May 13, 2017

Some sort of confusion? Or uncessary noise ...on my Kotlin journey

Lately I try to level up my skills with Kotlin, mostly from the view point of a JVM backend developer. 

I really feel very motivated and enthusiastic, I think the language has the right balance to make me feel like home (I am a hardcore Java developer after all) but at the same time give me new skills. 

As I've said many times, when I first tried to Kotlin I thought it was like Java from the Future, with idioms or syntactic sugar of Java libraries like Lombok & Javaslang (vavr) etc.

Part of the learning process is to  to engage with the community, so I've already attended one Kotlin meetup, or try to talk with people that have adopted Kotlin in production.

There is one thing that frustrates me thought. I don't understand this kind of hate towards Java, more or less not justified, with statements like 'If you use Lombok you are not doing Java'. I am really confused what is happening here.

So I kind of reply, 'so if you use Lombok or if you use Spring, or any framework that does byte code manipulation or byte code infusion is not Java? '

Yes typically we have Java the language, as a set of keywords and principles but the actual internals of the JVM and the way you can leverage bytecode through the use of Java or any other language (Kotlin generates bytecode after all) is part of the game. If you are an application developer, you use libraries that provide more or less some kind of abstraction.

I consider myself a pragmatic application  (business) developer. I don't want to re-invent the wheel when I want to implement something simple, and in business software (more or less what the majority of people do) you don't want to do that. 

When I rely or use any framework, or any language, I should be aware of what I am using and what are the pros & cons of using. You should be aware on what Lombok is doing / generating for you behind the scenes, or how Spring or Hibernate, or EJB implementations, enhance your your POJO's so that get  for example transactional or  other context awareness. This is not something we don't know and suddenly we want to jump out of the ship because someone revealed a secret.

Is this 'dynamic' nature of these libraries not the right thing for you? You don't like the fact that all these libraries leverage the bytecode and mechanics of the JVM? This is just fine, and in some cases yes you better re-invent the wheel or do your custom thing.

But please people lets all relax a bit, and stop stating things that eventually don't add anything to the picture. Everyone has an opinion towards different programming languages and I respect that but at least when we want to push forward for a new thing, lets focus on all the nice things that are offered rather than doing completely unrelated bashing on stuff that I consider technicalities.

If you ask me, I am really excited with Kotlin, but I still enjoy Java8, and Lombok , javaslang, Spring Boot, JBoss Weld, Guava, Spring Boot or Wildfly Swarm, or LogBack, or AsyncHttpClient etc etc.

It is always better when you show case the power of Kotlin rather than talking about how Java sucks, which in many cases yes Java does not do well compared to other stuff, but is not that is the worst language on earth or its so outdated. When you try to sell something new- focus on it's strengths and less on the weaknesses of the thing that wants to replace!

No comments:

Post a Comment