Wednesday, April 25, 2007

WK13 - Adobe Flex

What's Flex?

Flex was initially released as a J2EE application or JSP tag library that compiles MXML and ActionScript on-the-fly into Flash applications (binary SWF files). Later versions of Flex support the creation of static files that are compiled at authoring time and can be deployed online without the need for a server license.

The goal of Flex is to allow Web application developers to quickly and easily build rich Internet applications. In a multi-tiered model, Flex applications serve as the presentation tier.

Flex features development of graphic user interfaces using an XML-based language called MXML. Flex comes with various components and features that make capabilities such as web services, remote objects, drag and drop, sortable columns, charting/graphing, built in animation effects, and other interface interactions simple. Since the client only loads once, application workflow is significantly improved versus HTML based applications (eg. PHP, ASP, JSP, CFMX) which require executing templates on the server with every action. Flex's language and file structure are seeking to decouple application logic from design.

The Flex server also acts as a gateway to allow the client to communicate with XML Web Services and Remote Objects (such as Coldfusion CFCs, Java Classes, and anything else that supports the Action Message Format).

Commonly mentioned as alternatives to Flex are OpenLaszlo, Ajax and Windows Presentation Foundation technologies.

Flex Application Development Process

  1. Define an application interface using a set of pre-defined components (forms, buttons, and so on)
  2. Arrange components into a user interface design
  3. Use styles and themes to define the visual design
  4. Add dynamic behavior (one part of the application interacting with another, for example)
  5. Define and connect to data services as needed
  6. Build the source code into a SWF file that runs in the Flash Player
Reference:

Saturday, April 14, 2007

WK12 - Sematic Web ? Web 3.0 ?

Web 3.0
Web 2.0 came to describe almost any site, service, or technology that promoted sharing and collaboration right down to the Net's grass roots. That includes blogs and wikis, tags and RSS feeds, del.icio.us and Flickr, MySpace and YouTube. Because the concept blankets so many disparate ideas, some have questioned how meaningful—and how useful—it really is, but there's little doubt it owns a spot in our collective consciousness. Whether or not it makes sense, we now break the history of the Web into two distinct stages: Today we have Web 2.0, and before that there was Web 1.0.
Which raises the question: What will Web 3.0 look like?
Yes, it's too early to say for sure. In many ways, even Web 2.0 is a work in progress. But it goes without saying that new Net technologies are always under development—inside universities, think tanks, and big corporations, as much as Silicon Valley start-ups—and blogs are already abuzz with talk of the Web's next generation.
To many, Web 3.0 is something called the Semantic Web, a term coined by Tim Berners-Lee, the man who invented the (first) World Wide Web. In essence, the Semantic Web is a place where machines can read Web pages much as we humans read them, a place where search engines and software agents can better troll the Net and find what we're looking for. "It's a set of standards that turns the Web into one big database," says Nova Spivack, CEO of Radar Networks, one of the leading voices of this new-age Internet.

Semantics and Search
The Semantic Web, like Web 2.0, is a nebulous concept. "Considering that the very word semantic is all about meaning, it's ironic that the term Semantic Web is so ill defined," says Radar Networks' Spivack. Some, like Spivack, fall into the Berners-Lee camp. Others, like AdaptiveBlue's Iskold, believe in the artificial-intelligence method. And then there are the others: the semantic searchers.
Rather than providing automatic information retrieval, semantic search engines seek to improve on the Google-like search model we've grown so accustomed to. The idea is to move beyond mere keyword searches to a better understanding of natural-language queries. "Right now, search engines can't tell the difference between Paris Hilton and the Hilton in Paris," says Jeff Bates, cofounder of Slashdot, one of the driving forces behind Web 2.0. "There's millions of dollars being spent trying to better optimize search, and that's a big part of what the Semantic Web will be."
This kind of natural-language processing has been in development for years, but it, too, has found its way onto the public Web. Several start-ups, including Powerset and TextDigger, are hard at work on semantic search engines based on the open-source academic project WordNet. It should be noted, however, that natural-language search could very well play a role in the Berners-Lee Semantic Web. His is merely a framework to enable all sorts of apps, and semantic search might be one of them.

A Web Beyond Words
Though Web 3.0 is most often associated with the Semantic Web, the two are far from synonymous. Countless other concepts are poised to play a role in our online future, and many go beyond semantics, using space, images, and sound.
One possibility is the so-called 3D Web, a Web you can walk through. Many see this as an extension of the "virtual worlds" popping up on today's Internet. In the future, they say, the Web will be one big alternate universe reminiscent of Second Life and There.com. But others scoff at this notion, claiming it's just a less-efficient version of today's Internet. They see the 3D Web not as an alternate universe but as a re-creation of our existing world. On the 3D Web, you could take a virtual stroll through an unfamiliar neighborhood shopping for houses or visit famous sites you've never seen. Google Earth already offers an experience not far removed from this. "Today, with a service like Google Earth, you can zoom in on Seattle and see how tall the buildings are," says Syracuse University's Lankes. "It really isn't that much of a leap to actually put you, or your avatar, in Seattle and let you walk around."
The trouble is, 3D only goes so far. It doesn't enhance the very 2D world of words, pictures, and video. For many, the more interesting idea is a mediacentric Web, offering not just language-based search but pure media search. Today we depend on keywords even when searching for images, videos, and songs—a woefully inadequate system. Companies like Ojos and Polar Rose are working to reinvent media search, hinting at a world where we search for media with other media—not just keywords (see "Look Ma, No Keywords!" opposite).
Then there's the Pervasive Web, a Web that's everywhere. Today's Web already extends beyond the desktop, to cell phones and handhelds, but it might extend even further—into our everyday surroundings. At the MIT Media Lab, Maes is toying with the idea of Web-connected bathroom mirrors. As you brush your teeth in the morning, there's the latest news. Meanwhile, with his blog, the End of Cyberspace, Alex Soojung-Kim Pang of the Institute for the Future envisions the Web automating much of what goes on in the home. Your windows, for instance, could automatically open when the weather changes. With help from mesh networks—wireless networks consisting of tiny nodes that can route data to and from almost anywhere—the possibilities are nearly endless.
Reference:

