SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Choosing a JavaScript library

Intro
One of Kauri1's goals is not to reinvent the wheel until necessary. A modern web application framework
these days needs a JavaScript library to provide common, reusable functionality and save us from writing
lots of repetitive code. Libraries also provide a layer of abstraction, thus hiding browser differences.
We do not want to write one ourselves because it saves time to use an existing one, plus these libraries are
more likely to contain fewer bugs because of the significant user base.
Because of the multitude of Javascript libraries, we started our search by selecting only the most-used, most-
popular and up-to-date Ajax-enabled libraries.


The contestants
                      Latest (non-                Size        the good         the bad       Licence      Browser
                      beta) release                                                                     compatibility


Dojo2                 1.0.2                50kb+          •     OOP        •    buggy      modified     Safari 3.0.x
                      (12/15/07)                          •     CSS3       •    ugly       BSD or       Opera 9.0+
                                                                                code       Academic     IE 6.0+
                                                          •     buildsystem
                                                                                           Free 2.1     FF1.5+
                                                                with       •    big
                                                                                                        Konqueror
                                                                compression
                                                                                                        3.5+
                                                          •     unittest
                                                          •     widgets
                                                                (Dijit)
Prototype3            1.6.0.2              ~120kb         •     support    •    poor      MIT           IE 6.0+
                      (01/25/08)                          •     Script.aculo.us4documentation           FF1.0+/
                                                                for UI      • extends                   Mozilla 1.7+
                                                                                Object.prototype        Safari 1.2+
                                                          •     OOP
                                                                                (*5, *6)
                                                                                not since
                                                                                1.4
                                                                            • extends
                                                                                js built-
                                                                                in
                                                                                objects
jQuery7               1.2.3                ~29kb          •     documentation
                                                                            •   only       MIT or GPL   FF1.5+
                      (02/08/08)                          •     easy to         selector                IE 6+
                                                                use             +effects                Safari 2.0.2+
                                                                                +some-                  Opera 9+
                                                          •     fast
                                                                                XHR
                                                          •     CSS 1-3,
                                                                            •   only for
                                                                basic
                                                                                simple
                                                                xpath
                                                                                and
                                                          •     CSS             small
                                                                selector        projects
                                                          •     lightweight


1.   http://www.kauriproject.org/wiki/65-kauri.html (The Kauri Project)



Choosing a JavaScript library                                                                                           1
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
•   chainable
                                                        •   plugins
                                                        •   namespaced
                                                        •   jQuery
                                                            UI for
                                                            widgets
                                                        •   cross site
                                                            Ajax
                                                        •   compatible
                                                            with
                                                            others
                                                            (trough
                                                            jQuery.noConflict())
                                                        •   xml as
                                                            context
                                                            object
                                                            (if($("status",xml).text()
                                                            ==
                                                            "2")...)
Ext JS8               2.0.1                500kb        •   support    •    big10        LGPL 3.0   IE 6+
                      (01/23/08)                        •   good                                    FF1.5+
                                                            collection                              Safari 2+
                                                            of                                      Opera 9+
                                                            widgets
                                                        •   UI-
                                                            centric
                                                            (+ or -)
                                                        •   on top of
                                                            jquery/
                                                            yui/
                                                            prototype
                                                            or
                                                            standalone
                                                        •   fast
                                                        •   client-
                                                            side data
                                                            model
                                                            (*9)
                                                        •   CSS 3
                                                        •   xpath
Yahoo UI              2.4.1                29kb+        •   history   •     slow    BSD             IE 6+
Library11             (12/19/07)                            manager •       big                     FF1.5+
                                                        •   documentation                           Safari 2+
                                                                      •     complex
                                                                                                    Opera 9+
                                                        •   modular •       verbose
                                                            (fetch
                                                            what you
                                                            need)
                                                        •   event
                                                            driven



Choosing a JavaScript library                                                                                   2
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
•   namespaced
                                                        •   CSS
                                                            framework
                                                        •   Skins
                                                        •   YUILoader12
MooTools13            1.1                  9kb+         •   lightweight •   extends    MIT          IE 6+
                      (05/07/07)                        •   fast            many                    FF
                                                                            of js                   Safari
                                                        •   easy
                                                                            built-in                Opera
                                                        •   modular         objects                 Camino
                                                        •   Object
                                                            Oriented
                                                        •   chainable
                                                        •   dynamic
                                                            loading
                                                            for
                                                            images,
                                                            css and
                                                            javascript
                                                            files
