Enterprise Applications have a level of complexity that deserves special treatment. In 2013, the choices for front-end technologies are not very formed. As the JavaScript ecosystem matures over the next few years, there will likely emerge a series of best practices, tools, and frameworks that help JavaScript have a larger place in Enterprise Applications.

In Rome, on March 23rd, 2013, we presented on our Randori Framework for large JavaScript application development. Randori makes is easy to produce JavaScript from the C# language. The constructs will be familiar to hundreds of thousands of Microsoft-centric developers and allow them to use their most familiar language and tools and produce enterprise-grade JavaScript for writing reactive, single-page applications.
It is our prediction that cross-compilers will emerge that will increase the effectiveness and efficiency of writing JavaScript at scale. For all of its benefits, namely the availability of the language across nearly all significant platforms using freely available runtimes, there are many language deficiencies that complicate the writing of quality code. Things like Types, Classes, and Inheritance will confuse those coming from traditional object-oriented languages like Java or C#. An overly eager type inference system will confuse everyone.

In many cases, JavaScript frameworks are learned by building a sample application. Commonly, this is a Twitter client, pet store app, or some other contrived application. These sample applications provide a mechanism for the learner to build out the necessary structures using the key features in the JavaScript framework. While this facilitates learning, often there is a large gap between how one should build and architect a simple application versus a complex enterprise application.
One might ask, why are Enterprise applications complex. Must they be? One reason is that the Enterprise application development lifecycle can span years. It is a constant challenge building an application over such a lengthy time span. This challenge is further complicated when the technology underlying the application is in a state of rapid change. The application owners and technical architects need to be able to anticipate and plan for these changes, else the application, application development timeline, and application development budget will suffer negatively.
In addition to the lengthy development cycles, Enterprise Applications often have even lengthier maintenance cycles. An application that is worth the investment of multiple man-years worth of software engineering must have a lifespan that provides a reasonable return on investment. What’s more, Enterprises tend to collect applications that perform useful functionalities. These applications can last a decade, or even multiple decades. You can bet the maintenance engineers will change out a few times over those periods. The lack of tribal knowledge can complicate maintenance.
Another source of complexity are roles and permissions. Enterprise applications generally have lots of different user roles or permissions. These roles and permissions are cross-cutting concerns that often affect many different parts of the application like business logic, user interface, and data manipulation. Often, the data source for these roles and permissions may live in a special environment like an LDAP or some other federated authentication system. It is important for Enterprise applications to be able to react to changes in user roles, permissions, or even the source data system for this information.
JavaScript has a big place in the applications of the future. The language and ecosystem aren’t without their faults however. Randori is one way forward to build Enterprise JavaScript applications.