I hear about \'sugaring\' and \'desugaring\' more often in Java 8, what does these terms mean ? are they conceptual or syntactical.
Some Example:
Defa
In general "desugaring" in javac allows representing some language features with preexisting ones. This allows representing them in the bytecode without making big changes to the class file format. Also for this reason the back-end of the compiler is more stable than the front-end. This doesn't mean that every new language feature is just syntactic sugar, as is definitely not the case of lambdas and method references. There are more examples of "desugaring" in the compiler:
You can investigate also what happen with the String switch, type erasure,...