ThingWorx Edge Java SDK > Application Details > VirtualThing Component
VirtualThing Component
A virtual thing is a client-side representation of a device, machine, or system. It is the foundation for synchronizing properties, making and providing service calls, and generating events that are accessible to your models and mashups on the ThingWorx platform. Associated with the VirtualThing class are a ConnectedThingClient, a thing shape, and data shapes. A virtual thing may or may not have an identifier. If you use an identifier in the ThingWorx platform, you must use the same identifier in the client-side application. The ThingWorx platform does not fall back to the thing name to match the incoming device with a remote thing on the platform.
To enable a device/machine/system to communicate with the ThingWorx platform, the client application must bind the virtual thing that represents the device to a specific server instance. When binding the device, the client-side application provides a bind name for the device (either the thing name or the identifier).
Setting Up the VirtualThing
The VirtualThing class represents a device, machine, or system in a client-side application. On the ThingWorx platform side, a device, machine, or system is represented by a remote thing. The VirtualThing class is the foundation for providing properties, services, and events that are accessible from a ThingWorx user interface. Properties, services, and events can be defined using annotations. If the Virtual Thing instance that you create uses any annotations, it is important to call the initializeFromAnnotations() method in the constructor of the VirtualThing class.