qooxdoo14             0.7.3                             •   buildsystem• non-          LGPL or EPL IE 5.5+
                      (01/14/08)                            for           CSS-                     FF 1.0+/
                                                            optimazing    based                    Mozilla 1.3+
                                                             and          styling                  Opera 8+
                                                            packaging                              Safari 3
                                                        •   namespaced
                                                        •   event
                                                            binding
                                                        •   cross-
                                                            browser
                                                            back
                                                            button
                                                            support
                                                        •   bookmarkability
                                                        •   AOP
                                                        •   IFrame
                                                            IO15
GWT16                 1.4.61                            •   browser                    Apache 2.0   IE
                      (11/03/07)                            history                                 Firefox
                                                        •   JUnit                                   Mozilla
                                                                                                    Safari
                                                        •   i18n
                                                                                                    Opera
                                                        •   Java
                                                            compiled
                                                            to
                                                            javascript

The pros and cons are (possibly biased) opinions collected from blogs and fora, or features promoted on the
homepages.
Disqualified:



Choosing a JavaScript library                                                                                     3
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
•    MochiKit17: seems to be deserted
 •    Rico18: dying community, low support


Our requirements for a JS library within Kauri
 1.   base for client-side restletport
 2.   cross-browser issues:
       • syntax
       • DOM model
       • event model
 3.   dynamic loading of js-files
 4.   event binding
 5.   unit testing
 6.   (widgets, effects)
 7.   integration of external widgets (Simile)
 8.   size, stability, maturity
 9.   compression
10.   i18n, L10n


Popularity (by number of searches)




The qooxdoo framework didn't have enough search volume to show up on the graph.




Choosing a JavaScript library                                                     4
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
Language
                          Custom                  OO          namespaced Namespacing             Chaining          Modular
                          event-                                 API
                          binding
Prototype                               19               20                                 21


Dojo                                    22               23                                 24


jQuery                                  25                                                  26


MooTools                                28               29
                                                                                                                                 (at
                                                                                                                   build-time)
ExtJS                                   31                                                  32


qooxdoo                                 33               34                                 35


YUI                                     36               37                                 38



There are arguments why a js framework should not try to be an OO programming language (see *39,*40 and
*41).


XmlHttpRequest
All libraries contain specialized methods for Ajax calls, with support for GET and POST requests,
parameters and callback functions. IFrame I/O is mostly used for file upload.

   XHR API                custom              Callback          Error          Cross-site        IFrame IO        Synchronous
                           HTTP                                handling        scripting
                          request
                          headers
Prototype42

Dojo43 *44                                                                                                   45


jQuery46

MooTools47

ExtJS48                                                                                     49               50


qooxdoo51                                                                                                    52


YUI53                                                                     54                                 55




39. http://mattsnider.com/javascript/prototype-vs-yui-round-1-oop-architecture/
40. http://www.geoffreymoller.com/2007/05/15/when-javascript-libraries-attack/
41. http://foohack.com/2007/08/yui-crockford-module-pattern-vs-prototypes-class-function/



Choosing a JavaScript library                                                                                                    5
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
CSS Framework integration
 •     jQuery + Blueprint56


GWT wrappers
GWT + ExtJS: gwt-ext57, MyGWT58
GWT + Dojo: Tatami59
GWT + Script.aculo.us: Script.aculo.us integration60
Java + qooxdoo: QWT61
JavaScript Native Interface (JSNI)62


Test 1: GWT Integration
 •     jQuery: Google Maps the jQuery Way63
 •     YUI: Google Maps + Yahoo UI Lib (YUI) = Mashup fun64
 •     qooxdoo: Google Maps widget65
 •     ExtJS: Adding a Google Map to a Tab or Window66
 •     MooTools: GMapsOverlay67, google-maps-lightbox68
 •     Prototype: gplotter69


Test 2: Simile
Simile Timeline and Timeplot are based on jQuery 1.2.1, which could cause conflicts.
 •     Dojo: Dojo and TimeLine70
 •     jQuery: How to make Timeline not conflict with jQuery71
 •     GWT: gwtsimiletimeline72
 •     Prototype: Timeline73


