Most projects best start out as a modular monolith (not as costly microservices). OSGi is a good choice to ensure modularity and decoupled services.
You use Java. I use Python. Let me try to sell you on it. The joy of dynamic typing, some helpful tricks with functions, and powerful class customization.
Learn how to process your resource files with Maven, be it templated files, conversion of LESS/SCSS to CSS or of Markdown/Ascissdoc to HTML.
Which are the best PaaS solutions available in the market for Java applications? A brief description of the top 5 PaaS providers with their pros and cons.
Which are the best IaaS solutions available in the market for Java applications? A brief description of the top 5 IaaS providers with their pros and cons.
Abstraction is the key to tenable code bases. Where OOP eyes abstraction with suspicion, functional programming pushes it as far as possible.
A while loop is a control flow statement that runs a piece of code multiple times. It consists of a loop condition and body. Java also has a do while loop.
Inversion of control is not just dependency injection - the observer and template method patterns use it as well. Study all three to become an IoC expert!
Use Java Bean Validation's @Valid Annotation for validating entire object graphs with one method call.
Functional programming solutions for FizzBuzz using Vavr (formerly Javaslang) and common FP features like streams, pattern matching, and combinator.
Use the Java Bean Validation methods validateValue() and validateProperty() to independently check fields of a target class or even their potential values.
Out of Java's three big logging frameworks (Java Util Logging, Log4j 2, and Logback), which one has the best performance?
Learn more about Java and the JVM: 10 obscure details you didn't know they could do. Did you know, for example, that checked exceptions are a fiction?
The Criteria API provides a type-safe way to define queries programmatically. This article shows how to select Plain Old Java Objects with a CriteriaQuery.
Java 9 modules require a module declaration (a file module-info.java), which declares dependencies; just as Maven's POM does. So couldn't Maven generate it?
All about Java 9: talks, articles, sites, blogs, courses, and books. If you want to get into Java 9, these resources are going to get you started.
Java offers Arrays.binarySearch and Collections.binarySearch, which perform a binary search on an array or list. Learn how to search and insert.
Java enum types make it easy to define a fixed number of constants. More than that, enums are full-blown classes and can have fields and methods.
Java's ternary operator (aka conditional operator) can be summarized as a shortcut for the if statement. Used with care, it improves readability.
Learn how to implement a Websocket Server and Client using Spring Framework using the STOMP messaging format and the SockJS protocol.
Project Amber is the roof under which several productivity-oriented Java language JEPs like more type inference and pattern matching are developed.
Referential transparency is a tool to help programmers reason about their programs and make them safer, and easier to test and to maintain.
Functional programming can dramatically reduce the need for testing by using types to reduce the number of possible implementation choices.
In recent years Java's evolution came to more heavily rely on JEPs. Simon Ritter explains how that can make Java's development more agile.
If statements are used to conditionally run blocks of code. They're an essential tool for controlling the flow of a program.
Introduction to Java 9's stack-walking API. Learn how to use the StackWalker, its options, and its performance characteristics.
Jsoniter, a Java library for parsing JSON similar to PHP's json_decode, features a weakly typed `Any`, lazy parsing, and great performance.
The synchronized keyword is a common building block in concurrent Java applications. Learn how to use it to avoid race conditions.
Java is known as a mostly strict language. It's useful, however, to implement a 'Lazy' type for lazy initialization, deferred computations, etc.
A race condition occurs when multiple threads mutate shared state such that the outcome depends on how exactly the threads' operations interleave.