Welcome!

Java IoT Authors: Liz McMillan, Miska Kaipiainen, Dana Gardner, Elizabeth White, Kevin Benedict

Related Topics: Java IoT

Java IoT: Article

Extending Rich GUI Clients with Jython

Implementing a solution

Allowing extensibility of a rich Java GUI is a daunting task. Each user may require slightly different functionality - this one wants to be able to import data from an Excel spreadsheet, and another wants to generate custom XML reports of particular artifacts in the application. You want to make every user happy, but you very rapidly see yourself with multiple code branches trying to satisfy those custom requirements - every Java developer's configuration management nightmare.

Not only is it undesirable to dirty the code base with customer-specific functionality, but you don't want to derail the core development team with continual disruptions for customer requests for simple enhancements to the GUI; it would be much more effective for the customer to be able to add all the functionality that is needed.

At Unicorn Solutions (www.unicorn.com), we developed a Scripting Extension Framework, developed in Jython and XML, that allows non-Java developers to easily enhance our out-of-the-box Swing-based application with custom, rich GUI features. This has greatly increased the extensibility of the Unicorn System, our platform for enterprise metadata management and semantic enterprise information management.

This article is aimed at both developers who are struggling with the task of multiple requests to customize their rich Java client for different customers, and developers who have an interest in Jython and examples of how it integrates with Java applications. It covers the requirements for the framework, and details the design and implementation of the Scripting Extension Framework with sample code. It covers both the usage of XML descriptors for extensions as well as how to call the Jython Interpreter from Java. It will give the target audience in-depth knowledge on how to implement a similar solution in any similar application.

Introduction - Flexing the Inflexible Application Release day has finally arrived - the full-featured Swing application that you've been developing for the past two years is finally going out to the customers on time. The problems start when each customer wants slightly different enhancements, most of which you'd rather not incorporate into the main product. The type of features that a customer might want could range from a simple "Find and Replace" feature, to any of the following customer-specific features (see Figure 1):

  • Batch loading of data from external legacy sources (flat file, Excel)
  • Verification procedures on custom data
  • Wizards for automating custom tasks
  • Generation of reports in different file formats (CSV, XML, or Excel)
  • Automated processes to update data
If this isn't bad enough as it is, it has become apparent that the customer is not going to stop with those requests but will continue to bombard you with enhancement and utility-feature requests for the long-term future.

The traditional ways of addressing such requirements range from releasing a different version of the product for each customer to providing code-hooks that the customer can code against to add the required functionality.

Releasing a different version of the product to each customer is a Configuration Manager's biggest nightmare - the task of maintaining multiple branches of the same release, together with tracking which features are in which version, is an error-prone process that is very expensive on resources. Not only that, but the amount of R&D development time to work on non-generic customer enhancements can be a big drain on resources, both in development and testing.

Providing code-hooks are generally very limiting in the breadth of functionality that can be exposed, and, generally, most custom enhancements can't be fully implemented in this framework.

Making the Application Flexible
Before getting down to making your rich GUI application flexible, we need to understand what it means to be flexible and what we'd like to see from the framework that provides this flexibility.

  1. Low levels of programming skills to develop extensions. Already at Unicorn, there are several customers writing their own extensions with minimal support required from R&D.
  2. The extensions should be developed in an easy-to-learn scripting language that integrates well with the main product.
  3. Customer should be able to create simple GUI dialogs for their enhancements that control user-input, display reports visually, etc.
  4. Seamless integration with core product features. It should not be obvious to users of the customized application which features are part of the core product and which have been developed as custom enhancements.
  5. Ease of deployment - it should be easy for developers of the custom features to deploy these features to the core product. Complicated build processes should be totally avoided.
  6. Customer extensions should be guaranteed to be compatible with future versions of the core product.
The Scripting Framework
In order to answer the above list of requirements to create a flexible rich GUI, at Unicorn we developed a full-fledged scripting framework, allowing in-house developers at customer sites to to create all the extensions that were required. The Scripting Framework consists of a controller that connects all deployed extensions to the application at runtime. Each extension consists of a descriptor, written in XML, that contains relevant information about the extension; for example, display name, input parameters, and a pointer to the script that contains the execution logic of the script.

The Scripting Framework is needed to adopt a programming language. It was decided to use a language that could tightly interact with Java programs, and there were obvious advantages to an interpreted language for ease of development of scripts. This naturally led to the choice of Jython as the language for the Scripting Framework.

Jython
Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform. In addition to allowing the use of regular Python syntax, it is also possible to create Java objects and call methods on them within a regular Python expression.

