Pages

Thursday, October 28, 2010

UNIT 3

                   UNIT 3

WEB SERVICES-- SOA,SOAP,WSDL,REST SERVICES
JSON FORMAT--Ajax introduction>XMLHTTP object comparision

Saturday, September 25, 2010

UNIT 2

                        UNIT 2

Client side programming - overview of java script, 
objects in java script, Regular expressions, 
overview of XML, DTD and XML schema, DOM and
SAX parsers, CSS , XSLT

Thursday, September 23, 2010

Social Networking

What Is Social Networking?  

Social Networking. . . It's the way the 21st century communicates today.  Want to know what it really means?

Social networking is the grouping of individuals into specific groups, like small rural communities or a neighborhood subdivision, if you will. Although social networking is possible in person, especially in the workplace, universities, and high schools, it is most popular online. This is because unlike most high schools, colleges, or workplaces, the internet is filled with millions of individuals who are looking to meet other people, to gather and share first-hand information and experiences about golfing, gardening, raising Schnauzers, developing friendships or professional alliances, finding employment, business-to-business marketing and even groups sharing information about the end of the Mayan calendar and the Great Shift to arrive December 21-2012. The topics and interests are as varied and rich as the story of our world.
When it comes to online social networking, websites are commonly used. These websites are known as social sites. Social networking websites function like an online community of internet users. Depending on the website in question, many of these online community members share common interests in hobbies, religion, or politics. Once you are granted access to a social networking website you can begin to socialize. This socialization may include reading the profile pages of other members and possibly even contacting them. 

The friends that you can make are just one of the many benefits to social networking online. Another one of those benefits includes diversity because the internet gives individuals from all around the world access to social networking sites. This means that although you are in the United States, you could develop an online friendship with someone in Denmark or India. Not only will you make new friends, but you just might learn a thing or two about new cultures or new languages and learning is always a good thing.
As mentioned, social networking often involves grouping specific individuals or organizations together. While there are a number of social networking websites that focus on particular interests, there are others that do not. The websites without a main focus are often referred to as "traditional" social networking websites and usually have open memberships. This means that anyone can become a member, no matter what their hobbies, beliefs, or views are. However, once you are inside this online community, you can begin to create your own network of friends and eliminate members that do not share common interests or goals.
As I'm sure you're aware, there are dangers associated with social networking including data theft and viruses, which are on the rise. The most prevalent danger though often involves online predators or individuals who claim to be someone that they are not. Although danger does exist with networking online, it also exists in the real world, too. Just like you're advised when meeting strangers at clubs and bars, school, or work -- you are also advised to proceed with caution online. By being aware of your cyber-surroundings and who you are talking to, you should be able to safely enjoy social networking online. It will take many phone conversations to get to know someone, but you really won't be able to make a clear judgement until you can meet each other in person.  Just use common sense and listen to your inner voice; it will tell you when something doesn't feel right about the online conversations taking place.
Once you are well informed and comfortable with your findings, you can begin your search from hundreds of networking communities to join. This can easily be done by performing a standard internet search. Your search will likely return a number of results, including MySpace, FriendWise, FriendFinder, Yahoo! 360, Facebook, Orkut, and Classmates. 
  
A social network is a social structure made up of individuals (or organizations) called "nodes," which are tied (connected) by one or more specific types of interdependency, such as friendship, kinship, common interest, financial exchange, dislike, sexual relationships, or relationships of beliefs, knowledge or prestige.
Social network analysis views social relationships in terms of network theory consisting of nodes and ties. Nodes are the individual actors within the networks, and ties are the relationships between the actors. The resulting graph-based structures are often very complex. There can be many kinds of ties between the nodes. Research in a number of academic fields has shown that social networks operate on many levels, from families up to the level of nations, and play a critical role in determining the way problems are solved, organizations are run, and the degree to which individuals succeed in achieving their goals.
In its simplest form, a social network is a map of all of the relevant ties between all the nodes being studied. The network can also be used to measure social capital -- the value that an individual gets from the social network. These concepts are often displayed in a social network diagram, where nodes are the points and ties are the lines.

Social network analysis.

Social network analysis (related to network theory) has emerged as a key technique in modern sociology. It has also gained a significant following in anthropology, biology, communication studies, economics, geography, information science, organizational studies, social psychology, and sociolinguistics, and has become a popular topic of speculation and study.
Several analytic tendencies distinguish social network analysis:
There is no assumption that groups are the building blocks of society: the approach is open to studying less-bounded social systems, from nonlocal communities to links among websites.
Rather than treating individuals (persons, organizations, states) as discrete units of analysis, it focuses on how the structure of ties affects individuals and their relationships.
In contrast to analyses that assume that socialization into norms determines behavior, network analysis looks to see the extent to which the structure and composition of ties affect norms


The power of social network analysis stems from its difference from traditional social scientific studies, which assume that it is the attributes of individual actors—whether they are friendly or unfriendly, smart or dumb, etc.—that matter. Social network analysis produces an alternate view, where the attributes of individuals are less important than their relationships and ties with other actors within the network. This approach has turned out to be useful for explaining many real-world phenomena, but leaves less room for individual agency, the ability for individuals to influence their success, because so much of it rests within the structure of their network.

Metrics (Measures) in social network analysis

