Tech blog of j-labs' engineers. Experiences, knowledge, solutions.

Advanced Concurrency in Java

The concurrent programming model in the Java language has changed significantly in the past years. From “green threads” to native thread support, from synchronized, blocking operations to asynchronous, non-blocking, from mutable objects to immutable shared state.

Krzysztof Dymek |

26 Aug 2021

Read more

Advanced Concurrency in Java

26 Aug 2021 | Krzysztof Dymek


The concurrent programming model in the Java language has changed significantly in the past years. From “green threads” to native thread support, from synchronized, blocking operations to asynchronous, non-blocking, from mutable objects to immutable shared state.

Read more

Features in Java 15

17 Feb 2021 | Patrycja Banasik

  Java Backend 

Java 15 is the latest release. It was released in September 2020, several new features were added. The next LTS release - Java 17 is planned in September 2021.

Read more

Practical guide to gRPC in Java

07 Oct 2020 | Rafał Bednarz


gRPC is an open-source language-agnostic RPC framework. It was developed at Google in 2015 based on experience with Stubby - their own framework used internally to handle billions of requests per second.

Read more


16 Sep 2020 | Kamil Kurzyna


Retrofit is a Java library created for the sole purpose of calling REST API easily. As will be shown below, we are basically going to need only some POJO representation of the expected API result, interface to define it, and object repsonsible for using Retrofit.

Read more

Mini Project RabbitMQ and Java - part 2

08 Jul 2020 | Marcin Łącki

In the previous article, I presented RabbitMQ installation and environment preparation in the second part I will show how to send and consume messages from queues.

Read more

Introduction to Spring Data JPA

10 Jun 2020 | Patrycja Banasik

  Java Spring Gradle JPA Maven 

Spring Data JPA is a project from large Spring family. It helps to reduce the amount of code by easy implementation of JPA (Java Persistence API) based repositories. Its main feature is automatic creation of repository implementations at runtime.

Read more

Mini Project RabbitMQ and Java - part 1

03 Jun 2020 | Marcin Łącki

RabbitMQ is a message-queueing software also known as a message broker or queue manager. In simple words, it is software where queues are defined, to which applications connect in order to transfer a message or messages. Message-queueing software offers persistence, delivery acknowledgements, publisher confirms and high availability. RabbitMQ client handling many languages. Most popular as Java and .Net or less as Ruby.

Read more

Spring Boot Actuator

13 May 2020 | Marcin Rozmus

One of the Spring Boot project is Spring Boot Actuator. This starter brings you production-ready features to help you monitor, gathering metrics, understanding traffic or the state of database and manage your application.
It exposes operational information about the running application by HTTP endpoints or JMX beans. And the best part is - only thing you need to do is to include it in your dependencies!

Read more

How to use and how not to use Optional in Java

29 Apr 2020 | Krzysztof Mazur


If you are bored by null checking objects and want to make your code more readable, you should consider using Optional class. It is a container used to represent null with absent value.

Read more

Thunkable fun with a drag-and-drop app builder

23 Apr 2020 | Marcin Łącki

  Mobile Java 

Are you programmer?
Do you need no-code tool?
Probably your answer is **no**. Sometimes you need a fast app prototype and sometimes a non-technical person asks you "how to build mobile apps?" Thunkable is the answer.

Read more

Spring Boot - more advanced (auto)configuration

08 Apr 2020 | Marcin Rozmus

In our first tutorial we showed you how to move your existing application (or set up new one) with Spring Boot. In this tutorial we want to show you how easy Spring Boot manage other parts of your application.

Read more

Spring Boot - just run your application

27 Feb 2020 | Marcin Rozmus

Spring Boot is an framework, based on top of Spring Framework, to build Java applications as fast as snapping fingers. It provides things such as connectivity to databases, metrics, auto-configuration. You don't have to configure the low level code to get up and running, just use Spring Boot and get off the ground very quickly.
It's also very good in case of developing your application - stop wasting your time for boilerplate configuration - just add some dependencies and run the application. It is as simple as it sounds.

Read more

A Quick introduction to Querydsl compared to JPA 2 Criteria Api

19 Feb 2020 | Marcin Kilijański

  Java Querydsl SQL JPA Maven 

