Heh, I remember this experience well. GWT has a steep learning curve. If you have a sophisticated UI, it is totally worth it - but prepare for a struggle to achieve proficiency. Writing GWT apps is much more like writing Swing/MFC/etc fat client apps than it is like writing traditional web apps. GWT's learning curve is also complicated by the lack of any good step-by-step process for climbing it. There's a ton of documentation on the web about the various pieces but it's pretty unstructured. And a lot of the newer bits are very lightly documented.
My advice is to avoid the more complicated bits at first. Don't try to use RequestFactory or MVP or any of the other complicated stuff you won't immediately recognize the rationale for. Does this mean you may want to massively refactor your application sometime in the future? Perhaps, but at least you'll have a working app to refactor. If you have a "single-page app" one thing you *will* want to use up front is the history management (aka Places). This stuff is *really* hard to retrofit later. Follow the agile approach - go with the simplest solution that works, then refactor later when you need more sophisticated behavior. Be familiar with the complex features of GWT so you know what to look for later, but don't learn them now. You'll have a hard enough time detangling events and widget behaviors and (ugh) visual design. Jeff On Fri, Jun 3, 2011 at 7:59 AM, rhubarb <[email protected]> wrote: > I'm finally getting around to starting an app engine project, years > after first downloading and playing with the python-only version - I > find myself back at square 1 with the java version. I need some advice > on getting started. > > Typically I find myself blocked from starting by a bewildering number > of technology choices that seem to need to be made up front: java vs > python, gwt vs javascript, objectify vs twig vs jdo, etc etc. All of > these choices tend to lead me into massive research projects which, > while - truth be told - I thoroughly enjoy the research, eventually > result in so much inertia at the start of the project that it never > gets off the ground. > > I'm sure a lot of you can relate. > > So let me lay out where my head is now. > Basic goals: > - I want to build a web app that will eventually have millions of > users (who doesn't, but hey, let me dream for a moment) > > - I've decided to go with Java. Let's not even discuss it - I'm > comfortable with Java (though not really with J2EE). > > - I agonized for some time over GWT vs pure Javascript, like YUI. I > kind of favour YUI, because I don't really like working in a language > that generates the language I actually need - that tends to lead to > maintenance headaches and compromises in functionality. > Nonetheless, I've decided to go with GWT now, because it seems easier > to get started that way, and I can code and debug in Eclipse, with > which I'm very familiar. > Let's not discuss that choice either, other than to consider that I > would like to have the option to pull back from GWT some time in the > future and put a YUI front end on my java backend if need be. > > - Having got that far, I went into the GAE documentation, and got as > far as the datastore documentation when the little blue box detailing > framework alternatives to JDO and JPA - then got sidetracked again, of > course... > On the one hand I'm very familar with Hibernate, so JPA was tempting - > and might help with future independence from GAE. > Note that these startup decisions are always plagued by doubts about > what happens in the future, when the fact is the doubts tend to ensure > that the future never comes about :( Future independence be damned, > let's just concentrate on the project getting started so it has a > future. > So anyway, I was drawn in briefly by Slim3, and then gave it up in > favor of Objectify. > (Note I still haven't written byte-one of this code - these are all > just vaporware decisions right now). > I like Objectify because it's simple enough to use and close enough to > pure GAE that I'm not really tying myself down. > > That decision made, I'm ready to get started... > > But wait: reading about objectify, lead me to a Google IO video on > Objectify with Request Factory. (http://www.youtube.com/watch? > v=imiquTOLl64&feature=player_embedded#at=2066). Now, I was almost > ready to resist this and just get started, but I went through a > tutorial on creating and understanding the standard GAE/GWT project - > mostly the GWT side - and I was kind of bothered by the huge amount of > boilerplate involved: all of those interfaces, serverImpls and client- > sides for every widget/page. So I watched and was impressed by that > presentation. > > But of course, it lead right into another presentation by Philippe > Beaudoin on GWTP > http://code.google.com/p/gwt-platform/. This turns out to a fork of > two other technologies to reduce GWT boilerplate: gwt-dispatch and gwt- > presenter. Argh, here we go - they fork, I fork, and off I am on > another technology reading binge. > > That's about as far as I got - I was already to start coding using > GWTP when I pulled back for a moment and realized that I was maybe > getting in too deep. GWTP has a nice bunch of documentation behind it, > won't it be easier, in my first go at my first app, to just start with > the basics from Google. I mean Objectify for persistence, sure, its > easy enough to grok, and low-level persistence seems very trivial > anyway, but for presentation, perhaps I'm better off just writing all > of that boilerplate for now, hmm? > > Another thing to consider here, is that all of these developers who > are using packages like GWTP, and developing them and blogging about > then, all come from a background of having started with the basics, > and worked their way through the alternatives. Some of that results in > their documentation being slanted by that knowledge and less > accessible to someone just getting started. > > What do you all think? Should I go it the hard way to start with and > build with pure GWT based on the main google samples? Or jump right in > with a framework? > > thanks for reading this far - and sorry for the total noob questions > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
