Sunday, March 28, 2010

XML & XSL

What is XML?
a meta language that allows you to create and format your own document markups
a method for putting structured data into a text file; these files are
- easy to read
- unambiguous
- extensible
- platform-independent

What is XML?
a family of technologies:
- XML 1.0
- Xlink
- Xpointer & Xfragments
- CSS, XSL, XSLT
- DOM
- XML Namespaces
- XML Schemas

XML Facts
officially recommended by W3C since 1998
a simplified form of SGML (Standard Generalized Markup Language)
primarily created by Jon Bosak of Sun Microsystems

XML Facts
important because it removes two constraints which were holding back Web developments:
dependence on a single, inflexible document type (HTML);
the complexity of full SGML, whose syntax allows many powerful but hard-to-program options

Quick Comparison
HTML
- uses tags and attributes
- content and formatting can be placed together

text
- tags and attributes are pre-determined and rigid
XML
- uses tags and attributes
- content and format are separate; formatting is contained in a stylesheet
- allows user to specify what each tag and attribute means

Importance of being able to define tags and attributes
document types can be explicitly tailored to an audience
the linking abilities are more powerful
bidirectional and multi-way link
link to a span of text, not just a single point

The pieces
there are 3 components for XML content:
- the XML document
- DTD (Document Type Declaration)
- XSL (Extensible Stylesheet Language)
The DTD and XSL do not need to be present in all cases

A well-formed XML document
elements have an open and close tag, unless it is an empty element
attribute values are quoted
if a tag is an empty element, it has a closing / before the end of the tag
open and close tags are nested correctly
there are no isolated mark-up characters in the text (i.e. < > & ]]>)
if there is no DTD, all attributes are of type CDATA by default
A valid XML document
has an associated DTD and complies with the constraints in the DTD

XML basics
the XML declaration
- not required, but typically used
- attributes include:
version
encoding – the character encoding used in the document
standalone –if an external DTD is required



XML basics
to specify a DTD for the document
2 forms:



XML basics
comments
- contents are ignored by the processor
- cannot come before the XML declaration
- cannot appear inside an element tag
- may not include double hyphens
XML basics
text an element
- can contain text, other elements or a combination
- element name:
-must start with a letter or underscore and can have any number of letters, numbers, hyphens, periods, or underscores
- case-sensitive;
- may not start with xml

XML basics
Elements (continued)
can be a parent, grandparent, grandchild, ancestor, or descendant
each element tag can be divided into 2 parts – namespace:tag name

XML basics
Namespaces:
- not mandatory, but useful in giving uniqueness to an element
- help avoid element collision
- declared using the xmlns:name=value attribute; a URI is recommended for value
- can be an attribute of any element; the scope is inside the element’s tags

XML basics
Namespaces (continued):
- may define more than 1 per element
- if no name given after xmlns prefix, uses the default namespace which is applied to all elements in the defining element without their own namespace
- can set default namespace to an empty string to ensure no default namespace is in use within an element

XML basics
key=”value” an attribute
- describes additional information about an element
text
- value must always be quoted
- key names have same restrictions as element names
- reserved attributes are
- xml:lang
- xml:space
XML basics
OR empty element
- has no text
- used to add nontextual content or to provide additional information to parser
processing instruction
- for attributes specific to an outside application
XML basics

- to define special sections of character data which the processor does not interpret as markup
- anything inside is treated as plain text



XSLT
eXtensible Stylesheet Language Transformations

Agenda
XSLT overview
Understanding XPath notation
Processing elements in XSLT templates

XSLT Overview
W3C technology for transforming an XML document into some other text-based form: XML, HTML, WML, etc.
XSLT Versions
– XSLT 1.0 (Nov 1999)
– XSLT 2.0 (Nov 2002)
Official web site:
http://www.w3c.org/Style/XSL


eXtensible Stylesheet Language (XSL)
XSL is a language for expressing stylesheets.
– XSLT
• Transforming XML document
– Xpath
• Expression language used by XSLT to locate elements and attributes in an XML doc.
– XSL-FO (Formatting Objects)
• Specifies formatting properties for rendering the doc to some other format.
XSLT Advantages & Disadvantages
Advantages:
Easy display formatted XML data in browser.
Easier to modify when XML data format changes than to modify DOM and SAX parsing code.
Can be used with database queries that return XML.
Disadvantages:
Memory intensive, performance hit.
Difficult to implement complex business rules.
Have to learn new language.


