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.

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:

[IntelliFest]
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?

[Friedman-Hill]
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.

[IntelliFest]
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?

[Friedman-Hill]
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.

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

[Friedman-Hill]
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.

Conclusion

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.

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 www.intellifest.org.

TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations technology projects - with its network of technology-specific websites, events and online magazines.