Wednesday, April 4, 2007

WK11 - Free tools available for ASP.NET.

MonoDevelop

MonoDevelop is an open source GNOME IDE primarily designed for C# and other .NET languages.

It runs on Linux, Mac OS X and latest version is 0.13/22 Feb 2007.

Feature: 1) class management; 2) Built-in Help; 3) Code Completion; 4) GUI Designer; 5) Project Support.

Reference:

Wikipedia - http://en.wikipedia.org/wiki/MonoDevelop

MonoDevelop website – http://www.monodevelop.com


SharpDevelop

It is a free and open source IDE for C#, VB.NET and Boo programming languages. There is a port for MonoDevelop which runs on other operating systems. Latest version is 2.1.0.2429/Mar 7, 2007.

Feature: 1) Windows Forms designer for C#, VB.NET and Boo; 2) Code Completion; 3) integrated debugger; 4) Declaration tooltips; 5) Code AutoInsert; 6) Subversion integration; 7) XML documentation preview; 8) Intelligent braces; 9) Easily extensible with add-ins and external tools; 10) Rich project options; 11) Syntax highlighting for C#, HTML, ASP, ASP.NET, VBScript, VB.NET, XML;

Reference:

SharpDevelop - http://www.sharpdevelop.com/OpenSource/SD/

Wikipedia - http://en.wikipedia.org/wiki/SharpDevelop


Microsoft Visual Studio Express

It is a set of free charge of integrated development environments developed by Microsoft that are lightweight versions of the Microsoft Visual Studio 2005. The idea of express editions, according to Microsoft, is to provide a streamlined, easy-to-use and easy-to-learn IDEs for less serious users, such as hobbyists and students.

It consists of 6 separate products: Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, Visual C++ 2005 Express Edition, Visual J# 2005 Express Edition, Visual Web Developer 2005 Express Edition, SQL Server 2005 Express Edition.

Reference:

Microsoft Visual Studio Express Official Website - http://msdn.microsoft.com/vstudio/express/

Wikipedia - http://en.wikipedia.org/wiki/Visual_Web_Developer_2005_Express_Edition

Sunday, April 1, 2007

WK10 - Web 2.0 Reading Plan


Here is my web 2.0 reading plan for the Easter Holiday.

  • Programmable Web: Mashups and the Web as Platform : Authoritative source for Web 2.0 Mashups and APIs. News, analysis, and more. Because the world is your programmable oyster. http://www.programmableweb.com/
  • Programmable Web: Web 2.0 Reference Center http://www.programmableweb.com/reference
  • Relax, Everything Is Deeply Intertwingled: Web 2.0 http://ifindkarma.typepad.com/relax/2004/10/web_20.html
  • The Best of Web 2.0 - Guides by Digital Trends:The Best of Web 2.0 - We gather the best Web 2.0 sites that we could find and show you why they make a difference. - Digital Trends is your final destination for unbiased guides and product information. At Digital Trends we promise to provide professional http://reviews.digitaltrends.com/guide46.html

Wednesday, March 28, 2007

WK 10 - What's make J2EE lower cost development?

Apache Struts is an open-source framework for developing Java EE web applications. It uses and extends the Java Servlet API to encourage developers to adopt a model-view-controller (MVC) architecture. It was originally created by Craig McClanahan and donated to the Apache Foundation in May, 2000. Formerly located under the Apache Jakarta Project and known as Jakarta Struts, it became a top level Apache project in 2005.
Apache Ant is a software tool for automating software build processes. It is similar to make but is written in 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 has its 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.

The Spring Framework provides solutions to many technical challenges faced by Java developers and organizations wanting to create applications based on the Java platform. Because of the sheer vastness of the functionality that is offered it can be hard to distinguish the major building blocks the framework is composed of. The Spring Framework is not exclusively linked to the Java Enterprise platform although its far-reaching integration in this area is an important reason for its popularity.
The Spring Framework is probably best known for offering features required to effectively create complex business applications outside of the programming models that historically have been dominant in the industry. Next to that it is also credited for introducing previously unfamiliar functionalities into today's mainstream development practices, even beyond the Java platform.
This amounts to a framework that offers a consistent model and makes it applicable to most application types that are created on top of the Java platform today. The Spring Framework is considered to implement one way of working based on best practices and industry standards and making it available to many domains in Java.

Eclipse is an open-source, platform-independent software framework for delivering what the project calls "rich-client applications", as opposed to "thin client" browser-based applications. So far this framework has typically been used to develop Integrated Development Environments (IDEs), such as the Java IDE called Java Development Toolkit (JDT) and compiler (ECJ) that comes as part of Eclipse (and which are also used to develop Eclipse itself). However, it can be used for other types of client application as well, such as the BitTorrent client Azureus.
Eclipse is also a community of users, constantly extending the covered application areas. An example is the recently created Eclipse Modeling Project, covering most areas of Model Driven Engineering.