XSLT Processors
Apache Xalan
http://xml.apache.org/xalan

SAXON
http://saxon.sourceforge.net

Microsoft’s XML Parser 4.0 (MSXML)
http://www.microsoft.com/xml
XSLT and Java
JDK 1.4 contains all necessary classes
– See javax.xml.transform package.
Lower versions require downloading XSLT processor and SAX parser.
XML Transformation Example

Running Example
we can run an XML which includes XSL into IE.

Run Xalan from the command line:
java org.apache.xalan.xslt.Process -in hello.xml -xsl hello.xsl
Run our Transform.java from the command line.
Java Transform hello.xml hello.xsl

Note: - Here Transform is Java Class.
Hello.xml—is sample xml
hello.xsl---- is sample xsl


XPath
XPath is an expression language used to:
– Find nodes and attributes (location paths) in the XML file
– Test boolean conditions
– Manipulate strings
– Perform numerical calculations




Location Paths
Example:




Can be relative or absolute
Each step in path separated by / or //
Evaluated in reference to the current node

Location Paths (cont.)
Match root node





Match all children





Location Paths (cont.)
Match an element
– Use // to indicate zero or more elements may occur between slashes









Location Paths (cont.)
Match a specific element
– Use […] as a predicate filter to select a particular element













Location Paths (cont.)
Match a specific attribute
– Use @attribute to select a particular attribute










XSLT Stylesheet Elements
Matching and selection templates
– xsl:template
– xsl:apply-templates
– xsl:value-of
Branching elements
– xsl:for-each
– xsl:if
– xsl:choose
XSLT template Element
xsl:template match=“XPath”
– Defines a template rule for producing output
– Is applied only to nodes that match the pattern
– Invoked by using








Your name is

XSLT value-of Element
xsl:value-of select=“expression”
– Evaluates the expression as a string and outputs the result
– Applied only to the first match
– “.” selects the text value of the current node


John Doe


Your name is

XSLT for-each Element
xsl:for-each select=“expression”
– Processes each node selected by the XPath expression
– Applied only to the first match
– “.” selects the text value of the current node


Kim Smith
Jack Black







XSLT if Element
xsl:if test=“expression”
– Evaluates the expression and if true applies the template
– No if-else, use choose instead








XSLT choose Element
xsl:choose
– Selects any number of alternatives
– Use instead of if-else, or switch statement used in other programming languages



Missing value!





XSLT Functions
Large set of utility functions
Examples:
– count : returns the number of nodes in a node set

select="count(/addressbook/entry)"/>

– starts-with : returns true if string starts with a given character


Starts with ‘h’

Wednesday, February 18, 2009

Friday, January 16, 2009

Java Virtual Machine (JVM)

Java Virtual Machine (JVM)

JVM is an abstract computer .Every JVM must have its specification defines certain features, but leaves many choices to the designers of each implementation.

JVM’s main job:-
1.JVM’s main job is to load class files and execute the byte codes they contain.

The JVM contains a class loader, which loads the class files from both the program and the java API. Only those class files from the java API that are actually needed by a running program are loaded into the virtual machine.

The byte codes are executed in an “Execution Engine”, which is one part of the virtual machine that can vary in different implementation. The simplest kind of execution engine just interprets the byte codes one at a time. Another kind of execution engine one that is faster but requires more memory is a “just-in-time compiler”.In this scheme the byte codes of a method are compiled to a native machine code the first time method is invoked. The native machine code for the method is then cached, so it can be reused the next time that same method is invoked.

The class loader adds security by separating the name spaces for the class of the local file system and those imported from network sources, this limit any ”Trojan-Horse” application because built in classes are always checked first. When all classes have been loaded, the memory layout of the executable file is determined. At this point, Specific memory addresses are assigned to symbolic references and a lookup table is created. Because memory layout occurs at runtime, a java interpreter adds protection against illegal addressing of code that can send a program into the operating system.

Java byte code passes several tests before actually running on your machine. The program runs the code through a byte code verifier that tests the format of code fragments and applies a theorem prover to rule-check code fragments for illegal code that forges pointers, violates access rights on objects, or attempts to change object type or class.

The byte code verifier makes four passes on the code in a program. It ensures that the code adheres to the JVM specifications and does not violate system integrity. If the verifier completes all four passes without returning an error message, then you are ensured the following.

The class adheres to the class file format of the following.

