The Isomorphic Blog

Is ‘lightweight’ always a good thing?

Business applications are supposed to improve productivity.

That is why they exist. However, as developers, we sometimes get excited about a newly released technology and the benefits it claims. We can then end up adopting technology that actually degrades the final product – creating a less productive UI, and even ruining performance, despite promising performance claims.

At Isomorphic, we see this happening a lot with companies that get excited about new ‘lightweight’ technologies, like AngularBootstrapBackbone or Ember – or even JQuery, when new JQuery-based components are released.

So, what drives productivity in today’s web applications?

End user productivity – from a platform perspective – is driven by:
  • Advanced UI features (i.e. performing activities with fewer steps / clicks / screens / actions)
  • Performance & scalability (i.e. getting the result of each activity faster)


Can we build high-productivity applications with ‘lightweight’ technologies?

There are a number of areas where ‘lightweight’ technologies consistently fall short, or fail to understand the true enterprise requirements:

1. Wrong performance focus

People are excited about “lightweight” grids, which claim to be able to render 10,000k or more rows in a reasonable time in the latest browser.  Developers often think this means that they can skip implementing data paging, and can use client-side filtering and sorting to improve performance.  The reality:
a. the reason not to load 10,000 rows is the database, not the browser.  It’s not important that a grid can render a lot of rows all at once.  The purpose of loading rows incrementally was always to avoid unnecessary database and application server load, as well as avoid wasted bandwidth.
b. 10,000 rows is not a reasonable upper bound – nor is 100,000.  Business data sets routinely get much larger, especially when you consider administrative interfaces that look at data from many users at once.  If you ship an application that expects to load all data up front, it will break in production as data volumes go higher than you had assumed.
c. client-side filter & sort is achievable with Isomorphic grids – but not with lightweight grids.  Our Adaptive Filtering technology automatically switches to client-side sort & filter when data sets are smaller, so you can handle extremely large data sets and reduce server load and bandwidth use.  This capability is why Isomorphic grids dominate performance comparisons that simulate actual end-user behavior.
d. you can only render rows faster by removing features.  Isomorphic’s grid component uses a complex HTML structure because it supports a huge variety of productivity features like auto-sizing of both rows and columns, on-the-fly column freezing, row-spanning cells, components embedded in rows, on-the-fly grouping, as well as many developer override points that require particular HTML structures in order to work.  We know exactly what simplifications would result in rendering more rows per second.  We intentionally don’t apply those simplifications because they would remove productivity features, while not actually improving real-world scalability or performance.


2. Productivity comes from feature-rich components, not “lightweight” ones.

Consider grid components. End users need capabilities like edit inline, freeze columns, grouping and sorting, formula columns, adaptive filtering, hiliting, export, drag & drop, etc. Without these and other features, performing simple tasks requires end users to complete multi-step processes. For example:
  • With edit inline: end users click a row or cell, edit the data, then move on.
  • Without edit inline: end users select a record, click an edit button, are taken to another screen, perform the desired update, save the record, and return back to the starting point – hopefully without losing context.
Without feature-rich components, your application can become a frustrating time sink rather than a productivity tool.


3. Forgetting something?  Server integration!

Some of the most powerful features in modern UI technologies span both the client and server.  Examples from Isomorphic’s technology include:
a. single source validation & security rules.  Validation rules declared in one place are enforced on the server (for security) and the client (for immediate feedback)
b. automatic UI generation.  Grids, forms and other components can be automatically configured from server-side artifacts such as Java beans and database tables, greatly reducing redundant declarations and making applications easier to maintain
c. exports.  Isomorphic’s UI components know to coordinate with our server framework to export themselves and their data to Excel, PDF and other formats.  Every application needs this; it can be a huge effort to build from scratch.
.. and this only scratches the surface of features that a modern client & server framework provides.
Starting from a ‘lightweight’, client-only framework puts you years behind the state of the art for UI technology, before you even consider which UI components to use.


4. Mixing components never worked, and still doesn’t

