Saturday, February 27, 2010

An introduction to Hibernate

                                                                                           -Srinivas Reddi
What is Hibernate?


Hibernate is a powerful, ultra-high performance object/relational persistence and query service for Java. Hibernate lets you develop persistent objects following common Java idioms –including association, inheritance, polymorphism, composition, and the Java collections framework

Why Hibernate?

To make the application developemnt more productive. It saves development time and also mainly it deals with Objects(POJO) . and .xml file which has nothing but mapping between database column and POJO variable. You can easily switch the database from MySql to Oracle.You need not change any of your code... just you need to change a simple dialect in configuration file of hibernate and it works.

Features:

• Released under LGPL (Lesser GNU Public License)
• Supports over 30 dialects (like drivers for different DBs)
• Departs from the JDO approach
• Supports transparent object persistence
• Provides rich query language
• Caching
• JMX support
• Based on Beans and Reflection
• Upside–Low resource contention, small foot print–High performance (in spite of the use of reflection!)

Hibernate Architecture

A (very) high-level view of the Hibernate architecture:





This diagram shows Hibernate using the database and configuration data to provide persistence services (and persistent objects) to the application.

We would like to show a more detailed view of the runtime architecture. Unfortunately, Hibernate is flexible and supports several approaches. We will show the two extremes. The "lite" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:




The "full cream" architecture abstracts the application away from the underlying JDBC/JTA APIs and lets Hibernate take care of the details.





Here are some important definitions of the objects in the diagrams:

SessionFactory (org.hibernate.SessionFactory)

A threadsafe, immutable cache of compiled mappings for a single database. A factoryfor Session and a client of ConnectionProvider, SessionFactory can hold an optional(second-level) cache of data that is reusable between transactions at a process, or cluster level.

Session (org.hibernate.Session)

A single-threaded, short-lived object representing a conversation between the application andthe persistent store. It wraps a JDBC connection and is a factory for Transaction. Sessionholds a mandatory first-level cache of persistent objects that are used when navigating theobject graph or looking up objects by identifier.Persistent objects and collectionsShort-lived, single threaded objects containing persistent state and business function. These can be ordinary JavaBeans/POJOs. They are associated with exactly one Session. Once the Session is closed, they will be detached and free to use in any application layer (for example,directly as data transfer objects to and from presentation).Transient and detached objects and collectionsInstances of persistent classes that are not currently associated with a Session. They may have been instantiated by the application and not yet persisted, or they may have beeninstantiated by a closed Session.

Transaction (org.hibernate.Transaction)

 A single-threaded, short-lived object used by the application to specify atomic units of work. It abstracts the application from the underlying JDBC, JTA or CORBAtransaction. A Session might span several Transactions in some cases. However,transaction demarcation, either using the underlying API or Transaction, is never optional.

ConnectionProvider (org.hibernate.connection.ConnectionProvider)

 A factory for, and pool of, JDBC connections. It abstracts the application fromunderlying Datasource or DriverManager. It is not exposed to application, but it can be extended and/or implemented by the developer.

TransactionFactory (org.hibernate.TransactionFactory)

 A factory for Transaction instances. It is not exposed to the application, but it can
be extended and/or implemented by the developer.Hibernate offers a range of optional extension interfaces you can implement to customize the behavior of your persistence layer.Given a "minimal" architecture, the application bypasses the Transaction/TransactionFactory and/or ConnectionProvider APIs to communicate with JTA or JDBC directly.

Some more important terms commonly used:

Instance states in Hibernate

An instance of a persistent class can be in one of three different states. These states are definedin relation to a persistence context. The Hibernate Session object is the persistence context. The three different states are as follows:

transient

The instance is not associated with any persistence context. It has no persistent identity or primary key value.

persistent

The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and can have a corresponding row in the database. For a particular persistence context, Hibernate guarantees that persistent identity is equivalent to Java identity in relation to the in-memory location of the object.

detached

The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and can have a corresponding row in the database. For detached instances, Hibernate does not guarantee the relationship between persistent identity and Java identity.

SQL Dialects

• A dialect tunes the environment to the specified database.
• Set the hibernate.dialectproperty to the correct org.hibernate.dialect.Dialectsubclass.
•Hibernate will use sensible defaults for some of the properties
•Example
–org.hibernate.dialect.MySQLDialect
–org.hibernate.dialect.SQLServerDialect

O/R Mapping

Object/relational mappings are usually defined in an XML document. The mapping document is designed to be readable and hand-editable. The mapping language is Java-centric, meaning that mappings are constructed around persistent class declarations and not table declarations.

Sub classes

• Inheritance hierarchy can be easily mapped to tables –Table per class
• The entire hierarchy is maintained in one table
and elements–Table per sub class
• Separate table for each subclass with the common fields in the base class table
element–Table per concrete class
• Separate table for each subclass with all the fields found in each table

