{"id":440,"date":"2007-10-10T16:52:46","date_gmt":"2007-10-10T22:52:46","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/archives\/000440"},"modified":"2007-10-10T16:52:46","modified_gmt":"2007-10-10T22:52:46","slug":"gwt-impressions","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/440","title":{"rendered":"GWT impressions"},"content":{"rendered":"<p>After about a year of working with GWT, it seems to me like there are two places where it is really useful as a technology:<\/p>\n<ol>\n<li>Quickly building relatively sophisticated user interfaces for entire web based applications.  An intranet &#8216;client-server&#8217; type application, like a timesheet, would be a perfect fit.  If you use Java on the server side, domain objects can even be shared.<\/li>\n<li>Building small widgets that have anything beyond the simplest logic.  This is the best way to integrate GWT into an existing application&#8211;add small bits of functionality that improve the user experience.  You can use GWT to manage, reuse and package this logic.<\/li>\n<\/ol>\n<p>However, what GWT is best for is not the limiting factor for GWT; rather, if you aren&#8217;t a Java developer, GWT just doesn&#8217;t make sense.  (I&#8217;m ignoring the fact that if a user doesn&#8217;t have JavaScript enabled, GWT doesn&#8217;t make sense, since this is a failing of almost all the Web 2.0 rich user interface toolkits).<\/p>\n<p>For me, being a Java developer and a fan of Eclipse, GWT is a natural fit for a number of reasons.  The <a href=\"http:\/\/code.google.com\/webtoolkit\/documentation\/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html\">Java object serialization support<\/a>, the use of an IDE to code Javascript, the JRE emulation, and the event driven user interface model all make it extremely comfortable to develop in the language.  If you&#8217;re already coding the server side in Java, GWT is one less language to learn (until you need to do something that isn&#8217;t provided for in the emulation libraries, or you need to use a Java 1.5 feature, or a bug leaks up through the abstraction; of course, these problems will never happen).<\/p>\n<p>While I don&#8217;t have deep knowledge with other toolkits (I&#8217;ve worked slightly with the <a href=\"http:\/\/developer.yahoo.com\/yui\/\">Yahoo! User Inteface Library<\/a> and have toyed with Dojo), it seems to me that many many folks can get by using them; there&#8217;s no tie to Java.<\/p>\n<p>If someone was going to ask me whether or not they should use GWT, I&#8217;d boil it down to the following questions:<\/p>\n<ol>\n<li>Are your developers familiar with Java? (If &#8216;no&#8217;, don&#8217;t use GWT.)<\/li>\n<li>Are your developers familiar with JavaScript? (If &#8216;yes&#8217;, consider not using GWT.)<\/li>\n<li>Are you integrating with an existing app?  (If &#8216;yes&#8217;, GWT might be a good fit.)<\/li>\n<li>If so, are you planning to &#8216;web 2.0&#8217;-ify the existing application, or add widgets to enhance existing functionality? (If planning to &#8216;web 2.0&#8217;-ify existing functionality, don&#8217;t use GWT.)<\/li>\n<\/ol>\n<p>On a final note, I don&#8217;t want to bag on GWT too much.  GWT has improved tremendously over the past year or so, and I&#8217;m very glad to have used it.  I think it&#8217;s quite cool tech, and I think it has really improved the user experience on my client&#8217;s site.<\/p>\n<p>Thank you, Google, for releasing GWT and making it available for me to use.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After about a year of working with GWT, it seems to me like there are two places where it is really useful as a technology: Quickly building relatively sophisticated user [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,18,5,19],"tags":[],"class_list":["post-440","post","type-post","status-publish","format-standard","hentry","category-dynamic-languages","category-gwt","category-java","category-yui"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=440"}],"version-history":[{"count":0,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}