One of the possible drawbacks of several RPC interfaces: if you have many common model objects between the interfaces, the GWT will generate FieldSerializers for each model object - they will be shared. However, to ensure that each RPC instance references only the serializers that it needs, a TypeSerializer is created for each service proxy. In the case of 10 services, each of which uses 100 model objects, this will lead to 10 TypeSerializer s, each with 100 FieldSerializer registration (three components for each serializer - serialization, instantiation, deserialization).
I have seen at least one application that is almost triple in size under the weight of these common model objects โ more than a hundred RPC interfaces and thousands of possible model objects shared between them. Not every model was used in every interface, but it was enough to do such damage. This was mitigated by saving each pair of interfaces separately and creating one giant pair that expanded each of the other interfaces - this way GWT.create used only for this type, and therefore, instead of hundreds, only one giant TypeSerializer .
So keep an eye on your compiled output size and periodically check your SOYC (Story Of Your Compile) report to see what takes up all the space.
source share