Hibernate Query Language- HQL

• Brings the power of SQL
• Fully object-oriented
• Understands notions like inheritance, polymorphism and association
• Written for Objects and not for tables like SQL
• Case-insensitive, except for names of Java classes and properties.

Joins

• Joins supported by HQL
–inner join
–left outer join
--right outer join
–full join

Named Parameters

• Bind values to named parameters or JDBC-style ? parameters.
• Named parameters are identifiers of the form :name in the query string.
• Hibernate numbers parameters from zero.

Named Queries

• Queries can be defined in the mapping document.
• Placed in a CDATA section

Criteria

• Queries can be built dynamically
• An object-oriented API is provided rather than building query strings.
• Hibernate provides an intuitive Criteria query API
–org.hibernate.criterion

Persistent Mechanism

Session

• Session is the central API class of a persistence service
• org.hibernate.Session
• Runtime interface between application and Hibernate
• Make an object persistent by associating it with a session
• Provides methods to make an object persistent, transient or detached

Persisting Objects

• Objects are made persistent using
•save() or persist()
Finding an object

• Hibernate Query Language allows you to issue query
• Matching objects are returned as java.util.List

Deleting objects

• Session’s delete method does this
• You may pass an object or a query string to delete
• The delete may affect an object or its child objects depending on mapping property “cascade”

Flushing and Refreshing Objects

• Processing methods cache the SQL query generated in the Session object
• Queries are not automatically flushed out to the DB
–For load() and get() stale data as the queries are cached
–Session is flushed out automatically when Transaction commit() is used
–Flush() method can be explicitly called
–setFlushMode() sets the flush mode of the session to a specified value
• refresh() reloads the object from DB

Detached Objects

•Applications retrieve objects from one session
• Modify the object and update it using a new session
–To avoid keeping the DB connection open
• save() called on a new session, inserts a new record
• saveOrUpdate() or update() updates the record
• lock() method attaches the object with the new session
–However the object needs to be unmodified
–LockModecan be set, but depends on the DB.

Need for Caching

• Persisting and load objects is performed a number of times in an application
• Performance plays a major role in multi-user and web applications
• Object availability and DB visits has an impact on the performance to an extent
• Caching of Objects and queries makes the system more responsive

Caching in Hibernate

• Hibernate provides multi-level caching scheme
• Session object provides the first-level cache
–Acts as a cache when object is pulled from the DB
–Object available in the memory if the application needs it
–Hibernate delays update as long as possible

Second-level Cache

• Possible to configure a JVM-level or SessionFactory-level-class cache
• Hibernate delegates some caching of specific classes to second level cache
• Objects cache here are available across the sessions
• Caches are never aware of changes made to the persistent store by another application

Friday, February 26, 2010

SOA

                                                                                        -Ganesh

An introduction to SOA:

Service-oriented architecture (SOA) is an evolution of distributed computing based on the request/reply design paradigm for synchronous and asynchronous applications. An application's business logic or individual functions are modularized and presented as services for consumer/client applications. What's key to these services is their loosely coupled nature; i.e., the service interface is independent of the implementation. Application developers or system integrators can build applications by composing one or more services without knowing the services' underlying implementations. For example, a service can be implemented either in .Net or J2EE, and the application consuming the service can be on a different platform or language.


Service-oriented architectures have the following key characteristics:

• SOA services have self-describing interfaces in platform-independent XML documents. Web Services Description Language (WSDL) is the standard used to describe the services.

• SOA services communicate with messages formally defined via XML Schema (also called XSD). Communication among consumers and providers or services typically happens in heterogeneous environments, with little or no knowledge about the provider. Messages between services can be viewed as key business documents processed in an enterprise.

• SOA services are maintained in the enterprise by a registry that acts as a directory listing. Applications can look up the services in the registry and invoke the service. Universal Description, Definition, and Integration (UDDI) is the standard used for service registry.

• Each SOA service has a quality of service (QoS) associated with it. Some of the key QoS elements are security requirements, such as authentication and authorization, reliable messaging, and policies regarding who can invoke services.

Why SOA?

The reality in IT enterprises is that infrastructure is heterogeneous across operating systems, applications, system software, and application infrastructure. Some existing applications are used to run current business processes, so starting from scratch to build new infrastructure isn't an option. Enterprises should quickly respond to business changes with agility; leverage existing investments in applications and application infrastructure to address newer business requirements; support new channels of interactions with customers, partners, and suppliers; and feature an architecture that supports organic business. SOA with its loosely coupled nature allows enterprises to plug in new services or upgrade existing services in a granular fashion to address the new business requirements, provides the option to make the services consumable across different channels, and exposes the existing enterprise and legacy applications as services, thereby safeguarding existing IT infrastructure investments.

As in Figure 1's example, an enterprise employing SOA could create a supply chain composite application using a set of existing applications that expose the functionality via standard interfaces.





Figure 1. Supply chain application. Click on thumbnail to view full-sized image.

Service architecture

To implement SOA, enterprises need a service architecture, an example of which is shown in Figure 2.


             
Figure 2. A sample service architecture. Click on thumbnail to view full-sized image.

In Figure 2, several service consumers can invoke services by sending messages. These messages are typically transformed and routed by a service bus to an appropriate service implementation. This service architecture can provide a business rules engine that allows business rules to be incorporated in a service or across services. The service architecture also provides a service management infrastructure that manages services and activities like auditing, billing, and logging. In addition, the architecture offers enterprises the flexibility of having agile business processes, better addresses the regulatory requirements like Sarbanes Oxley (SOX), and changes individual services without affecting other services.



SOA infrastructure:

To run and manage SOA applications, enterprises need an SOA infrastructure that is part of the SOA platform. An SOA infrastructure must support all the relevant standards and required runtime containers. A typical SOA infrastructure looks like Figure 3. The following sections discuss the infrastructure's individual pieces.



Figure 3. A typical SOA infrastructure. Click on thumbnail to view full-sized image.

SOAP, WSDL, UDDI

WSDL, UDDI, and SOAP are the fundamental pieces of the SOA infrastructure. WSDL is used to describe the service; UDDI, to register and look up the services; and SOAP, as a transport layer to send messages between service consumer and service provider. While SOAP is the default mechanism for Web services, alternative technologies accomplish other types of bindings for a service. A consumer can search for a service in the UDDI registry, get the WSDL for the service that has the description, and invoke the service using SOAP.

WS-I Basic Profile

WS-I Basic Profile, provided by the Web services Interoperability Organization, is turning into another core piece required for service testing and interoperability. Service providers can use the Basic Profile test suites to test a service's interoperability across different platforms and technologies.

J2EE and .Net

Though the J2EE and .Net platforms are the dominant development platforms for SOA applications, SOA is not by any means limited to these platforms. Platforms such as J2EE not only provide the framework for developers to naturally participate in the SOA, but also, by their inherent nature, bring a mature and proven infrastructure for scalability, reliability, availability, and performance to the SOA world. Newer specifications such as Java API for XML Binding (JAXB), used for mapping XML documents to Java classes, Java API for XML Registry (JAXR), used for interacting with the UDDI registries in a standard manner, and Java API for XML-based Remote Procedure Call (XML-RPC), used for invoking remote services in J2EE 1.4 facilitate the development and deployment of Web services that are portable across standard J2EE containers, while simultaneously interoperating with services across other platforms such as .Net.

Quality of services

Existing mission-critical systems in enterprises address advanced requirements such as security, reliability, and transactions. As enterprises start adopting service architecture as a vehicle for developing and deploying applications, basic Web services specifications like WSDL, SOAP, and UDDI aren't going to fulfill these advanced requirements. As mentioned previously, these requirements are also known as quality of services. Numerous specifications related to QoS are being worked out in standards bodies like the World Wide Web Consortium (W3C) and the Organization for the Advancement of Structured Information Standards (OASIS). Sections below discuss some of the QoS artifacts and related standards.

Security

The Web Services security specification addresses message security. This specification focuses on credential exchange, message integrity, and message confidentiality. The attractive thing about this specification is it leverages existing security standards, such as Security Assertion Mark-up Language (SAML), and allows the usage of these standards to secure Web services messages. Web Services Security is an ongoing OASIS effort.

Reliability

In a typical SOA environment, several documents are exchanged between service consumers and service providers. Delivery of messages with characteristics like once-and-only-once delivery, at-most-once delivery, duplicate message elimination, guaranteed message delivery, and acknowledgment become important in mission-critical systems using service architecture. WS-Reliability and WS-Reliable Messaging are two standards that address the issues of reliable messaging. Both these standards are now part of OASIS.

Policy

Service providers sometimes require service consumers to communicate with certain policies. As an example, a service provider may require a Kerberos security token for accessing the service. These requirements are defined as policy assertions. A policy may consist of multiple assertions. WS-Policy standardizes how policies are to be communicated between service consumers and service providers.

Orchestration

As enterprises embark on service architecture, services can be used to integrate silos of data, applications, and components. Integrating applications means that the process requirements, such as asynchronous communication, parallel processing, data transformation, and compensation, must be standardized. BPEL4WS or WSBPEL (Web Services Business Process Execution Language) is an OASIS specification that addresses service orchestration, where business processes are created using a set of discrete services. WSBPEL is now part of OASIS.

Management

As the number of services and business processes exposed as services grow in the enterprise, a management infrastructure that lets the system administrators manage the services running in a heterogeneous environment becomes important. Web Services for Distributed Management (WSDM) will specify that any service implemented according to WSDM will be manageable by a WSDM-compliant management solution.

Other QoS attributes such as coordination between partners and transactions involving multiple services are being addressed in the WS-Coordination and WS-Transaction specifications, respectively, which are OASIS efforts as well.

SOA is not Web services

There seems to be general confusion about the relationship between SOA and Web services. In an April 2003 Gartner report, Yefim V. Natis makes the distinction as follows: "Web services are about technology specifications, whereas SOA is a software design principle. Notably, Web services' WSDL is an SOA-suitable interface definition standard: this is where Web services and SOA fundamentally connect." Fundamentally, SOA is an architectural pattern, while Web services are services implemented using a set of standards; Web services is one of the ways you can implement SOA. The benefit of implementing SOA with Web services is that you achieve a platform-neutral approach to accessing services and better interoperability as more and more vendors support more and more Web services specifications.

Benefits of SOA

While the SOA concept is fundamentally not new, SOA differs from existing distributed technologies in that most vendors accept it and have an application or platform suite that enables SOA. SOA, with a ubiquitous set of standards, brings better reusability of existing assets or investments in the enterprise and lets you create applications that can be built on top of new and existing applications. SOA enables changes to applications while keeping clients or service consumers isolated from evolutionary changes that happen in the service implementation. SOA enables upgrading individual services or services consumers; it is not necessary to completely rewrite an application or keep an existing system that no longer addresses the new business requirements. Finally, SOA provides enterprises better flexibility in building applications and business processes in an agile manner by leveraging existing application infrastructure to compose new services.

Strategic Backgrounder: SaaS-Software as a Service

Introduction
                                                                                           -Chalapathi
Everywhere you turn, another company pops up offering SaaS (software as a service). Inspired by the success of Salesforce.com, SaaS vendors are hoping customers large and small will get the message: Browser-based, pay-as-you-go applications mean fewer servers for your IT department to maintain and less capital to shake loose from the CFO for software licenses and hardware.

For whatever such estimates are worth, IDC recently forecasted that worldwide spending on SaaS will reach $10.7 billion by 2009. But there’s so much SaaS running around already that we couldn’t help but wonder: Could you run a business entirely on hosted offerings?

That somewhat playful question was the genesis of this article -- although we already knew the answer. Healthy enterprises need to develop their own unique applications, and any modern IT infrastructure needs to be fully integrated in a manner that can’t be achieved with SaaS solutions today.

But an urgent need to stop piling cost and complexity on IT is sowing the seeds of change. Although enterprises may not be replacing effective, large-scale systems with SaaS alternatives, the SaaS option suddenly becomes perfectly viable when it comes to adding new functionality. And, as Salesforce.com discovered SaaS can be particularly successful at replacing in-house or off-the-shelf software that has failed miserably.

In our survey of hosted software offerings, we’ve divided the SaaS universe into four parts: back-office applications (ERP, purchasing, HR, and so on), messaging, integration, and CRM.

These rough groupings, however, hardly cover the whole territory. For example, hosted versions of Mercury’s software quality, performance, and availability solutions continue to increase in popularity. Meanwhile, Web analytics, another monitoring technology, enjoys more traction as a hosted service than as server-based software. Recently, InfoWorld reviewed three of the leading hosted content management systems, revealing a surprising depth of functionality. SaaS search and collaboration are also proliferating. BPO (business process outsourcing) vendors provide not just software but the staff to operate it as well. And we haven’t even touched MSPs (managed security providers), a world unto itself that we’ll cover in an upcoming issue.

The bottom line is that a growing number of companies are choosing the on-demand model instead of packaged software. True, no enterprise would switch all its systems to SaaS overnight. But the success of Google’s Gmail proves that the hosted model is viable even for categories such as desktop productivity apps, which were once the exclusive domain of commercial off-the-shelf vendors. Application by application, during the coming years enterprise IT will rely more and more on hosted services that deliver deep functionality with very little maintenance at a very low cost of entry.

Back Office

On the face of it, you might think the ERP, supply chain, and database applications your company relies on for essential operations would be the last things you’d want someone else hosting. Yet that’s exactly what big players such as Oracle, SAP, and Siebel are doing for as much as 8 percent of their customer bases. Oracle has been particularly focused on this space, with hosted versions of its own software available under the Oracle On Demand brand and investments in NetSuite and Salesforce.com. IBM has jumped into the back-office SaaS market as part of its On Demand Business strategy, forging partnerships with hosting players such as Adexa, HRsmart, Intacct, and Peopleclick. IBM also acquired Corio, which provides hosted Oracle, PeopleSoft, SAP, and Seibel services. Meanwhile, SAP and Siebel offer SaaS packagings of their respective applications.

In the ERP space, second-tier players such as Intacct and Lawson Software offer hosted versions of their own applications, whereas third-party service providers such as NaviSite and USi host ERP software solutions from the top-tier vendors.

Employease is a leader in the HR space, competing against Peopleclick and Ultimate Software. The latter concentrates on workforce acquisition.

Arena Solutions is a leader in PLM (product lifecycle management). Ketera specializes in e-procurement. And there’s a slew of vertical players as well, including Kintera for nonprofits and CaseCentral for law firms.

Hosted back-office applications are attractive for SMBs that lack the IT expertise to build and maintain complex in-house systems. But they are making inroads into large enterprises as well.

“We’re seeing a lot of hybrid deployments that use the SaaS model to get a new team up and running quickly or to fill in gaps in their in-house application. They look for easy integration with the in-house function,” says Amy Konary, director of software pricing, licensing, and delivery at IDC.

Gartner analyst Ben Pring also sees increased SaaS adoption by independent operating units and by branch offices of larger companies. “The business unit executive puts in a request to IT for application support, and IT says, ‘We’re busy. Get back to us in September.’ So he goes off on his own with an SaaS provider to get going quickly and expenses it as an operating cost,” Pring says.



Messaging

Messaging has become a major pain for companies large and small. Significant IT resources must be devoted to managing mailboxes, archiving mail, coping with spam and viruses, filtering content, and meeting compliance requirements.

“Global companies have to deal with the Patriot Act, different regulations in different countries, and all the issues around data security and privacy,” IDC’s Konary says. “We see many considering SaaS because their in-house tools are very cumbersome or they simply can’t do the type of reporting and tracking that’s needed. Many SaaS providers have already developed their e-mail applications for reporting and can pull out that information fairly easily.”

The messaging SaaS market breaks down into complete e-mail hosting solutions and e-mail security hosting. Security hosting is designed to appeal to companies that prefer to devote their own resources to compliance while farming out other aspects, such as anti-virus and anti-spam services.

Full hosting solutions mostly cater to SMBs, but a recent report from Radicati Group, entitled “Hosted Email Market, 2004-2008,” found that hosted messaging is starting to become attractive for larger companies as well.

“[Enterprises] see that a lot of the hosting providers have been around for a while with very few horror stories,” says Radicati Group analyst Marcel Nienhuis.“They like that providers have started offering management consoles to give corporations more control and access so they can easily set up new users and add rules and filters if they want to.” Nienhaus sees larger enterprises testing the SaaS waters with deployments in new departments or departments with special needs, such as factory floors or geographically dispersed users.

Some of the larger pure-play SaaS messaging vendors include ASP-One, BlueStar Solutions, BlueTie, BT Infonet, Critical Path, Intermedia.Net, Mi8, NaviSite, USA.Net, and USi.

Most providers base their services on Microsoft Exchange or in some cases Lotus Notes, but BlueTie, for example, uses its own technology. Improved scalability, Web access, and security features built into Exchange 2003 have allowed other, smaller providers to proliferate. Most providers bundle anti-virus and anti-spam services and offer those as discrete services as well. More and more vendors are also offering content filtering and compliance management.

Dedicated e-mail security providers include FrontBridge, MessageLabs, Postini, and Symantec, which acquired Brightmail. To varying degrees, they all offer anti-virus, anti-spam, encryption, e-mail filtering, and compliance management. And then there’s FivePoints, a vendor that’s particularly focused on compliance for small and midsize financial companies.

With hosted messaging security, midsize and large companies “like the idea that most of the bad stuff is kept far away from their network,” Radicati’s Nienhuis says.

When choosing an outsourced messaging service, however, it’s important to analyze fees carefully -- particularly for extra services and storage -- and to evaluate the completeness and ease-of-use of the management tools offered. Also, if compliance is an issue, make sure the provider has appropriate expertise and has implemented the right storage and disaster recovery measures. -- L.E.






Integration

A recent IDC survey showed that more than half of SaaS subscribers use at least three kinds of applications delivered as SaaS offerings. That’s a tiny absolute number now, but as SaaS usage grows, more and more enterprises may very well demand hosted integration among the hosted services they use. Otherwise, SaaS customers will be left as points of integration, reintroducing the complexity they were trying to squeeze out of the datacenter in the first place.

One company, Grand Central, stands apart in this area. Today, Grand Central primarily acts as a b-to-b integration platform. But in the future, it plans to deliver pre-integrated SaaS suites to subscribers through its own Web-based portal offering, in effect playing host and integrator to other vendors’ hosted solutions. This opens up the possibility of mix-and-match vertical portals that address industry-specific processes in a deeper way than, say, verticalized ERP suites from the likes of Oracle or SAP. Already, Grand Central works closely with Salesforce.com to integrate the CRM offering with other services to serve Salesforce.com customers. -- E.K.

CRM

The SaaS model has resuscitated CRM by mitigating functional and integration uncertainty for chief executives, many of whom have been apprehensive after the innumerable failed projects of the late ’90s. The hosted model’s prefab, cookie-cutter approach works well for CRM because most industries follow basic best practices in sales and support.

The fact that the hosted software is delivered through the browser has also contributed to its success, allowing road warriors to gain direct access to the CRM system from virtually anywhere, without the need for proprietary devices or deep technical knowledge.

Demand for sales and service productivity among SMBs has broadened CRM vendors’ target market, making the affordable SaaS model a win-win for revenue streams on both sides of the equation.

Today there’s no shortage of competition in the hosted CRM market. NetSuite adds a good mix of ERP to its CRM -- including accounting and procurement tools -- making it attractive to SMBs in need of integrated financials and inventory management. Accpac hosts its sales and service application with a usable interface and mix of add-on accounting and ERP modules. Salesnet delivers a sales-centric application devoid of service or campaign management options, using potent, industry-specific configurations for auto, telecom, and commercial-lending applications.

Of course, Salesforce.com remains the true leader in on-demand CRM. Unsurpassed for flexibility and integration in a hosted model, it possesses strong sales and forecasting tools and facilitates customer service via its Supportforce product.

Siebel OnDemand serves the high end of the SMB market. With its newly added contact center, integrated VoIP services, and full-spectrum analytics, this CRM stalwart stands to make up for its late entry to the hosted arena. RightNow recently added SFA to its customer-service suite. This is a good place to look for strong rules-based workflow, e-mail marketing, and service perks such as Web chat and real-time alerts. Talisma also delivers solid sales tracking and automation. Collaborative chat and remote browser control are good for engaging customers in real time. And at the entry level, SugarCRM’s open source-based Sugar Suite offers good sales-side opportunity that can be brought in-house for further detailing.





The next big push from vendors will focus on verticals. Industry-specific CRM can help mitigate customization expense, but it requires more than simply tailoring custom fields to a UI. Vendors will
improve their products’ underlying logic to enable custom workflows and data relationships. Vendors already moving in this direction include NetSuite, Salesnet, and Siebel.

Ultimately, the cost of SaaS may surpass the expense of buying similar software outright. Calculating TCO can be difficult given unknowns such as support, upgrade, and maintenance costs. Going with a vendor that gives you the option of migrating to an on-premise platform down the road may be a wise safeguard.

Wednesday, February 24, 2010

Adobe Flex

                                                                          -Ganesh
Overview:

Traditional application programmers found it challenging to adapt to the animation metaphor upon which the Flash Platform was originally designed. Flex seeks to minimize this problem by providing a workflow and programming model that is familiar to these developers. MXML an XML-based markup language, offers a way to build and lay out graphic user interfaces. Interactivity is achieved through the use of ActionScript, the core language of Flash Player that is based on the ECMAScript standard.

The Flex SDK comes with a set of user interface components including buttons, list boxes, trees, data grids, several text controls, and various layout containers. Charts and graphs are available as an add-on. Other features like web services, drag and drop, modal dialogs, animation effects, application states, form validation, and other interactions round out the application framework.

In a multitiered model, Flex applications serve as the presentation tier. Unlike page-based HTML applications, Flex applications provide a stateful client where significant changes to the view don't require loading a new page. Similarly, Flex and Flash Player provide many useful ways to send and load data to and from server-side components without requiring the client to reload the view. Though this functionality offered advantages over HTML and JavaScript development in the past, the increased support for XMLHttpRequest in major browsers has made asynchronous data loading a common practice in HTML-based development as well.

Technologies that are commonly compared to Flex include Curl, OpenLaszlo, Ajax, XUL, JavaFX, and Windows Presentation Foundation technologies such as Silver light.

Although popular as a rich internet application development environment, Flex is not without its detractors. In February, 2009, analyst firm CMS Watch criticized the use of Flex for enterprise application user interfaces.

Create engaging, cross-platform rich Internet applications

Flex is a highly productive, free open source framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops, and operating systems. While Flex applications can be built using only the free open source framework, developers can use Adobe® Flex® Builder™ software to dramatically accelerate development.


Application Development Process

• Define an application interface using a set of pre-defined components (forms, buttons, and so on)

• Arrange components into a user interface design

• Use styles and themes to define the visual design

• Add dynamic behavior (one part of the application interacting with another, for example)

• Define and connect to data services as needed

• Build the source code into an SWF file that runs in the Flash Player

Some of the versions:

Macromedia Flex Server 1.0 and 1.5

Macromedia targeted the enterprise application development market with its initial releases of Flex 1.0 and 1.5. The company offered the technology at a price around US$15000 per CPU. Required for deployment, the Java EE application server compiled MXML and ActionScript on-the-fly into Flash applications (binary SWF files). Each server license included 5 licenses for the Flex Builder IDE.

Adobe Flex 2

Adobe significantly changed the licensing model for the Flex product line with the release of Flex 2. The core Flex 2 SDK, consisting of the command-line compilers and the complete class library of user interface components and utilities, was made available as a free download. Complete Flex applications can be built and deployed with only the Flex 2 SDK, which contains no limitations or restrictions compared to the same SDK included with the Flex Builder IDE.