Most of the new crop of ‘lightweight’ frameworks emphasize the ability to plug in components from different sources, so you can get the best of each component type.  This should all work since they share a common data-binding system, right?
Wrong, unfortunately:
a. accessibility requires intensive coordination between components about tab order, modality, and ARIA markup.  Really trivial cases where just a few rudimentary components are combined will appear to work, however, when you have a lot of instances of dynamically change tab order, multi-level modality and the like, there’s no way to get components from different sources to work together and actually pass accessibility tests
b. skinning conflicts.  Each component has a slightly different look and feel, and it can take a lot of work to correct the mishmash of different fonts and styles so that an application looks reasonably consistent, especially since, when fonts are made consistent, the sizes of various controls and sub-controls used in the app may need to be adjusted to fit the adjusted fonts.  Also, some frameworks make conflicting assumptions about CSS they can globally apply to the whole page, breaking other frameworks or components on the same page (e.g. Bootstrap)
c. export and print support.  A rare feature among ‘lightweight’ components, yet most applications require it, and just one component lacking support can ruin the ability to print or export a particular screen or report.
d. internalization and localization.  Pulling components from multiple sources typically means that localization work has to be repeated for each component, as every component needs the local word for “OK”, or to be told what date format to use
e. inconsistent quality and endless evaluation.  There is the practical consideration of whether it makes sense to constantly hunt for components.  One grid has inline filtering but no frozen columns.  Another has frozen columns, but no ARIA support for inline editing.  A third has a nice date filtering interface, but it looks and operates completely differently from a date filtering interface you’re using outside of the grid, which will surely lead to user confusion.
f. support.  Even if you succeed in finding a workable set of components, you may find later on that your bug reports are ignored by one team or another.  If support is even available for your chosen components, how many separate support agreements will you be purchasing?  What about the many bugs that are not quite just one vendor’s fault?  For the many single-component OSS projects, is there any reason to think the project will last as long as you need to maintain your application?


So, is ‘lightweight’ always a good thing?

Note, it’s not … especially when you’re up against heavyweights. SmartClient has the richest set of UI components available, coupled with deep server integration to bring productivity and performance to your enterprise applications.

A Candid Opinion on the Threats to Java

Earlier this month, our very own CTO – Charles Kendrick – was interviewed by Marketing Strategist and Growth Hacker, Tom Smith. This interview was part of a series for DZone’s 2015 Guide to the Java Ecosystem, coming in October.

Tom’s article is below and the original can be found here. It is well worth a read!

A Candid Opinion on the Threats to Java

Charles has an interesting take on the evolution of the Java Ecosystem. He’s certainly optimistic, but he says that Sun’s missteps and Oracle’s lawsuits still threaten the community.

I had the opportunity to interview Charles Kendrick the founder and CTO at Isomorphic Software about the state of the Java ecosystem today and moving forward. This was part of a series of interviews for our 2015 Guide to the Java Ecosystem, coming in October.

Charles had a more unique perspective than some of the other folks I interviewed and I thought the the followers of the Java Zone would like to see his perspective and let us know [here] how you would answer these questions.

Q: What type of Java projects have you worked on?

Isomorphic produces the SmartClient and SmartGWT HTML5/Ajax frameworks.  Both use a Java server, and SmartGWT uses Java on the client-side via GWT.

Q: What do you see as the most important parts of the Java ecosystem?

The tremendous breadth of useful libraries tends to mean that any enterprise project needs to be using the JVM, even if a language other than Java is chosen.

Q: Who are the most important players in the Java ecosystem?

Oracle and Google (Google because of Android).

Q: What sources do you use to stay abreast of industry trends?

DZone, StackExchange, SDTimes, and various TechTarget sites.

Q: Where is the greatest value being seen in Java today?

Server-side usage in the Enterprise, specifically large-scale, database-oriented systems involving integration between multiple services or platforms, and distributed transactions.

As a language for describing UI, Java is used because it’s popular and well-known, but its expressiveness is very poor, and other languages tend to be a better choice.

Q: Who’s in charge of different Java-related projects at your firm?

We have multiple teams implementing both framework features and customer projects in Java.

