JPA. Introduction to Java Persistence API
Java EE Database
The Java Persistence API (*JPA*) is responsible for performing CRUD operations and is built on top of Hibernate. Keep reading to know more about JPA!
EJB. What it is, Why it Exists and How it Works
EJB is part of the Java EE specification and allows you to modulirize your application and orchestrates the application so you can concentrate in the business logic. Keep reading to know more about EJB!
The Big O Notation
The Big O notation is a very important concept when calculating the time complexity of an algorithm. Keep reading to know more about this notation!
Cucumber, a BDD Framework for Java and Spring
The best way to start using BDD with Java is by using one of the BDD test frameworks like Cucumber which allows you to write your test cases using the Gherkin syntax. Keep reading to know more about Cucumber with Java!
Behavior Driven Development (BDD) provides techniques that can help you manage software development uncertainty and risk. Keep reading to know more about BDD!
LDAP and JNDI
Java EE Data Store
LDAP is a directory service in which you can store data. LDAP is one of the service providers that comes with JDK out-of-the-box, so you can use the JNDI API to perform operations on LDAP server. Keep reading to know how to integrate LDAP with JNDI!
The Java Naming and Directory Interface is a Java API that allows Java applications to look up resources via name. This API is commonly used by by java RMI and Java EE APIs. Keep reading to know more about JNDI!
Understanding Messaging Pattern with JMS
Java EE Messaging
The message design pattern is very common nowadays in distributed systems to decouple applications into smaller components, and it brings better performance, increased reliability and asynchronous communication. Keep reading to know more about the messaging architecture and how it's implmented in the Java ecosystem.
Sorting algorithms are used to arrange elements of a list in descending or ascending order. Sorting is a very important operation in computer science and it can be used to reduce the complexity of a problem. Keep reading to know more about sorting algorithms and how implement them in Java!
Searching is one of the most frequent operations performed in any application, so it's important to know and understand the fundamentals of search algorithms because it will determine the performance of the application. Keep reading to know more search algorithms!
Understanding the Java Class Loader Starting from Java 9
The Java Class Loader is a fundamental component of the JVM, so it's important to have a basic understanding of how it works and how you can create your own ClassLoader. Keep reading to know more about the Java Class Loader!
Introduction to Java Collections
The Java Collections Framework offers a wide range of data structures like List, Set, Queue or Trees. Keep reading 🤓 to learn more about this Java library!
Working with JDBC API
Database Core Java
JDBC is a SQL API that was release for the first time in 1996 and since then is one of the most commonly use Java libraries. The purpose of this library is to allow programmers to use standard SQL statements in Java language. Keep reading to find out what you can do with the Java Database Connectivity API!
Get Started with Mockito
Mockito is a popular mocking framework for Java applications. This framework helps you to test classes in isolation and avoids creating collaborators in your unit tests. Keep reading to know more about this testing library!
Get Started with Java Servlets
Java Servlets are the core technology of many web application frameworks like Spring, that's why it's very important to know the fundamentals of Servlets. Click here to keep reading!
Centralized Configuration with Spring Cloud Config Server
Spring Cloud Config Server allows you to centralize your configuration in your microservices architecture across all environments. Keep reading to learn how to set up the config server!
Automated Dependency Updates with Dependabot
DevOps Version Control
Dependabot is a free and open source tool that has been bought by GitHub and allows you to check for updates on you dependency files. Through the integration of Dependabot you can automate dependency updates on your projects. Keep reading to know more about Dependabot!
Java Memory Model Overview
Discover how the JMV manages the memory internally. This article is an introduction of the Java Memory Model fundamentals. Keep reading to know more about the JMV memory model!
Moving Beyond REST with GraphQL
Design Pattern Data Query
GraphQL is an innovative query language which allows you to get what you ask for in a single request. What are you waiting for to know more about GraphQL?
Java Socket IO and NIO
Sockets use TCP/IP transport protocol and are the last piece of a network communication between two hosts. You do not usually have to deal with them, since there are protocols built on top of them like HTTP or FTP, however it is important to know how they work. Keep reading to learn how to use Java Socket IO and NIO!
Verify Producer-Consumer Communication between Microservices with Spring Cloud Contract
Before microservices became popular, we did not have to worry about making sure that different components of your application were using the same POJO class, and any change in a particular entity will affect all its users straight away. Keep reading to find out how to do contract testing with Spring Cloud Contract!
Micronaut, a New Contender for the Microservices Era
Find out more about Micronaut, the next generation web framework which competes with Spring Boot
Spring Bean Lifecycle Fundamentals
Bean is one of the angular stones in the **Spring Framework** and it is very important to know how it works. However, the concept of bean it is not very clear. What are you waiting for to know more about it?
Improve Code Quality with SpotBugs
Every developer should ensure code quality and follow language conventions, otherwise Technical Debt is created, and at some point in the future you will have to revisit that smelly piece of code. SpotBugs helps you analyze your Java code to find bugs. Keep reading to know more about SpotBugs!
Integer Caching in Java
Java provides some optimizations for integers, so instances of Integer are cached by the JVM to increase performance. Keep reading to learn how caching works for encapsulated primitives!
Troubleshooting Tools for Microservices Architecture
One of the biggest challenges when transitioning to a microservices architecture is troubleshooting and debugging. When the number of microservices grows a simple HTTP request can hit dozens of applications, and in case something goes wrong or the performance is not as good as expected, it might be quite tricky to know where the issue is. Keep reading to learn how to tackle troubleshooting and debugging in a microservices architecture!
Reduce Startup Time with Spring Boot 2.2
Spring Boot 2.2 will be released soon and it’s going to bring some improvement and new features like lazy initialization of beans. Keep reading to know more about Spring Boot 2.2+.
Quick Introduction to ThreadLocal
Variables are usually private static fields in classes and maintain its state inside a thread and generate unique identifiers local to each thread. This means that every time a different thread accesses the same instance, a new ThreadLocal variable is created. Keep reading to know more about ThreadLocal!
Quick Introduction to Reactive Programming
Design Pattern Spring
Reactive programming is based on async and non blocking threads, so that, it allows us to use efficiently all the needed threads. Keep reading to know more about reactive programming!
Getting Started with DynamoDB and Spring
Database NoSQL Spring
Get started with DynamoDB and Spring!
First Steps in JMeter
Want to know more about performance testing? Then, have a look at this article where we explain how to use JMeter
Debugging Guidelines in Java
Debugging is a tool mostly use when an application is not behaving as expected, and every developer should learn how to use it. However, it requires a lot of time to master it. Keep reading to know some debugging guidelines!
Data Migration with Spring Batch
Spring Batch is a batch framework designed to process large volumes of data. You can run either chunks or tasklets. Keep reading to know more about Spring Batch!
Start using Aspect Oriented Programming with Spring AOP
Design Pattern Spring
Aspect Oriented Programming (AOP) helps us to solve specific situations in a very elegant way and is used to insert code depending on how our code looks. Keep reading to know more about aspect orienting programming.
Speed Up Your Microservices Development with Telepresence
Microservices architecture is the way to go when you want to release new features multiple times per day, but most of the time, microservices need to connect to each other. Learn how to use the open-source Telepresence tool to help with microservice testing.
Take Unit Testing to the Next Level with JUnit 5
JUnit is the most popular testing framework in Java, and with JUnit 5 testing in Java 8 and beyond takes another step forward. This version was release in September 2017 and has been actively updated to fix bugs and add new features. Moreover, JUnit 5 is also compatible with version 3 and 4. Keep reading to learn and understand the basics of JUnit 5 with simple examples!
Hands-On CI/CD for Microservices with Jenkins X
DevOps and microservices come together in this tutorial on using Jenkins X to create a distributed, decoupled CI/CD system.
Iteration vs. Recursion in Java
Algorithm Core Java
Iteration and recursion are exchangeable in most cases. In theory, every program can be rewritten to avoid iteration using recursion. However, it is important to know that when using one or the other, this decision might have severe impacts on performance or potentially raise unexpected errors. Keep reading to know more about iteration vs recursion!
Behavioral patterns improve communication and flexibility between objects. Keep reading to discover how you can take advantage of behavioral design patters!
Structural patterns are about providing different ways to create a class structure with inheritance and composition. Keep reading to discover how you can take advantage of structural design patters!
Java Variables Initialization
There are two ways of initialize a field, eagerly and lazily. Lazy initialization is based on initializing the field when the value is needed, whereas the eager initialization is based on initializing the variable when it is declared. Have a look at this article to learn more about this topic!
Java Optional Values
Before Java 8 there were only two possible ways to gracefully exit a method when a value is not present, either you return null or throw an exception. This has changed since Java 8 with the Optional interface. Keep reading to know more about the Java Optional interface.
Storing Passwords Securely with Bcrypt and Java
Storing passwords are not something easy to come up with when we need to satisfy all the data protection laws, and it is getting even tougher with the rise of GDPR. When we want to hash passwords to store them in a database, Bcrypt is the way to go. Keep reading to know how to use Bcrypt in a Java application.
JWTs with Spring Boot
Interested in using JWTs for your Java/Spring Boot projects? Keep reading to learn how to do it!
Serverless “Hello World” with Fn Framework
Discover Fn Project, an open source container-native serverless platform that you can run anywhere.
Recipes to @Override “equals” and “hashCode” methods
Do you want to know more about Java equals and hashCode methods? Then have a look at these recipes!
Creational patterns allow you to create objects while hiding the creational logic, which increase flexibility and code reusability, so you decide which objects need to be created for a particular case. Keep reading to discover how you can take advantage of creational design patters!