Test 3: i18n support
 •     Dojo: has a specific i18n module (*74).
 •     jQuery: no built-in i18n support. Localization is available for the datepicker-widget
 •     Prototype: no built-in i18n support.
 •     ExtJS: localization support (*75, *76).
 •     YUI: no built-in i18n support, there is however an internationalization plugin (*77).
 •     MooTools: no built-in i18n support.
 •     qooxdoo: i18n and L10n are fully supported (*78).
 •     GWT: internationalization support (*79).



57.   http://code.google.com/p/gwt-ext/
58.   http://mygwt.net/
59.   http://code.google.com/p/tatami/
60.   http://gwt.components.googlepages.com/script.aculo.usintegration
61.   http://qooxdoo.org/documentation/contrib/contributions/qwt/about
62.   http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.html



Choosing a JavaScript library                                                                                            6
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
Test 4: Support for Unit testing
 •     qooxdoo: testrunner80
 •     Prototype: there's a test framework that can be extended for custom unit tests (*81).
 •     jQuery: internal test framework
 •     Dojo: has a unit testing harness, D.O.H.82
 •     MooTools: no unit testing
 •     Ext JS: no unit testing (*83, *84)
 •     YUI: YUI Test85
 •  GWT: JUnit integration86
Standalone js unit test tools:
 •     Crosscheck87
 •     Testcase88 (Prototype-based)
 •     Selenium89
 •     JsUnit90


Test 5: Building a custom widget
jQuery: Writing your own plugins91
Dojo: Creating new Dojo Widget92, Dojo Custom Widget Tutorial93, Create a Custom Javascript/AJAX
Widget with Dojo94
ExtJS: Writing Ext 2 Plugins95
Dojo, MooTools, jQuery, prototype: Creating an AJAX Rating Widget96


The first 3 losers
 •     MooTools:
        • extends many of js built-in objects
        • lack of namespace
 •     Prototype:
        • extends js built-in objects
        • no namespacing
 •     qooxdoo
        • not mature enough (still beta)


The final 4 contenders
 •     jQuery
        • blooming community
        • beautiful and concise language


91.   http://jquery.bassistance.de/jquery-getting-started.html#plug
92.   http://www.alexatnet.com/node/14
93.   http://www.coachwei.com/blog/_archives/2007/3/28/2841519.html
94.   http://taubler.com/articles/article_Create_a_Custom_Javascript_AJAX_Widget_with_Dojo?id=5
95.   http://extjs.com/learn/Tutorial:Writing_Ext_2_Plugins
96.   http://www.progressive-coding.com/tutorial.php?id=6



Choosing a JavaScript library                                                                      7
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
• lightweight
 •    Dojo
       • most powerful
 •    Ext JS
       • possibility to combine with JUI or jQuery
 •    YUI
       • modular
       • docmentation
       • CSS framework included


Our Winner
The JS framework we'll use and support in Kauri97 will be jQuery98.


Links
JavaScript Frameworks Compared
http://www.zenperfect.com/2007/08/11/javascript-frameworks-compared/
Top 5 javascript frameworks
http://www.whenpenguinsattack.com/2007/04/24/top-5-javascript-frameworks/
JavaScript Libraries By Comparison
http://javascriptant.com/articles/24/javascript-libraries-by-comparison
Javascript Toolkit Comparison
http://www.ja-sig.org/wiki/display/UP3/Javascript+Toolkit+Comparison
Why I’m moving from jQuery to ExtJs
http://coderseye.com/2007/why-im-moving-from-jquery-to-extjs.html
2007 Ajax Tools Usage Survey Results
http://www.surveymonkey.com/sr.aspx?
sm=fXLiKcnKlD6cO5bRe961aBB6NCCWytRyY3rParAYmwA_3d
A Mootools Tutorial
http://clientside.cnet.com/wiki/mootorial
Choosing a JavaScript library
http://www.b-list.org/weblog/2007/jan/22/choosing-javascript-library/
Prototype and jQuery: A code comparison
http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison
Simplify Ajax development with jQuery
http://www.ibm.com/developerworks/library/x-ajaxjquery.html
Easy Ajax with jQuery
http://www.sitepoint.com/article/ajax-jquery
Survey of js frameworks
http://zhenhua-guo.blogspot.com/2007/12/karajan-workflow-composition.html




97. http://www.kauriproject.org/wiki/65-kauri.html (The Kauri Project)
98. http://jquery.com/



Choosing a JavaScript library                                               8
ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM

Mais conteúdo relacionado

Mais procurados