Q: What are the skills that make someone good at this?

We will not hire anyone who only knows Java, which we would consider a very bad sign.  We look instead for people who are smart and get things done.

Q: Which other programming languages and frameworks do you, or your firm, use?

Principally JavaScript, Perl, Ruby, PHP, Python, C# / .NET.

Q: How has the Java ecosystem evolved over the time that you’ve worked with it?

Poorly.  Sun’s lack of leadership and major missteps (eg JavaFX, JSF) have led to a plethora of conflicting approaches in basic areas of the Java platform like UI and data binding.

Q: What are the obstacles to the success of Java-based initiatives at a company?

The poor expressiveness of the Java language means that code takes longer to write, is harder to read, and tends to be rigid instead of flexible in the face of new requirements.

Java continues to struggle from the “jar hell” (in analogy with DLL hell) that .NET solved years ago with .NET assemblies, and the various solutions keep getting pushed out (“Project Jigsaw” is now planned for Java 9).

Q: Do you have any concerns regarding the Java ecosystem?

Oracle’s willingness to litigate innovation out of existence, specifically their lawsuit against Android, could easily cause many partners to jump ship to another platform, causing Java to stagnate.

Q: What’s the future for the Java ecosystem from your point of view – where do the greatest opportunities lie?

Better expressiveness in the core Java language.  We have literally hundreds of product samples with parallel implementation in JavaScript (SmartClient) and Java (SmartGWT).  Placing the code side-by-side shows how very, very far Java is from matching the expressiveness of other languages.  Oracle needs to show leadership in more aggressively pursuing and supporting JSRs that improve and simplify Java syntax.

Further  embracing non-Java languages in the JVM. Java 8 has made some strides in making JavaScript more part of the JVM, but it is still a struggle to use other languages, with lots of issues in the areas of error reporting and debugging.

Q: What do developers need to keep in mind when working with Java?

Java’s static type checking ability needs to be looked at as just another form of automated testing, and structuring code to allow more static type checking needs to be weighed against other forms of automated testing.

Specifically, we find that if a developer has spent too much time with Java to the exclusion of other languages, they tend to expend heroic efforts structuring code so that it’s possible for the Java compiler to check more error conditions.  This effort is usually better spent on automated tests, which can catch a much wider range of error conditions.

Even More 10.1 / 5.1 Features

Our next release – 10.1 / 5.1 – is getting close. We talked about some of the upcoming features in an earlier blogpost. Here are a few more to wet your appetite further …


Server-side Support for Relative Date

The RelativeDate system allows end users to express criteria as relative to the current date, which is very useful for saved searches and other applications.  New support for server-side decoding of RelativeDates allows automated processes that don’t involve a browser to execute saved criteria that involve RelativeDates.




Snap to Align

While dragging, snap to coordinates aligns the edge or center of the dragged widget with the edge or center of other widgets in the same container.





Client-driven Transaction Chaining

Transaction chaining enables the values of a request to be determined by the results of a previous request.  A new client-driven mode of Transaction Chaining allows client-side code to drive this process instead of requiring server-side declarations, so that existing server-side operations can be re-used in novel ways without requiring server-side developers to add new features.


API for Doing Transactions Outside of HTTP Request Lifecycle

This enhancement allows the Automatic Transactions feature to be used for scheduled tasks (such as Quartz timers) and standalone applications (not running within a servlet engine). 

Scheduled Tasks
DSTransaction tracks a queue of requests and provides APIs for commiting, rolling back, managing error status, freeing resources, and enabling features like “Transaction Chaining”.



Standalone Applications
The DataSource layer can be used in a standalone application separate from a servlet engine, for use cases like offline batch data processing, sending emails based on database state, or integration of Smart GWT Server logic into a standalone Java Swing application.



Floating Titles for Drawing Shapes

All shapes now support the ability to have a text title drawn on top of them, with various options for how text is placed for rotatable shapes.  For example, as a shape is rotated, the title can stay in place, rotate with the shape, rotate with the shape but flip so as to always remain upright, etc.





