microstream-one / microstream

High-Performance Java-Native-Persistence. Store and load any Java Object Graph or Subgraphs partially, Relieved of Heavy-weight JPA. Microsecond Response Time. Ultra-High Throughput. Minimum of Latencies. Create Ultra-Fast In-Memory Database Applications & Microservices.
https://microstream.one/
Eclipse Public License 2.0
558 stars 44 forks source link

Switch to Java 9+ System.Logging instead of SLF4J #627

Open hrstoyanov opened 1 year ago

hrstoyanov commented 1 year ago

Is your feature request related to a problem? Please describe.

Currently Microstream introduces a hard dependency to SLF4J logging facade. However, since Java 9, there is built-in facade that does the same (e.g. can forwards to Log4, logback, Java Native [ java.uil.logging, JUL] ) . In addition, it allows for performant lazy logging (with lambdas), which I do not think is possible with SLF4J, and it also plays nicely with the upcoming Java 21+ String templates (JEP 430)

Describe the solution you'd like

Remove SL4J and switch to the new , built-in Java 9+ System Logging.

Additional context

If you agree that this is a useful change that willbe accepted, I can volunteer and create a merge request

hg-ms commented 1 year ago

Many thanks for your offer to create a pull request that replaces the SLF4J dependency with java build in logging facade. Unfortunately, we must decline it although it would be nice to remove that dependency to SLF4J. The System.Logger class is not available on android. If we replace SLF4J with System.Logger we can’t run on android systems any more.

hrstoyanov commented 1 year ago

Ok, I see the reason. However, sacrificing modern Java features for compatibility with Android might not be the best strategy going forward - the gap between Java and Android will only grow bigger, given that Google is fully focused on flutter/dart and not interested in java.

Perhaps it is better to split Android out into a separate (Eclipse) project.