• There are no access restriction violations.
• The code causes no operand stack overflow or underflows.
• The types of parameters to all operational code are known always to be correct.
• No illegal data conversations have occurred, such as converting integers to pointers.
• Object field accesses are known to be legal.

Public static void main (String args [])

The public keyword is an access specifier, which allows the programmer to control the visibility of class members.
When a class member is proceded by public, then that member may be accessed by code outside the class in which it is declared.
In this case main () must be declared as public, since it must be called by code outside of its class when the program is started.
The keyword static allows main () to be called without having to instantiate a particular instance of the class. This is necessary since main () is called by the java interpreter before any objects are made.
The keyword void simply tells the compiler that main () does not return value.

Java compiler will compile classes that do not contain a main () method.
But the java interpreter has no way to run these classes. So, if you had typed Main instead of main, the compiler would still compile your program. However the java interpreter would report an error because it would be unable to find the main () method.




When a Java virtual machine runs a program, it needs memory to store many things, including byte codes and other information it extracts from loaded class files, objects the program instantiates, parameters to methods, return values, local variables, and intermediate results of computations. The Java virtual machine organizes the memory it needs to execute a program into several runtime data areas.
Each instance of the Java virtual machine has one method area and one heap. These areas are shared by all threads running inside the virtual machine. When the virtual machine loads a class file, it parses information about a type from the binary data contained in the class file. It places this type information into the method area. As the program runs, the virtual machine places all objects the program instantiates onto the heap. See Figure 1-2 for a graphical depiction of these memory areas.




As each new thread comes into existence, it gets its own pc register (program counter) and Java stack. If the thread is executing a Java method (not a native method), the value of the pc register indicates the next instruction to execute. A thread's Java stack stores the state of Java (not native) method invocations for the thread. The state of a Java method invocation includes its local variables, the parameters with which it was invoked, its return value (if any), and intermediate calculations. The state of native method invocations is stored in an implementation-dependent way in native method stacks, as well as possibly in registers or other implementation-dependent memory areas.
The Java stack is composed of stack frames (or frames). A stack frame contains the state of one Java method invocation. When a thread invokes a method, the Java virtual machine pushes a new frame onto that thread's Java stack. When the method completes, the virtual machine pops and discards the frame for that method.
The Java virtual machine has no registers to hold intermediate data values. The instruction set uses the Java stack for storage of intermediate data values.


See Figure 1-3 for a graphical depiction of the memory areas the Java virtual machine creates for each thread. These areas are private to the owning thread. No thread can access the pc register or Java stack of another thread.





Figure 1-3. Runtime data areas exclusive to each thread.
Figure 1-3 shows a snapshot of a virtual machine instance in which three threads are executing. At the instant of the snapshot, threads one and two are executing Java methods. Thread three is executing a native method.
In Figure 5-3, as in all graphical depictions of the Java stack in this book, the stacks are shown growing downwards. The "top" of each stack is shown at the bottom of the figure. Stack frames for currently executing methods are shown in a lighter shade. For threads that are currently executing a Java method, the pc register indicates the next instruction to execute. In Figure 5-3, such pc registers (the ones for threads one and two) are shown in a lighter shade. Because thread three is currently executing a native method, the contents of its pc register--the one shown in dark gray--is undefined.

Data Types
Both the data types and operations are strictly defined by the Java virtual machine specification. The data types can be divided into a set of primitive types and a reference type. Variables of the primitive types hold primitive values, and variables of the reference type hold reference values. Reference values refer to objects, but are not objects themselves. Primitive values, by contrast, do not refer to anything. They are the actual data themselves. You can see a graphical depiction of the Java virtual machine's families of data types in Figure 5-4.