The Dashboards & Tools framework now has built-in support for editing titles – just start typing when a shape is selected to add or change a title.





Improved Data Import

We’ve added XML and JSON formats …

  • BatchUploader now allows XML or JSON uploads (in addition to CSV) and has the ability to auto-detect the format used.
  • Server-side APIs parsing XML, JSON or CSV data as DataSource records make custom importers easier to write.
  • The Admin Console and Visual Builder now support upload of sample data files right in the tool.






 *** Remember: Upgrades to 10.1/5.1 are FREE to those who have already purchased 10.0 / 5.0. ***

For those not yet on 10.0/ 5.0, upgrade discounts are available and are based on the date of your last license purchase. View our License FAQs for more details. If you would like to upgrade, please contact us.

Thanks as always,

The Isomorphic Team!

Outdated performance perceptions driving your mobile strategy?

Looking back, there was a time when mobile specific apps were necessary. Browser technology wasn’t quite there, and the first smartphones just didn’t have enough oomph. But we have come a long way since then …


Let’s look at the iPhone. Since the first release in 2007 to the release of the iPhone6 last year, according to Apple, speed has increased 50x. Most independent reports say this is more or less correct. If we consider just this improvement, something that used to take 15 second would now take 0.3 seconds. Just that alone makes a huge difference.


Browsers have improved too. It turns out also by a pretty huge amount. In less than two years from Jan 2010, Kraken javascript benchmarks shows improvement from 29,000 to 2000 ms. The rate of improvement was less dramatic in the last couple of years, but it is currently around 1000ms, making it overall about 30x faster since 2010. Again, considering this improvement in insolation, something that used to take 15 seconds would now take 0.5 seconds.




These two improvements however are additive. They collectively provide an overall speed improvement of 1500x. To put that in perspective, if something used to take an unacceptable 15 seconds back in 2007, it would now take a delightful 0.01 seconds.

But let’s play devil’s advocate and consider that Apple could be exaggerating a little, and maybe the javascript benchmark conditions were too ideal. Let’s say the improvement was only 1000x. That 15 seconds would still now be a lightening fast 0.015 seconds.

Do you still want to create a desktop application, then rewrite for iOS and again for Android?


SmartClient allows you to write just once for all devices:
  • Much less coding and maintenance
  • Lightning fast
  • No UX compromise

With the SmartClient strategy, you can even afford to do the unthinkable and build a rest week into your sprint schedule! 😉

A Better User Experience (and a Sneak Peek at the Next Release)

sadtohappyBlogOur next release  (SmartClient 10.1 / Smart GWT 5.1) is still a little way off, but we would like to share some details. We also want to give you the opportunity to play with some of the BETA (pre-release) features. This blog will focus on user experience. However, there will be more blogs about other aspects of the 10.1 /5.1 content, so please look out for them.

 *** One important point … upgrades to 10.1 and 5.1 are FREE to those who have already purchased 10.0 / 5.0. ***

So, without further adieu, let’s talk about user experience …

Building an application that users love needs a great understanding of the business requirements / problems you are trying to solve; translating these into a functional design … then of course developing, testing, releasing and maintaining the application. This all takes a long time and there is often little time left to focus on making the user experience as good as it needs to be. In addition, some things that seem small and insignificant require big workarounds / hacks that outweigh the perceived benefits.

The problem with this is things that seem independently insignificant can collectively make the end user’s life miserable. The end result being that they don’t want to use your application. At Isomorphic, we are therefore trying to make it easier and faster for you to go the extra mile from a user experience perspective.

Below are a few BETA features that you can start playing with right now.

Visual Changed State

In SmartClient 10.1 / Smart GWT 5.1, FormItems will support a pending visual state that can be used to style the item differently when the user changes the value from the last-saved value. This includes showing strikethrough appearance for values in multiple-select controls. Try the live sample now!

Visual Changed State

Visual Changed State let’s you control the appearance of changed values, and display the original value.

Try Now Button



Inline Icons

