Technology

The RemoteUI Technology

The RemoteUI System consists of different components:

RemoteUI Clients

RemoteUI Client Software is available for Android and iOS.

Currently, the Android Client is available for download as open preview. The iOS Client is under active development and will be available soon.

RemoteUI Apps feel like native applications as the Clients natively render their user interfaces (UIs). Even in 3G and 4G Networks, there is nearly no perceivable difference to locally running apps.

The RemoteUI Client technology is also available for integration into other applications. Hybrid applications with RemoteUI based functionality and locally running logic are realizable this way.

Back to top

RemoteUI Servers

RemoteUI Applications run within Java Web Servers with WebSocket support. Currently the following servers are supported:

While the RemoteUI App Framework itself has no dependencies to JEE APIs, you can integrate it with existing JEE technology e.g. via Spring's EJB support. A Java Web Server with RemoteUI Apps runs in many environments. E.g. run it on a Raspberry Pi for embedded scenarios. Or run it as highly available Internet service by using any cloud technology that can run Java applications.

Back to top

RemoteUI Protocol

RemoteUI uses a descriptive layout language for its platform-independent description of user interfaces.

The RemoteUI Protocol is the binary representation of this layout format and all commands and events that Client and Server exchange to build an interactive user interface.

The protocol is hierarchical so that important information is transferred first. An advanced prefetching mechanism is realized on top of this. Before UI resources are probably needed, they are already transferred to the client, so that waiting times are minimized.

RemoteUI App Framework

With the RemoteUI App Framework you develop your own RemoteUI Applications. We have built many technologies into the framework to make development of RemoteUI Apps fast, reliable and easy. Here are some examples:

  • Dependency Injection
    RemoteUI Applications are configured with Spring and follow the inversion of control paradigm with all of its advantages.
  • UI Data Binding
    Views, data and logic of RemoteUI Apps are bound together with expressions. This allows optimal separation of concerns. For performance reasons, we chose the fastest expression language for Java, that is currently available.
  • Programmable Responsiveness
    RemoteUI layouts support fully dynamic and programmable client adapation. By applying a super-fast template engine and feeding it with the client's configuration, layouts can be optimized for all hardware and user settings.
  • Instant Layout Previews
    The RemoteUI Tools allow you to see an on-device live preview of the layout while editing. No time-consuming installation, execution or reloading of apps is required.
  • Assistive Tooling
    The RemoteUI tools support developers with code completion, validation and more to help avoiding mistakes.
  • Advanced Graphics
    RemoteUI's server-side support for Scalable Vector Graphics allows you define your graphics once for all required sizes and densities. Lean back and let the framework render and scale the images for you on the fly. The same is true for pixel formats like JPEG or PNG. With SVG-N-Patches we even leverage SVG to support your n-patch images as scalable variant.

For detailed information on how to develop your own RemoteUI Apps with the RemoteUI App Framework please have a look at the development page.

Back to top


Feature Overview

Cross-platform enabled

The RemoteUI protocol and layout descriptions are understood by all RemoteUI Clients. The clients render your layouts with their native UI elements. When required, the RemoteUI App Framework allows you to define platform specific layout and logic. So you are able to create an optimal user experience for your applications on every supported client platform.

RemoteUI Apps run on the server in a Java Virtual Machine. So you can run the server on any platform that supports Java. In addition, the server is available for the Android Operating System.

Native Look & Feel

The RemoteUI layout language supports the advanced UI widgets you would expect from a rich client framework. There are Lists, Buttons, Sliders, Date Choosers, Drag & Drop, Maps and more. All RemoteUI Clients render these descriptions with the native UI widgets offered by the operating system. This results in optimal performance and the native look the users expect on the specific platform.

Additionally RemoteUI Applications automatically follow certain design guidelines for the supported platforms (e.g. navigational patterns).

Responsiveness

RemoteUI has built-in support for responsive application design. Typically you define different layouts and sometimes different logic for diverse hardware form factors. As the RemoteUI Client and Server execute a handshake on connection, the server exactly knows the client's hardware. It automatically chooses the right layout files, scales images to the required pixel density and adapts to system specific UI patterns.