Figure 1-4. Data types of the Java virtual machine.
All the primitive types of the Java programming language are primitive types of the Java virtual machine. Although boolean qualifies as a primitive type of the Java virtual machine, the instruction set has very limited support for it. When a compiler translates Java source code into byte codes, it uses ints or bytes to represent booleans. In the Java virtual machine, false is represented by integer zero and true by any non-zero integer. Operations involving boolean values use ints. Arrays of boolean are accessed as arrays of byte, though they may be represented on the heap as arrays of byte or as bit fields.
The reference type of the Java virtual machine is cleverly named reference. Values of type reference come in three flavors: the class type, the interface type, and the array type. All three types have values that are references to dynamically created objects. The class type's values are references to class instances. The array type's values are references to arrays, which are full-fledged objects in the Java virtual machine. The interface type's values are references to class instances that implement an interface. One other reference value is the null value, which indicates the reference variable doesn't refer to any object.
The Class Loader Subsystem
The Java virtual machine contains two kinds of class loaders: a bootstrap class loader and user-defined class loaders. The bootstrap class loader is a part of the virtual machine implementation, and user-defined class loaders are part of the running Java application. Classes loaded by different class loaders are placed into separate name spaces inside the Java virtual machine.
Loading, Linking and Initialization
The class loader subsystem is responsible for more than just locating and importing the binary data for classes. It must also verify the correctness of imported classes, allocate and initialize memory for class variables, and assist in the resolution of symbolic references. These activities are performed in a strict order:
1. Loading: finding and importing the binary data for a type
2. Linking: performing verification, preparation, and (optionally) resolution
a. Verification: ensuring the correctness of the imported type
b. Preparation: allocating memory for class variables and initializing the memory to default values
c. Resolution: transforming symbolic references from the type into direct references.
3. Initialization: invoking Java code that initializes class variables to their proper starting values.
The Constant Pool
For each type it loads, a Java virtual machine must store a constant pool. A constant pool is an ordered set of constants used by the type, including literals (string, integer, and floating point constants) and symbolic references to types, fields, and methods. Entries in the constant pool are referenced by index, much like the elements of an array. Because it holds symbolic references to all types, fields, and methods used by a type, the constant pool plays a central role in the dynamic linking of Java programs.
The Heap
Whenever a class instance or array is created in a running Java application, the memory for the new object is allocated from a single heap. As there is only one heap inside a Java virtual machine instance, all threads share it. Because a Java application runs inside its "own" exclusive Java virtual machine instance, there is a separate heap for every individual running application. There is no way two different Java applications could trample on each other's heap data. Two different threads of the same application, however, could trample on each other's heap data. This is why you must be concerned about proper synchronization of multi-threaded access to objects (heap data) in your Java programs.
The Java virtual machine has an instruction that allocates memory on the heap for a new object, but has no instruction for freeing that memory. Just as you can't explicitly free an object in Java source code, you can't explicitly free an object in Java bytecodes. The virtual machine itself is responsible for deciding whether and when to free memory occupied by objects that are no longer referenced by the running application. Usually, a Java virtual machine implementation uses a garbage collector to manage the heap.
Garbage Collection
A garbage collector's primary function is to automatically reclaim the memory used by objects that are no longer referenced by the running application. It may also move objects as the application runs to reduce heap fragmentation.
A garbage collector is not strictly required by the Java virtual machine specification. The specification only requires that an implementation manage its own heap in some manner. For example, an implementation could simply have a fixed amount of heap space available and throw an OutOfMemory exception when that space fills up. While this implementation may not win many prizes, it does qualify as a Java virtual machine. The Java virtual machine specification does not say how much memory an implementation must make available to running programs. It does not say how an implementation must manage its heap. It says to implementation designers only that the program will be allocating memory from the heap, but not freeing it. It is up to designers to figure out how they want to deal with that fact.
The Java Stack
When a new thread is launched, the Java virtual machine creates a new Java stack for the thread. As mentioned earlier, a Java stack stores a thread's state in discrete frames. The Java virtual machine only performs two operations directly on Java Stacks: it pushes and pops frames.
The method that is currently being executed by a thread is the thread's current method. The stack frame for the current method is the current frame. The class in which the current method is defined is called the current class, and the current class's constant pool is the current constant pool. As it executes a method, the Java virtual machine keeps track of the current class and current constant pool. When the virtual machine encounters instructions that operate on data stored in the stack frame, it performs those operations on the current frame.
When a thread invokes a Java method, the virtual machine creates and pushes a new frame onto the thread's Java stack. This new frame then becomes the current frame. As the method executes, it uses the frame to store parameters, local variables, intermediate computations, and other data.
A method can complete in either of two ways. If a method completes by returning, it is said to have normal completion. If it completes by throwing an exception, it is said to have abrupt completion. When a method completes, whether normally or abruptly, the Java virtual machine pops and discards the method's stack frame. The frame for the previous method then becomes the current frame.
All the data on a thread's Java stack is private to that thread. There is no way for a thread to access or alter the Java stack of another thread. Because of this, you need never worry about synchronizing multi- threaded access to local variables in your Java programs. When a thread invokes a method, the method's local variables are stored in a frame on the invoking thread's Java stack. Only one thread can ever access those local variables: the thread that invoked the method.
Like the method area and heap, the Java stack and stack frames need not be contiguous in memory. Frames could be allocated on a contiguous stack, or they could be allocated on a heap, or some combination of both. The actual data structures used to represent the Java stack and stack frames is a decision of implementation designers. Implementations may allow users or programmers to specify an initial size for Java stacks, as well as a maximum or minimum size.
The Stack Frame
The stack frame has three parts: local variables, operand stack, and frame data. The sizes of the local variables and operand stack, which are measured in words, depend upon the needs of each individual method. These sizes are determined at compile time and included in the class file data for each method. The size of the frame data is implementation dependent.
When the Java virtual machine invokes a Java method, it checks the class data to determine the number of words required by the method in the local variables and operand stack. It creates a stack frame of the proper size for the method and pushes it onto the Java stack.




