I am very new to gRPC and Protobuf (Java Binding). I tried to read the documentation and found the below diagram helpful (from protobuf official guide)
https://protobuf.dev/overview/#work
What I've understood so far:
But I am still struggling to understand how the optimisation actually works i.e. how does the bytecode become so small?
I believe you are missing the distinction between two things:
Protocol buffers are quite good at the second of these. They are not necessarily special at the first of these.