Well it depends what that freshman knows. Perhaps not an average freshman but if someone were to read about/see a talk on profunctor optics in (say) Haskell, trying to implement that in Java could be a fun weekend project. I think I saw a recording of some talk about profunctor optics when I was in my second year.
A reasonably large tested and complete library is not a project for a few weekends but I think profunctor optics in Java actually is. And much more suitable for a xs freshman than a typical Java programmer.
The papers define the "profunctor optics" mechanism, so it's not really that it isn't understood: it's really Haskell code that implements lenses and prisms, which previously had less elegant formulations.
Yes, there is also Bartosz Milewski having a go at applying category theory to explain why profunctor optics work. But that's not an essential part of understanding them: they clearly do what they are designed to do. This is programming, not physics.
I didn't describe them! I just told you what the state of play is.
A lens is a "functional reference". Say you have a data structure of some kind. You can create a lens which points at one of the fields. It lets you get and set that field. Because this is functional programming, when you set the field, you get given a new reference to the whole structure (can't change things in place). So, naturally the way lenses are used involves combinining a reference to a structure of type A, a lens which refers to a field within type A, and, if you are setting the field (not getting it) then you supply the new value as well.
The jury is still out on whether writing programs in this style is wise, but the notion of a lens is fixed now.
A reasonably large tested and complete library is not a project for a few weekends but I think profunctor optics in Java actually is. And much more suitable for a xs freshman than a typical Java programmer.