Betweenness
The extent to which a node lies between other nodes in the network. This measure takes into account the connectivity of the node's neighbors, giving a higher value for nodes which bridge clusters. The measure reflects the number of people who a person is connecting indirectly through their direct links.[19]
Bridge
An edge is said to be a bridge if deleting it would cause its endpoints to lie in different components of a graph.
Centrality
This measure gives a rough indication of the social power of a node based on how well they "connect" the network. "Betweenness", "Closeness", and "Degree" are all measures of centrality.
Centralization
The difference between the number of links for each node divided by maximum possible sum of differences. A centralized network will have many of its links dispersed around one or a few nodes, while a decentralized network is one in which there is little variation between the number of links each node possesses.
Closeness
The degree an individual is near all other individuals in a network (directly or indirectly). It reflects the ability to access information through the "grapevine" of network members. Thus, closeness is the inverse of the sum of the shortest distances between each individual and every other person in the network. (See also: Proxemics) The shortest path may also be known as the "geodesic distance".
Clustering coefficient
A measure of the likelihood that two associates of a node are associates themselves. A higher clustering coefficient indicates a greater 'cliquishness'.
Cohesion
The degree to which actors are connected directly to each other by cohesive bonds. Groups are identified as ‘cliques’ if every individual is directly tied to every other individual, ‘social circles’ if there is less stringency of direct contact, which is imprecise, or as structurally cohesive blocks if precision is wanted.[20]
Degree
The count of the number of ties to other actors in the network. See also degree (graph theory).
(Individual-level) Density
The degree a respondent's ties know one another/ proportion of ties among an individual's nominees. Network or global-level density is the proportion of ties in a network relative to the total number possible (sparse versus dense networks).
Flow betweenness centrality
The degree that a node contributes to sum of maximum flow between all pairs of nodes (not that node).
Eigenvector centrality
A measure of the importance of a node in a network. It assigns relative scores to all nodes in the network based on the principle that connections to nodes having a high score contribute more to the score of the node in question.
Local Bridge
An edge is a local bridge if its endpoints share no common neighbors. Unlike a bridge, a local bridge is contained in a cycle.
Path Length
The distances between pairs of nodes in the network. Average path-length is the average of these distances between all pairs of nodes.
Prestige
In a directed graph prestige is the term used to describe a node's centrality. "Degree Prestige", "Proximity Prestige", and "Status Prestige" are all measures of Prestige. See also degree (graph theory).
Radiality
Degree an individual’s network reaches out into the network and provides novel information and influence.
Reach
The degree any member of a network can reach other members of the network.
Structural cohesion
The minimum number of members who, if removed from a group, would disconnect the group.[21]
Structural equivalence
Refers to the extent to which nodes have a common set of linkages to other nodes in the system. The nodes don’t need to have any ties to each other to be structurally equivalent.
Structural hole
Static holes that can be strategically filled by connecting one or more links to link together other points. Linked to ideas of social capital: if you link to two people who are not linked you can control their communication
 

Network analytic software

Network analytic tools are used to represent the nodes (agents) and edges (relationships) in a network, and to analyze the network data. Like other software tools, the data can be saved in external files. Additional information comparing the various data input formats used by network analysis software packages is available at NetWiki. Network analysis tools allow researchers to investigate large networks like the Internet, disease transmission, etc. These tools provide mathematical functions that can be applied to the network model.

Visualization of Networks

Visual representation of social networks is important to understand the network data and convey the result of the analysis [1]. Most of the softwares have besides the analytical tools also modules for network visuaization. Exploration of the data is done through displaying nodes and ties in various layouts, and attributing colors, size and other advanced properties to nodes.
Typical representation of the network data are graphs in network layout (nodes and ties). These are not very easy-to-read and do not allow an intuitive interpretation. Various new methods have been developed in order to display network data in more intuitive format (e.g. Sociomapping).

Patents

Growth in Social Network Patent Applications.jpg
There has been rapid growth in the number of US patent applications that cover new technologies related to social networking. The number of published applications has been growing at about 250% per year over the past five years. There are now over 2000 published applications.[22] Only about 100 of these applications have issued as patents, however, largely due to the multi-year backlog in examination of business method patents and ethical issues connected with this patent category [23]




Multiple Delivery Channels

Voice XML
VoiceXML (VXML) is the W3C's standard XML format for specifying interactive voice dialogues between a human and a computer. It allows voice applications to be developed and deployed in an analogous way to HTML for visual applications. Just as HTML documents are interpreted by a visual web browser, VoiceXML documents are interpreted by a voice browser. A common architecture is to deploy banks of voice browsers attached to the Public Switched Telephone Network (PSTN) to allow users to interact with voice applications over the telephone. for details visit http://www.voicexml.org

Usage

 Many commercial VoiceXML applications have been deployed, processing millions of telephone calls per day. These applications include: order inquiry, package tracking, driving directions, emergency notification, wake-up, flight tracking, voice access to email, customer relationship management, prescription refilling, audio news magazines, voice dialing, real-estate information and national directory assistance applications.
VoiceXML has tags that instruct the voice browser to provide speech synthesis, automatic speech recognition, dialog management, and audio playback. The following is an example of a VoiceXML document:


<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
  <form>
    <block>
      <prompt>
        Hello world!
      </prompt>
    </block>
  </form>
</vxml>
When interpreted by a VoiceXML interpreter this will output "Hello world" with synthesized speech.
Typically, HTTP is used as the transport protocol for fetching VoiceXML pages. Some applications may use static VoiceXML pages, while others rely on dynamic VoiceXML page generation using an application server like Tomcat, Weblogic, IIS, or WebSphere.
Historically, VoiceXML platform vendors have implemented the standard in different ways, and added proprietary features. But the VoiceXML 2.0 standard, adopted as a W3C Recommendation 16 March 2004, clarified most areas of difference. The VoiceXML Forum, an industry group promoting the use of the standard, provides a conformance testing process that certifies vendors implementations as conformant