RemoteUI's layout language supports pixel independent sizes and automatic resizing for all widgets. This allows you to create great layouts for every device from phone to tablet.

Back to top

Performance

When developing the RemoteUI System, a major focus was performance in mobile scenarios. As you have diverse limitations on the client and possibly slow network connections, we have optimized the system in many ways to offer best performance even under these conditions. Here are some of the actions taken:

  • Binary transfer protocol
    Smaller & faster than text based solutions
  • GZIP support
    Shrinking protocol entities to even smaller representation
  • Persistent connection
    No expensive reconnects, handshakes or even polling.
  • WebP image encoding
    Lossy compression like JPEG, but with alpha channel that is strongly required when using images to design your apps.
  • Advanced prefetching algorithms
    The RemoteUI server has an automatic prefetching mechanism built into it. Static resources will arrive at the client before you even know, that you need them. We are still working on a highly advanced algorithm and background transfer mechanism here. Keep an eye on our research page to get the latest info on that.
  • Native UI widgets
    These widgets simply react much faster than e.g. their HTML pendants.
  • Non-blocking design with asynchronous UI
    With RemoteUI you simply cannot block the UI thread, as the design is completely asynchronous. Nevertheless, all user input is processed sequence conform. As the server is executing the logic, the client always has enough head room to show adequate feedback instead of presenting you a Spinning Beach Ball Of Death (SBBOD).

Back to top

Security

RemoteUI applications run on the server so that access is instantaneously and easy controllable. The RemoteUI Protocol is implemented on top of the WebSocket protocol which itself is initiated with an HTTP handshake. As a result, existing HTTP security mechanisms like HTTP Basic Authentication or Digest Access Authentication are directly applicable to RemoteUI services. For confidentiality, RemoteUI supports the encryption of its connection with TLS.

For scenarios with very high confidentiality, RemoteUI Clients can be extended with an encrypted cache. The encryption prevents plain text information remaining on the device after a RemoteUI session. Even in case of theft or loss, the device will not relinquish confident information.

Back to top


Application Scenarios

Mobile Enterprise Applications

RemoteUI is the perfect solution for BYOD scenarios, where you need full access control for enterprise applications and data. RemoteUI Apps are rolled out by server-side deployment. So you have the advantages of a web application with the great performance and user experience of a native application for your users.

RemoteUI integrates with existing server technologies. Install your RemoteUI application as an additional facade to your business logic, that might already exist as Java application, EJBs or Web Services.

Photo by Mick Baker licensed under CC BY-ND 2.0

Back to top

Automotive Applications

The RemoteUI Server runs on embedded hardware. Integrate it into your vehicles and let users connect! Use RemoteUI as extension to existing HMI concepts for applications like rear-seat entertainment, remote status (e.g. in electric car scenarios), remote configuration and more.

RemoteUI is a great alternative to HTML based applications. Integrate RemoteUI Client components in your infotainment hardware and remotely control rich internet applications. Operate RemoteUI Servers e.g. in your own automotive cloud or as mobile device integration technology.

Embedded Systems

The applicability of RemoteUI Server in embedded systems opens up a variety of application areas:

  • Home Automation
    Control devices of your automated home with the rich UIs you would expect from specialized apps.
  • Location based services
    Let users connect to RemoteUI apps at your specific location. The RemoteUI Clients offer discovery mechanisms like ZeroConf, QR-Codes and NFC tags for such scenarios.
  • Remote control of embedded hardware
    Are you offering a product that needs to be controlled via a mobile device? Offer a rich UI giving users access via RemoteUI.

Photo by Norlando Pobre licensed under CC BY 2.0

Back to top


RemoteUI Web Demo

With the RemoteUI App Framework you can build Java-based web applications to be used with the RemoteUI client. In the following video you see the actual version of the Demo application showing some preliminary features of the framework from a client perspective.

RemoteUI as Remote Control Solution for Mobile Devices

In this video we use RemoteUI for remotely controlling another mobile device. The RemoteUI Client is connected via WLAN to the RemoteUI Android Server running on a mobile phone. With the help of the RemoteUI Protocol, the server sends the device's current UI to the connected client.