MariaDB: The 2012 Edition
MariaDB: The 2012 EditionMariaDB: The 2012 Edition
MariaDB: The 2012 EditionColin Charles
 
MariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialMariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialColin Charles
 
MariaDB - a MySQL Replacement #SELF2014
MariaDB - a MySQL Replacement #SELF2014MariaDB - a MySQL Replacement #SELF2014
MariaDB - a MySQL Replacement #SELF2014Colin Charles
 
MariaDB 10: A MySQL Replacement - HKOSC
MariaDB 10: A MySQL Replacement - HKOSC MariaDB 10: A MySQL Replacement - HKOSC
MariaDB 10: A MySQL Replacement - HKOSC Colin Charles
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]Malin Weiss
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshareColin Charles
 
MariaDB 10 Tutorial - 13.11.11 - Percona Live London
MariaDB 10 Tutorial - 13.11.11 - Percona Live LondonMariaDB 10 Tutorial - 13.11.11 - Percona Live London
MariaDB 10 Tutorial - 13.11.11 - Percona Live LondonIvan Zoratti
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the CloudArun Gupta
 
The Dolphins Leap Again
The Dolphins Leap AgainThe Dolphins Leap Again
The Dolphins Leap AgainIvan Zoratti
 
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...Ivan Zoratti
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
 
Odnoklassniki.ru Architecture
Odnoklassniki.ru ArchitectureOdnoklassniki.ru Architecture
Odnoklassniki.ru ArchitectureDmitry Buzdin
 
Free Software and the Future of Database Technology
Free Software and the Future of Database TechnologyFree Software and the Future of Database Technology
Free Software and the Future of Database Technologyelliando dias
 
MariaDB 10.0 - SkySQL Paris Meetup
MariaDB 10.0 - SkySQL Paris MeetupMariaDB 10.0 - SkySQL Paris Meetup
MariaDB 10.0 - SkySQL Paris MeetupMariaDB Corporation
 
MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012Colin Charles
 
The Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialThe Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialColin Charles
 
Technology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBTechnology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBDan-Claudiu Dragoș
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloJulian Arocena
 

Mais procurados (18)

MariaDB: The 2012 Edition
MariaDB: The 2012 EditionMariaDB: The 2012 Edition
MariaDB: The 2012 Edition
 
MariaDB 10: The Complete Tutorial
MariaDB 10: The Complete TutorialMariaDB 10: The Complete Tutorial
MariaDB 10: The Complete Tutorial
 
MariaDB - a MySQL Replacement #SELF2014
MariaDB - a MySQL Replacement #SELF2014MariaDB - a MySQL Replacement #SELF2014
MariaDB - a MySQL Replacement #SELF2014
 
MariaDB 10: A MySQL Replacement - HKOSC
MariaDB 10: A MySQL Replacement - HKOSC MariaDB 10: A MySQL Replacement - HKOSC
MariaDB 10: A MySQL Replacement - HKOSC
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
 
MariaDB 10 Tutorial - 13.11.11 - Percona Live London
MariaDB 10 Tutorial - 13.11.11 - Percona Live LondonMariaDB 10 Tutorial - 13.11.11 - Percona Live London
MariaDB 10 Tutorial - 13.11.11 - Percona Live London
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the Cloud
 
The Dolphins Leap Again
The Dolphins Leap AgainThe Dolphins Leap Again
The Dolphins Leap Again
 
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
Odnoklassniki.ru Architecture
Odnoklassniki.ru ArchitectureOdnoklassniki.ru Architecture
Odnoklassniki.ru Architecture
 
Free Software and the Future of Database Technology
Free Software and the Future of Database TechnologyFree Software and the Future of Database Technology
Free Software and the Future of Database Technology
 
MariaDB 10.0 - SkySQL Paris Meetup
MariaDB 10.0 - SkySQL Paris MeetupMariaDB 10.0 - SkySQL Paris Meetup
MariaDB 10.0 - SkySQL Paris Meetup
 
MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012
 
The Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialThe Complete MariaDB Server tutorial
The Complete MariaDB Server tutorial
 
Technology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBTechnology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDB
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao Pablo
 

Destaque

RichFacesWhatIsNewIn330
RichFacesWhatIsNewIn330RichFacesWhatIsNewIn330
RichFacesWhatIsNewIn330tutorialsruby
 