Jython is freely available for both commercial and non-commercial use and is distributed with source code. Jython is complementary to Java and is especially suited for the following tasks:

  • Embedded scripting: Java programmers can add the Jython libraries to their system to allow end users to write simple or complicated scripts that add functionality to the application.
  • Rapid application development: Jython programs are typically 2-10X shorter than the equivalent Java program. This translates directly to increased programmer productivity. The seamless interaction between Python and Java allows developers to freely mix the two languages both during development and in shipping products.
  • Dynamic compilation to Java byte codes: Leads to the highest possible performance without sacrificing interactivity.
  • Ability to extend existing Java classes in Jython: Allows the effective use of abstract classes.
The Python language combines remarkable power with very clear syntax. It also supports a full object-oriented programming model, making it a natural fit for Java's OO design.

Let's look at the steps needed to develop an extension, and how extensions are loaded and executed.

Extension Descriptor
The extension descriptor contains instructions on how the executable script should be bound to the application at runtime. The descriptor contains the following information:

  • Display name of the extension.
  • Informal description of the extension.
  • Optional hotkey for the convenient quick launch of the extension.
  • Menu/Toolbar location information - the extension developer can decide where the extension will appear in menus/toobars.
  • Instructions for displaying a rich GUI input dialog - this will typically hold a list of parameters, each describing a single piece of input that the user of the extension can enter at runtime, which will subsequently be passed to the script. Each parameter holds the following information:
    - Internal identifier for input parameter
    - Display name of parameter
    - Type of parameter. This can be simple types such as string, password, number, boolean, string list, or this could also be application-specific objects like Employee, Address, or Company.
  • A pointer to the location of the Jython script to be executed.
It's clear that each extension descriptor contains all of the instructions required for extending the application with the extension, including providing the user with a high-usability user interface for accessing the extension.

We chose XML as the file format for the extension descriptor for several reasons. XML is a popular format for expressing information in a structured manner - parsers and validation tools are readily available. Also, by choosing XML, we are able to validate all descriptors against the XML Schema, which allows for catching badly structured descriptors at an early stage. By publishing the XML Schemas to extension developers, we are also providing the developers with a very handy tool to help create syntactically correct descriptors.

More Stories By Hayden Marchant

Hayden Marchant is a Software Engineer in the Information Integration Solutions group at IBM. He has 10 years of experience in software engineering. Hayden has a 1st class honors BA in mathematics from Cambridge University, England, and is a Sun Certified Programmer.

Comments (2) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
demo 01/22/06 03:24:44 PM EST

Where the source??

SYS-CON Belgium News Desk 01/15/06 02:13:56 PM EST

Allowing extensibility of a rich Java GUI is a daunting task. Each user may require slightly different functionality - this one wants to be able to import data from an Excel spreadsheet, and another wants to generate custom XML reports of particular artifacts in the application. You want to make every user happy, but you very rapidly see yourself with multiple code branches trying to satisfy those custom requirements - every Java developer's configuration management nightmare.

