Dependency Inversion Principle

SOLID Design Principles Explained: Dependency Inversion Principle with Code Examples

Thorben Janssen Developer Tips, Tricks & Resources

The SOLID design principles were promoted by Robert C. Martin and are some of the best-known design principles in object-oriented software development. SOLID is a mnemonic acronym for the following five principles: Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle Each of these principles can stand on its own and has the goal to …

Optional_Parameters_Java

Optional Parameters in Java: Common Strategies and Approaches

Eugen Paraschiv Developer Tips, Tricks & Resources

Introduction to optional parameters in Java  Unlike some languages such as Kotlin and Python, Java doesn’t provide built-in support for optional parameter values. Callers of a method must supply all of the variables defined in the method declaration. In this article, we’ll explore some strategies for dealing with optional parameters in Java. We’ll look at the strengths and weaknesses of …

Understanding_Java_Stack_Trace

Understanding and Leveraging the Java Stack Trace

Eugen Paraschiv Developer Tips, Tricks & Resources

Stack traces are probably one of the most common things you’re regularly running into while working as a Java developer. When unhandled exceptions are thrown, stack traces are simply printed to the console by default. Nevertheless, it’s easy to only have a surface-level understanding of what these are and how to use them. This article will shed light on the …

SOLID Design- Interface Segregation Principle (1)

SOLID Design Principles Explained: Interface Segregation with Code Examples

Thorben Janssen Developer Tips, Tricks & Resources

The Interface Segregation Principle is one of Robert C. Martin’s SOLID design principles. Even though these principles are several years old, they are still as important as they were when he published them for the first time. You might even argue that the microservices architectural style increased their importance because you can apply these principles also to microservices. Robert C. …

SOLID Principles- Liskov Substitution (1) - 2 dogs graphic

SOLID Design Principles Explained: The Liskov Substitution Principle with Code Examples

Thorben Janssen Developer Tips, Tricks & Resources

The Open/Closed Principle, which I explained in a previous article, is one of the key concepts in OOP that enables you to write robust, maintainable and reusable software components. But following the rules of that principle alone is not enough to ensure that you can change one part of your system without breaking other parts. Your classes and interfaces also …

Understanding_Java_Beans - Good Graphic Guy on Computer Coding

A Detailed Guide to Enterprise Java Beans w/Code Examples

Eugen Paraschiv Developer Tips, Tricks & Resources

A Brief History of EJB By 1996, Java had already become popular among developer for its friendly APIs and automated Garbage Collection and was starting to be widely used in back-end systems. One problem, however, was that most of these systems needed the same set of standard capabilities – such as persistence, transaction integrity, and concurrency control – which the …

SOLID Principles- Open Closed principle - door graphic

SOLID Design Principles Explained: The Open/Closed Principle with Code Examples

Thorben Janssen Developer Tips, Tricks & Resources

The Open/Closed Principle is one of five design principles for object-oriented software development described by Robert C. Martin. They are best known as the SOLID principles: Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion All 5 of these design principles are broadly used, and all experienced software developers should be familiar with them. But don’t worry, …

SOLID Principles in Java - Swiss Knife Minimalistic Design

SOLID Design Principles Explained: The Single Responsibility Principle

Thorben Janssen Developer Tips, Tricks & Resources

SOLID is one of the most popular sets of design principles in object-oriented software development. It’s a mnemonic acronym for the following five design principles: Single Responsibility Principle Open/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion All of them are broadly used and worth knowing. But in this first post of my series about the SOLID principles, I …

Java Graphic

The State of Java in 2018

Thorben Janssen Developer Tips, Tricks & Resources

2017 has been a turbulent year in the Java world. The long-awaited release of Java 9 brought a lot of changes and interesting new features, and Oracle announced a new release schedule for the JDK. And that was just the beginning. In the past, developers often complained that Java wasn’t developing fast enough. I don’t think you will hear these …

Generics and type erasure