Figure 1-5 shows a graphical depiction of a thread that invokes a native method that calls back into the virtual machine to invoke another Java method. This figure shows the full picture of what a thread can expect inside the Java virtual machine. A thread may spend its entire lifetime executing Java methods, working with frames on its Java stack. Or, it may jump back and forth between the Java stack and native method stacks.


Figure 5-13. The stack for a thread that invokes Java and native methods.
As depicted in Figure 5-13, a thread first invoked two Java methods, the second of which invoked a native method. This act caused the virtual machine to use a native method stack. In this figure, the native method stack is shown as a finite amount of contiguous memory space. Assume it is a C stack. The stack area used by each C-linkage function is shown in gray and bounded by a dashed line. The first C-linkage function, which was invoked as a native method, invoked another C-linkage function. The second C-linkage function invoked a Java method through the native method interface. This Java method invoked another Java method, which is the current method shown in the figure.
As with the other runtime memory areas, the memory they occupied by native method stacks need not be of a fixed size. It can expand and contract as needed by the running application. Implementations may allow users or programmers to specify an initial size for the method area, as well as a maximum or minimum size.
Native Method Interface
Java virtual machine implementations aren't required to support any particular native method interface. Some implementations may support no native method interfaces at all. Others may support several, each geared towards a different purpose.
Sun's Java Native Interface, or JNI, is geared towards portability. JNI is designed so it can be supported by any implementation of the Java virtual machine, no matter what garbage collection technique or object representation the implementation uses. This in turn enables developers to link the same (JNI compatible) native method binaries to any JNI-supporting virtual machine implementation on a particular host platform.

Tuesday, January 13, 2009

Ajax Tutorial

Need Of Ajax

To build Rich Internet Applications

What is the Rich Internet Applications?

--are the web applications that have the functionality and features of traditional desktop applications.

--it typically runs in web browser(not need any softwarre installation)

--transfers the processing neccessary for the user interface to webclient and keep the bulk of the back on to server.

Benifits

--Richer

--More Responsive

--Client /Server Balance

--Asynchronous Communication

--NetWork Efficiency

Introduction Of AJAX:-

Ajax, or AJAX, is a web development technique used for creating interactive web applications.

The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change.

This is intended to increase the web page's interactivity, speed, functionality, and usability.

What actually Ajax

(Js+Css+Dom+xmlHttpRequest+xml)àAJAX----Jesse James Garrett

Ajax is n’t a technology.It’s really several technologies,each flourishing in its own right,coming together in powerful as Ajax.

--Standards-based presentation using XHTML and Css

--Dynamic display and interaction using the Document Object Model(DOM)

--Data interchange and manipulation using XML and XLST

--Asynchronous data retrieval using XmlHTTPRequest.

And JavaScript for carrying events from HTML body to HTML head.

XmlHttpRequest:-

w A JavaScript Class that lets you make asynchronous Http request from JavaScript

w Make an Http Rrequest from a Java Script Event

w A call back JavaScript function is invoked at each state of HTTP request and response

How Ajax Works?

How Ajax Works with Simple Example:-

Steps:-

1. A client event occurs.

2. An XMLHttpRequest object is created and configured.

3. The XMLHttpRequest object makes a call.

4. The request is processed by the ValidateServlet.

5. The ValidateServlet returns an XML document containing the result.

6. The XMLHttpRequest object calls the callback() function and processes the result.

7. The HTML DOM is updated.

Why Ajax Become Popular

Sites like

Google Mail (Gmail.com) ,

Google Maps (google.com/maps),