neurisa_11_09_rosenthal
neurisa_11_09_rosenthalneurisa_11_09_rosenthal
neurisa_11_09_rosenthaltutorialsruby
 
TopStyle Help & <b>Tutorial</b>
TopStyle Help & <b>Tutorial</b>TopStyle Help & <b>Tutorial</b>
TopStyle Help & <b>Tutorial</b>tutorialsruby
 

Destaque (6)

Prototype-1
Prototype-1Prototype-1
Prototype-1
 
RichFacesWhatIsNewIn330
RichFacesWhatIsNewIn330RichFacesWhatIsNewIn330
RichFacesWhatIsNewIn330
 
11-DWR-and-JQuery
11-DWR-and-JQuery11-DWR-and-JQuery
11-DWR-and-JQuery
 
manual-en
manual-enmanual-en
manual-en
 
neurisa_11_09_rosenthal
neurisa_11_09_rosenthalneurisa_11_09_rosenthal
neurisa_11_09_rosenthal
 
TopStyle Help & <b>Tutorial</b>
TopStyle Help & <b>Tutorial</b>TopStyle Help & <b>Tutorial</b>
TopStyle Help & <b>Tutorial</b>
 

Semelhante a 69-kauri

Introduction to Napa.js
Introduction to Napa.jsIntroduction to Napa.js
Introduction to Napa.jsDaiyi Peng
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJSTim Sommer
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDEMuhammad Ghazali
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Webphilogb
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)johnnybiz
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Reviewnetc2012
 
OSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon KaegiOSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon Kaegimfrancis
 
End to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeEnd to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeAlexandre Morgaut
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro L. Saito
 
JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)jeresig
 

Semelhante a 69-kauri (20)

Introduction to Napa.js
Introduction to Napa.jsIntroduction to Napa.js
Introduction to Napa.js
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDE
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Working and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An OverviewWorking and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An Overview
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 
Rails 3.1
Rails 3.1Rails 3.1
Rails 3.1
 
OSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon KaegiOSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon Kaegi
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
 
java completed units.docx
java completed units.docxjava completed units.docx
java completed units.docx
 
java full 1.docx
java full 1.docxjava full 1.docx
java full 1.docx
 
java full.docx
java full.docxjava full.docx
java full.docx
 
End to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) EuropeEnd to-end W3C - JS.everywhere(2012) Europe
End to-end W3C - JS.everywhere(2012) Europe
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)JavaScript Libraries (Ajax Exp 2006)
JavaScript Libraries (Ajax Exp 2006)
 
java full 1 (Recovered).docx
java full 1 (Recovered).docxjava full 1 (Recovered).docx
java full 1 (Recovered).docx
 

Mais de tutorialsruby

<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>tutorialsruby
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />tutorialsruby
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascripttutorialsruby
 

Mais de tutorialsruby (20)

<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascript
 

Último

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 

Último (20)

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 

