comparing GWT with its comparable tech - gwt

I am looking for a Technology that I can compare with GWT.
I was thinking about comparing GWT vs Ruby on Rail. But I am not sure if it is the best compare to pick.
If any one can give me some hints, I really appreciate it

It's hard to compare GWT to anything else.
The main idea behind GWT was to leverage existing tooling: debuggers, IDEs (refactoring, etc.), static analysis tools (findbugs, checkstyle, PMD), etc. The goal is not to provide a true emulation of Java in JavaScript; being able to use any existing Java library with GWT is a non-goal.
So, what is GWT?
GWT is a transpiler to JavaScript, much like CoffeeScript, TypeScript, Script#, Emscripten, Haxe and many more.
Unlike many others though, GWT development runs Java in a JVM rather than compiling to JS (Dart with its Dartium and dart2js works similarly), which allows you to use a Java debugger, and tools like JRebel for hot code replacement.
The compilation process is also pluggable with code/resource generators (deferred binding). This, combined with the static typing of Java, makes it possible to use dependency-injection tools such as GIN (Guice for GWT)
GWT is also an extensive library:
client-server communication protocols: GWT-RPC and RequestFactory (RequestFactory can also be used from a Java client, such as an Android application; RequestFactory can also be used to consume JSON-RPC services)
JSON marshalling through AutoBeans
widgets, which makes people sometimes compare GWT to Swing in the way to build UIs (though if you build GWT UIs like you do Swing UIs, you're doomed)
UiBinder is similar to Flex's MXML, .NET's XAML, or Gnome's Glade; but can also be used to output HTML rather than build widgets, which makes it more likeā€¦ AngularJS maybe?
SafeHtmlTemplates can be seen as similar to Mustache.js
CssResources are similar to Closure Stylesheet, or Sass or Less, though with fewer features
Editors are somehow comparable to AngularJS bindings (see discussion at https://plus.google.com/114156500057804356924/posts/LSNj2zTZo78)
Depending on the facet you're looking at, you can compare GWT with many other tools; but most of all, GWT is a client-side tool, so one thing you can't compare it with is Rails.

GWT:
GWT architecture needs deep understanding to be used completely. It is built for advanced users.
Rails:
Rails is simple and aimed at writing less code. Suitable for beginners in web development.
Here is a complete PDF about comparison .

Simple JavaScript MV* frameworks are numerous and easy to compare. However, at the enterprise scale - there are far fewer frameworks and each are very different. A few others:
ExtJS - A complex and enterprise scale JavaScript framework
TypeScript - A new language developed by Microsoft that is strongly typed and compiles to JavaScipt
Closure - A Google technology for type-checking JavaScript
As you can see, none of these are quite the same as GWT, yet all are targeted at enterprise scale JavaScript development.

Related

Is this correct : jquery is to javascript, django is to python?

I'm familiar with jquery and javascript but i'm a python noob. Whenever I learn something about python on the web, there's mention of django here and there. When i went to the official django site, it described it as "Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design." So I inferred it's what jquery is for javascript, am I correct?
[This might seem like a silly question but I tend to get shameless when it comes to asking questions on stack**overflow**]
I don't think it's a very useful comparison.
JQuery is mostly a wrapper around core functionality of javascript. Partly to make it easier to use and partly because otherwise you'd have to deal with browser specific problems even for the most basic scripts.
Django is a full-featured web framework that has many useful and necessary things built-in. It has request routing, templating, database abstractions, localization and a lot more.
In contrast to other web-frameworks it has those things tightly coupled and is opionated on what's the best practice to build your website with it.
A better comparison in the JavaScript world is (as an example) AngularJS. It also comes with lots of good features (routing, templating, data-bindings, dependency injection, etc.) but when you use it, you should better stick to "the angular way" of doing front-end JavaScript.
Think of JQuery more of a low-level library that you can build your code and even frameworks like AngularJS on. Kinda like the standard library of Python.
The short answer: Kind of- it is in the sense that JQuery is essentially a set of useful bits of code written in Javascript and Django the same in Python. However, JQuery is a more functional framework, where as DJango is more like a CMS framework.
No question is a silly question!
Almost, but not exactly.
I would say your python to javascript comparison is correct (as Python can be used as a scripting language for web applications, just like javascript), but jQuery is not exactly like Django.
jQuery is a library designed to simplify the scripts needed for dynamic website functionality, whereas Django is more useful in the creation of complex, database-driven websites.

Does Perl have RIA frameworks like zkoss or Vaadin in Java?

I am new to Perl. I would like to know if Perl has RIA (Rich Internet Application) frameworks like zkoss or Vaadin or GWT from Java?
How do Java and Perl compare in terms of memory management and pattern design?
RIA
In short, no. But take a look at the Catalyst Framework.
But no, I don't know anything as glossy and point&click-y as "zkoss" or "vaadin". HTML+CSS+Perl works fine as well, if you know them.
Memory Management
Perl is a garbage collected. Variables that are no longer referenced get freed. Beware that in general, Perl tends to prefer time efficiency over memory efficiency what does not mean that perl is in any way bloated. Also beware, that circular references have to be manually broken, or the garbage collector won't be able to detect those variables to be collected. That is somewhat unlike Java.
Patterns
Yes, of course you can use any patterns you like. Perl doesn't make objetc orientation too easy by default, however the Moose Framework helps with that. Whith Perl, you can also use some functional patterns like closures or currying that are not available, or not as easily available, in Java. Note that Anonymous Classes get really hard to create with Perl, but hard things are still possible. You often don't need them anyway with closures.
Good Literature
See the info page of the "perl" tag on SO: https://stackoverflow.com/tags/perl/info especially the free books section. I like Higher Order Perl, although reading through the basics first should be sensible.
The Perl documentation with perltoot, perlboot and other pages has good introductions to traditional Perl object orientation techniques, which differ superficially from the Moose interface.
Try Sencha Ext JS:
http://www.sencha.com/products/extjs/
There is even a Perl package available to boot:
RPC::ExtDirect - https://metacpan.org/pod/RPC%3a%3aExtDirect
From http://www.sencha.com/products/extjs/
What is Sencha Ext JS?
Sencha Ext JS is the leading standard for business-grade web
application development. With over 100 examples, 1000 APIs, hundreds
of components, a full documentation suite and built in themes, Ext JS
provides the tools necessary to build robust desktop applications. Ext
JS also brings a rich data package that allows developers to use a
model-view-controller (MVC) architecture when building their app. The
MVC leverages features like Big Data Grids enabling an entirely new
level of interactivity in web apps.
Modern App Framework
Ext JS 4 is a major step forward for web frameworks. Building on Ext
JS 3.3, our latest release adds over 350 new APIs, 50 new classes, and
65% more documentation. An entirely new data package equips developers
to leverage features like Infinite Grid Scrolling to build an entirely
new level of interactivity to web apps.
From https://metacpan.org/pod/RPC%3a%3aExtDirect
Abstract
This module provides an easy way to map Perl code to Ext.Direct RPC
interface used with Ext JS JavaScript framework.
What Ext.Direct is for?
Ext.Direct is a high level RPC protocol that allows easy and fast
integration of server components with JavaScript interface. Client
side stack is built in Ext JS core and is used by many components like
data Stores, Forms, Grids, Charts, etc. Ext.Direct supports request
batching, file uploads, event polling and many other features.
Besides simplicity and ease of use, Ext.Direct allows to achieve very
clean code and issue separation both on server and client sides, which
in turn results in simplified code, greater overall software quality
and shorter development times.
From Perl module developer perspective, Ext.Direct is just a method
attribute; it doesn't matter if it's called from Perl code or through
Ext.Direct. This approach, in particular, allows for multi-tiered
testing:
Server side methods can be tested without setting up HTTP environment with the usual tools like Test::More
Server side classes can be tested as a whole via Ext.Direct calls using Perl client
Major application components are tested with browser automation tools like Selenium.
For more information on Ext.Direct, see
http://www.sencha.com/products/extjs/extdirect/.

Java Web Framework Prototyping tools

At the moment Iam evaluating java web frameworks. More precisely Iam talking about GWT, JSF2 and apache wicket. One very importent criteria in this evaluation is prototyping.
The prototyping process in my company can be described by the folloing:
The customer can produce GUIs with an easy to use WYSIWYG editor, by drag&drop-ing web components on the corporate predefined website structur. There is also a need for some litte dynamic being like navigation from one frame to another.
So Iam looking for tools. These tools should not only provide nice GUIs but also deliver
some basic code, which can be forwarded to the development. The aim is to avoid missunderstandings between designers and developers as much as possible. More or less the
developers just have to implements the code, but not to implement the optical requirements.
In addition it would be desirable to customize the components thats been used in the WYSIWYG editor. Does anyone know any good tools for the mentioned frameworks (GWT, JSF2, wicket)?
One of the challenges with WYSIWYG tools for UI is that you generally have to pick between rapid prototyping and maintainable code. Even then, as soon as you want to do something that's not supported by the prototyping tool, you can implement it as you would without the prototyping tool, but your round-trip functionality (namely turning your app back into something that can be edited) is broken or crippled unless extra work is done to generate the metadata that the editor needs.
Upgrading between major releases is another issue. Vendors and groups who have developed these tools have a historically spotty record of when they stop supporting older versions, reasonably because of limited resources and sometimes difficult problems with how to track solid innovation happening in the framework itself.
My suggestion instead is to prototype with an RIA prototyping tool like Balsamiq Mockups or use a grid system like 960 Grid to generate rapid prototypes, then use a web development framework that allows your developers to run the code with or without the backend server. Wicket has a tag called that is great for this kind of thing -- web devs can fill a div with stuff that a component should generate, and Wicket devs can wrap the contents of that tag with after they implement it. Both parties can coexist for a long time that way.
Try GWT Designer for GWT.
Introduction
Quick Start Guide
Download
There's nothing like this for Wicket that I know of. The closest you would get to any kind of resource reuse from your customer would be to give them a drag and drop HTML editor - the resulting HTML could then form the basis of Wicket page/panel layout.
if you are planing to use a javascript library, you may use extjs,
http://www.sencha.com/products/js/
they have developed a nice designer
www.sencha.com/products/designer/
there is also a port of ext in GWT
www.sencha.com/products/gwt/
You have to pay for a commercial license if your application isn't open source!

GWT, Sproutcore or Cappuccino

I am about to start a new webapp that will be running on P/GAE and reagarding the front end we would like to use one of the mentioned frameworks (GWT, SC, Cap).
Which one do you think is the most developer friendly? It seems that Cappuccino looks stunning but you have to learn Obj-J. Sproutcore seems nicer (since there is only JS) but I could not say I am impressed with the docs plus some of the demos are broken.
GWT on the other hand is very mature but I have the feeling that using Java may slow you down as you cannot use some of the JS quirks on the other hand there is vibrant ecosystem around it.
I think the answer depends on what type of developer are you?
For me, I'm comfortable with Javascript and like the ability to manipulate the browser DOM so that I can implement features that may not be in the framework. That's why I prefer Sproutcore.
Checkout http://www.infoq.com/news/2009/09/sproutcore-1-0.
I have to agree with you that documentation is limited. However, I've found wiki useful and the community really helpful.
GWT is a very nice choice if you're using GAE-Java because then you can develop server-side and client-side in the same language. If you're using Python on the server-side, you won't be able to use GWT's simple RPC calls to serialize objects to/from the browser. It's still a nice framework though.
GWT does allow you to write JS-native code if needed, so you can "use some of the JS quirks" if you need to.
One warning: GWT apps are totally AJAX, so they can't really be seen by search engines (a general problem with AJAX, not with GWT specifically)

It's possible to use GWT in a Jruby app?

It's possible to use GWT in a Jruby app?
No, it is not possible to use GWT in any other programming language.
The key thing to understand is that "GWT" translates to "convert Java code to JavaScript"; in other words, it is fundamentally a compiler technology. While GWT offers other benefits, such as a rich collection of widgets, it's main purposes is running Java code as JavaScript.
However, between GWT and Google App Engine I am sure there are many ways to solve your problem. Can you share any more details about what you are trying to do?