History

AT&T, IBM, Lucent, and Motorola formed the VoiceXML Forum in March 1999, in order to develop a standard markup language for specifying voice dialogs. By September 1999 the Forum released VoiceXML 0.9 for member comment, and in March 2000 they published VoiceXML 1.0. Soon afterwards, the Forum turned over the control of the standard to the World Wide Web Consortium. The W3C produced several intermediate versions of VoiceXML 2.0, which reached the final "Recommendation" stage in March 2004.
VoiceXML 2.1 added a relatively small set of additional features to VoiceXML 2.0, based on feedback from implementations of the 2.0 standard. It is backward compatible with VoiceXML 2.0 and reached W3C Recommendation status in June 2007
  
Related standards
The W3C's Speech Interface Framework also defines these other standards closely associated with VoiceXML

SRGS and SISR

The Speech Recognition Grammar Specification (SRGS) is used to tell the speech recognizer what sentence patterns it should expect to hear: these patterns are called grammars. Once the speech recognizer determines the most likely sentence it heard, it needs to extract the semantic meaning from that sentence and return it to the VoiceXML interpreter. This semantic interpretation is specified via the Semantic Interpretation for Speech Recognition (SISR) standard. SISR is used inside SRGS to specify the semantic results associated with the grammars, i.e., the set of ECMAScript assignments that create the semantic structure returned by the speech recognizer.

SSML

The Speech Synthesis Markup Language (SSML) is used to decorate textual prompts with information on how best to render them in synthetic speech, for example which speech synthesizer voice to use, when to speak louder or softer.

PLS

The Pronunciation Lexicon Specification (PLS) is used to define how words are pronounced. The generated pronunciation information is meant to be used by both speech recognizers and speech synthesizers in voice browsing applications.

CCXML

The Call Control eXtensible Markup Language (CCXML) is a complementary W3C standard. A CCXML interpreter is used on some VoiceXML platforms to handle the initial call setup between the caller and the voice browser, and to provide telephony services like call transfer and disconnect to the voice browser. CCXML can also be used in non-VoiceXML contexts such as teleconferencing.

MSML, MSCML, MediaCTRL

In media server applications, it is often necessary for several call legs to interact with each other, for example in a multi-party conference. Some deficiencies were identified in VoiceXML for this application and so companies designed specific scripting languages to deal with this environment. The Media Server Markup Language was Convedia's solution, and Media Server Control Markup Language was Snowshore's. These languages also contain 'hooks' so that external scripts (like VoiceXML) can run on call legs where IVR functionality is required.
There is an IETF working group called mediactrl ("media control") that is working on a successor for these scripting systems, which it is hoped will progress to an open and widely adopted standard.

VoiceXML is the HTML of the voice web, the open standard markup language for voice applications. VoiceXML harnesses the massive web infrastructure developed for HTML to make it easy to create and deploy voice applications. Like HTML, VoiceXML has opened up huge business opportunities: the Economist even says that "VoiceXML could yet rescue telecoms carriers from their folly in stringing so much optical fibre around the world."
VoiceXML 1.0 was published by the VoiceXML Forum, a consortium of over 500 companies, in March 2000. The Forum then gave control of the standard to the World Wide Web Consortium (W3C), and now concentrates on conformance, education, and marketing. The W3C has just published VoiceXML 2.0 as a Candidate Recommendation. Products based on VoiceXML 2.0 are already widely available.
While HTML assumes a graphical web browser with display, keyboard, and mouse, VoiceXML assumes a voice browser with audio output, audio input, and keypad input. Audio input is handled by the voice browser's speech recognizer. Audio output consists both of recordings and speech synthesized by the voice browser's text-to-speech system.
A voice browser typically runs on a specialized voice gateway node that is connected both to the Internet and to the public switched telephone network (see Figure 1). The voice gateway can support hundreds or thousands of simultaneous callers, and be accessed by any one of the world's estimated 1,500,000,000 phones, from antique black candlestick phones up to the very latest mobiles.
VoiceXML takes advantage of several trends:
  • The growth of the World-Wide Web and of its capabilities.
  • Improvements in computer-based speech recognition and text-to-speech synthesis.
  • The spread of the WWW beyond the desktop computer.
 Voice Services

