Cloud Zone is brought to you in partnership with:

Max Katz heads Developer Relations for Appery.io, a cloud-based mobile app platform. He loves trying out new and cool REST APIs in mobile apps. Max is the author of two books “Practical RichFaces” (Apress 2008, 2011), and is a frequent speaker at developer conferences. You can find out what Max is up to on his blog: mkblog.exadel.com and Twitter: @maxkatz. Max is a DZone MVB and is not an employee of DZone and has posted 82 posts at DZone. You can read more from them at their website. View Full User Profile

A New Paradigm: Cloud Services, Cloud Tools

06.05.2012
| 3960 views |
  • submit to reddit

Cloud Services

In the past year or so, we have witnessed a major shift from client-server to client-cloud. This shift is primarily
fueled by two factors: mobile devices exceeding desktop computers and the thousands of different APIs available on the Internet today. What started in early 2000 on eBay and Amazon has become a real revolution in 2012 with thousands of companies, from Twitter and Facebook to AT&T, offering cloud-based services.

REST API

One of the most common ways to access private or public service APIs is via REST requests.

In the client-server approach an organization builds applications that consume its own internal content and resources. However, even large IT organizations such as AT&T, Verizon and Amazon have come to realize that they are no match for the social consumer and social enterprise developers out there. By making APIs publicly available, these organizations hope that developers and “citizen developers” will come and build applications and mobile apps on top of their services.

Citizen developers at work

Analysts at Gartner see a trend toward app creation independent of IT. They predict that by 2014, citizen developers – employees outside of IT and software development – will build 25% of new business applications. In 2007, they built less than 5%.

One of the best-known API success stories comes from Amazon: Its cloud service APIs let outsiders access the company’s massive data centers. Twitter, with its deceptively simple 140-character message model, exploded thanks to its API. In fact, you probably read and write tweets via a Twitter application or mobile app rather than going directly to Twitter’s Web site. Facebook’s Graph API has spawned a whole industry of apps to support its hundreds of millions of users.

Just looking at popular ProgrammableWeb site that lists close to 5,500 APIs (at the time of writing this) and 6,500 mashups or apps created that consume the various APIs. The city of San Francisco, already a mecca for startups, technology, and innovation, has made a big push into attracting developers by making city data and other date from its data.SFgov.org Web site available via API. For example, the city’s MUNI (city bus service) API is available for developers to build apps with using information about bus stations, schedules, and arrivals. Even the United States government jumped on the API bandwagon by making available data.gov, which provides public access to high-value machine-readable data sets generated by the U.S government.

Beyond this, a whole new market segment was created by companies such as StackMob, Parse, Kinvey, CloudyRec, and others that allow you to create your own back-end services and content instantly available as REST services.

One factor in APIs becoming popular is the simplicity and elegance that they provide. Integrating enterprise systems is usually a very long and complicated process primarily due to different services supporting different protocols or responses. However, cloud-based API are changing this. As mentioned before, the most popular approach for invoking services is via REST where the service data is exchanged in JSON format. JSON is a simpler alternative to XML for use with JavaScript.

The REST protocol consists of just four basic commands: GET for getting objects or data, POST for creating or posting new objects or data, DELETE for deleting objects, and PUSH for updating (and also creating) objects.  This protocol along with the use of JSON as a format format greatly simplifies working with clients that consume various cloud-based services. For example, the following might get all objects of type Flower:

GET http://myhost.com/api/flower

The following might be used to get a specific Flower with an ID of 1234:

GET http://myhost.com/api/flower/1234

The following could be used to create a new Flower:

POST http://myhost.com/api/flower/1234
{"name": "Rose"}

The following might be used to delete a Flower object with an ID of 1234:

DELETE http://myhost.com/api/flower/1234

As you can see this is extremely elegant and easy to understand. As discussed in Cloud Tools section, using REST API inside tools makes this approach even simpler.

Cloud Tools

The client-cloud evolution is also being fueled by a new breed of cloud-based development tools. From the beginning of time (or at least it seems that way), tools would need to be installed on a developer’s computer. Today, many powerful and popular tools such as Eclipse (and its hundreds of plug-ins), NetBeans, IntelliJ, and others can be quickly downloaded and installed on a developer’s computer. Most updates can now be done within the tool, freeing the developer from re-downloading the tool again. These tools are also powerful, providing advanced visual and source features as well as extensive customization.

Despite how advanced these tools are, a shift is happening where development tools are moving into the Cloud. Eclipse itself has launched the Orion project. The Orion project is “basic” Eclipse in the Cloud and focuses on Web development. One of its main goals is to offer collaborative Web development.

Another player is Cloud9 IDE, which also provides an environment for the development of JavaScript and HTML5 applications.

Tiggzi

And yet another cloud-based tool is Tiggzi. Tiggzi is a cloud-based HTML5 and PhoneGap mobile app builder. Tiggzi makes it super easy and fast to build exactly the apps that are described in this article: client-cloud. The mobile UI is built with HTML5 and jQuery Mobile components. Also, the UI can be easily connected to thousands of private and public REST APIs. In case, the mobile back-end actually needs to be created, services such as StackMob, Parse, and MongoDB can be used to create and expose back-end services and databases instantly via REST API. Tiggzi provides the following features that make it easy and fast to build clientcloud mobile apps.

HTML5 and jQuery Mobile drag and drop visual builder

To quickly build the mobile UI, components are simply dragged and dropped into the phone. Using the drag-and-drop approach makes building the mobile UI very fast.

PhoneGap included to create hybrid apps and get access to device features

In addition to HTML5 and jQuery Mobile apps, you can build PhoneGap (hybrid) mobile apps by using outof-the-box components or any accesible through the PhoneGap API.

Quick definition and connection to any cloud service

Define any cloud-based service, private or public, and connect to it.

API console

A powerful API console allows you to quickly test the service to make sure it works before using it in an app.

Visual data binding for UI (UI to service, service to UI)

A drag-and-drop visual data binding editor allows you to quickly map data from the mobile UI to services
and then from services to the UI. This unique editor makes using and consuming any cloud service incredibly
fast and easy.

Testing the app instantly in the browser (desktop or mobile) or on the device (for native apps)

Because the app is being built in the browser, testing the app in the browser can be done instantly. At any point during development, the real app can be tested in a desktop or a mobile browser. PhoneGap (hybrid) apps can also be quickly tested by being launched from a special tester app. Make the app link public and share it with other users or the customer.

Collaboration on the app with other developers

Tiggzi Mobile App Builder comes with Google Docslike collaboration. Collaborate and work on the app with elopers in real-time.

Downloading the app as source code, mobile Web, or PhoneGap project (Android, iOS, Windows Phone)

Export the app code as a mobile Web (HTML/ JavaScript/CSS) project, PhoneGap project (Android, iOS, Windows PHone), or as a binary Android or iOS file.

Note: Windows Phone export added after the article was written.

The app can also be easily and quickly hosted with Tiggzi as a mobile Web app.

The New Stack: HTML5, REST Services, Cloud

As we discussed earlier, a new client-cloud paradigm is growing more and more dominant glued together by a rapid increase in the use of public and private APIs and supported by a rise in the number of citizen developers. As part of this paradigm, a new development stack is emerging as central. This stack consists of HTML5, REST services (REST), and the Cloud. Its emergence is driven by the broad availability of service APIs combined with powerful cloud-based development tools and browserbased apps (HTML5). We believe the future of Web and mobile development is HTML5 with JavaScript in the browser connected to cloud-based services and data via REST.

Published at DZone with permission of Max Katz, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)