Hi,
Yes, SNMP4J v3.x depends on Java 9+ because of DTLS support.
What SNMP4J APIs do you think are inconsistent?
The example USM Example with and without DirectUser you quoted is not inconsistent. SNMP4J v3.4.0 simply added a new feature, that is not available in SNMP4J v2.x and < v3.4.0. So, that is probably just a misunderstanding.
The document that describes all differences in detail is the change log available here:
https://www.snmp4j.org/CHANGES.txt (SNMP4J latest)
https://www.snmp4j.org/CHANGES-2.x.txt (SNMP4J 2.x branch)
Hope this helps.
In general, new features will be added to the 3.x (latest) branch only. Back-porting will happen for 2.x for important bugfixes and improvements of existing features.