It’s now easy to place icons inside of editable text fields such as ComboBoxItems, for decoration or to provide functionality when clicked.  Icons support left or right alignment, and multiple icons are allowed on each side. Try the live sample now!


Try Now Button



Nav Bar Animations

Our NavigationBar component has been given subtle, built in animations / transitions that not only look cool, but help users keep their sense of place. Notice how the clicked button glides in to be the new heading, while the new buttons fade in to place.


A CheckboxItem’s checkbox can be sprited by setting a custom boolean Base Style and writing the CSS to apply the appropriate background-position for the checkbox’ current state. Try the live sample now!

Try Now Button



Hints, Tips and Format Masks Improved Placeholder Behavior

When filling out a form, it helps to guide the user as to what data and format is expected. The behavior has been improved such that hint / tips persist even when the user places their cursor in the field. The hints / tips only disappear once the user starts typing. See the example below and try the live sample now.

Try Now Button


The above are just some quick insights into a couple of the user experience enhancements we are providing in 10.1 / 5.1. There’s a lot more to come besides this, so check back here for more updates.

As always, thank you from all the Isomorphic Team!

P.S. Thanks for reading our blog. If you would like us to cover any specific topics or have any feedback, please let us know by emailing

A single codebase for all devices?


With smartphones, tablets and other mobile devices becoming more and more prevalent in Enterprises, development organizations are often advised to design, build, test and maintain applications for the desktop, and repeat these tasks for every operating system (iOS, Windows, Android, etc.) and individual devices (iPhone 6, iPad, etc.). However, this rapidly becomes unsustainable.

Our last customer survey confirmed that the enterprise web applications you build are mostly accessed via desktop. The drivers for this are the tasks being performed, the volume of data involved, and the types of end users (mostly in the office / occasionally in the field).  We outlined a mobile strategy that supports these findings.

We also introduced features like Adaptive UI, Responsive Layouts, and Intelligent Auto-Fitting. With the SmartClient platform, developers can create powerful, beautiful, single codebase web applications that run on any device (desktop, mobile, tablet). Since development need only be done once, the overall effort is radically reduced. The end result?:

  • Solutions to market faster
  • Higher quality
  • Lower development costs

What’s not to like? Try out some live samples of these features here:

*** FREE PASS for DevOps Summit NY anyone? ***

One a completely separate note, we are presenting at DevOps Summit NY, June 9-11. We would love to see you there. In fact, we would like to get you FREE Full Conference Access for all 3 days – June 9-11 – which means you can choose from 45+ breakout sessions, general sessions, industry keynotes, and “Power Panels” and of course attend the Expo Floor.

To get your free pass, just follow these steps:

  1. Go to the special registration page –
  2. Fill out the Attendee Information form
  3. Select the VIP Gold Pass Registration Option (located on page 3 – “Registration Plan”)
  4. Enter the Discount Code: isomorphicVIPgold
  5. Abracadabra! The price will re-set to $0
  6. IMPORTANT: Email to let us know you are coming (we don’t want to miss you!)

Hope to see you there!

When did you last hear these 3 little words from your end users?



Since you are reading this blog, I think it is reasonable to assume you have a decent understanding of what it takes to build a web application. I would also bet that your end users have said at least one (all?) of the following when describing a web application you developed for them:

  • “incomplete”
  • “unintuitive”
  • “not user friendly” / “takes too many clicks to do anything”
  • “too slow”
  • “doesn’t work on my iPhone / Adroid / tablet”

If you have been tasked with delivering a complex web-based application that end users actually want to use, you will understand that it involves more than just writing good code. For example, you need to design an application that not only meets functional needs, but performs at lightening speed, has a streamlined user interface, looks beautiful, and works on any device.

Achieving all this requires a team with a breadth and depth of skills that are typically expensive and hard to find. For example, analysts that translate the functional needs into screen flows, UI designers that understand the power of existing platform components, and architects that can translate functional needs into a data model.

That’s why we introduced a new specialized Information Architecture service to supplement your dev team. Our goal is to ensure you get it right from the start, build applications that your end users love, and that stand the test of time.