Generics and Type Erasure on the JVM

Nicolas Frankel Developer Tips, Tricks & Resources

Introduction In UML, it’s possible to parameterize types in a class. Those types can then be used in different locations: attribute types, parameter types and return types. This is called a template class. Here’s an example of such a class in UML: This Foo class should be read as the following: The bar attribute is of type T The baz() …

The power of Optional

Is Java Optional Only Smoke and Mirrors?

Nicolas Frankel Developer Tips, Tricks & Resources

There are a lot of misconceptions in the software development world. Today we are going to address this one: “Java 8, for example, introduced the Optional class. It’s a container that may hold a value of some type, or nothing. In other words, it’s a special case of a Monad, known in Haskell as the Maybe Monad. You can now …

OOP Concept Composition Definition and Examples

OOP Concepts for Beginners: What is Composition?

Thorben Janssen Developer Tips, Tricks & Resources

Composition is one of the fundamental concepts in object-oriented programming. It describes a class that references one or more objects of other classes in instance variables. This allows you to model a has-a association between objects. You can find such relationships quite regularly in the real world. A car, for example, has an engine and modern coffee machines often have …

Java Application Performance

How to Improve the Performance of a Java Application

Eugen Paraschiv Developer Tips, Tricks & Resources, Insights for Dev Managers

1. Introduction In this article, we’ll discuss a number of approaches that can be helpful for improving the performance of a Java application. We’ll start with how to define measurable performance goals and then look at different tools to measure, monitor application performance and identify bottlenecks. We’ll also look at some of the common Java code level optimizations as well …

What is Polymorphism

OOP Concepts for Beginners: What is Polymorphism

Thorben Janssen Developer Tips, Tricks & Resources

The word polymorphism is used in various contexts and describes situations in which something occurs in several different forms. In computer science, it describes the concept that objects of different types can be accessed through the same interface. Each type can provide its own, independent implementation of this interface. It is one of the core concepts of object-oriented programming (OOP). …

OOP Concept for Beginners: What is Inheritance?

Thorben Janssen Developer Tips, Tricks & Resources

Inheritance is one of the core concepts of object-oriented programming (OOP) languages. It is a mechanism where you can to derive a class from another class for a hierarchy of classes that share a set of attributes and methods. You can use it to declare different kinds of exceptions, add custom logic to existing frameworks, and even map your domain …

A Practical Guide to Java Remote Debugging

Eugen Paraschiv Developer Tips, Tricks & Resources

Introduction to Debugging Troubleshooting a problem on a remote server, especially in production, is not an easy task. Sometimes it involves debugging the application code directly on the server. But the production servers are usually run in a strict environment, where not all convenient developer tools are available. In this article, you’ll discover how to configure a running web server …

java developers are in high demand

5 Reasons You Won’t Starve as a Java Developer

Elena Ruchko Developer Career Development

Despite being over 20 years old, Java is still one of the most widely-used programming languages. Just look at the stats: according to the 2017 Stack Overflow Developer Survey, Java is the third most popular technology in the world. The TIOBE index, which is a ranking based on the number of skilled engineers worldwide, courses, and third-party vendors, shows an …

Java OOP Concepts

OOP Concept for Beginners: What is Encapsulation

Thorben Janssen Developer Tips, Tricks & Resources

Encapsulation is one of the fundamental concepts in object-oriented programming (OOP). It describes the idea of bundling data and methods that work on that data within one unit, e.g., a class in Java. This concept is also often used to hide the internal representation, or state, of an object from the outside. This is called information hiding. The general idea …

OOP Concept for Beginners: What is Abstraction?

Thorben Janssen Developer Tips, Tricks & Resources

Abstraction is one of the key concepts of object-oriented programming (OOP) languages. Its main goal is to handle complexity by hiding unnecessary details from the user. That enables the user to implement more complex logic on top of the provided abstraction without understanding or even thinking about all the hidden complexity. That’s a very generic concept that’s not limited to …