GWT transfers data between server side code (running on servlet container like tomcat or jetty) & client side code (GWT compiled client side JS files) in a special way called GWT-RPC.

Client required to know format of data that will send or receives to/from server & server also must knows about format of data that client can parse(we have serious limitation in serialization & deserialization of data because one side we have only javascript!). This is why you need to declare an interface for your remote servlet & GWT makes another async interface using it & restricts your service calls to that interface. & this is why you can't use any standard servlet with GWT.