You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: blog/2025-12-28-problem4j-project-launch.md
+8-24Lines changed: 8 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,37 +1,25 @@
1
1
---
2
2
slug: 2025-12-28-problem4j-project-launch
3
3
title: Problem4J Project Launch
4
-
authors: malczuuu
4
+
authors: damianmalczewski
5
5
tags: [hello, release]
6
6
---
7
7
8
8
Hi everyone 👋
9
9
10
-
Allow me to introduce Problem4J to y'all. It's another set of Java libraries implementing **RFC7807 - Problem Details
11
-
for HTTP APIs**.
10
+
Allow me to introduce Problem4J to y'all. It's another set of Java libraries implementing **RFC7807 - Problem Details for HTTP APIs**.
12
11
13
-
Problem4J is a package of libraries that introduces RFC Problem Details to the Java ecosystem. It combines an
14
-
imperative approach, based on extending a common exception type (`ProblemException`), with a declarative,
15
-
annotation-based approach (via `@ProblemMapping`). As a primary set of modules, `problem4j-core`, `problem4j-jackson`,
16
-
and `problem4j-spring` were introduced, providing a core (framework-agnostic) module, Jackson integration (both v2 -
17
-
`com.fasterxml.jackson` and v3 - `tools.jackson`), as well as Spring Boot integration (supporting both leading versions
18
-
\- v3 and v4). Other integrations may (or may not) eventually arrive (...)
12
+
Problem4J is a package of libraries that introduces RFC Problem Details to the Java ecosystem. It combines an imperative approach, based on extending a common exception type (`ProblemException`), with a declarative, annotation-based approach (via `@ProblemMapping`). As a primary set of modules, `problem4j-core`, `problem4j-jackson`, and `problem4j-spring` were introduced, providing a core (framework-agnostic) module, Jackson integration (both v2 - `com.fasterxml.jackson` and v3 - `tools.jackson`), as well as Spring Boot integration (supporting both leading versions \- v3 and v4). Other integrations may (or may not) eventually arrive.
19
13
20
14
{/* truncate */}
21
15
22
16
**Why should I care?**
23
17
24
-
If you are building HTTP APIs in Java, Problem4J aims to reduce the boilerplate around error handling while keeping
25
-
your domain logic clean and explicit. By clearly separating the `Problem` representation from exceptions, and by
26
-
offering both imperative and declarative mapping options, the library helps you produce consistent, standards-compliant
27
-
error responses without tightly coupling your code to a specific framework. This becomes especially useful in high-end
28
-
framework applications (such as Spring Boot), where sensible defaults and simple extension points can significantly
29
-
improve both developer experience and maintainability.
18
+
If you are building HTTP APIs in Java, Problem4J aims to reduce the boilerplate around error handling while keeping your domain logic clean and explicit. By clearly separating the `Problem` representation from exceptions, and by offering both imperative and declarative mapping options, the library helps you produce consistent, standards-compliant error responses without tightly coupling your code to a specific framework. This becomes especially useful in high-end framework applications (such as Spring Boot), where sensible defaults and simple extension points can significantly improve both developer experience and maintainability.
30
19
31
20
---
32
21
33
-
The following modules and versions are considered the first public releases of this library. Previous versions were
34
-
developed as a "personal playground" under the `io.github.malczuuu.problem4j` group namespace.
22
+
The following modules and versions are considered the first public releases of this library. Previous versions were developed as a "personal playground" under the `io.github.malczuuu.problem4j` group namespace.
35
23
36
24
* Core
37
25
*`io.github.problem4j:problem4j-core:1.3.0`
@@ -51,13 +39,7 @@ developed as a "personal playground" under the `io.github.malczuuu.problem4j` gr
51
39
52
40
---
53
41
54
-
The main inspiration was the idea of taking a slightly different approach than [`zalando/problem`][zalando-problem], as
55
-
well as the fact that [`zalando/problem-spring-web`][zalando-problem-spring-web] does not seem to have received an
56
-
update for Spring Boot 4 at the time of writing this post. What differentiates this library from Zalando's is the
57
-
separation of the `Problem` model from the throwable `ProblemException`, including a declarative approach with
58
-
`@ProblemMapping` annotation, as well as making Spring Boot's predefined exception handlers more beginner-friendly
59
-
(simple `ProblemResolver` implementations declared as `@Component`s). Moreover, predefined Spring Boot error messages
60
-
tend to hide exception internals and do not expose plain exception messages in HTTP responses.
42
+
The main inspiration was the idea of taking a slightly different approach than [`zalando/problem`][zalando-problem], as well as the fact that [`zalando/problem-spring-web`][zalando-problem-spring-web] does not seem to have received an update for Spring Boot 4 at the time of writing this post. What differentiates this library from Zalando's is the separation of the `Problem` model from the throwable `ProblemException`, including a declarative approach with `@ProblemMapping` annotation, as well as making Spring Boot's predefined exception handlers more beginner-friendly (simple `ProblemResolver` implementations declared as `@Component`s). Moreover, predefined Spring Boot error messages tend to hide exception internals and do not expose plain exception messages in HTTP responses.
61
43
62
44
---
63
45
@@ -67,6 +49,8 @@ Feedback, ideas, and contributions are very welcome 🚀
67
49
68
50
*[RFC7807 - Problem Details for HTTP APIs][rfc7807]
69
51
*[RFC9457 - Problem Details for HTTP APIs][rfc9457]
52
+
*[Zalando Problem][zalando-problem]
53
+
*[Zalando Problem Spring Web][zalando-problem-spring-web]
I’m excited to share that Problem4J has just released a major new version across all modules. This update is focused on cleaning up the library design, improving maintainability, and delivering a more polished public API.
11
+
12
+
{/* truncate */}
13
+
14
+
Deprecations were removed, the public API was refined, and experimental concepts were either fully embraced (for example, `ProblemContext` in the core library) or intentionally simplified and delegated to application code (like the cache eviction for `ProblemResolverStore` implementations).
15
+
16
+
---
17
+
18
+
The following modules and versions are the current generation of this project:
0 commit comments