Adobe based the new version of Flex Builder on the open source Eclipse platform. The company released two versions of Flex Builder 2, Standard and Professional. The Professional version includes the Flex Charting Components library.

Enterprise-oriented services remain available through Flex Data Services 2. This server component provides data synchronization, data push, publish-subscribe and automated testing. Unlike Flex 1.0 and 1.5, Flex Data Services is not required for the deployment of Flex applications.

Coinciding with the release of Flex 2, Adobe introduced a new version of the ActionScript programming language, known as Actionscript 3, reflecting the latest ECMAScript specification. The use of ActionScript 3 and Flex 2 requires version 9 or later of the Flash Player runtime. Flash Player 9 incorporated a new and more robust virtual machine for running the new ActionScript 3.

Flex was the first Macromedia product to be re-branded under the Adobe name...

Adobe Flex 3

On April 26, 2007 Adobe announced their intent to release the Flex 3 SDK (which excludes the Flex Builder IDE and the LiveCycle Data Services) under the terms of the Mozilla Public License. Adobe released the first beta of Flex 3, codenamed Moxie, in June 2007. Major enhancements include integration with the new versions of Adobe's Creative Suite products, support for AIR (Adobe's new desktop application runtime), and the addition of profiling and refactoring tools to the Flex Builder IDE.

• In October 2007, Adobe released the second beta of Flex 3.

• On December 12, 2007, Adobe released the third beta of Flex 3.

• On February 25, 2008, Adobe released Flex 3 and ADOBE AIR 1.0.

Adobe Flash Builder 4

Adobe has announced that Flex 4.0 (code named Gumbo) will be released in early 2010.The Flex 4 development tool will be called Adobe Flash Builder,] formerly known as Adobe Flex Builder.

Some themes that have been mentioned by Adobe that will be incorporated into Flex 4 are as follows:

• Design in Mind: The framework will be designed for continuous collaboration between designers and developers.

• Accelerated Development: Be able to take application development from conception to reality quickly.

• Horizontal Platform Improvements: Compiler performance, language enhancements, BiDi components, enhanced text. (Speculation derived from Adobe Systems)

• Full Support for Adobe Flash Player 10.

• Broadening Horizons: Finding ways to make a framework lighter, supporting more deployment runtimes, runtime MXML. (Speculation derived from Adobe Systems)

Related tools:

Adobe Flash Catalyst

On October 2, 2007, Adobe announced a new design tool related to Flex codenamed Adobe Thermo. On November 17, 2008 Adobe announced the official name of the product would be Adobe Flash Catalyst.

LiveCycle Data Services

Main article: Flex Data Services

LiveCycle Data Services (previously called Flex Data Services) is a server-side complement to the main Flex SDK and Flex Builder IDE and is part of a family of server-based products available from Adobe. Deployed as a Java EE application, LiveCycle Data Services adds the following capabilities to flex applications:

• Remoting, which allows Flex client applications to invoke methods on Java server objects directly. Similar to Java remote method invocation (RMI), remoting handles data marshalling automatically and uses a binary data transfer format.

• Messaging, which provides the "publish" end of the "publish/subscribe" design pattern. The Flash client can publish events to a topic defined on the server, subscribe to events broadcast from the message service. One of the common use cases for this is real-time streaming of data, such as financial data or system status information.

• Data management services, which provides a programming model for automatically managing data sets that have been downloaded to the Flex client. Once data is loaded from the server, changes are automatically tracked and can be synchronized with the server at the request of the application. Clients are also notified if changes to the data set are made on the server.

• PDF document generation, providing APIs for generating PDF documents by merging client data or graphics with templates stored on the server.

BlazeDS

Previously available only as part of Adobe LiveCycle Data Services ES, Adobe plans to contribute the BlazeDS technologies to the community under the LGPL v3. BlazeDS gives Adobe developers free access to the remoting and messaging technologies developed by Adobe.

Concurrent with this pre-release of BlazeDS, Adobe is publishing the AMF binary data protocol specification, on which the BlazeDS remoting implementation is based, and is attempting to partner with the community to make this protocol available for major server platforms.

Flex and ColdFusion

Flex 2 offers special integration with ColdFusion MX 7. The ColdFusion MX 7.0.2 release adds updated Flash Remoting to support ActionScript 3, a Flex Data Services event gateway, and the Flex Data Services assembler. Flex Builder 2 also adds extensions for ColdFusion providing a set of wizards for RAD Flex development. A subset of Flex 1.5 is also embedded into ColdFusion MX 7 middleware platform, for use in the ColdFusion Flash forms feature. It is possible to use this framework to write rich internet applications, although its intended purpose is for rich forms only.

Why AJAX gets criticised

                                                                               -Dhanapathi

