The problem IBM WebSphere sMash solves
IBM® WebSphere® sMash addresses the increased pressure, in the market climate today, to build applications quickly to answer the situational needs of the business. Examples include applications to handle specific budget issues, users registering for an event, or the flow of an online transaction.
With this increased pressure in the market climate, many of these situational applications are not being written because they are not affordable or not timely enough.
To make this type of situational application feasible from a cost and benefit perspective, applications must have the following characteristics:
- Be simple to create
- Support reuse and sharing of services
- Be quickly adaptable as the needs of the group or user change
WebSphere sMash excels at creating these situational applications by supporting new programming approaches including dynamic scripting, REST, Rich Web Interfaces, and Feeds.
Situational Applications
Situational applications are developed when a developer automates or facilitates a particular business function, process or activity by producing a special-purpose piece of software. In addition to any added capability, that new application can modify, enhance, customize or extend an existing application, or include and combine parts or components (or both) from multiple existing applications. Situational applications have the following characteristics:
- Frequently not recognized outside of the immediate department or business unit
- Built to solve an immediate, specific business problem with little concern whether the application fits other situations
- Developed in the most efficient, quick and easy manner possible
Speed, Simplicity, and Agility
WebSphere sMash is for developers who are looking for speed, simplicity, and agility. The features and capabilities it provides, as described in the following sections, provide those functions:
Speed
WebSphere sMash provides the following functions to promote speed in your development process:
- Dynamic scripting languages
- Increases productivity with reusable components and situational applications that require less time, fewer lines of code, and less specialized skill to produce. WebSphere sMash provides agile programming options using dynamic scripting with very few restrictions. The dynamic scripting languages currently supported are Groovy (for users with a strong affinity for Java™) and PHP.
- An integrated runtime environment
- The application is the server, so no deployment is necessary. Also, WebSphere sMash follows the convention over configuration approach that eliminates unnecessary manual coding. To optimize running agile scriptable applications, the virtual machine has also been enhanced.
- Agile applications that perform and scale
- As the need, scale, and volume of Web 2.0 situational applications grows, management systems like IBM WebSphere Extended Deployment can help run and manage these agile applications in an efficiently and cost effectively.
Simplicity
WebSphere sMash provides the following functions to promote simplicity in your development process:
- REST services expose and leverage preexisting content
- The popularity of REST is due to its simplicity, which WebSphere sMash provides by using REST to expose and leverage services. Other simple technologies are used to expose feeds (RSS) and access content in other applications (for example HTTP and JMS).
- REST-style architecture maintains SOA principles
- REST-style architecture embraces both SOA and the Web, enabling a component-centric model in which various server-side and client components can be reused in a scalable but simplistic way.
- Assembly-style development produces fast composite applications
- For extreme efficiency, you can build applications by assembling existing services and feeds (from both internal and external sources) into composite situational applications. Assembly-style development can be achieved using dynamic scripting (for example, by writing a Groovy or PHP script to catch a feed, merge it, and aggregate it). You can also use a visual assembly editor in the following ways:
- Use a visual UI editor, based on the Dojo toolkit, to create AJAX clients and other components.
- Use a visual flow-based editor to assemble, combine, and coordinate a series of service calls together into a flow, or to configure components that can connect to other internal or external systems.
Agility
WebSphere sMash provides the following functions to promote agility in your development process:
- End-to-end development and runtime environment
- You can develop situational applications and components in highly agile ways. Creating assembly-style applications, for example, requires far fewer different development roles than traditional Web development, your work is not handed to multiple people. Also, the end-to-end browser-based tooling enables you to develop on both the client-side and server-side, plus you can deliver front end widgets for other tools that enable you to wire components together.
- Component-style development and delivery
- WebSphere sMash provides the ability to build reusable building blocks, content, templates, and patterns, and the ability to reuse any WebSphere sMash content in the form of front end widgets.
- Integrated environment to manage agile applications
- The integrated environment of WebSphere sMash is ideal for cost effectively enabling and managing Web 2.0 applications in highly optimal ways.
Leveraging REST
WebSphere sMash simplifies the task of creating applications using the Representational State Transfer (REST) architectural style. The most important HTTP methods are POST, GET, PUT and DELETE. These are often compared with the CREATE, READ, UPDATE, DELETE (CRUD) operations associated with database technologies. RESTful designs often make use of collections. A collection is a simple model for manipulating a set of resources. Collections have member items that you can add, remove, update and delete. You can also get a list of members in the collection, as shown in the following table.
| HTTP Method | URI | Description |
|---|---|---|
| GET | /people | list members |
| POST | /people | create member |
| GET | /people/1 | retrieve member |
| PUT | /people/1 | update member |
| DELETE | /people/1 | delete member |
You can find more information about REST on the following wikipedia page.
Why PHP and Groovy?
Groovy is a scripting language that supports Java syntax and provides template capability. This allows the large community of developers with Java skills to script WebSphere sMash applications quickly. Groovy scripts are converted, under the covers, into Java classes and run in the same JVM as the rest of the WebSphere sMash Java code.
PHP is a popular scripting language that enables developers to quickly and easily develop Web applications. The large community of developers with PHP skills and the availability of reusable PHP assets on the Web, make PHP a logical choice for scripting WebSphere sMash applications. WebSphere sMash includes an implementation of a runtime to support the PHP language, written in Java. Currently supported functions are listed in the core functions information found in the PHP function information in the PHP Guide. Currently supported language features are listed in the PHP language features information in the PHP Guide. Background information about PHP can be found on this wikipedia page.