Hello all,

Given that JDK 7 earlier are used by over 50% of Java projects, I do not think we can force users to upgrade to Java 8. Thus, SLF4J is unlikely to bump its JDK requirement to version 8 for yet some time.

On the bright side, there is a way for org.slf4j.Logger to support Java8 lambdas, or just lambdas, without requiring Java 8. As stated in [1], the compiler will treat any interface meeting the definition of a functional interface as a functional interface regardless of whether or not a @FunctionalInterface annotation is present on the interface declaration.

This means that we can create a Supplier interface such as

public interface Supplier<T> {
    T get();
}

and then add the following method to org.slf4j.Logger interface.

package org.slf4j;

public interface Logger {
  ....
  public void debug(Supplier<T> supplier);
  ....
}

This will add lambda support without requiring Java 8 support at build time.

The downside of this approach is that implementations of the org.slf4j.Logger interface as found in logback and modules such as slf4j-simple, slf4j-log412, slf4j-jdk14 will need to be updated. Given that the number of such implementations is limited, I think the requirement is quite acceptable.

Your comments are welcome,

--
Ceki Gülcü


[1] https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html
_______________________________________________
slf4j-dev mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/slf4j-dev

Reply via email to