Google Groups,Google Suggest,

Flickr,

and Amazon’s A9.com have really made AJAX popular.

These projects demonstrate that Ajax is not another technology that only works in a laboratory, but also practical for real-world applications And also Ajax applications can be any size, from the very simple, single-function Google Suggest to the very complex and sophisticated Google Maps.

w RichInternet Applications without Flash

w Save BandWidth & Increase Usability

How Ajax is Different from normal Applications

Classic web application model works like this:-

Most user actions in the interface trigger an HTTP request back to a web server. The server does some processing — retrieving data, crunching numbers, talking to various legacy systems — and then returns an HTML page to the client.

This approach makes a lot of technical sense, but it doesn’t make for a great user experience and arise questions like:-

While the server is doing its thing, what’s the user doing?

--Waiting.

if we were designing the Web from scratch for applications, we wouldn’t make users wait around. Once an interface is loaded, why should the user interaction come to a halt every time the application needs something from the server? In fact, why should the user see the application go to the server at all?

Ajax Application Model Works Like this:-

An Ajax application eliminates the start-stop-start-stop nature of interaction on the Web by introducing an intermediary — an Ajax engine — between the user and the server. It seems like adding a layer to the application would make it less responsive, but the opposite is true.

Instead of loading a webpage, at the start of the session, the browser loads an Ajax engine — written in JavaScript .

The Engine Responsibilities:-

1) Rendering the interface the user sees

2) Communicating with the server on the user’s behalf.

The Ajax engine allows the user’s interaction with the application to happen asynchronously — independent of communication with the server. So the user is never staring at a blank browser

Every user action that normally would generate an HTTP request takes the form of a JavaScript call to the Ajax engine instead. Any response to a user action that doesn’t require a trip back to the server — such as simple data validation, editing data in memory, and even some navigation — the engine handles on its own. If the engine needs something from the server in order to respond — if it’s submitting data for processing, loading additional interface code, or retrieving new data — the engine makes those requests asynchronously, usually using XML, without stalling a user’s interaction with the application.

Ajax Frame Works

The goal of the framework is to provide the Ajax engine.

Framework eases the work of the Ajax programmer at two levels: -

On the client side:-

It offers JavaScript functions to send requests to the server.

On the server side:-

It processes the requests, searches for the data, and transmits them to the browser...

4 Types of Ajax FrameWorks:-

1) Direct Ajax frameworks:-

These frameworks are generally smaller. They are commonly used for a web site such as a shopping experience, but not for a web application.

2)Ajax component frameworks

These frameworks offer pre-built components, such as tabbed panes, which automatically create and manage their own HTML. Components are generally created via JavaScript or XML tags, or by adding special attributes to normal HTML elements. These frameworks are generally larger, and intended for web applications rather than web sites.

3) Server-driven Ajax frameworks

Several frameworks offer a server-side component-based development model with some degree of Ajax support.

4) Frameworks by language/platform

JavaScript-- JavaScript Frameworks are browser-side frameworks

Ex:-JQuery,Prototype,Yahoo UI Library,Dojo Tool Kit,Qooxdoo,Clean Ajax,Ext, Spry framework, Script.aculo.us

C++ -- C++ Toolkits are interfaces to AJAX technology.

Ex:-Wt(witty)

Java -- Such frameworks permit the use of Java web services interactively with web pages.

  • DWR, a remoting toolkit and DHTML library
  • Google Web Toolkit, a widget library with Java to Javascript compiler
  • ThinWire, open source Swing-like AJAX framework for developing web applications
  • Echo, a java framework for AJAX servlets

.NET

ASP.NET AJAX, Ajax.NET Professional

PHP

Xajax,Sajax

  • Popular Frame works?

Yahoo,DWR,DOJO

Ajax Benefits:-

--Richer User Interface

--More Responsive

--Client /Server Balance

--NetWork Efficiency

Ajax More Popular Sites:-

w www.w3schools.com

w www.protopage.com

w www.ajaxtoolbox.com

w www.pressdisplay.com,www.tadalist.com

w www.youtube.com,www.backbase.com,www.flagr.com

Ajax Sequence Diagram:-

Why it is Bad:-

  1. Disabled scripting
  2. Loss of visibility to search engines
  3. Building an Ajax-Powered Application will increase development time.
  4. Debugging is very Difficult.
  5. Breaks Back button support.
  6. URL’s doesn’t change as state Changes.