What sorts of voice applications are best suited for VoiceXML? Here are a few ideas.
Information retrieval (IR) is a good match for VoiceXML. In an IR application, audio output tends to be pre-recorded information. Voice input can be highly constrained (e.g., a few browsing commands and limited data entry), or it can be quite rich (e.g., arbitrary street addresses). A good example of an IR application is one where the user first designs a personal voice newsletter at a web site, and then calls in periodically to browser through the newsletter. The newsletter may contain news, sports, traffic, weather, and stock information, as well as more specialized information such as intranet-based company news. This service can be funded by subscription, advertisement, or connect time.
Directory assistance applications work well in VoiceXML. AT&T's has a new VoiceXML toll-free directory assistance service, powered by TellMe, which you can try out in the United States by calling 800.555.1212. It is so incredibly effective that the automation rate climbed from 8% to 55%, saving AT&T $20 million a year. Remarkably, customer satisfaction has risen by over a third along with this increased automation.
Electronic commerce is another area. Customer service applications such as package tracking, account status, and support are well suited to VoiceXML. Financial applications like banking, stock quotes, and portfolio management are another good match. Catalog applications have to be done right, because voice conveys much less information than graphics. Catalog applications work if the customer is looking at a printed catalog (e.g., clothing), or knows the exact product already (e.g., a book, CD, or DVD title).
Telephone services like personal voice dialing, one-number "find-me" services, voice mail management, and teleconferencing can easily be voice-enabled through VoiceXML. Personal voice applications attached to individual phone lines can be very important sources of revenue.
Because standard Web security features apply to the voice web, intranet applications can also be written in VoiceXML for inventory control, ordering supplies, providing human resource services, and for corporate portals.
Unified messaging applications can leverage voice. E-mail messages can be read over the phone, outgoing e-mail can be recorded (and in the future transcribed) over the phone, and voice-oriented address information can be synchronized with personal organizers and e-mail systems. Pager messages can be originated from the phone, or routed to the phone.
There are many other areas where voice services can be used, such as checking the status of bids at an electronic auction site, authorizing bill payments, scheduling pickups of charitable donations, ordering a wake up call at a hotel. Doubtless there are many services not yet conceived of.

Conclusion

Before making a decision on voice access for your wireless application, take the time to visit a voice portal such as TellMe or BeVocal. While much of the wireless world is spending time trying to figure out how to deliver advertising as well as content to mobile devices, these voice portals are successfully doing both of these things now...with location-based services thrown in for good measure! Having said that, unlike the wired world, it is becoming increasingly clear that wireless application delivery will require support for a wide variety of devices and access technologies which will include voice access via VoiceXML to your applications. Get prepared today by studying up at the resources listed below!
    

Apache Ant

Apache Ant Logo
Developer(s) Apache Software Foundation
Stable release 1.8.1 / May 7, 2010; 4 months ago (2010-05-07)
Written in Java
Operating system Cross-platform
Type Build Tool
License Apache License 2.0
Website http://ant.apache.org

Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects.
The most immediately noticeable difference between Ant and Make is that Ant uses XML to describe the build process and its dependencies, whereas Make uses Makefile format. By default the XML file is named build.xml.
Ant is an Apache project. It is open source software, and is released under the Apache Software License.

History

Ant ("Another Neat Tool") was conceived by James Duncan Davidson while turning a product from Sun into open source. That product, Sun's reference JSP/Servlet engine, later became Apache Tomcat. A proprietary version of make was used to build it on the Solaris Operating Environment, but in the open source world there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple platform-independent tool to build Tomcat from directives in an XML "build file". From this humble beginning, the tool has gone on to become more widespread than the Tomcat product for which it was created. Ant (version 1.1) was officially released as a stand-alone product on July 19, 2000.
Several proposals for an Ant version 2 have been made, such as AntEater by James Duncan Davidson, Myrmidon by Peter Donald and Mutant by Conor MacNeill, none of which were able to find large acceptance with the developer community.
Today, Ant is the build tool used by most Java development projects. For example, most open source developers include build.xml files with their distribution.[citation needed]
Because Ant made it trivial[citation needed] to integrate JUnit tests with the build process, Ant has made it easy for willing developers to adopt test-driven development, and even Extreme Programming.
Other Java-based build tools include Maven and JavaMake.

Sample build.xml file

Below is listed a sample build.xml file for a simple Java "Hello, world" application. It defines four targets - clean, clobber, compile and jar, each of which has an associated description. The jar target lists the compile target as a dependency. This tells Ant that before it can start the jar target it must first complete the compile target.
<?xml version="1.0"?>
<project name="Hello" default="compile">
    <target name="clean" description="remove intermediate files">
        <delete dir="classes"/>
    </target>
    <target name="clobber" depends="clean" description="remove all artifact files">
        <delete file="hello.jar"/>
    </target>
    <target name="compile" description="compile the Java source code to class files">
        <mkdir dir="classes"/>
        <javac srcdir="." destdir="classes"/>
    </target>
    <target name="jar" depends="compile" description="create a Jar file for the application">
        <jar destfile="hello.jar">
            <fileset dir="classes" includes="**/*.class"/>
            <manifest>
                <attribute name="Main-Class" value="HelloProgram"/>
            </manifest>
        </jar>
    </target>
</project>
Within each target are the actions that Ant must take to build that target; these are performed using built-in tasks. For example, to build the compile target Ant must first create a directory called classes (Ant will only do so if it does not already exist) and then invoke the Java compiler. Therefore, the tasks used are mkdir and javac. These perform a similar task to the command-line utilities of the same name.
Another task used in this example is named jar:
<jar destfile="hello.jar">
This ant task has the same name as the common java command-line utility, JAR, but is really a call to the ant program's built-in jar/zip file support. This detail is not relevant to most end users, who just get the JAR they wanted, with the files they asked for.
Many Ant tasks delegate their work to external programs, either native or Java. They use Ant's own <exec> and <java> tasks to set up the command lines, and handle all the details of mapping from information in the build file to the program's arguments -and interpreting the return value. Users can see which tasks do this (e.g. <cvs>, <signjar>, <chmod>, <rpm>), by trying to execute the task on a system without the underlying program on the path, or without a full Java Development Kit (JDK) installed.

Extensions

WOProject-Ant is just one of many examples of a task extension written for Ant. These extensions are put to use by copying their jar files into ant's lib directory. Once this is done, these extension tasks can be invoked directly in the typical build.xml file. The WOProject extensions allow WebObjects developers to use ant in building their frameworks and applications, instead of using Apple's Xcode suite.
Antcontrib provides a collection of tasks such as conditional statements and operations on properties as well as other useful tasks.
Other task extensions exist for Perforce, .Net, EJB, and filesystem manipulations, just to name a few.