NetBeans refers to both a platform for the development of Java desktop applications, and an integrated development environment (IDE) developed using the NetBeans Platform.
The NetBeans Platform allows applications to be developed from a set of modular software components called modules. A module is a Java archive file that contains Java classes written to interact with the NetBeans Open APIs and a manifest file that identifies it as a module. Applications built on modules can be extended by adding new modules. Since modules can be developed independently, applications based on the NetBeans platform can be easily and powerfully extended by third party developers.

Friday, March 23, 2007

WK9 - LAMP vs. WISA

As we know LAMP stands for Linux, Apache, MySQL, PHP, an alternative dynamic web platform, WISA is no doubt another good choice. WISA stands for Windows, IIS (Internet Information Services), MS SQL, and ASP.


The OS is platform on which all the other components run. Windows is easier to use, however, advanced controls needed to administer a dynamic web-site are often buried or only available by modifying configuration files. For small websites, the hosting server is not allowing us to access to OS level controls. For large websites, you have your own dedicated machine, or located in-house. So the choosing is based on other components we prefer.


The web server is the program that takes request for pages from a browser, interprets the request, and returns the results. IIS and Apache both are free. IIS is tightly integrated with Windows, and is easy to install, and is part of the default installation of Windows 2000/2003. Apache is open-source, meaning to advanced programmers can customize the way it runs and have more flexibility with if. Generally speaking, Apache is more secure than IIS, but its security features can sometimes be difficult to configure.


The database stores information that can be retrieved, stored, and manipulated by the scripting language. MySQL is a free database that can run on all OS. MS SQL costs $5000, can only runs on Windows, and is considered an enterprise-level database. MySQL is not as powerful as MS SQL, but is sufficient to almost all web application. If the difference in price may not be a factor in the decision if your website is to be hosted, as this is a cost to the hosting company. MS SQL is recommended while you anticipate using the database for non-web applications that need massive amounts of power, or if you are incorporating the features that are not available on MySQL.


Script is requested by a browser, the web server transfers control to a script engine which reads a program written in scripting language. PHP is a free scripting language and offers many OO features, integrated tightly with HTML, and is similar to other languages such as C++ and JavaScript. Active Server Pages (ASP) is not actually a scripting language, but is a Microsoft Technology that allows existing scripting languages to be used in a web context. ASP/VB is often said to be easier to program in than PHP. PHP has more standard features than ASP, most of which are open source such as shopping carts and web forums. However, to get functionalities in ASP one must purchase third party modules. The features on the free PHP are often better than ASP packages, but may be difficult to install and may have incomplete documentation.


In summary, I would recommend LAMP for most web sites because of its cost, since PHP’s simple web integration, and Apache’s security. I would recommend WISA for enterprise-level sits because of MS SQL Server’s raw power and Microsoft’s support services.


Reference:

Thursday, March 15, 2007

WK8 - A Full list of Ajax Toolkit/Framework/Libary Survey

