Concept : Exploring Bungee Builder's Feature Set

Page Status: Beta

Back to Concepts and How Tos

The Bungee Connect programming environment consists of what appears to be a standard IDE, such as you might encounter with many desktop 3GL programming environments. Yet, the Bungee programming paradigm differs in some fundamental and powerful ways from a traditional environment.

Contents

[edit] Understanding the Builder Programming Paradigm

Bungee Builder may be unique among IDEs because the Builder is an application built with the very technology made available to you as a developer, and is an example of bootstrapping. This means every application you create using the Builder has access to the same power and robustness that is built into the Builder. The Builder is its own best example of the rich interactivity and powerful application workflow you can expect in the applications you create using Bungee Builder.

Furthermore, Bungee Builder is intended to be extensible, so that, as a member of the Bungee community, in the future you can expect to help add to the power and functionality of the Builder and ensure that the quality of the applications you produce with the Builder is improved and maintained.

There are several features of Bungee Builder that make the Builder a compelling programming environment:

[edit] Zero Installation, Zero Cost For Development

Bungee Labs provides an extensible, end-to-end Web application creation and deployment environment that is delivered 100% over the Web. Because the entire system is hosted, you do not need to install Bungee Builder, nor any infrastructure elements. Furthermore, there is no client install of any kind for your end users. Applications created using Bungee Builder run natively in Web browsers and clients without any plug-in or client install.

To begin creating a Web application using Bungee Builder, all that is required is that you create a developer account on Bungee Labs.com and log in. Creating an account is absolutely free, and there is never a charge for any development time using the Builder. You are only charged for the usage rates of the applications you create and deploy using Bungee. Deployed applications accrue Bungee Units, which are the metrics by which you are billed. For more information on this topic, see the FAQ.

[edit] Automated Importing of Web Services

If you have worked with Web services in the past, you are probably used to a non-visual way of working with either SOAP or REST services. SOAP interfaces, for instance, are usually accessed through a flat XML file called a WSDL. In Bungee Builder however, it is a trivial matter to quickly import a WSDL. From the imported WSDL, the Builder creates a group of class structures with which you interact within the Builder, just as you would any other Builder-defined data element. The clarity and ease of interaction with WSDLs the Builder facilitates is one of the compelling features of Bungee.

[edit] Automated Cross-Browser Compatibility

Bungee Builder (and all applications you create in Bungee) are cross-browser enabled and run in Internet Explorer, Firefox, and Safari by default. Cross-browser compatibility with other browsers may also be added.

[edit] Automated State Management

Traditionally, one of the most difficult areas of building an Ajax interface is managing state across browser instances. In Bungee, state management is automated so that you never have to do any special coding to achieve cross browser state propagation. Because almost all computing happens on the server, state propagates from changes in the user interface to the server, where the change is processed by the server and then propagated out to any secondary client interface needing notification of the change.

[edit] Automated Control Binding

Bungee Builder uses an advanced programming paradigm as a means to free you from the need to engage in repetitive and time-consuming programming tasks. By automating many such tasks, the Builder speeds the application interface creation process.

A good example of this is automated control binding, which simplifies the process of connecting a control to a data field. Within Bungee Builder, you first select the data field, and then drag a control from the Selection portion of the Toolbox and drop it onto your form. The control is automatically bound to the selected data element. No explicit programming is necessary to make the control and data element interact. This single automation saves a great deal of time in the interface creation process.

[edit] Sophisticated Layout Control

Bungee Builder provides you with sophisticated application interface layout control. The Design Editor area of the Builder is WYSIWYG and includes Point-and-Click and Drag-and-Drop design. Bungee Builder's visual form and page layout metaphor includes:

  • Automation of binding between data elements and interaction controls
  • Cascading Style Sheet inheritance with individual attribute override
  • Automatic scale and resizing rules (which can be percentage, fixed, or dynamic) are applicable to the form as a whole, or to individual sections of the form, as you deem appropriate
  • A Solution Explorer where you can organize and view your own and your team’s solutions and projects

[edit] Ajax Without Ajax Coding

One of the main benefits you receive as a developer using Bungee is the automated creation of Ajax-enabled application interfaces, without needing to learn Ajax programming. All applications you create using the Builder are delivered to your end users with Ajax-like richness, without the need for you to learn or do any Ajax programming.

All application interfaces you create with the Builder run entirely within a browser or other Web client without the need of a specialized client download, other than a small amount of JavaScript containing application resource information. The download is small because application logic processing remains on Bungee Grid while Bungee Pulse handles dynamic updates to the application interface.

Only user interface interactions that affect application state are passed between the browser and the server. Interface updates that do not require server processing remain on the client. This method of handling updates on an as-needed basis keeps the client very thin and nimble.

In addition, Bungee Builder contains an expansive set of combinable AJAX interaction controls and functional assemblies, which will expand with further updates to the Builder and with the growth of the Bungee community.

[edit] Declarative Language

Bungee Builder uses an innovative programming paradigm that drastically reduces the need to engage in repetitive and time-consuming programming tasks. By automating many such tasks, the Builder speeds the application writing process.

Bungee Builder is built with, and exposes for your use, a declarative language called Bungee Logic. For a more indepth discussion of declarative languages, see Wikipedia's entry. One of the hallmarks of a declarative language is that, rather than having a procedural focus, the relationships between data elements are what drive application workflow. In the Builder, these data element relationships are stated declaratively through setting properties. This reduces the amount of code needed to "wire" data elements to one another. The main organizer of relationships in the Bungee programming paradigm is called an Adapter.

Bungee Logic is a member of the C family, and the language robust and is object-oriented, though still easy to use and understand. The graphical nature of the programming paradigm leads to rapid application development.

[edit] Programming constructs in Bungee Logic include:

[edit] Power of Adapters

One of the most powerful aspects of the Model driven programming used in Bungee Builder is the use of adapters. Adapters at root are identifiers that enable you to set properties to bind UI controls to members of an object. Adapters provide the most powerful reduction of repetitious coding tasks in Bungee Logic and act as a very simplified aid to connect UI widgets and objects or object members.

Adapters are immutable, well known (reliable), globally unique objects that declaratively use properties to customize behavior. Adapters enable dynamic discovery of objects at runtime. Bungee adapters operate in a fashion similar to the Adapter pattern of Design Patterns described by the Gang-of-Four.

The current list of adapter types include:

[edit] Database Support

Bungee Connect provides support for database connectivity to both MYSAL and PostgresSQL databases. You can read more about this topic here.

[edit] Revision Control

Because the application work space for all Bungee applications is hosted, Bungee Builder also includes a revision control system. Current revision control elements include:

  • Single and multi-user check-out
  • Check-in
  • Sync
  • Revert

As the Builder becomes more mature, the revision control system will become even more robust.

[edit] Design Time is Runtime

The declarative language used to create Bungee Builder is an abstraction of 3GL and 4GL languages and runs on top of a compiled kernel of C++ code. Within the declarative language, there are several statements that encapsulate basic computing tasks. These statements have been pre-validated against the compiled code running in the server kernel, therefore the basic statements used in the declarative language do not require compilation. On the other hand, there is real time validation of your implementation of the statements, and the Builder provides you with visual feedback on your implementation of those statements. For example, red text is used for invalid expressions and green text is used for valid expressions.

Because Bungee Builder is an application running on a middleware server that hosts the entire Bungee Connect on-demand system, applications you create with Bungee Builder are really only extensions of Bungee Builder itself, and so are already functioning. This fact, when combined with the abstracted nature of Bungee Logic, means that any data you access through your program is as live at design time as it will be at runtime.

[edit] Leveraging the Power of the Developer Community

Bungee Labs is creating a vibrant community for developing, sharing, and delivering highly interactive Web applications. Bungee Builder is extensible, and as a member of the Bungee community, you can add to the power and functionality of the Builder and ensure that the quality of the applications you produce with the Builder is improved and maintained.

[edit] Harnessing the Power of the Share

In addition to adding to the power of Bungee Builder, whenever you create a component in the Bungee system, you have the opportunity to post the component to the Bungee Share of objects provided by Bungee Labs by default. As you and other members of the Bungee community contribute functionality to the Share, you contribute to the power of the community in general, and you and other community members can find solutions to your programming tasks much more quickly and easily.

[edit] Posting Models

There are three posting models available for posting a component in the Bungee system.

[edit] Type L (LGPL style)

Type L is the most important model to understand as a developer. Like LGPL, projects posted under Type L enable other developers to make derivative works of the project you posted, and require that those derivative works be posted back to the Share as a derivative work also of Type L.

[edit] Type R (Apache/X11/BSD/etc. style)

Projects posted under Type R are essentially given to the community. The posting model for derivative works is decided by the developer reusing the component. A developer re-using a component of type R may choose to post work based on the original work as a derivative work of type R, or not. The developer may choose to post the derivative as either L, R, or Proprietary.

[edit] Proprietary (All Rights Reserved)

Works posted as proprietary are only posted to a personal or workgroup Share and are not exposed to the community at large.

[edit] Ease of Application Deployment

Once you have completed your application and are ready for end users to begin using your creation, an application deployment registration process is initiated with Bungee Labs. This is when and where the financial billing relationship between Bungee Labs and the application deployer is established. This billing relationship extends only to the use of the deployed application. For instance, when you deploy an application, you are charged only for the amount of Bungee server resources used as your end users interact with the application. You are still able to develop other applications without any additional charge. The billing model also enables you to optimize your application interface so that less Bungee Units are accrued than in an application that has not been so optimized.

[edit] Deploying Your Application

Because Bungee Builder is part of an end-to-end On-Demand Application System, deploying your completed applications is a nearly seamless process. Deploying an application from the Builder is as simple as following the steps in the deployment wizard. Once you complete the wizard, your application is live and ready for use.

There are several options for how you may deploy an application. You may choose to deploy your application as a completely Bungee-hosted application with a unique URL, or you can embed your Bungee application within an existing Web site or Web page.

Once your application is deployed, your application is immediately live on a distributed, load-balanced 24/7 infrastructure.

[edit] Application Analytics

Applications created and deployed with Bungee Connect also receive the benefit of full Web-style analytic capabilities that are endemic to the Bungee system. These analytics enable you to easily monitor key usage areas and the strengths and weakness of your deployed application. While the analytics capabilities will not be fully operational with the initial Beta release of the Bungee system, these analytics are a key portion of the overall system plan and will be updated continuously.

[edit] Application Version Control

Bungee Builder also provides you with application version control. This aspect of the Builder enables you to make changes to an application and immediately roll out new versions to current users without any downloads or installations. You may also choose to deploy the changes as a completely different application so that current users can continue to use the version with which they are already comfortable, moving to the new functionality in a phased manner.

[edit] Continual Updates

Because Bungee Builder is a hosted application, there is no need to "ship" a particular version to you. The Bungee Labs development team is free to make constant improvements to the code base and when a given feature is complete, to add that feature incrementally to the code base running in the hosted data center. This means that you should see continual upgrades and improvements to your application creation environment, without the need for time consuming downloads and installations. These upgrades will be done in a common sense way, and you will have the ability to accept or reject interface updates.

[edit] Recapping Key Bungee Builder Benefits

Due to the hosted middleware nature of the Bungee System, there are several key benefits to using Bungee Builder to create Web applications:

  • You can begin programming as soon as you create an account with Bungee Labs—there is no download or install.
  • You can program from anywhere there is Internet access. Bungee Builder is always available "on demand."
  • Your applications under development are always live, and you can run your applications at any time. This means zero time lost compiling. This also enables you to quickly prototype an application, and by passing a URL to your reviewer, receive instant feedback on your design.
  • Your applications all use Ajax, but there is no Ajax programming to worry about at all. Zero.
  • All your applications run cross-browser without needing customization.
  • Using the Builder's powerful declarative language, you can extend the Bungee development system, as well as access the extensions that others add.
  • All the applications you build are one hundred percent Web-based and available without a download or install. Despite this, your applications feel like desk-top installed applications to your users, so much so, your users may forget they are working in a Web browser.

 

    Copyright © 2005 - 2007 Bungee Labs. All rights reserved.