@ThingsExpo Stories
Fact is, enterprises have significant legacy voice infrastructure that’s costly to replace with pure IP solutions. How can we bring this analog infrastructure into our shiny new cloud applications? There are proven methods to bind both legacy voice applications and traditional PSTN audio into cloud-based applications and services at a carrier scale. Some of the most successful implementations leverage WebRTC, WebSockets, SIP and other open source technologies. In his session at @ThingsExpo, Da...
Cognitive Computing is becoming the foundation for a new generation of solutions that have the potential to transform business. Unlike traditional approaches to building solutions, a cognitive computing approach allows the data to help determine the way applications are designed. This contrasts with conventional software development that begins with defining logic based on the current way a business operates. In her session at 18th Cloud Expo, Judith S. Hurwitz, President and CEO of Hurwitz & ...
Almost two-thirds of companies either have or soon will have IoT as the backbone of their business in 2016. However, IoT is far more complex than most firms expected. How can you not get trapped in the pitfalls? In his session at @ThingsExpo, Tony Shan, a renowned visionary and thought leader, will introduce a holistic method of IoTification, which is the process of IoTifying the existing technology and business models to adopt and leverage IoT. He will drill down to the components in this fra...
The Internet of Things can drive efficiency for airlines and airports. In their session at @ThingsExpo, Shyam Varan Nath, Principal Architect with GE, and Sudip Majumder, senior director of development at Oracle, will discuss the technical details of the connected airline baggage and related social media solutions. These IoT applications will enhance travelers' journey experience and drive efficiency for the airlines and the airports. The session will include a working demo and a technical d...
I'm a lonely sensor. I spend all day telling the world how I'm feeling, but none of the other sensors seem to care. I want to be connected. I want to build relationships with other sensors to be more useful for my human. I want my human to understand that when my friends next door are too hot for a while, I'll soon be flaming. And when all my friends go outside without me, I may be left behind. Don't just log my data; use the relationship graph. In his session at @ThingsExpo, Ryan Boyd, Engi...
SYS-CON Events announced today that Pulzze Systems will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Pulzze Systems, Inc. provides infrastructure products for the Internet of Things to enable any connected device and system to carry out matched operations without programming. For more information, visit http://www.pulzzesystems.com.
SYS-CON Events announced today that Numerex Corp, a leading provider of managed enterprise solutions enabling the Internet of Things (IoT), will exhibit at the 19th International Cloud Expo | @ThingsExpo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Numerex Corp. (NASDAQ:NMRX) is a leading provider of managed enterprise solutions enabling the Internet of Things (IoT). The Company's solutions produce new revenue streams or create operating...
If you’re responsible for an application that depends on the data or functionality of various IoT endpoints – either sensors or devices – your brand reputation depends on the security, reliability, and compliance of its many integrated parts. If your application fails to deliver the expected business results, your customers and partners won't care if that failure stems from the code you developed or from a component that you integrated. What can you do to ensure that the endpoints work as expect...
WebRTC adoption has generated a wave of creative uses of communications and collaboration through websites, sales apps, customer care and business applications. As WebRTC has become more mainstream it has evolved to use cases beyond the original peer-to-peer case, which has led to a repeating requirement for interoperability with existing infrastructures. In his session at @ThingsExpo, Graham Holt, Executive Vice President of Daitan Group, will cover implementation examples that have enabled ea...
The Transparent Cloud-computing Consortium (abbreviation: T-Cloud Consortium) will conduct research activities into changes in the computing model as a result of collaboration between "device" and "cloud" and the creation of new value and markets through organic data processing High speed and high quality networks, and dramatic improvements in computer processing capabilities, have greatly changed the nature of applications and made the storing and processing of data on the network commonplace.
Major trends and emerging technologies – from virtual reality and IoT, to Big Data and algorithms – are helping organizations innovate in the digital era. However, to create real business value, IT must think beyond the ‘what’ of digital transformation to the ‘how’ to harness emerging trends, innovation and disruption. Architecture is the key that underpins and ties all these efforts together. In the digital age, it’s important to invest in architecture, extend the enterprise footprint to the cl...
Fifty billion connected devices and still no winning protocols standards. HTTP, WebSockets, MQTT, and CoAP seem to be leading in the IoT protocol race at the moment but many more protocols are getting introduced on a regular basis. Each protocol has its pros and cons depending on the nature of the communications. Does there really need to be only one protocol to rule them all? Of course not. In his session at @ThingsExpo, Chris Matthieu, co-founder and CTO of Octoblu, walk you through how Oct...
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, provided an overview of the evolution of the Internet and the Database and the future of their combination – the Blockchain. Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life sett...
SYS-CON Events announced today that ReadyTalk, a leading provider of online conferencing and webinar services, has been named Vendor Presentation Sponsor at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. ReadyTalk delivers audio and web conferencing services that inspire collaboration and enable the Future of Work for today’s increasingly digital and mobile workforce. By combining intuitive, innovative tec...
Vidyo, Inc., has joined the Alliance for Open Media. The Alliance for Open Media is a non-profit organization working to define and develop media technologies that address the need for an open standard for video compression and delivery over the web. As a member of the Alliance, Vidyo will collaborate with industry leaders in pursuit of an open and royalty-free AOMedia Video codec, AV1. Vidyo’s contributions to the organization will bring to bear its long history of expertise in codec technolo...
SYS-CON Events announced today that Bsquare has been named “Silver Sponsor” of SYS-CON's @ThingsExpo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. For more than two decades, Bsquare has helped its customers extract business value from a broad array of physical assets by making them intelligent, connecting them, and using the data they generate to optimize business processes.
The vision of a connected smart home is becoming reality with the application of integrated wireless technologies in devices and appliances. The use of standardized and TCP/IP networked wireless technologies in line-powered and battery operated sensors and controls has led to the adoption of radios in the 2.4GHz band, including Wi-Fi, BT/BLE and 802.15.4 applied ZigBee and Thread. This is driving the need for robust wireless coexistence for multiple radios to ensure throughput performance and th...
Enterprise IT has been in the era of Hybrid Cloud for some time now. But it seems most conversations about Hybrid are focused on integrating AWS, Microsoft Azure, or Google ECM into existing on-premises systems. Where is all the Private Cloud? What do technology providers need to do to make their offerings more compelling? How should enterprise IT executives and buyers define their focus, needs, and roadmap, and communicate that clearly to the providers?
SYS-CON Events announced today that Commvault, a global leader in enterprise data protection and information management, has been named “Bronze Sponsor” of SYS-CON's 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Commvault is a leading provider of data protection and information management solutions, helping companies worldwide activate their data to drive more value and business insight and to transform moder...
There is little doubt that Big Data solutions will have an increasing role in the Enterprise IT mainstream over time. Big Data at Cloud Expo - to be held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA - has announced its Call for Papers is open. Cloud computing is being adopted in one form or another by 94% of enterprises today. Tens of billions of new devices are being connected to The Internet of Things. And Big Data is driving this bus. An exponential increase is...