AjaxAnywhere http://ajaxanywhere.sourceforge.net
License: Apache 2
Description: AjaxAnywhere is a simple way to enhance an existing JSP/Struts/Spring/JSF application with AJAX. It uses AJAX to refresh "zones" on a web page, therefore AjaxAnywhere doesn't require changes to the underlying code, so while it's more coarse than finely-tuned AJAX, it's also easier to implement, and doesn't bind your application to AJAX (i.e., browsers that don't support AJAX can still work.). In contrast to other solutions, AjaxAnywhere is not component-oriented. You will not find here yet another AutoComplete component. Simply separate your web page into multiple zones, and use AjaxAnywhere to refresh only those zones that needs to be updated.
Pros:
Less JavaScript to develop and to maintain. Absence of commonly accepted naming convention, formatting rules, patterns makes JavaScript code messier then Java/JSP. It is extremely difficult to debug and unit-test it in multi-browser environment. Get rid of all those complexities by using AjaxAnywhere.
Easy to integrate. AjaxAnywhere does not require changing the underlying application code.
Graceful degradation and lower technical risk. Switch whenever you need between AJAX and traditional (refresh-all-page) behaviour of your web application. Your application can also support both behaviors.
Free open source license.
Cons:
AxajAnywhere? is not as dynamic as pure-JavaScript AJAX solutions. Despite that AjaxAnywhere will probably cover your basic needs, to achieve certain functionality you might need to code some JavaScript.
Today, you can only update a set of complete DHTML objects without breaking then apart. For example, you can update a content of a table cell or the whole table, but not the last row, for example. In later versions, we plan to implement partial DHTML update, as well.

ajaxCFC http://www.robgonda.com/blog/projects/ajaxcfc/
License: Apache 2.0
Description: ajaxCFC is a ColdFusion? framework meant to speed up ajax application development and deployment by providing developers seamless integration between JavaScript and ColdFusion?, and providing built-in functions to quickly adapt to any type of environment, security, and helping to overcome cross-browser compatibility problems.
ajaxCFC is designed as ColdFusion? components, following the best practices of object oriented programming and design patterns. Programming with ajaxCFC involves extending components and creating your own ajax facades.
Pros:
Works with ColdFusion? MX 6.0, 6,1, 7.0, Scorpio, and BlueDragon?.
Integration with Model-Glue and MachII?, two of the most popular MVC frameworks widely used by the ColdFusion? community.
Supports many browsers including FF/Moz, IE5.5+, Safari/Konq, Opera and IE with Active-X turned off via iframe fallback
Automatically handles complex object transmitted from the client to the server and vice versa.
Optional use of XML Sockets to push data from the server.
Built-in security add-ons.
Hosted now by Adobe's RIAForge
Licensed under the Apache License Version 2.0, by Rob Gonda.

AjaxTags component of Java Web Parts http://javawebparts.sourceforge.net
License: Apache 2
Description: AjaxTags was originally an extended version of the Struts HTML taglib, but was made into a generic taglib (i.e., not tied to Struts) and brought under the Java Web Parts library. AjaxTags is somewhat different from most other Ajax toolkits in that it provides a declarative approach to Ajax. You configure the Ajax events you want for a given page via XML config file, including what you want to happen when a request is sent and when a response is received. This takes the form of request and response handlers. A number of rather useful handlers are provided out-of-the-box, things like updating a
, sending a simple XML document, transforming returned XML via XSLT, etc. All that is required to make this work on a page is to add a single tag at the end, and then one following whatever page element you want to attach an Ajax event to. Any element on a page can have an Ajax event attached to it. If this sounds interesting, it is suggested you download the binary Java Web Parts distro and play with the sample app. This includes a number of excellent examples of what AjaxTags can do.
Pros:
There is no Javascript coding required, unless you need or want to write a custom request/response handler, which is simply following a pattern.
Very easy to add Ajax functions to an existing page without changing any existing code and without adding much beyond some tags. Great for retroactively adding Ajax to an app (but perfect for new development too!)
Completely declarative approach to Ajax. If client-side coding is not your strong suite, you will probably love AjaxTags.
Has most of the basic functions you would need out-of-the-box, with the flexibility and extensibility you might need down the road.
Cross-browser support (IE 5.5+ and FF 1.0.7+ for sure, probably some older versions too).
Is well-documented with a good example app available.
Cons:
Because it's a taglib, it is Java-only.
Doesn't provide pre-existing Ajax functions like many other libraries, things like Google Suggests and such. You will have to create them yourself (although AjaxTags will make it a piece of cake!). Note that there are some cookbook examples available that shows a type-ahead suggestions application, and a double-select population application. Check them out, see how simple they were to build!
AjaxTags says absolutely nothing about what happens on the server, that is entirely up to you.
Might be some slight confusion because there is another project named AjaxTags at SourceForge. The AjaxTags in Java Web Parts existed first though, and in any case they have very different focuses. Just remember, this AjaxTags is a part of Java Web Parts, the other is not.

AJS http://orangoo.com/labs/AmiNation/AJS/
License: MIT.
Description: AJS is a ultra lightweight JavaScript library. It's only about 30 KB. AJS main force is performance - both in execution and file size. It has a lot of functionality in common with MochiKit?.
Pros:
AJAX support
Drag and drop support
One namespace
Documentation and examples on most important functions
Polymorphic - A Python script can scan your code, find the AJS functions you use and create a special AJS file for you that is much smaller
Supports latest IE, Firefox, Safari and Opera browsers
Cons:
Does not support old browsers (like Netscape 4 or IE 5)
Limited visual effects

Anaa http://www.anaa.eu
License: Mozilla 1.1.
Description: Anaa means for An Ajax API and is a simple but complete framework built around XMLHttpRequest?. Anaa does support GET and POST methods. Plain Text (including JSON) and XML file are handled.
Pros:
Easy to understand. This allows to extend the library with personal features more easily.
Complete for a such simple library.
Good documentation.
JavaScript only. Compatible with any server-side language.
Pretty website!
Cons:
Rather minimal for now. There are projects to extend it with optional modules.

Dojo http://dojotoolkit.org/
License: Academic Free License v 2.1.
Description: Dojo is an Open Source effort to create a UI toolkit that allows a larger number of web application authors to easily use the rich capabilities of modern browsers.
Pros:
Dev roadmap encompasses a broad range of areas needed to do browser-based app development -- Even the 0.1 release includes implementations of GUI elements, AJAX-style communication with the server, and visual effects.
Build system uses Ant, so core devs seem to be on friendly terms with Java.
Browser compatibility targets are: degrade gracefully in all cases, IE 5.5+, Firefox 1.0+, latest Safari, latest Opera
Most core parts of the system are unit tested (an unit tests are runnable at the command line)
Includes package system and build system that let you pull in only what you need
Comprehensive demo at http://archive.dojotoolkit.org/nightly/tests/
Cons:
Documentation is lacking, but what's available is linked from http://dojotoolkit.org/docs .

DotNetRemoting Rich Web Client SDK for ASP.NET http://www.dotnetremoting.com
License: - commercial license
Description: Rich Web Client SDK is a platform for developing rich internet applications (including AJAX). The product is available for .NET environment and includes server side DLL and a client side script
Pros:
No need for custom method attributes, special signatures or argument types. Does not require stub or script generation.
Available for .NET
Automatically generates the objects from the existing .Net classes.
Supports Hashtable and ArrayList? on the client
The client and the server objects are interchangeable
Can Invoke server methods methods from the client with classes as arguments
Very easy to program
Professional support
Cons:
Lacks out of the box UI components.

DWR http://www.getahead.ltd.uk/dwr/
License: Apache 2.0
Description: DWR (Direct Web Remoting) is easy AJAX for Java. It reduces development time and the likelihood of errors by providing commonly used functions and removing almost all of the repetitive code normally associated with highly interactive web sites.
Pros:
Good integration with Java.
Extensive documentation.
Supports many browsers including FF/Moz, IE5.5+, Safari/Konq, Opera and IE with Active-X turned off via iframe fallback
Integration with many Java OSS projects (Spring, Hibernate, JDOM, XOM, Dom4J)
Automatically generated test pages to help diagnose problems
Cons:
Java-exclusive -- seems to be Java code that generates JavaScript. This limits its utility in non-Java environments, and the potential reusability by the community.

JSON-RPC-JAVA http://oss.metaparadigm.com/jsonrpc/index.html
License: JSON-RPC-Java is licensed under the LGPL which allows use within commerical/proprietary applications (with conditions).
Description: JSON-RPC-Java is a key piece of Java web application middleware that allows JavaScript DHTML web applications to call remote methods in a Java Application Server (remote scripting) without the need for page reloading (as is the case with the vast majority of current web applications). It enables a new breed of fast and highly dynamic enterprise Java web applications (using similar techniques to Gmail and Google Suggests).
Pros:
Exceptionally easy to use and setup
Transparently maps Java objects to JavaScript objects.
Supports Internet Explorer, Mozilla, Firefox, Safari, Opera and Konqueror
Cons:
JavaScript Object Notation can be difficult to read
Possible scalability issues due to the use of HTTPSession

MochiKit http://mochikit.com/
License: MIT or Academic Free License, v2.1.
Description: "MochiKit makes JavaScript suck less." MochiKit is a highly documented and well tested, suite of JavaScript libraries that] will help you get shit done, fast. We took all the good ideas we could find from our Python, Objective-C, etc. experience and adapted it to the crazy world of JavaScript.
Pros:
Test-driven development -- "MochiKit has HUNDREDS of tests."
Exhaustive documentation -- "You're unlikely to find any JavaScript code with better documentation than MochiKit. We make a point to maintain 100% documentation coverage for all of MochiKit at all times."
Scriptaculous-style visual effects
Supports latest IE, Firefox, Safari browsers
Cons:
Support for IE is limited to version 6. According to the lead dev on the project, "IE 5.5 might work with a little prodding."
Scriptaculous-style visual effects are still in beta