Generally the creators of new technology highlight the advantages of their invention while hiding its limitations. In the previous News Letter we had a topic on AJAX. In this section we are going to understand the drawbacks of AJAX. You will be explained some reasons why AJAX is Criticised.


Disabling JavaScript: - Ajax is an extension to JavaScript (We can assume it that way). If the user disables JavaScript in their browser then the AJAX application doesn’t work. It is said that at least 10% of the users in the world disable the JavaScript in their browsers.

Distributed Environment: - Since clients cannot directly communicate with each other any distributed application developed using Ajax would require a central web server system to negotiate requests between clients. Client A could generate events/data for and respond to events/data from Client B however both would need to connect to a common web server to facilitate the communication.

Server Delay: - The asynchronous mode may change the page with delays (when the processing on the server is too slow), this may be disturbing. Users may not even understand what is happening.

Non HTTP Servers: - Ajax is primarily a client/server technology. Client nodes in the web do not typically run web servers that can respond to HTTP GET and POST requests.

Back Button: - When we are using normal HTML pages we can click on the Back button to navigate back to the previous page. This may not be possible with application that was built on AJAX.

Accessibility - Having pages that rely heavily on JavaScript and updating dynamically has the potential to wreak havoc on screen reader type programs for users with visual impairments.

Search Engine: - It may be difficult for Search Engines to properly index content returned through complex AJAX updates.

Bookmark the page:- Since the JavaScript is dynamically generating the page instead of the server, the URL is cut out of the loop and can no longer be used as an index into navigation. So you cannot book mark the page or send a link of an Ajax application to your friend.


Conclusion: - AJAX is a technology that is used widely in the world. Don’t just use it just to make sure that you are building an AJAX application or website. Ajax is definitely a great technology provided you build an AJAX application keeping its drawbacks into consideration. Proper Analysis is to be made before choosing AJAX. Some of the safety measures are as follows:-

• Issues such as Browser in compatibilities should be handled carefully.

• Too many asynchronous requests cause Congestion and should be avoided.

• Whenever an error happens at the backend, user may not prompt with any message. User will have absolutely no idea of what went wrong. So care should be taken such that the user is informed in case of errors like database connection failures or others.


If you want to develop an AJAX application, do it only after proper analysis. Develop the application keeping the havoc causing scenarios into consideration.

Six Sigma

                                                                                          -Hepzibah
Improving quality systematically


                                        





What is Six Sigma?

Six Sigma is a rigorous, focused and highly effective implementation of proven quality principles and techniques. Incorporating elements from the work of many quality pioneers, Six Sigma aims for virtually error free business performance.

Sigma is a letter in the Greek alphabet used by statisticians to measure the variability in any process, and if you can keep the output of that process within a six sigma-wide band (in effect, no more than 3.4 defects per million outputs), you can be confident that your process is operating as it should.

Six Sigma focuses on improving quality (and therefore reducing waste) by helping organizations produce products and services better, faster and cheaper. In more traditional terms, Six Sigma focuses on defect prevention, cycle time reduction, and cost savings. Unlike mindless cost-cutting programs which reduce value as well as quality, Six Sigma identifies and eliminates costs which provide no value to customers.

Understanding the Tool

Six Sigma has two main strands. First, it involves using a handful of tried and true performance improvement methods and, second it involves training a small cadre of in-house technical leaders, known as Six Sigma Black Belts, to a high level of proficiency in the application of these techniques.

The DMAIC Framework

The tools are applied within a simple framework known as DMAIC, or Define-Measure-Analyze-Improve-Control. DMAIC can be described as follows:



D Define the goals of the improvement activity. At the top level the goals will be the strategic objectives of the organization, such as a higher ROI or market share. At the operations level, a goal might be to increase the throughput of a production department. At the project level goals might be to reduce the defect level, and increase throughput. Apply data mining methods to identify potential improvement opportunities.



M Measure the existing system. Establish valid and reliable metrics to help monitor progress towards the goal(s) defined at the previous step. Begin by determining the current baseline. Use exploratory and descriptive data analysis to help you understand the data.



A Analyze the system to identify ways to eliminate the gap between the current performance of the system or process and the desired goal. Apply statistical tools to guide the analysis.



I Improve the system. Be creative in finding new ways to do things better, cheaper, or faster. Use project management and other planning and management tools to implement the new approach. Use statistical methods to validate the improvement.



C Control the new system. Institutionalize the improved system by modifying compensation and incentive systems, policies, procedures, MRP (Manufacturing Resource Planning), budgets, operating instructions and other management systems. You may wish to utilize systems such as ISO 9000 to assure that documentation is correct.

Although the approach is simple, it is by no means easy. However, the results justify the effort expended. Research has shown that firms that successfully implement Six Sigma perform better in virtually every business category, including return on sales, return on investment, employment growth, and share price increase.