69-kauri

  • 1. Choosing a JavaScript library Intro One of Kauri1's goals is not to reinvent the wheel until necessary. A modern web application framework these days needs a JavaScript library to provide common, reusable functionality and save us from writing lots of repetitive code. Libraries also provide a layer of abstraction, thus hiding browser differences. We do not want to write one ourselves because it saves time to use an existing one, plus these libraries are more likely to contain fewer bugs because of the significant user base. Because of the multitude of Javascript libraries, we started our search by selecting only the most-used, most- popular and up-to-date Ajax-enabled libraries. The contestants Latest (non- Size the good the bad Licence Browser beta) release compatibility Dojo2 1.0.2 50kb+ • OOP • buggy modified Safari 3.0.x (12/15/07) • CSS3 • ugly BSD or Opera 9.0+ code Academic IE 6.0+ • buildsystem Free 2.1 FF1.5+ with • big Konqueror compression 3.5+ • unittest • widgets (Dijit) Prototype3 1.6.0.2 ~120kb • support • poor MIT IE 6.0+ (01/25/08) • Script.aculo.us4documentation FF1.0+/ for UI • extends Mozilla 1.7+ Object.prototype Safari 1.2+ • OOP (*5, *6) not since 1.4 • extends js built- in objects jQuery7 1.2.3 ~29kb • documentation • only MIT or GPL FF1.5+ (02/08/08) • easy to selector IE 6+ use +effects Safari 2.0.2+ +some- Opera 9+ • fast XHR • CSS 1-3, • only for basic simple xpath and • CSS small selector projects • lightweight 1. http://www.kauriproject.org/wiki/65-kauri.html (The Kauri Project) Choosing a JavaScript library 1 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 2. chainable • plugins • namespaced • jQuery UI for widgets • cross site Ajax • compatible with others (trough jQuery.noConflict()) • xml as context object (if($("status",xml).text() == "2")...) Ext JS8 2.0.1 500kb • support • big10 LGPL 3.0 IE 6+ (01/23/08) • good FF1.5+ collection Safari 2+ of Opera 9+ widgets • UI- centric (+ or -) • on top of jquery/ yui/ prototype or standalone • fast • client- side data model (*9) • CSS 3 • xpath Yahoo UI 2.4.1 29kb+ • history • slow BSD IE 6+ Library11 (12/19/07) manager • big FF1.5+ • documentation Safari 2+ • complex Opera 9+ • modular • verbose (fetch what you need) • event driven Choosing a JavaScript library 2 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 3. namespaced • CSS framework • Skins • YUILoader12 MooTools13 1.1 9kb+ • lightweight • extends MIT IE 6+ (05/07/07) • fast many FF of js Safari • easy built-in Opera • modular objects Camino • Object Oriented • chainable • dynamic loading for images, css and javascript files qooxdoo14 0.7.3 • buildsystem• non- LGPL or EPL IE 5.5+ (01/14/08) for CSS- FF 1.0+/ optimazing based Mozilla 1.3+ and styling Opera 8+ packaging Safari 3 • namespaced • event binding • cross- browser back button support • bookmarkability • AOP • IFrame IO15 GWT16 1.4.61 • browser Apache 2.0 IE (11/03/07) history Firefox • JUnit Mozilla Safari • i18n Opera • Java compiled to javascript The pros and cons are (possibly biased) opinions collected from blogs and fora, or features promoted on the homepages. Disqualified: Choosing a JavaScript library 3 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 4. MochiKit17: seems to be deserted • Rico18: dying community, low support Our requirements for a JS library within Kauri 1. base for client-side restletport 2. cross-browser issues: • syntax • DOM model • event model 3. dynamic loading of js-files 4. event binding 5. unit testing 6. (widgets, effects) 7. integration of external widgets (Simile) 8. size, stability, maturity 9. compression 10. i18n, L10n Popularity (by number of searches) The qooxdoo framework didn't have enough search volume to show up on the graph. Choosing a JavaScript library 4 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 5. Language Custom OO namespaced Namespacing Chaining Modular event- API binding Prototype 19 20 21 Dojo 22 23 24 jQuery 25 26 MooTools 28 29 (at build-time) ExtJS 31 32 qooxdoo 33 34 35 YUI 36 37 38 There are arguments why a js framework should not try to be an OO programming language (see *39,*40 and *41). XmlHttpRequest All libraries contain specialized methods for Ajax calls, with support for GET and POST requests, parameters and callback functions. IFrame I/O is mostly used for file upload. XHR API custom Callback Error Cross-site IFrame IO Synchronous HTTP handling scripting request headers Prototype42 Dojo43 *44 45 jQuery46 MooTools47 ExtJS48 49 50 qooxdoo51 52 YUI53 54 55 39. http://mattsnider.com/javascript/prototype-vs-yui-round-1-oop-architecture/ 40. http://www.geoffreymoller.com/2007/05/15/when-javascript-libraries-attack/ 41. http://foohack.com/2007/08/yui-crockford-module-pattern-vs-prototypes-class-function/ Choosing a JavaScript library 5 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 6. CSS Framework integration • jQuery + Blueprint56 GWT wrappers GWT + ExtJS: gwt-ext57, MyGWT58 GWT + Dojo: Tatami59 GWT + Script.aculo.us: Script.aculo.us integration60 Java + qooxdoo: QWT61 JavaScript Native Interface (JSNI)62 Test 1: GWT Integration • jQuery: Google Maps the jQuery Way63 • YUI: Google Maps + Yahoo UI Lib (YUI) = Mashup fun64 • qooxdoo: Google Maps widget65 • ExtJS: Adding a Google Map to a Tab or Window66 • MooTools: GMapsOverlay67, google-maps-lightbox68 • Prototype: gplotter69 Test 2: Simile Simile Timeline and Timeplot are based on jQuery 1.2.1, which could cause conflicts. • Dojo: Dojo and TimeLine70 • jQuery: How to make Timeline not conflict with jQuery71 • GWT: gwtsimiletimeline72 • Prototype: Timeline73 Test 3: i18n support • Dojo: has a specific i18n module (*74). • jQuery: no built-in i18n support. Localization is available for the datepicker-widget • Prototype: no built-in i18n support. • ExtJS: localization support (*75, *76). • YUI: no built-in i18n support, there is however an internationalization plugin (*77). • MooTools: no built-in i18n support. • qooxdoo: i18n and L10n are fully supported (*78). • GWT: internationalization support (*79). 57. http://code.google.com/p/gwt-ext/ 58. http://mygwt.net/ 59. http://code.google.com/p/tatami/ 60. http://gwt.components.googlepages.com/script.aculo.usintegration 61. http://qooxdoo.org/documentation/contrib/contributions/qwt/about 62. http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.html Choosing a JavaScript library 6 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 7. Test 4: Support for Unit testing • qooxdoo: testrunner80 • Prototype: there's a test framework that can be extended for custom unit tests (*81). • jQuery: internal test framework • Dojo: has a unit testing harness, D.O.H.82 • MooTools: no unit testing • Ext JS: no unit testing (*83, *84) • YUI: YUI Test85 • GWT: JUnit integration86 Standalone js unit test tools: • Crosscheck87 • Testcase88 (Prototype-based) • Selenium89 • JsUnit90 Test 5: Building a custom widget jQuery: Writing your own plugins91 Dojo: Creating new Dojo Widget92, Dojo Custom Widget Tutorial93, Create a Custom Javascript/AJAX Widget with Dojo94 ExtJS: Writing Ext 2 Plugins95 Dojo, MooTools, jQuery, prototype: Creating an AJAX Rating Widget96 The first 3 losers • MooTools: • extends many of js built-in objects • lack of namespace • Prototype: • extends js built-in objects • no namespacing • qooxdoo • not mature enough (still beta) The final 4 contenders • jQuery • blooming community • beautiful and concise language 91. http://jquery.bassistance.de/jquery-getting-started.html#plug 92. http://www.alexatnet.com/node/14 93. http://www.coachwei.com/blog/_archives/2007/3/28/2841519.html 94. http://taubler.com/articles/article_Create_a_Custom_Javascript_AJAX_Widget_with_Dojo?id=5 95. http://extjs.com/learn/Tutorial:Writing_Ext_2_Plugins 96. http://www.progressive-coding.com/tutorial.php?id=6 Choosing a JavaScript library 7 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM
  • 8. • lightweight • Dojo • most powerful • Ext JS • possibility to combine with JUI or jQuery • YUI • modular • docmentation • CSS framework included Our Winner The JS framework we'll use and support in Kauri97 will be jQuery98. Links JavaScript Frameworks Compared http://www.zenperfect.com/2007/08/11/javascript-frameworks-compared/ Top 5 javascript frameworks http://www.whenpenguinsattack.com/2007/04/24/top-5-javascript-frameworks/ JavaScript Libraries By Comparison http://javascriptant.com/articles/24/javascript-libraries-by-comparison Javascript Toolkit Comparison http://www.ja-sig.org/wiki/display/UP3/Javascript+Toolkit+Comparison Why I’m moving from jQuery to ExtJs http://coderseye.com/2007/why-im-moving-from-jquery-to-extjs.html 2007 Ajax Tools Usage Survey Results http://www.surveymonkey.com/sr.aspx? sm=fXLiKcnKlD6cO5bRe961aBB6NCCWytRyY3rParAYmwA_3d A Mootools Tutorial http://clientside.cnet.com/wiki/mootorial Choosing a JavaScript library http://www.b-list.org/weblog/2007/jan/22/choosing-javascript-library/ Prototype and jQuery: A code comparison http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison Simplify Ajax development with jQuery http://www.ibm.com/developerworks/library/x-ajaxjquery.html Easy Ajax with jQuery http://www.sitepoint.com/article/ajax-jquery Survey of js frameworks http://zhenhua-guo.blogspot.com/2007/12/karajan-workflow-composition.html 97. http://www.kauriproject.org/wiki/65-kauri.html (The Kauri Project) 98. http://jquery.com/ Choosing a JavaScript library 8 ID: 69-kauri | Version: 21 | Date: 3/21/08 6:56:17 PM