We are currently designing a GIS intranet application using GWT and ESRI ArcGIS. We are looking at 2 client side Javascript libraries:
The ESRI Javascript API
Open Layers
The library will have to support fused and non fused map caching as well as some layers that are dynamic. Open Layers GWT integration exists but the ESRI library is based on Dojo.
I'm looking for information and advice on where the gotchas will be for either approach.
If you're already using ArcGIS, go with the ArcGIS API for JavaScript. I think there are a lot more people out there using ArcGIS Server fused/non-fused map caches + ArcGIS API for JS than ArcGIS Server + OpenLayers so you'll have an easier time finding samples that are applicable to what you're doing.
I'd probably go with Dojo as ESRI is already built on that one. It has great way of creating widgets and relatively good documentation. a lot of can be found at their forums (though these are now closed for posting new questions -> use stackoverflow instead or their mailing list)
here is the link that might be helpful to you
javascript libraries comparison
GWT is perfect to structure big one-page application. So I'm developing a wrapper for the Javascript library.
http://github.com/lukefx/EsriGwt
It's in a super early state...I'm searching for someone who wants to help me :)
I have picked up the lukefx's GWT project, retooled many of the 'under the hood' components. I started a new project here: gwt-esri
Related
From my understanding Vaadin consumes GWT and adds an engine on the browser end to interact with server side UI. In looking for a 'Confluence' Vaadin add on I came up with nothing. I would like to use Javascript instead of Vaadin pure Java to talk with Confluence 'rest'. However I believe that I found find some GWT Confluence plugins. Since Vaadin uses GWT already do you think a GWT confluence plugin is the way to go? Also there is a angularjs/vaadin addon and then I could us angularjs with Confluence. Your thoughts please...
The traditional Vaadin Framework consists of a java backend on the server and components which are rendered on client side. Most of those are client side rendering are written with Java/GWT.
In addition to this, there exist the Vaadin Elements, which are "pure" JS components for the frontend.
Is Vaadin Elements meant to be used with the Vaadin Framework?
If you wish to write a app with all logic client side (And perhaps calling some REST api), then you will need to write this in JS (perhaps with Angular/Polymer etc.).
In that case you could use the vaadin elements for some of the tasks, but you will remain in the JS world.
To answer your question:
Using a GWT thing and combining it with JS isn't the most up-to-date way to handle things.
GWT makes sense when you wish to write frontend code with Java but certainly not for JS.
Currently, I am working on a project that is basically an ASP.NET SPA web application using durandal much like the John Papa's Code Camper SPA demo application.
The application is currently using the following javascript libraries/technologies:
durandal
knockout
require (AMD)
and NoSQL (MongoDB) as the database.
The plan now is to integrate the breeze to utilise its rich data management and other features. The problem is that the breeze is based on the concept of metadata. I have looked on the samples that were mostly based on the Entity Framework and those are not solving my purpose.
I have even looked into the samples in the breeze website with NoDB (Edmunds and Todo Lists) and these are also not solving the purpose due to the same metadata dependency issue as the application is quite big. Recently, a new sample named MongoDB (Zza Pizza Ordering) based on the BMEAN stack (Breeze, Mongo, Express, Angular and Node javascript applications) got released but the question is I didn't want to concentrate on including more javascript files (Express, Angular and Node).
Please provide me a small sample application based on the technology stack (Durandal, Knockout, Require, Mongo and Breeze) in case anyone have worked on the similar technology stack as I mentioned about.
Take a look at the samples here. You will probably not find the exact technology stack that you are using but the samples include examples of knockout, require, durandel, and mongoDB.
have a look at DurandalAuth the Demo ist here or Pluralsight from john Papa i hope this will help you starting
The API docs give a tantalizing hint of GWT bindings for the realtime service, but I can't find other mention of them.
Parameters:
gapi.drive.realtime.GwtDocumentBridge bridge — The driver for the GWT collaborative libraries.
I'm in the process of writing a GWT app with the realtime API and there's a bunch of complex plumbing that would be great to avoid! Is this GWT collaborative libraries reference to something that is already out there?
Sorry, but that is just an implementation detail. There is not a GWT API available at this time, just the javascript one.
First off, I've never used GWT before. I have good experience in HTML/CSS/JS/JSP.
I'm looking for people's opinions on the suitability of Google Web Toolkit for a brand new web app I'm developing.
A big requirement is that the UI is attractive and well designed (Does not look like a clunky Java/Swing App).
It should look like any typical HTML/CSS/JS based modern website.
It is an internal company application so no SEO is required.
JSF is not an option.
The web app frameworks used will be Spring Webflow and Spring MVC. It will use lightweight controllers to communicate with a service layer.
Would Spring Tiles combined with JSP be an easier or more flexible option than GWT for what I am trying to achieve?
Advantages/Disadvantages of GWT and other options welcome.
Thanks
Advantages of GWT
You don't really need to know any JavaScript, since all your client side code will be in Java
This is usually the main reason people go for GWT. They're backend developers who know Java but don't know Javascript, and they don't really want to learn it. Still, you should be careful about this. GWT is a very complete and complex framework with many concepts that are specific to GWT. Even though you'll be coding in Java you will still have to go through many tutorials and documentation before you can build a clean GWT app
Ready to use widgets, like date pickers, dynamic tables, layout panels, popups
It's not really specific to GWT. Other front end framework, like jQuery or Dojo or whatever also give you these. You can have a look at the GWT Showcase to see what GWT has to offer.
GWT takes care of a lot of complex and potentially dangerous stuff for you.
Stuff like Cross-Browser Support, Internationalization, Image and static resources bundling, Front end security, Ajax communication with a server, Events and MVP (just like MVC) framework support. Have a look at the documentation, it is very well done and very thorough.
Debugging is easy
GWT has two different 'modes'. When you're building your app for production, gwt will compile all the java code for the front-end that you wrote into javascript. This javascript will be executed in your clients' browsers. But when you're developping, you can run your app without compiling your java code to javascript. This lets you use a debugger to debug your interface. It's a very good tool.
Disadvantages of GWT
As I said before, GWT is a full framework, with concepts specific to it. Don't think that just because it's in java and you know java that you won't have to learn new stuff.
Interfacing GWT with back end frameworks is not easy
The most common way for your GWT client code to communicate with a server is by using GWT RPC mechanism. It means that you will need to have servlets that implement specific interfaces. You should definetly read the docs on client-server communication to see if that fits well with Spring. A search on SO or Google should give you pointers to setup your application.
Anyone know of any tutorials implemented across multiple web application frameworks?
For example, I'm starting to implement GWT's Stock Watcher tutorial in Turbo Gears 2 to see how difficult it will be to do in Turbo Gears 2.
Likewise, I'll be looking for a Turbo Gears 2 tutorial to implement in GWT.
But I hate to re-create the wheel - so I was wondering if anyone was familiar with such projects and/or would be interested in helping me work on such a project.
Thanks,
--Spencer
While it is possible to combine the two frameworks, I hope to convince you not to do so.
Most web-frameworks, including Turbogears, have server-side page flow management. A page is served to the user by generating html, user interacts by clicking on links or by posting a form, the browser sends a fresh request to the server, and finally server responds with new html altogether. You AJAX'ify the page by using a js library, or the framework has some support. But, in general, transition from one view to another is done on the server side.
GWT is totally different. There is only a single HTML page in the system. Once this page is downloaded, everything happens on the browser through javascript. When the user clicks on a link, its essentially just a javascript function call. History management is done through fragment urls (the portion after the #).
These two philosophies are poles apart. So apart that I daresay GWT doesn't work well with any server-side web technology. See this discussion on GWT vis-a-vis JBPM/Struts/Spring Webflow. And see this discussion on GWT v/s JQuery.