Plex Toolkit http://www.plextk.org - see http://www.protea-systems.com (and view source!) for sample site
License: - LGPL or GPL (optional)
Description: Open source feature-complete DHTML GUI toolkit and AJAX framework based on a Javascript/DOM implementation of Macromedia's Flex technology. Uses the almost identical markup language to Flex embedded in ordinary HTML documents for describing the UI. Binding is done with Javascript.
Pros:
Full set of widgets such as datagrid, tree, accordion, pulldown menus, DHTML window manager, viewstack and more
Markup driven (makes it easy to visually build the interface)
Interface components can be easily themed with CSS
Client side XSLT for IE and Mozilla
Well documented with examples.
Multiple remoting transport options - XMLHttpRequest?, IFrame (RSLite cookie based coming soon)
Back button support
Support for YAML serialization
Cons:
Lacks animation framework.


Prototype http://prototype.conio.net/
License: MIT
Description: Prototype is a JavaScript framework that aims to ease development of dynamic web applications. Its development is driven heavily by the Ruby on Rails framework, but it can be used in any environment.
Pros:
Fairly ubiquitous as a foundation for other toolkits -- used in both Scriptaculous and Rico (as well as in Ruby on Rails)
Provides fairly low-level access to XMLHttpRequest
Now well documented (officially) at [[http://prototypejs.org] [PrototypeJS.org]] Cons:
IE support is limited to IE6.
Has no visual effects library (but see Scriptaculous)
Has no built-in way of acessing AJAX result as an XML doc.
Modifications to Object.prototype apparently cause issues with for/in loops in interating through arrays. I could not find any information to indicate that this problem has been fixed.

Rialto http://rialto.application-servers.com/
License: Apache 2.0
Description: Rialto is a cross browser javascript widgets library. Because it is technology agnostic it can be encapsulated in JSP, JSF, .Net or PHP graphic components.
Pros:
Technology Agnostic
Finition of widgets
Vision of the architecture
Tab drag and drop
Cons:
Scant documentation -- currently consists of two PDFs and a single Weblog entry.
Supports IE6.x and Firefox 1.x.
Documentation

Rico http://openrico.org/
License: Apache 2.0
Description: An open-source JavaScript library for creating rich Internet applications. Rico provides full Ajax support, drag and drop management, and a cinematic effects library.
Pros:
Corporate sponsorship from Sabre Airline Solutions (Apache 2.0 License). This means that the code is driven by practical business use-cases, and user-tested in commercial applications.
Extensive range of functions/behaviors.
Cons:
Scant documentation -- currently consists of two PDFs and a single Weblog entry.
Supports IE5.5 and higher only. Also, no Safari support. From the Web site: "Rico has been tested on IE 5.5, IE 6, Firefox 1.0x/Win Camino/Mac, Firefox 1.0x/Mac. Currently there is no Safari or Mac IE 5.2 support. Support will be provided in a future release for Safari."
Has no built-in way of acessing AJAX result as an XML doc.
Drag-and-drop apparently broken in IE (tested in IE6)

SAJAX http://www.modernmethod.com/sajax/
License: BSD
Description: Sajax is an open source tool to make programming websites using the Ajax framework — also known as XMLHTTPRequest or remote scripting — as easy as possible. Sajax makes it easy to call PHP, Perl or Python functions from your webpages via JavaScript without performing a browser refresh. The toolkit does 99% of the work for you so you have no excuse to not use it.
Pros:
Supports many common Web-development languages.
Cons:
Seems limited just to AJAX -- i.e., XMLHttpRequest. No visual effects library or anything else.
Integrates with backend language, and has no Java or JSP support.

Sardalya http://www.sarmal.com/sardalya/
License: free for uncommercial use; almost free for commercial use.
Description: s@rdalya, is a cross-browser interface that aims to make dynamic HTML programming easy and fun. It is a cross-browser compatible system which is designed to work in all DOM-supporting browsers.
Though the developer doesn't test on a Mac, I encountered no problems viewing all of the many DHTML samples he provides. Sardalya includes Ajax functions as well as a comprehensive DOM-based DHTML library.
The library received and "A grade" from musingsfrommars.org: http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html
In its blog, the developer says that the next version of the library will include:
A better AJAX integration.
And more objects to play with(such as Effect object for scheduled transitions such as background fades, or ModalDialog? object which generates a DOM generated modal dialog, which is a cross-browser DOM-implementation of IE's modal dialog, which is not being used much because it is vendor-specific and not supported in other browsers.
Pros:
Object-oriented.
Flexible, easily extendible.
Works in almost any modern browser.
Independent of OS.
Lightweight when you consider what is does.
Cons:
Since it is being constantly developed, the documentation may not be in sync with the most recent version. However viewing the sources of examples are adequate to learn how to use the API.

Scriptaculous http://script.aculo.us/
License: MIT
Description: Script.aculo.us provides you with easy-to-use, compatible and, ultimately, totally cool! JavaScript libraries to make your web sites and web applications fly, Web 2.0 style. A lot of the more advanced Ajax support in Ruby on Rails (like visual effects, auto-completion, drag-and-drop and in-place-editing) uses this library.
Pros:
Well-designed site actually has some reference materials attached to each section.
Lots of neat visual effects.
Simple and easy to understand object-oriented design.
Although developed together with Ruby on Rails it's not dependent on Rails at all, has been used successfully at least in Java and PHP projects and should work with any framework.
Because of the large user-group coming from Ruby on Rails it has very good community support.
Cons:
No IE5.x support -- see Prototype -- Cons 1., above. (Edit July 22, 2006: IE5 is now supported. See website.)

SmartClient from Isomorphic Software http://www.smartclient.com/
Description: SmartClient is the cross-platform AJAX GUI system chosen by top commercial software vendors, on-demand service providers, and enterprise IT developers for thousands of deployments since 2000.
SmartClient provides a complete application stack, from rich, skinnable, extensible GUI components to declarative databinding and SOA integration, paired with a mature, searchable documentation suite and integrated tooling.
SmartClient AJAX applications run on Internet Explorer, Mozilla, Netscape, Firefox, and Safari web browsers, on Windows, MacOS, Linux, and Solaris. A Java integration server is provided, and SmartClient can also be integrated directly with any XML or JSON-based service without need of a server. Visit SmartClient.com for hundreds of live examples, browseable documentation and a downloadable SDK.
Pros:
Proven in the world's most sophisticated AJAX applications
Excellent documentation
Extensible; build new components out of existing components without DHTML experience
Broadest browser and platform support
Declarative integration with web services
Skinning, drag and drop and animation effects
Cons:
Large download (but provides modular delivery and background download features)
No Opera support yet

TIBCO General Interface (AJAX RIA Framework and IDE since 2001) http://developer.tibco.com
TIBCO General Interface is a mature AJAX RIA framework that's been at work powering applicaitions at Fortune 100 and US Government organziations since 2001. Infact the framework is so mature, that TIBCO General Interface's visual development tools themselves run in the browser alongside the AJAX RIAs as you create them.
See an amazing demo in Jon Udell's coverage at InfoWorld?. http://weblog.infoworld.com/udell/2005/05/25.html
You can also download the next version of the product and get many sample applications from their developer community site via https://power.tibco.com/app/um/gi/newuser.jsp
Pros:
Dozens of types of extensible GUI components
Vector based charting package
Support for SOAP communication (in adiition to your basic HTTP and XML too)
Full visual development environment - WYSIWYG GUI layouts - step-through debugging - code completion - visual tools for connecting to services
An active developer community at http://power.tibco.com/GI
Cons:
Firefox support is in the works, but not released yet making this still something for enterprises to use where Internet Explorer is on 99.9% of business user desktops, but probably not for use on web sites that face the general population.
More info at http://developer.tibco.com

Visual WebGui (The .NET answer to Google's GWT that extends WinFormsover ASP.NET) http://www.visualwebgui.com
Visual WebGui? (VWG) is an open source AJAX framework with a growing community that extends ASP.NET with the WinForms? programming model.
VWG provides an alternative to ASP.NET's page model in the form of WinForms? forms and form events. Since VWG, like most .NET AJAX frameworks, is implemented using an IHttpHandler?, it can still interact with ASP.NET pages enabling usage of VWG within an existing ASP.NET site.
VWG features:
AJAX application development using WinForms? development patterns and practices with no prior AJAX (or web development) skills.
WinForms? controls (most of .NET 2.0 controls) implemented for VWG.
Ability to create custom controls (including full inheritance).
Ability to interoperate with existing ASP.NET controls and pages.
Ability to customize control behavior and appearance.
.NET 1.x/2.0 support.
An active developer community at http://www.visualwebgui.com/tabid/53/Default.aspx
VWG unlike GWT:
Does not generate JavaScript code – debugging is done within the server-based .NET code that executes in runtime.
Does not run application logic on the client – all processing is done on the server.
Does not expose unnecessary services to the client – server sends UI updates / client sends user event queues.
Results in a thin client rather than a fat client.
Is based on a familiar WinForms? object model.
Is provided with full WinForms? like design time capabilities.
See an rich demo can be found here: http://samples.visualwebgui.com/mainforms.wgx
You can also download the framework and sample projects from: http://www.visualwebgui.com/tabid/110/Default.aspx
More info at http://www.visualwebgui.com

xWire http://xwire.solutionPioneers.com
License: Apache V2.0
Description: xWire is a mature, object-oriented, enterprise-class toolkit that consists of both client (browser) and server (Java) editions. You can use either or both editions depending upon your environment. xWire was originally built back in 2001 and originally supported only IE5. Support has expanded to IE6, IE7 and Firefox. Opera support is coming soon. You can literally write enterprise-class AJAX applications that work in all of the supported browsers. We have lots of features that can be independently used as desired on both the client and the server. Additionally, COMET support is on the way.
Client Features:
Simple API for cross browser functionality including XmlHttp?, DOM, XPath, XSLT
Completely object-oriented using Javascript classes
Configurable logging mechanism
Incredibly flexible event mechanism
Includes some great widgets such as a hierarchical tree and notebook
XML form binding for easily copying HTML form field values to/from one or more XML documents
Working examples
Frequent enhancements
Well documented with meaningful and thorough comments throughout the code
Server Features:
Mature toolkit (originally written in 2001)
Ideal for building the server side of an AJAX client application
Can be used for most any Java application including web and desktop
Seamless integration with several open source toolkits including Struts, iBatis, Log4J, Commons Configuration, Xalan and XStream
Provides for Struts actionless development
Well designed and well layered
Scalable and stable
Innovative features include XML streaming into and out of the server and Javascript Bundles
Collection of useful standalone services that can be used together or separately
Can be used in conjunction with the xWire client
Pick and choose which features to use
Working examples
Frequent enhancements
Well documented with meaningful and thorough comments throughout the code

WebORB http://www.themidnightcoders.com
License: Standard Edition is free, Professional Edition - commercial license
Description: WebORB is a platform for developing AJAX and Flash-based rich internet applications. The product is available for Java and .NET environments and includes a client side toolkit - Rich Client System to enable binding to server side objects (java, .net, web services, ejb, cold fusion), data paging and interactive messaging.
Pros:
Zero-changes deployment. Does not require any modifications on the server-side code, no need for custom method attributes, special signatures or argument types. Does not require stub or script generation.
Available for Java and .NET
One line API client binding. Same API to bind to any supported server-side type. Generated client-side proxy object have the same methods as the remote counter parts
Automatically adapts client side method arguments to the appropriate types on the server. Supports all possible argument types and return values (primitives, strings, dates, complex types, collections, data and result sets). Server-side arguments can be interfaces or abstract types
Includes a highly dynamic message server to allow clients to message each other. Server side code can push data to the connected clients (both AJAX and Flash)
Supports data paging. Clients can retrieve large data sets in chunks and efficiently page through the results.
Extensive security. Access to the application code can be restricted on the package/namespace, class or method level.
Detailed documentation.
Professional support
Cons:
Lacks out of the box UI components.

Zimbra http://www.zimbra.com/
License: Zimbra Ajax Public License ZAPL (derived from Mozilla Public License MPL)
Description: Zimbra is a recently released client/server open source email system. Buried deep within this product is an excellent Ajax Tool Kit component library (AjaxTK?) written in Javascript. A fully featured demo of the product is available on zimbra.com, and showcases the extensive capabilities of their email client. A very large and comprehensive widget library as only avialable in commercial Ajax toolkits is now available to the open source community. Download the entire source tree to find the AJAX directory which includes example applications.
Pros:
Full support of drag and drop in all widgets. Widgets include data list, wizard, button, text node, rich text editor, tree, menus, etc.
Build system uses Ant and hosting is based on JSP and Tomcat.
Very strong client-side MVC architecture based; architect is ex-Javasoft lead developer.
Communications support for client-side SOAP, and XmlHttpRequest? as well as iframes.
Support for JSON serialized objects, and Javascript-based XForms.
Strong muli-browser capabilities: IE 5.5+, Firefox 1.0+, latest Safari
Hi quality widgets have commercial quaility since this is a commerical open source product.
Widget library is available as a separate build target set from the main product.
Debugging facility is built in to library, displays communications request and response.
License terms making it suitable for inclusion in other commercial products free of charge.
Cons:
Does not currently support: Keyboard commands in menus, in-place datasheet editing.
Does not support gracefull degradation to iframes if other transports unavailable.
Documentation is lacking, but PDF white paper describing widget set and drag and drop is available.
Others Bling!
http://bcsaller.blogspot.com/2005/12/bling.html http://darcs.objectrealms.net/darcsweb.cgi/bling
Description: MochiKit?, Prototype, Scripaculous and OpenRico? wrapped up into one package for Plone, isolating web developers from writing and debugging JS.

Xajax http://xajax.sourceforge.net/
Description: PHP-centric, looks very new
License: LGPL

SACK
http://twilightuniverse.com/projects/sack/
Description: New, limited feature set
License: modified X11

ZK
http://www.zkoss.org
Description: ZK is an open-source Ajax Web framework that enables rich user interface for Web applications with little programming
Licsense: Open Source
There is another excellent and comprehensive list of libraries at EDevil's Weblog.

Friday, March 9, 2007

WK7 - A powerful Ajax Toolkit - Zapatec.

I am so excited that i found a really wonderful Ajax toolkit that can make our Ajax developing life easier. That's Zapatec.

The lite version of Zapatec is free to use. And it provides us several fancy Ajax widgets e.g. Calendar, Menu, Tree, Windows, Form, Grid, Editor, Paneset, Auto Complete, Effects, D&D, Slider, Tabs, Time, Transport and Extra. Every single widgets is companied with a support document. Every componet is independent of the other components. To combine into a single web site, just include the .js file and core files for the components we are using. Also, it supports .NET, JSP, PHP, ASP, Perl, Python, Ruby or any other server technology.

As its slogan says, "Comprehensive, Standards Driven, Fast Deployment, Cross-Browser Compliant", is quite attractive to us. You can view the demo of each component and maybe you will like it.

Reference:

Friday, March 2, 2007

WK6 - AJAX Framework Introduction

Ajax framework forms part of Ajax; a technology to build dynamic web pages on the client side.

The goal of the framework is to provide this Ajax engine and associated server and client-side functions.

Benefit of a framework

A 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.


JavaScript and Server Technology Independent Frameworks


Many AJAX frameworks and libraries rely solely upon JavaScript and contain no server components, therefore no server technology dependencies. Such AJAX libraries and frameworks include:

  • Apache XAP. Open Source Ajax Framework for large scale JavaScript applications
  • qooxdoo is one of the most comprehensive and innovative Open Source (EPL/LGPL) multipurpose AJAX frameworks. It includes support for professional JavaScript development, a state-of-the-art GUI toolkit and high-level client-server communication.
  • Clean AJAX. Easy-to-use AJAX engine based on messages.
  • Dojo Toolkit. Uses packages and reusable components.
  • Helmi Open Source RIA Platform. Flexible open sourced rich internet applications / AJAX framework.
  • JackBe. A commercially licensed framework.
  • JQuery Lightweight JavaScript framework that emphasizes the interaction between JavaScript and HTML
  • Mootools. Very compact and modular javascript framework.
  • Prototype. Is the base of several other frameworks.
  • Sarissa a open source cross-browser wrapper for native XML APIs
  • SmartClient. Full GUI stack, SOA-style declarative integration with XML or JSON services, using XPath.
  • WinLIKE. A free/commercial framework to include rich windows functions.
  • Yahoo UI Library. A client-side framework that bundles several API's including an AJAX API, several DHTML interface components, implementations for extended behaviour.

Such frameworks are agnostic as to what server-side technology you choose to use. Usually such frameworks are optimized to consume XML, though JSON is becoming popular as well.


Python frameworks


These frameworks require the Python programming language to run, and the goal is to bring together several Python components designed to help in building web applications. Examples of Python frameworks include:


Let’s get further upon Django.


Django Components


The core Django framework consists of an object-relational mapper which mediates between data models (defined as Python classes) and a relational database; a regular-expression-based URL dispatcher; and a view and templating system.

Also included in the core framework are:

  • A form serialization and validation system which can translate between HTML forms and values suitable for storage in the database.
  • A caching framework which can use any of several cache methods.
  • Support for middleware classes which can intervene at various stages of request processing and carry out custom functions.
  • An internal dispatcher system which allows components of an application to communicate events to each other via pre-defined signals.
  • An internationalization system, including translations of Django's own components into a variety of languages.
  • A serialization system which can produce and read XML and/or JSON representations of Django model instances.
  • A system for extending the capabilities of the template system by writing and registering custom functions for use in templates.

Bundled applications


The main Django distribution also bundles a number of applications in its "contrib" directory; among them are:

  • The dynamic administrative interface.
  • An extensible authentication system.
  • Tools for generating RSS and Atom syndication feeds.
  • A flexible commenting system, which is able to attach comments to any valid object in a model.
  • A lightweight, standalone web server for server-independent development and testing.
  • Tools for generating Google Sitemaps.
  • Tools for preventing cross-site request forgery.
  • Tools for allowing one Django installation to manage multiple websites.
  • Template libraries which enable the use of lightweight markup languages such as Textile and Markdown.

Server arrangements


Django can run on Apache under mod_python, or under any WSGI-compliant web server. Django also includes the ability to launch a FastCGI server, enabling use behind any web server which supports FastCGI.

The following databases are officially supported for use with Django:

Adapters for Microsoft SQL Server and Oracle are under development, but are still experimental.


The Django Book


The Django Book is a free book (released under the GNU Free Document License) about the Django framework. It's currently in beta and will be published sometime in 2007 by Apress. The current version of the book can be found at http://www.djangobook.com/


Reference: