Microservices

Getting started with Dropwizard

Reading Time: 4 minutes
Dropwizard is a framework for rapid application development. Dropwizard pulls and glues together Jetty application server, Jersey REST framework, Jackson for serialization/deserialization and a bunch of other libraries, so you have everything at hand to develop full-featured Java-based RESTful web-applications. This tutorial will go through core Dropwizard components and how Read more…

By romanmarkunas, ago
Build

Creating fat JARs with gradle

Reading Time: 2 minutes
Here’s a quick tutorial on how to package your java application and dependencies into single fat JAR (shadow JAR, capsule, however it’s called) with gradle. Easy solution using built-in JAR gradle plugin jar { from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } What it means: * jar Read more…

By romanmarkunas, ago
Messaging

Kafka transactions in practice 1: Producer

Reading Time: 4 minutes
This post will highlight some practical aspects of using kafka transactions. I will not dive deep into theory on how Kafka transactions are implemented. Instead, let’s discuss main “gotchas” someone could encounter when trying to use Kafka transactions first time. For detailed theoretical reference please refer to this great article Read more…

By romanmarkunas, ago
Java

Notes on Java Random

Reading Time: 4 minutes
Notes on Java Random This article is inspired by Monty-Hall problem/paradox. Now I found this paradox disturbing initially (this is why it’s paradox, wink…), and decided to quickly model it to validate for myself. That brought idea of writing up all I know about Java Random API in this article. Read more…

By romanmarkunas, ago
Concurrency

Introduction to Java coroutines

Reading Time: 5 minutes
Introduction to Java coroutines Many times I find an ExecutorService with 400 threads in Java code and I always got that’s-not-ok feeling of that. This is usually introduced as necessary evil to retain application responsiveness while being blocked by downstream. However there is another way of achieving responsiveness, which is Read more…

By romanmarkunas, ago