How Java rules improve Android apps: Taming big data with big reasoning

Big data technologies are all the rage with enterprise architects and data focused professionals, but with big data isn't a panacea in itself. Big data solutions are only successful when they are accompanied by big reasoning as well.

Big data, cloud computing, and mobile applications continue to be hot topics across all IT-impacted industries. While demand for new products and services in these areas has produced exponential growth in the number of web technologies, coding techniques, design-patterns, frameworks, and design methodologies used to create solutions, one critical area is often neglected: reasoning. Developers quickly find that as data becomes more complex and voluminous, it becomes imperative for such products and services to incorporate one or more mechanisms for discerning patterns, making inferences, and taking actions as data-changing events happen. This is the domain of Reasoning Technologies (RT).

If an Android client can run a rule engine against data cached on the local device, it can be more responsive and more powerful.

 Dr. Ernest Friedman-Hill, author of Jess in Action

What are reasoning technologies (RTs)?

Much like how amino acids form the building blocks of proteins, RTs form the building blocks of applied or narrow artificial intelligence. RTs can be used whole or in part, alone or in combination with other technologies, to build complex reasoning systems. Examples include, but are not limited to: 

  • constraint solvers
  • theorem provers
  • logic programs
  • knowledge-bases 
  • cognitive frameworks
  • machine learning algorithms
  • case-based reasoning engines
  • and of course, rule engines

Jess, Rules, and Android

IntelliFest set out to ask one of the foremost innovators in the Java rule engine domain, Dr. Ernest Friedman-Hill of Sandia National Laboratories, about his latest work in supporting the Android platform with the latest version of his rule engine, Jess 8.0. Here's what he had to say:

In a 3-tier application made up of a presentation and view layer, business logic and processing layer, and a data-access layer, a rules-engine would traditionally be a component in the business logic tier. For Java developers who are more familiar with this paradigm, what are the advantages to moving the rules engine to the client, like an Android smart-phone or tablet? What capabilities does this afford a Java developer?

In this era of the single-page web application, the presentation tier has become a complex, multi-tiered entity in its own right, containing significant logic. Of course, there's nothing new under sun. This is just the modern incarnation of client-server computing. And that client-side logic can benefit from rules-based programming. Given bandwidth constraints and spotty connectivity, if a client can run a rule engine against data cached on the local device, it can be more responsive and more powerful. If you're programming for Android, you can use rules on the server, on the client, or both, whatever is best for your situation.

Specifically, how does having an Android-compatible rules engine help solve problems in modern IT research areas like big data, cloud computing, and mobile applications? What would it allow users to do that they can't do, easily, now?

I think it's always dangerous to assert that there's anything that can't be done now, as someone ignorant of your pronouncement will end up doing it anyway.

There's an established trend towards systems that let you write an entire complex web application, end-to-end, in one language. For example, Google Web Toolkit, which lets you write an entire application in Java, automatically generates the client-side JavaScript, or Node.js, the server-side JavaScript stack that lets you write your whole application, untranslated, in JavaScript.  If you're writing an Android client for an application that uses Java on the server, then components that have the flexibility to be moved in either direction across the client/server boundary give you the same kind of convenience and architectural choice.

If you are using Jess on the server, Jess on the client means that they can communicate using Jess vocabulary. The client and server can trade facts and rules, leading to a natural form of interaction that simplifies the code on both ends. And if you determine that your new application could benefit from using a rule engine, with Jess for Android, you have the flexibility to choose where to put it, and the flexibility to easily migrate it from server to client or back, as the concept evolves.

How does writing rules to run on mobile clients differ from writing rules for server-side apps?

If you can use the same rule engine on the client as on the server, the differences are minimized. But I think there are indeed some differences. Although a client device has fewer resources than a server, the client's resources are dedicated to serving one user, so you can plan on using more of them, for a longer time. You can keep a larger amount of intermediate data around during a session without worrying about replication or passivation. And if your rules processing is happening on the client, then scaling to a larger number of users isn't so much of an issue, because of course each client comes complete with their own computing resources.


As the complexity of dealing with big data grows, Java developers must acquire new skills and experience related to reasoning over such large data-sets. For developing reasoning capabilities on the Android platform, Jess, from Sandia National Laboratories, is a mature and robust choice. For more information on Jess, please visit Developers, engineers, programmers, and architects of all skills and backgrounds can come learn about the latest in reasoning technologies at IntelliFest 2013: International Conference on Reasoning Technologies, October 7-11, in San Diego, CA. Dr. Friedman-Hill will be one of three keynote speakers, and he will discuss his 15+ years of experience in creating Jess along with demonstrating its new Android capabilities.


Dr. Ernest Friedman-Hill is a principal member of the technical staff at Sandia National Laboratories. He is the author of Jess in Action: Java Rule-Based Systems for the Java Platform.

Jason Morris is the chairman of IntelliFest 2013. His bio is at LinkedIn


About IntelliFest
The non-profit Rules Fest™ Association, Inc. produces the annual IntelliFest: International Conference on Reasoning Technologies, the world’s only technical conference devoted to the practical application of reasoning technologies, the systems derived from them, and the developers who create those systems.
More information is available at


How have you used Jess to simplify Android development. Let us know.

Dig Deeper on Big data architecture

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.