Querydsl is a Java open-source project that supports statically typed queries. It provides a typesafe querying layer on top of JPA, JDO, JDBC and other backends through the use of various modules. The framework uses an annotation processor to generate Java types based on JPA entities. In this short article I’ll be focusing on Querydsl’s queries support for JPA and how it can be used as an alternative to Criteria Api. Of course the framework also allows to modify and delete records by JPAQueryFactory methods.

Read more

Functional programming in Java - introduction to

30 Oct 2019 | Przemysław Sobierajski


Vavr (formerly called Javaslang) is a functional library for Java 8+ that provides persistent data types and functional control structures. It enables writing Java code in a more functional way. It is inspired by Scala. 

Read more

Spring AOP in practice - measure method execution time

16 Oct 2019 | Tomasz Głuszak

  Java Spring 

In this article we will take a closer look at Aspect Oriented Programming (AOP) with a little help from Spring Framework. AOP is powerful tool that can increase modularity, keep code clean and easier to read, maintain and develop.

Read more

Introduction to Ratpack

02 Oct 2019 | Przemysław Sobierajski


Ratpack is a set of Java libraries that enable writing efficient HTTP applications. It’s built on Netty event-driven networking engine. In some cases it may be considered as better alternative to Java Servlet technology, since it’s non-blocking and event-driven.

Read more

Custom formatters in Cucumber

18 Sep 2019 | Bartek Drzewiński

I’ve been working with cucumber-java test framework for some time now and I must admit, I really like what is possible to achieve by using it. Of course, it is quite common in test automation, that more often it is required to do something that is nearly impossible than otherwise.

Read more

How to use monads in Java

21 Aug 2019 | Przemysław Sobierajski


Java is not a functional programming language. Despite the fact that Java 8 came with some elements from functional world, there is still no way to write fully functional code in Java. One of the key aspect of functional programming is using monad. I am not going to describe what are monads but I will describe some of them and respond to the title question.

Read more

Advanced mocking with Mockito

14 Aug 2019 | Tomasz Głuszak

  Java Mockito 

Purpose of unit tests is to test small chunks of code independently, in separation from any dependencies. In many cases to keep this kind of separation tools like Mockito come in handy. Mockito is mocking framework, Java library that allow to simulate calls on dependent objects instead of calling the real ones. A mock object returns a dummy data corresponding to dummy input passed to it.

Read more

Dealing with Java Exceptions in a functional way

24 Jul 2019 | Przemysław Sobierajski


You may have heard that checked exceptions in Java are evil. Some people even say that they are Java’s biggest mistake. There is a lot of languages like Scala, Kotlin, C# or C++ which don’t have checked exceptions at all. Unchecked exceptions are generally better choice. Undoubtedly, you are able to write your code without creating new checked exceptions. However, you have to deal with them constantly, because a lot of standard or popular libraries abuse them. In result, your Java code is full of ugly throw catch clauses. They interfere with a regular application control flow.

Read more

Blocking vs non-blocking http servers performance

03 Jul 2019 | Przemysław Sobierajski


In this article, I’d like to take a look at the performance and the scalability of both blocking and non-blocking HTTP servers. I’ll compare average response time for multiple REST requests sent to simple endpoints built with Spring Boot and Ratpack.

Read more

Test your REST API with Spock - Introduction to Spock Framework

29 May 2019 | Dominik Stolarski

In this article I'd like to show you how to test your API with Spock Framework. Spock is a testing framework for Java and Groovy applications. It extends JUnit runner and let us write shorter and more readable code. Spock supports unit testing, BDD and Mocking. It is also great for Data Driven Testing.

Read more

Introduction to performance tests using JMeter

27 Feb 2019 | Dominik Stolarski

JMeter is an open-source JAVA-based load testing tool for measuring and analyzing performance of services and applications. It simulates user behavior by sending requests to server. It can be used for testing variety of protocols and services like HTTP, HTTPS, SOAP / REST Webservices, FTP, JDBC, LDAP, SMTP, POP3, IMAP and many others.

Read more

Parametrized tests - solutions overview (TestNG, JUnit4, JUnit5)

07 Nov 2018 | Paweł Proc

Parametrized tests are a lot easier to maintain. Usually when single requirement changes it’s enough to change one variable in the code. You don’t have to read the whole implementation of the test (If you know what your variable means).

Read more

Building Selenium framework in java (part IV) - answer job interview questions like a pro

19 Sep 2018 | Bartek Drzewiński

In my opinion, Software Developer in Test job interviews are one of the most demanding interviews in IT market. How come?

Read more
Page 1 of 2