ThingWorx Edge Java SDK > Using ThingWorx Platform and the Edge Java SDK
  
Using ThingWorx Platform and the Edge Java SDK
The Java SDK is designed to be flexible enough to be used across a wide variety of products and services for smart, connected products. From very simply connecting a device to the ThingWorx platform for monitoring purposes to high-end, sophisticated data collection and processing for use in analytical software, applications written using the Java SDK can run on any device, machine, or system that has a JDK (v1.7.0.51 or later).
Together with the ThingWorx platform, the Java SDK enables you to achieve the following goals:
Collect data from physical devices and push it to the ThingWorx platform. For example, collect speed, current location, and direction for a vehicle and push this information to the ThingWorx platform. Sensors may be able to detect a problem, and when that information reaches the ThingWorx platform, a notification might be generated.
* 
Calls to the ThingWorx platform to update a remote thing are queued and applied in sequence, based on timestamp. To ensure updates happen when you expect, the clocks of the remote application and the ThingWorx platform host must be synchronized.
Access the current value of properties on the remote device and display them in mashups that were created using ThingWorx Mashup Builder.
Invoke services that can return data from the connected application to the ThingWorx platform
Trigger events on the ThingWorx platform. Events can triggered by value changes or by pressing a button at the device.
Transfer files to and from the remote application.
Initiate remote sessions with devices using the tunneling feature of the SDK.
Make remote calls to any remote thing or resource (API). You can expose functions within your process that can be called by the server in response to changes on the server side, providing you with notifications of that change.
How is this possible? First, you should understand how clients connect to the server.