Portability

One of the primary aims of Ant was to solve make's portability problems. In a Makefile the actions required to create a target are specified as shell commands which are specific to the current platform, usually a Unix shell. Ant solves this problem by providing a large amount of built-in functionality which it can then guarantee will behave (nearly) identically on all platforms.
For example, in the sample build.xml file above the clean target deletes the classes directory and everything in it. In a Makefile this would typically be done with the command:
rm -rf classes/
rm is a Unix specific command which will probably not be available if the Makefile is used in a non-Unix environment such as Microsoft Windows which would use:
rmdir /S /Q classes
In an Ant build file the same thing would be accomplished using a built in command:
<delete dir="classes"/>
A common discrepancy between different platforms is the way in which directory paths are specified. Unix uses a forward slash (/) to delimit the components of a path, whereas Windows uses a backslash (\). Ant build files let authors choose their favorite convention, forward slashes or back slashes for directories, semicolon or colon for path separators. It converts everything to the appropriate format for the current platform.

Limitations

  • Ant build files are written in XML. For unfamiliar users, both XML itself and the complex structure (hierarchical, partly ordered, and pervasively cross-linked) of Ant documents can be a barrier to learning. A GUI called Antidote was available for a time, but never gained a following and has been retired from the Apache project. Moreover, the language of Ant is quite verbose, and the build files of large or complex projects become unmanageably large. Good design and modularization of build files can improve readability but not necessarily reduce size. Other build tools like Maven use more concise scripts at the expense of generality and flexibility.
  • Many of the older tasks—the core ones that are used every day, such as <javac>, <exec> and <java>—use default values for options that are not consistent with more recent versions of the tasks. Changing those defaults would break existing Ant scripts.
  • When expanding properties in a string or text element, undefined properties are not raised as an error, but left as an unexpanded reference (e.g. ${unassigned.property}).
  • Ant has limited fault handling rules, and no persistence of state, so it cannot be used as a workflow tool for any workflow other than classic build and test processes.
  • The Ant target model does not treat artifacts as targets. In most build tools a target is an artifact created by the build—a program, library, intermediate object file, PDF documentation, etc.—and rules specify the dependencies between targets and the tasks to run to build a target when it is out of date. In Ant a target is a group of tasks rather than an artifact. This means that Ant is sometimes unable to determine the relationship between an artifact and the task sequence to build the artifact and this logic must be implemented by the programmer using Ant's control structures.
  • Once a global property is defined it cannot be changed by any of the core tasks. Antcontrib provides a variable task to workaround this problem. And AntXtras provides a variable property type that complements readonly properties.
  • Lazy property evaluation is not supported. For instance, when working within a Antcontrib <for> loop, a property cannot be re-evaluated for a sub-value which may be part of the iteration. (Again you can workaround this depending on the third-party extension you're using; AntXtras flow-control tasksets do provide for cursor redefinition for loops.)
  • Reuse of build file fragments is hard. Ant 1.6 made reuse easier, with features like <import>, <presetdef>, and <macrodef>; however, some might argue these new features create an even steeper learning curve for new Ant users.
  • In makefiles, any rule to create one file type from another file type can be written inline within the makefile. For example, you may transform a document into some other format by using rules to execute another tool. Creating a similar task in Ant is more complex: a separate task must be written in Java and included with the Ant build file in order to handle the same type of functionality. However, this separation can enhance the readability of the Ant script by hiding some of the details of how a task is executed on different platforms.
Many of these limitations do not apply on the most recent Ant versions and there exists a myriad of third-party Ant extensions (called antlibs) that provide much of the missing functionality. Also the Eclipse IDE can build and execute Ant scripts while the NetBeans IDE uses Ant for its internal build system. As both these IDEs are very popular development platforms, they can simplify Ant use significantly (as a bonus Ant scripts generated by NetBeans can be used outside of that IDE as standalone scripts).




Software as a service (SaaS)


Software as a service      

 Software as a service (SaaS, typically pronounced [sæs]), sometimes referred to as "software on demand," is software that is deployed over the internet and/or is deployed to run behind a firewall on a local area network or personal computer. With SaaS, a provider licenses an application to customers as a service on demand, through a subscription, in a "pay-as-you-go" model, or increasingly at no charge.
SaaS was initially widely deployed for sales force automation and Customer Relationship Management (CRM). Now, it has become commonplace for many business tasks, including computerized billing, invoicing, human resource management, financials, content management, collaboration, document management, and service desk management
 
History

Software as a service's acronym "SaaS" was first used in an article called "Strategic Backgrounder: Software as a Service." It was published in February 2001 by the Software & Information Industry's (SIIA) eBusiness Division. The 18 page document is one of the most complete essays pertaining to SaaS available today. SIIA developed the backgrounder to analyze the current state of the SaaS market and its near term prospects, and to provide insight for its members who may be profoundly impacted by changes implied in the SaaS mode. Software as a service is essentially an extension of the idea of the Application Service Provider (ASP) model.

Philosophy

Software and business professionals generally associate the term SaaS with business software, and as a possibly lower-cost way for businesses to use software as needed rather than license all devices with all applications. With a well-designed implementation and properly priced licenses, on-demand SaaS provides license benefits without associated complexity and the potential high cost to equip devices with applications they may not need.
Some software fits the SaaS model. Many Unix applications already work this way, while EULA applications never had this flexibility before SaaS.[clarification needed] A licensed copy of a word processor, for example, had to reside on the machine to create a document. The equipped program has no intrinsic value loaded on a computer that is turned off for the night. The same employee may need another fully paid license to write or edit a report at home on their own computer, while the work license is inoperative.
Remote administration software attempts to resolve this issue by letting, for example, someone on a home computer remotely operate their machine at work to create a document in a word processor licensed on that machine. While promising, this requires leaving the host computer on and creates security issues. SaaS achieves efficiencies by enabling on-demand licensing and management of information and output, independent of hardware location.

Key characteristics

SaaS characteristics include:[dead link]
  • Network-based access to, and management of, commercially available software
  • Activities managed from central locations rather than at each customer's site, enabling customers to access applications remotely via the Web
  • Application delivery typically closer to a one-to-many model (single instance, multi-tenant architecture) than to a one-to-one model, including architecture, pricing, partnering, and management characteristics
  • Centralized feature updating, which obviates the need for end-users to download patches and upgrades.
  • Frequent integration into a larger network of communicating software—either as part of a mashup or a plugin to a platform as a service
(Service oriented architecture is naturally more complex than traditional models of software deployment.)
SaaS providers generally price applications on a per-user basis and/or per business basis, sometimes with a relatively small minimum number of users and often with additional fees for extra bandwidth and storage. SaaS revenue streams to the vendor are therefore lower initially than traditional software license fees, but are also recurring, and therefore viewed as more predictable, much like maintenance fees for licensed software.
Some SaaS applications are free to the user, with revenue being derived from alternate sources such as advertising, or upgrade fees for enhanced functionality (often referred to as "freemium"). Examples of free SaaS applications include large players such as Gmail and Google Docs, as well as smaller providers like Wave Accounting and Freshbooks.
In addition to characteristics mentioned above, SaaS sometimes provides:
  • More feature requests from users, since there is frequently no marginal cost for requesting new features[citation needed]
  • Faster new feature releases, since the entire community of users benefits[citation needed]
  • Embodiment of recognized best practices, since the user community drives the software publisher to support best practice[citation needed]

Benefits

The neutrality of this section is disputed. Please see the discussion on the talk page. Please do not remove this message until the dispute is resolved. (March 2010)
  • Save money by not having to purchase servers or other software to support use
  • Focus Budgets on competitive advantage rather than infrastructure
  • Monthly obligation rather than up front capital cost
  • Reduced need to predict scale of demand and infrastructure investment up front as available capacity matches demand
  • Multi-Tenant efficiency
  • Flexibility and scalability

Implementation

One of the companies that sells that kind of service classifies SaaS into four "maturity levels," whose key attributes are configurability, multi-tenant efficiency, and scalability.[5] Each level is distinguished from the previous one by the addition of one of those three attributes:
  • Level 1 - Ad-hoc/custom: Each customer has a customized version of the hosted application that runs as its own instance on the host's servers. Migrating a traditional non-networked or client–server application to this level of SaaS typically requires the least development effort, and reduces operating costs by consolidating server hardware and administration.
  • Level 2 - Configurable: This adds greater program flexibility through configurable metadata, so many customers use separate instances of the same application code. This lets the vendor meet different customer needs through detailed configuration options, while simplifying common code base maintenance and updating.
  • Level 3 - Configurable, multi-tenant-efficient: This adds multi-tenancy to the second level, so a single program instance serves all customers. This enables more efficient server resource use without apparent difference to the end user, but ultimately faces scalability limits.
  • Level 4 - Scalable, configurable, multi-tenant-efficient: The fourth and final SaaS maturity level adds scalability through a multitier architecture that supports a load-balanced farm of identical application instances that run on a variable number of servers. The provider can adjust system capacity to match demand by adding or removing servers without further altering the software architecture.
SaaS architectures may also use virtualization, either in addition to multi-tenancy, or in place of it. A principal virtualization benefit is that it can increase system capacity without additional programming. On the other hand, much programming may be required to construct a more efficient multi-tenant application. Combining multi-tenancy and virtualization provides still greater flexibility to tune the system for optimal performance. In addition to full operating system-level virtualization, other virtualization techniques applied to SaaS include application virtualization and virtual appliances.
SaaS application development may use various types of software components and frameworks. These tools can reduce time-to-market and the cost of converting a traditional on-premise software product or building and deploying a new SaaS solution. Examples include components for subscription management, grid computing software, web application frameworks, and complete SaaS platform products

SaaS and SOA

Much like other software, SaaS can also take advantage of Service Oriented Architecture to let software applications communicate with each other. Each software service can act as a service provider, exposing its functionality to other applications via public brokers, and can also act as a service requester, incorporating data and functionality from other services. Enterprise Resource Planning (ERP) Software providers leverage SOA in building their SaaS offerings; an example is SAP Business ByDesign from SAP AG.

Software as a secure service (SaSS) is a variation of SaaS that provides security in the link to the service, content storage on the service, and non-proprietary format data backups and restores of data stored on the service.[citation needed]

Adoption

Drivers

A traditional rationale for outsourcing IT systems involves applying economies of scale to application operation, i.e., an outside service provider can offer better, cheaper, more reliable applications. SaaS-based application use has grown dramatically. A Gartner survey in July 2009 found that customers are "somewhat satisfied". Several important changes to the way people work have facilitated this rapid acceptance:
  • Fast, low-cost broadband is available.
  • Computers have become widespread—most information workers have at least basic computer skills.
  • Computing has become a commodity. In the past, corporate mainframes were jealously guarded as strategic advantages. More recently, applications were viewed as strategic. Today, people know it’s the business processes and the data itself (customer records, workflows, pricing information) that matters. Computing and application licenses are cost centers, and as such, they’re suitable for cost reduction and outsourcing. The adoption of SaaS could also drive Internet-scale to become a commodity.
  • Insourcing IT systems requires expensive overhead including salaries, health care, liability, and physical building space.
  • Applications have tended to standardize. With notable, industry-specific exceptions, most people spend most of their time using standardized applications.[citation needed] An expense-reporting page, an applicant screening tool, a spreadsheet, or an e-mail system are all sufficiently ubiquitous and well understood that most users can switch from one system to another easily. This is evident from the number of web-based calendaring, spreadsheet, and e-mail systems that have emerged in recent years.
  • Parametric applications are usable. In older applications, one could often only change a workflow by modifying the code. In more recent applications, particularly web-based ones, significantly new applications can be created from parameters and macros. This allows organizations to create different kinds of business logic on a common application platform. Many SaaS providers allow a wide range of customization within a basic set of functions.
  • A specialized software provider can target global markets. A company that made software for human resource management at boutique hotels might once have had a hard time finding enough of a market to sell its applications. But a hosted application can instantly reach the entire market, making specialization within a vertical market not only possible, but preferable. This in turn means SaaS providers can often deliver products that meet specific market needs better than traditional "shrinkwrap" applications.
  • Web systems demonstrate reliability. Despite sporadic outages and slow-downs, most people are willing to use the public Internet, the Hypertext Transfer Protocol and the TCP/IP stack to deliver business functions to end users.
  • Security is sufficiently well trusted and transparent. With the broad adoption of SSL, organizations have a way of reaching their applications without the complexity and burden of end-user configurations or VPNs.
  • Enablement technology (tools, libraries, etc,) is available. According to IDC, organizations developing enablement technology that allow other vendors to quickly build SaaS applications will play an important role in driving the adoption of SaaS. Because of SaaS' relative infancy, many companies have either built enablement tools or platforms or are in the process of engineering enablement tools or platforms. A Saugatuck study shows the industry will most likely converge to three or four enablers that will act as SaaS Integration Platforms (SIPs).
  • Wide-area network bandwidth has grown drastically, following Moore's Law (more than 100% increase each 24 months), and is about to reach slow local networks bandwidths. Added to network quality improvement, this has driven people and companies to trustfully access remote locations and applications with low latencies and acceptable speeds.
  • SaaS has "democratized" software, allowing small and medium businesses to access functionality formerly the domain of large enterprises. Many analytical software tools have been released as SaaS applications on a monthly subscription basis.
  • SaaS facilitates data aggregation. Instead of collecting data from multiple data sources with different database schemas, all data for all customers is stored in a single database schema (i.e., multi-tenant). This simplifies running queries across customers, mining data, and looking for trends.
  • The rise of third-party SaaS data escrow services has reduced some security concerns by allowing application data to be held with an independent third party.

Sales channels

With products focus on the mid market, direct selling can become an expensive undertaking. SaaS companies seek alternatives by selling through value-added resellers (VARs), Managed Service Providers (MSPs), Master Managed Service Providers (MMSPs), and similar alliance partners. However, since SaaS is not only a different delivery mechanism, but a different business model and different technology, selling through channels has its own challenges.

 Pricing models

SaaS applications provide the opportunity to implement pricing models that establish and maintain recurring revenue streams. Most SaaS vendors charge a monthly hosting or subscription fee. Opportunities also exist to charge per transaction, event, or other unit of value. These alternative pricing models exist because customers "lease" the software from the vendors and the vendors can view all transactional activity.

User satisfaction

Gartner's 2008 survey of 333 enterprises in the US and UK found a low level of approval from customers, describing overall satisfaction levels as "lukewarm." Respondents who decided against SaaS cited high service cost, integration difficulty, and technical requirements. A recent report from Forrester, “The ROI of Software-As-A-Service,” examined a range of companies that chose SaaS solutions and found that SaaS does result in long-term value. Companies interviewed for the report cited several reasons for their ROI of SaaS:
  • Rapid deployment
  • Increased user adoption
  • Reduced support needs
  • Lower implementation and upgrade cos
Critisicm

Richard Stallman strongly criticizes SaaS. According to Stallman, using SaaS can cause as much harm as proprietary software, since users can't modify the particular software they use, thus, they can't control their own computing.
Also, SaaS is often rejected due to security concerns. The primary concern stems from the fact that the corporate data is being stored, and controlled, by third parties, thus increasing its attack surface.

Folksonomies and web 2.0

Folksonomies and web 2.0

A folksonomy is a system of classification derived from the practice and method of collaboratively creating and managing tags to annotate and categorize content; this practice is also known as collaborative tagging, social classification, social indexing, and social tagging.[citation needed] Folksonomy, a term coined by Thomas Vander Wal, is a portmanteau of folk and taxonomy.
Folksonomies became popular on the Web around 2004 as part of social software applications such as social bookmarking and photograph annotation. Tagging, which is one of the defining characteristics of Web 2.0 services, allows users to collectively classify and find information. Some websites include tag clouds as a way to visualize tags in a folksonomy.
An empirical analysis of the complex dynamics of tagging systems, published in 2007,has shown that consensus around stable distributions and shared vocabularies does emerge, even in the absence of a central controlled vocabulary.

Folksonomy is collaborative tagging and method of collaboratively creating and managing tags to annotate and categorize content. In it metadata is generated not only by experts but also by creators and consumers of the content.
Folksonomies arise in Web-based communities where provisions are made at the site level for creating and using tags. These communities are established to enable Web users to label and share user-generated content, such as photographs, or to collaboratively label existing content, such as Web sites, books, works in the scientific and scholarly literatures, and blog entries.
 A folksonomy begins with tagging. On the Website Flickr.com, for example, users post their photos and label them with descriptive words. You might tag the picture of your cat, "cat," "Sparky" and "living room." Then you'll be able to retrieve that photo when you're searching for the cute shot of Sparky lounging on the couch. If you open your photos and tags to others, as many Flickr devotees do, other people can examine and label your photos. A furniture aficionado might add the tag "Mitchell Gold sofa," which means that he and others looking for images of this particular kind of couch could find your photo. "People aren't really categorizing information," Vander Wal says. "They're throwing words out there for their own use." But the cumulative force of all the individual tags can produce a bottom-up, self-organized system for classifying mountains of digital material.
Folksonomy may hold the key to developing a Semantic Web - web 3.0, in which every Web page contains machine-readable metadata that describes its content. Such metadata would dramatically improve the precision (the percentage of relevant documents) in search engine retrieval lists.

Folksonomies are new Web 2.0 fun tools - great for categorizing documents and resources in a collaborative way on your web site!

A Folksonomy is.....


FOLKSONOMIES RESULT FROM SOCIAL TAGGING OF DIVERSE CONTENT SUCH AS DOCUMENTS, IMAGES, BLOG ENTRIES, LINKS, KEYWORDS.

How do they Work?


There are several different ways that folksonomies can serve a website. One common way is to organize a tag cloud of all the major links to your
site - similar to a sitemap. Another way is to set up the folksonomy to reflect documents and files shared by site visitors or members, linking to the
particular documents indicated by the word or phrase in the emerging tag cloud. Another use that is becoming quite popular is to reflect the contents
of a cluster of text, or even a set of data. This has all kinds of promise for feedback and even qualitative research analysis.

Just as the uses for a folksonomy vary, so do the way they appear. Some folksonomy tag clouds are very plain - they are barely discernable to regular
texts except for a variance in text size or colour. Others are quite attractive looking, especially if organized with a graphic background for aesthetics quality. The way folksonomies are processed into tag clouds also varies - web designers can use tag cloud software or online tag cloud generators. Or, they can hand code their tag cloud in php or java to create a customized folksonomy tag cloud.

Folksonomies as Doorways


Tag Clouds are not only a great byproduct of folksonomy classification. They can also serve as a 'gateway' or 'doorway' into a section of your web site. Some people even use them as a sitemap alternative (each word or phrase in the tag cloud is then a link). There are various ways to make these doorway tag clouds, where each word or phrase links to a particular page in your site. Probably, the easiest way to accomplish this is to use an online tag cloud generator that allows links to be included.

Tag Cloud Generator at http://www.tagcloud-generator.com/, created by German designers, Cesaria Design Projects is one of the easiest of these to use. The generator will spider the page you indicate (great for using with your sitemap) or you can manually type in the words/phrases and urls that you want to see in your cloud. You can also customize the colours, fonts, size, and alignment of your cloud's words. Here's an example of a simple cloud created in this generator.

With a little creativity, you can organize this cloud in an aesthetic way, to match your site. Two examples are visible below - notice how each word clicks through to a major part of the site. To get an idea on how to customize the styles to fit these graphics, check out the source code for the two clouds below.
Click on image to view Tag Cloud

Folksonomies as Social Organizer

Folksonomies are different than the classic taxonomy used to organize hierarchies of information. A folksonomy is set up to be user-governed, organized by the tags assigned to content by the user. It is these tags that shape the words and phrases evident in a tag cloud. The capabilities of folksonomies really stand the test, when applied to social media types of data. A classic example, is Flickr's method of organizing images uploaded and tagged by users from around the world. Sites like Flickr allow tag clouds to be used to indicate top tags for searches and collaboration. A common method used by web site owners and bloggers, is to install a cloud tag widget right onto their site to present a visual organization of blog entries or site documents. For some excellent examples, check out Smashing Magazine's article, Tag Clouds Gallery: Examples And Good Practices.

Folksonomies as Analyzers


Finally, another excellent way that folksonomies can serve web designers and site owners, is to organize key words, phrases, and themes in a text document or a set of data. As mentioned previously, this could be a very promising practice in the analysis of qualitative research data, in helping the researcher to see the main themes in their data.

An example of using tag clouds to highlight text documents, is the tag cloud formed by words in President Obama's recent inauguration speech, available on Flickr.

Click image for larger view


Another example is a tag cloud generated to highlight and showcase main themes in an rss fed site, such as a blog. An example is this tag cloud created from my own PhD research blog.

Click image for larger view


This latter tag cloud was created using the online tag cloud generator at Wordle Tag Cloud Generator. This generator will let you make a cloud text from text that you copy and paste right into the form field on the site, or from an rss fed blog or other site.

I mounted mine in a cloud styled graphic. If you would like a cloud graphic to use for your tag cloud, you can download the zip file below with several renditions of a cloud background in a few different sizes.

Free Cloud Graphic Backgrounds for your Tag Clouds


Click image to download my 27 Cloud Background Graphics (1.66 MB zipped)