Our Information Architects are expert in the structural design of complex applications. They begin by understanding the purpose of the applications you want to build, the information that will be captured, and how end users will utilize that data. They then design the data model, screen flows and screen wireframes. This process facilitates high performance, exposes missing details, and allows for a streamlined user interface.

With feedback gathered on the wireframes, the Information Architects call on their UI design expertise in conjunction with their deep knowledge of the SmartClient platform to construct functional mockups. They use these mockups to carry out user testing, ensuring that applications are functionally complete and have a delightful user experience. Feedback gained from user testing is then incorporated back into the design to create applications end users only dreamed of.

To learn more about our Information Architecture service, click here. We are offering a 30% discount through January.

Happy New year from all the Isomorphic Team!

Dashboards that redefine extensibility

When your users present you with a specification for their dream dashboard, I can promise you this: Once you build it for them, their dreams will get bigger … and they won’t just want more of the same. They will want new capabilities that you didn’t even consider when evaluating dashboard tools. For example, they will suddenly need the ability to kick off a workflow, update data in place, pull data from a legacy website, etc. … all from the dashboard. These types of things can quickly result in reconsideration of your chosen technology.

That is why we built Dashboards on top of the SmartClient framework. It has everything you need to make end user’s future dashboarding dreams come true – without the need to purchase, configure and integrate with your existing applications. And you can of course build beautiful dashboards like this one:


Beautiful, extensible dashboards without the need to purchase, setup or integrate with your existing applications.

But don’t just take my word for it … try it out for yourself!


Available NOW: SmartClient 10.0 / Smart GWT 5.0

releaseblogimagesmallerfileREDUCEDOur SmartClient 10.0 / Smart GWT 5.0 release is finally here and it is packed full of goodies!

What is in SmartClient 10.0 / Smart GWT 5.0?

You can find lots of details in the blogs below:

Here’s how to get it:

New Customers

Existing License Holders

SmartClient 10.0 / Smart GWT 5.0 is a paid upgrade. Discounts are available based upon the date of your previous purchase. Please contact us for upgrade pricing. Get access to all the cutting edge features by upgrading now!

  • To order an upgrade from a previous version and for more options, please contact sales.
  • For more information about how our licenses work, please see the Product & Licensing FAQ.

Once you have purchased your upgrade, Download SmartClient 10.0 or SmartClient 5.0 to get started (don’t forget to log in first)!

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues, including the exact date of the build.


The Isomorphic Team

Last Batch of Features Before the Big Release

SmartClient 10.0 / Smart GWT 5.0 will be released around the end August. This is a MAJOR release. We are currently adding the final layer of polish before we let it go.

Meanwhile, here are a few more features that we think you will like … and you can try them out now!


CubeGrid WYSIWYG Excel Export

CubeGrids can now export to excel with data arranged the same way you see in the cube: row and column headers arranged around a central body area. Also, Big Data is no problem: you can now export gigantic amounts of data to Excel (eg 1 million plus rows) with no issues and no running out of memory!


Try Now Button



Timeline and Calendar Enhancements

  • Major performance upgrades allowing much larger number of events to be displayed
  • Special indicators for moments in time or date ranges
  • Zones that span lanes (e.g. for weekends, holidays, etc.)

Timeline and Calendar Enhancements

Try Now Button





Spring @ transactional Annotation Support

Use Spring annotations for either a custom servlet or a specific DMI and SmartClient operations will participate in the Spring manage transaction automatically.


Proportional mode for charts
Area, Bar & Column charts now support “proportional mode”, where data values are visualized as ratios, similar to a Pie chart.  Like many other chart features, the end user can turn this mode on or off on-the-fly.
Proportional Mode for Charts
Try Now Button

Enhanced Move / Resize in Drawing Module
  • Resize-while-rotated
  • Enhanced and customizable appearance for knobs
  • Resize knob support for more kinds of DrawItems



Try Now Button




Download Smart GWT 5 or SmartClient 10 to get started using our newest mobile features – and much more – today!

Download now!


The Isomorphic Team

Page 1 of 712345»...Last »