Yes, GWT.create() will return a new instance each time. But a good generator will make it so that it can be optimized in compiled code.
One of the first things that the GWT compiler does is type tightening (rewrite the code to use the most appropriate class, in which case all use of your message interface will be replaced by the generated implementation), and then execute the static methods (unless dynamic dispatch is required , i.e. polymorphism is actually used).
For the I18N message interface, because the generated class has no state, and its constructor has no side effect, this means that instances can be optimized and only static methods are stored in code (when they are not later built in).
More “complex” cases (for example, client packages, CSS resources) will actually use the “static state”, so again you can optimize the instances themselves and, in the end, it doesn't matter if you created 1000 instances or shared only one.
source share