I would like your opinion about these two frameworks. I like a lot the features of ExtJS, but recently I saw SmartClient and it seems to be great too, and free (its Client side features) for commercial projects. I tried a little of SmartClient and it seems to be easier than ExtJS, and it has a better documentation tnan ExtJS.
BUT.. I didn't work with any of these frameworks and maybe I'm wrong. That's why I would like the opinion of people who has worked with them.
And BTW.. how does the license of ExtJS work? you've to but one license for each developer and then you're able to develop and sell every app you want or you have to buy a license for each app you sell?
Thanks in advance for your help.
This has been pretty well covered on SO. Specifically here and here.
Ext JS is licensed per developer not per app.
I'm an Ext JS developer so I'm partial to Ext, but I have no opinion of SmartClient good or bad. If licensing is the most important criterion SmartClient might be better for you. If you want to weight the technical merits see the links above, or even better evaluate them both based on your own needs.
I use SmartClient and am quite happy with it and the support provided by Isomorphic. The U/I widgets aren't the nicest out there, but you can see that they've been around for some time by the richness of their API.
It's also quite easy to roll out your own custom controls when the built-in ones don't suit your needs. For example, we integrated Raphael pie chart SVG drawings inside custom Isomorphic canvas classes. We also integrated Mondrian/JPivot analytical technologies which are legacy JSP pages, using Smartclient's HtmlFlow control. It's quite powerful what can be achieved.
One thing I regret about Smartclient versus other technologies such as jQuery, is a clearer separation between the work a web designer does versus the work a developer/programmer does.
With Smartclient, it's mostly done thru code, even the layout of components. There's no HTML per say. They've separated very well the skinning (css), but that's about it. Everything else needs to be done by a developer/programmer thru Javascript code. Smartclient is good for single-page apps.
I can't speak for ExtJS as I haven't used it real production environments, but in the end I think it all boils down to the licensing model and programing/design model you want to be using.
I have used both, and I would recommend Ext for the following reasons:
Layout flow is much easier, especially with the design tools.
The UI Builder from Isomorphic lacks the usability that the tool from Ext offers
The Javascript performance was better with Ext
CSS is easier to use with the Ext framework
Editing CSS/Themes/Skins in SmartGWT/SmartClient is major surgery (very tedious and time consuming)
Widgets are similar but "prettier" in Ext
Forum administrators on both sites can be "snippy", however premium support did not change
this on the Isomorphic site. They are rude and condescending even when you pay.
Ext has a dedicated MVC framework. The Isomorphic framework does not.
SmartClient charting DOES NOT support negative number values
Before starting new GUI for our new project arrival, I made some research.
Here are my findings (remove spaces from "http: // "; bcoz stackoverflow is preventing me to do so :)):
Prototype framework favorable links:
http://en.wikipedia.org/wiki/List_of_Ajax_frameworks
http://www.javabeat.net/articles/12-comparison-of-ajax-frameworks-prototype-gwt-dwr-and-1.html
http://www.devx.com/AJAXRoundup/Article/33209
Dojo framework favorable links:
http://blog.creonfx.com/javascript/dojo-vs-jquery-vs-mootools-vs-prototype-performance-comparison
jQuery framework favorable links:
http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised
Test speed of different RIA frameworks:
http://mootools.net/slickspeed/#
More comparasions:
http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks
http://jqueryvsmootools.com/#conclusion
Out of all these findings I started using SmartClient 5. Initially we faced some issues but as SmartClient matures I find it interesting in many terms:
1. APIs doc help and examples
2. Flexible controls
3. Forum
Today I am working on SmartClient 8 and few on my GUIs are in production running successfully. Actually the great help with SmartClient is that you find every thing at one place. No need to dug many other sites that is hard to do for any other open source RIA framework.
So my choice is no doubt SmartClient.
Thanks
Shailendra (shaILU)
I would prefer Jquery UI. Which is supported well by community. By combining plugins you can get similar -if not better- screens provided by extJS and SmartClient.
Related
Is there a simple convention over configuration application framework that is javascript based, which looks and feels like a rich client side application, out-of-the-box? For example, there is GWT... But it is heavy weight (i.e. it requires compilation).
More specifically, given that tools like JQuery continue to gain popularity - are there any vanilla CSS + JQuery application frameworks that (again, like GWT), just "work" out of the box, with intuitive and natural layout managers similar to those defined by the GWT/Swing toolkits ? These parts of any such framework might be driven by a high level js wrapper.
Since JQuery is modular, and modularity has its benefits, the above may not be a fair expectation. Java is quite modular, but by picking a stack (hibernate + Spring + JSP, for example) we can simplify java development. Is there such thing as a common JQuery stack for full service front end development ?
The closest thing I have found so far to embody this are :
GWT
SproutCore (recent discovery which I haven't done too much with).
FLEX related technologies.
I'm sure other approaches to High level web / CSS / js / html5 programming exist- what are they? Although its that many js tools exist, it's not clear which ones are low level DIY ones (for DOM hackers) and which ones are the (less flexible) pre packaged frameworks that "just work".
UPD: 2014 answer
It's great to see insane progress in the field, be sure to check out the following frameworks:
EmberJS
AngularJS
KnockoutJS
It's virtually impossible to recommend a specific one without being opinionated but you can find plenty of comparison articles on the web and related questions here on SO.
From your description, the top 2 frameworks for RIA (Rich Internet Application) development that I would suggest are:
ExtJS. A rich and mature framework with a big community and lots of complementary tools. Gives you OOP-like class system, an event system, a pretty rich and flexible library of widgets (with layout managers) and lots of other cool abstractions, just check out their website. Very good an extensive documentation. They also have a product named Sencha GXT (ex ExtGWT) if you want interoperability with GWT, they've been doing it for quite a while.
Dojo Toolkit. Another robust framework, quite similar to ExtJS but probably more lightweight (which is framework's strength, they use AMD to define/load modules)
Also worth noting that the second one is free for commercial use and the second one isn't. I suggest you to look at what these two frameworks have to offer out of the box and decide which one better suits your needs.
Other less popular (someone please correct me if I'm wrong) and generally smaller frameworks that have some community around them are:
Sproutcore. that you've mentioned
YUI. RIA framework maintained by Yahoo. ExtJS was originally created as extension to YUI.
qooxdoo. I'm not familiar with the framework but I've seen people recommend it. The description on the website looks promising.
These are the the frameworks that can help you architect "serious" single-page rich web applications. I should note that jQuery isn't generally suitable for such projects as a core. If what you want is more like library of widgets built on top of jQuery then you should check out jQuery UI but there's lots of other similar toolkits.
Also, check out these similar threads on SO:
free and open source alternative to extjs
What are alternatives to ExtJS?
I am starting a new web application for reporting measurements to engineers. The main components I need are:
grids
charts
maps
I have investigated the following javascript solutions:
ext js
dojo
jquery
Dojo seems to be a good all-in-one solution but I am wondering why it is not widely used?
Which widget libraries are suggested for each one of these components(grids. maps, charts) ?
It typically depends on the nature of your application - is it intranet/enterprise or consumer?
High traffic, global websites have a different set of requirements compared to enterprise/intranet based apps, specially from a performance and footprint angle.
Assuming yours is an enterprise/non-consumer-market app, both extjs and Dojo will do well given that you want datagrids and charts
THey are similar in their approach to widgets (separation of data and view, encapsulation, widget classes, inheritance etc).
I suggest looking at the dojo nightly tests and extjs demos to ensure the library you choose has the features you need. Dojo nightly and demos: http://archive.dojotoolkit.org/nightly/dojotoolkit/
extjs: http://dev.sencha.com/deploy/ext-4.0.7-gpl/examples/
extjs is commercially licensed (so it is somewhat more polished) whereas Dojo is full open-source driven by community effort.
Dojo is actively being evolved though and dojo 1.7 has some nice enhancements like AMD
While there is lot of documentation for Dojo, you should be ready to look at multiple places to get answers - dojocampus, docs, nightly tests, widget source code, and of course, stackoverflow :-) - I have found it fun to learn the whole system and also contribute back to the community, the good thing is the widget system is extensible with many extension points, so you can override and customize what you want.
We use Dojo extensively in many departments in my large enterprise company and it has proved to be a good overall solution. Dojo is also backed and supported by IBM. Also, Sitepen offers commercial support for Dojo and has key dojo committers on its team.
JQuery is great for doing DOM manipulations, transitions etc and is lightweight and fast. Jquery UI offers widgets and there are lot of plugins available - but you will need to figure out the licensing model as plugins are typically separately licensed and also be willing to thoroughly test and modify them/create new plugins/widgets to ensure they fit your need.
http://square.github.com/crossfilter/
Maybe this one? It just went open source some weeks ago.
Another free JavaScript libraries you could use :
Paper.js
Raphael.js
Both of them should provide enough functionnalities for your needs.
Folks,
I am starting off to learn ExtJS. I had a look through Sencha's website. I went through some of the questions also already asked here.
But had some doubts,
What is the difference between ExtJS designer and Aptana ? Do we require both ?
How to start building your own 1st application in ExtJS ? Any tutorials for the total beginners.
Will I need to write JavaScript code manually or use a ExtJS designer to do that for me ?
Thanks.
I'll disagree a bit with the already-accepted answer.
They are both optional. I use neither.
OK, not too helpful. Aptana is a general-purpose IDE. It is based on Eclipse, but unlike vanilla Eclipse (which is Java-oriented) Aptana has lots of additions and plugins for doing JavaScript, PHP and other "web-centric" development. I actually use Aptana myself, even for Ext development, because it works for me. IDE discussions tend to get religious -- everyone has their own requirements and peeves, YMMV. Aptana does actually support framework-specific autocomplete, including for Ext JS (though I think they are still on an older version). Note that you can accomplish the same things as Aptana (generally-spekaing) using WebStorm, Komodo, NetBeans, TextMate or any old text editor -- just depends on what IDE-specific features you find helpful or not.
Ext Designer (now Sencha Architect) on the other hand is NOT a general-purpose IDE -- it is strictly intended as an Ext UI design tool. However, it does go beyond simply "placing widgets" on the page. You can easily drag-drop things into place and also preview how they will render, hook up data stores to databound widgets (again via simple drag/drop interactions), it includes context-specific config and property setting (which makes it much easier to know what options are available without having to refer to the API docs constantly), etc. Architect then generates classes, in best-practice code format, that you can drop into your app and then extend as needed with your own business logic. The output of Architect could basically become the input project for Aptana (or whatever) where you would build your application code (although many people stick exclusively to Architect).
Regarding tutorials, the docs site of Sencha.com was revamped recently and includes many tutorials updated for the most current versions of Ext. Of course the official examples are also a good place to start. The best book on Ext development is probably Jay Garcia's Ext JS in Action, though unfortunately it has not yet been updated for Ext 4 (he's currently working on that). It's a great overview of the concepts and best practices for Ext in general though, and a lot of what's in that book will still apply today.
Finally, while Architect will definitely get you started with good UI code, it will not wire your app together or write any business logic for you. For that, you'll have to use the existing tutorials and examples to help guide you to write your own code.
They are both optional. I use neither.
Depends on how “total” a beginner you are. Judging from your questions, I guess you aren’t familiar with JavaScript and web development in general. If that is the case, start by reading some tutorials on JavaScript and AJAX—you’ll need a solid grounding in those to make good use of Ext JS. I am yet to see a good tutorial for Ext JS (version 4) itself, and you’ll probably end up gathering pieces from the official docs, the Sencha blog, and the examples that ship with Ext JS.
You will have to write JavaScript (and maybe also HTML and CSS, depending on your scenario). The designer can only help you with placing widgets (like buttons or text boxes) on the page. In my experience so far, this has been the easy part, so unless you’re doing a complex user interface, you probably don’t need the designer.
I have some experience in AJAX development, mostly on .NET and MooTools. However, I want to learn more and see what others out there thought about the various other options available. I am looking more for advice about the front end. The back end, I will most probably be coding it in .NET using c# and WCF services.
Please feel free to provide me as much information as you can. Also, I would appreciate any links to resources.
List of Options (feel free to add)
Write my own Javascript
Use a framework like MooTools, JQuery, etc. Which one is better?
Use Google Web Toolkit. Am I tying myself to the limitations of GWT? Or are there not limitations?
ASP.NET AJAX
WPF (Will this run on non-IE browsers?)
Flash (it'll be a pain to learn action script)
Thanks
Jaspreet
Writing your own Javascript often means reinventing the wheel when it comes to trying to attain cross-browser compatibility. Frameworks such as jQuery and MooTools take care of much of that grunt work for you.
Personally, I would suggest picking a Javascript framework or using GWT, but really it's just a matter of personal preference at that point, much like choosing a programming language. Pick that one that is best for your purposes, or that you're most familiar with.
I'd go with jQuery.
jQuery will be bundled with the next version of Visual Studio. Google uses jQuery. jQuery has the largest user-base of any of the frameworks out there.. And speaking of not re-inventing the wheel: jQuery also has the largest plugin-repository of any of the frameworks out there.. Including its own official UI library which is in constant development.
.. And if you're a fan of books; there's 3-4 books about the framework out currently.
Oh, yeah! Check out Douglas Crockford's website for great vanilla JavaScript tips and tricks.
Just my two cents :)
jQuery
prototype
MooTools
dojo
GWT
ExtJS
Those will all have you working with very solid code, which is usually the best way to improve your own skills. And don't forget all their extensions/plugins.
I would recommend jQuery. It's more extensible and light-weight than most other JavaScript libraries I've seen (and you can have it Google-cached with the AJAX APIs).
For Flash-based AJAX web apps, Flex is a better solution.
Since this is a fairly subjective question I will put in my 2 cents.
I've developed using the Dojo toolkit and found it very well rounded. However, if you don't do a custom build on your library it slows everything down. It has a steeper learning curve than other frameworks, but seems to sit pretty close to heart of Javascript.
But this isn't an advertisement for dojo. I'm working on a Ajax web app currently and my goal is to try and avoid using a framework. Why? A few reasons.
The biggest reason is complete control over the code. Not that I don't trust toolkits, I just like my custom code. I don't have any code that I don't use, and all of my abstractions are custom made for my purposes. At times I am in fact reinventing the wheel*, but its always a bit different because it's purpose built.
The other big reason is the amount of knowledge I gain. I'm confident that I could pick up any framework much faster, because of not using one for a project. I understand so much more than I did previously. Before It was more like a voodoo mystery box, and now even frameworks make more sense to me.
The fact of the matter is if you do any non-trivial javascript you will end up with a framework (or a mess). In reality it may not be the fastest way to write web apps, but it isn't all that hard with a little practice. You can be amazed at what creative things you can come up with that didn't exist before.
*Reinventing the wheel is a terrible analogy that we all use. We reinvent wheels all the time. First made of stone, then lighter wood, tires, etc... My truck doesn't have the same wheels as my sedan.
Like other responders I prefer to use frameworks, but my favorite is dojo -- clean and well-designed architecture, good books (my favorite being Matthew Russel's), and a particularly impressive approach to using browser extensions (such as Google Gears or Microsoft Silverlight) if the user has them installed, while falling back gracefully (e.g. to Ajax-interfaced server-side storage) if no suitable browser extensions (or sufficiently advanced browsers, with HTML5 support) are present.
Dojo is, currently, slightly less popular than jquery (e.g., [jquery ajax] has 8.4 million hits on Google Search, vs 4.3 million for [dojo ajax]), but that's still way popular enough to ensure it won't go away any time soon;-).
You must check ExtJS.
Most libraries I've seen have usable core but lack the widget/control library that will blend-in with each other. Sure you can get a vast number of controls for jQuery, but do you have the time to find out which ones have intended functionality and tweak their visual appearance to match the rest of controls? ExtJS gives you just that. Core is core. It works and it works great. But the vast selection of compatible and functionality rich controls is the main driver that will make your life easier.
I've used ExtJS with Asp.Net and WCF services and it was a really nice experience overall. You will need some time to get to know ExtJS component model to extend it even further (as you would need to do the same with other libs), but when you do, you start loving it even more.
One more thing: since MS ships jQuery with MVC it doesn't mean it's the best. It only means it's one of the best (and much better than Microsoft's in-house Ajax) but with the most relaxed open source license.
Edit: Now that Silverlight 3 has shipped it became apparent it will shake things a bit with its offline support and rich graphics support. As well as standalone desktop like web apps. Definitely something to consider...
Please note that WPF has nothing to do with ajax.
AJAX = Asynchronous javascript and xml
WPF = a windows-only UI display technology. The only option there for in-browser use is to create an Xbap. The more-suited-for-the-web counterpart is silverlight (say, like flash but from microsoft), so perhaps you should look into that as well... it's like using flash, but with familiar MS technologies.
Concerning your question about which framework to use in case of ajax: I prefer jQuery. It's short syntax and chaining allow you to reach your goals very fast in an intuitive way.
Also, GWT is a Java framework that also renders stuff on the client, as far as i know. So you would have the limitation of Java as backend language...
GWT has made considerable leaps and bounds over the past 7 months. The mutiple GWT widget libraries have received a good deal of attention, and Google's work on the library has been impressive. Going GWT limits you to:
Using GWT widgets
Possibly becoming a GWT widget developer
The benefits include:
Coding in Java
Debugging in Java
Skipping the parts of JavaScript that make you pull your hair out
GWT is the step past AJAX. It buries the HTML / JavaScript so that you don't need to deal with it, but also provides access in case you do want to deal with it.
Overall, you will spend less time trying to get small things working, and more time adding awesome to your application.
there is also prototype.js
Try the Yahoo! User Interface Library (YUI)
Pick a library to learn, then pick up the others--but I don't think I'd reinvent the wheel.
I picked MooTools and have picked up jQuery/Prototype since. (Picked Mootools because their site, at the time, was the only one that validated, figured clean html meant clean javascript).
Side note about MooTools:
An often overlooked feature of MooTools is the download builder. You can download just enough of the framework source to get your AJAX working, and nothing else.
There's the BBC's open source javascript library called Glow
There's some discussion at my work about using Jack Slocum's EXTjs library as an extension to YUI (already in use) for a project in development. I'd like to help avoid a dependence on EXTjs's commercial licensing model if possible.
The primary two features desired from EXTjs are EditorGridPanel and ColumnTree.
As far as I can see, it looks like YUI since 2.6.0 has added EditorGridPanel functionality to their DataGrid. Is there some major caveat to using YUI's built-in functionality? Is there something still way slicker about EditorGridPanel?
As for ColumnTree... I don't see any easy YUI replacement for this feature set. Is there something in YUI that does this that I'm not seeing? Is there some other good option now that YUI is barely in use?
Is it best to just bite the bullet and pay for EXTjs (and deal with the commercial license dependence) for this kind of functionality?
I was looking for ExtJS alternatives like you. I'm intended to develope a Web Based application using Frameworks to avoid wasting valuable time.
You were too close to find the right page, here it is:
[What are alternatives to ExtJS?
Read the above article first, then you may want to see this other links:
BackBase
[http://demo.backbase.com/explorer/]
[http://demo.backbase.com/layouts/]
[http://demo.backbase.com/layouts/layout7/index.html]
jQuery
[http://ui.jquery.com/home]
qooxdoo
[http://qooxdoo.org/]
[http://demo.qooxdoo.org/current/demobrowser/]
[http://ui.jquery.com/themeroller/]
Good luck
My employer recently went through a similar evaluation with regard to the EXT widget library. Our criteria were slightly different in that we were looking for a widget library that would plug into GWT and provide a more polished widget set than those provided by the default GWT implementation. After a month of evaluation, our team concluded that the EXT license fees are a small price to pay for the functionality gained. Again, we're not using the raw javascript library, but we have been very pleased with GXT. In my opinion the library is a bit under-documented but it does work solidly across different browsers. One thing for sure, their editor grid is very slick.