I think SAC are just obsessed with rule of cool in their fighter numbering.
It was all sequential and sensible up to J11, but then they jumped to J15 and J16 (which I could kinda accept if they assigned unofficial J-numbers to the imported flankers, with J12-MKK, J13-MK2 and J14-Su35).
J20 makes sense as a clear generational leap (similar to J10 and J11 move up from the J7 and J8, although those were also sequential due to the experimental J9), and then SAC went completely nuts with J31/35.
It would good if the PLAAF imposed some sanity and make the SAC 5th gen J21 in keeping with traditional and bloody common sense!