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).
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
- 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.
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 jessrules.com. 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.
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 www.intellifest.org.
How have you used Jess to simplify Android development. Let us know.