@Anders Forsell: We were careful to make a good separation between UI 
concerns in Java from the very beginning. We were very strict about this. 
So, a "forced opportunity" to redo this isn't a benefit to us.

Otherwise... if community is to help and roll up the sleeves we still need 
some things in the core of GWT. Without it things become essentially 
impossible for all practical purposes. Getting back to my original question 
- the business proposition/value let's consider different reasons I can 
enumerate why people used GWT in the past and what options they would have 
today:


   1. *Just wanted a typed, safe language to work with in the browser.* 
   TypeScript + JavaScript has evolved itself .. and anything below.
   
   2. *Wanted a language in which dangerous undisciplined JavaScript code 
   wasn't possible.*
   It is always possible but it may be hidden under the rug. TypeScript 
   with some validators, Kotlin and others. If you want Java, JSweet, TeaVM, 
   Dragome, Bck2Browser, JavaPoly, ST-JS... are there ... and, yes, GWT.
   
   3. *Wanted Java for sentimental reasons*
   Java, JSweet, TeaVM, Dragome, Bck2Browser, JavaPoly, ST-JS... are there 
   ... and, yes, GWT.
   
   4. *Wanted all/most of Java RE/VM semantics*
   Dragome, not sure of Bck2Browser and others. Not GWT - it may have a 
   good chunk of classes emulated but not all of the semantics.
   
   5. 
*Wanted to share client-side code between web, mobile devices, etc. Not 
   sharing anything with the server. Will abstract the presentation layer 
   "myself". *Kotlin, TeaVM, Dragome, Bck2Browser, ...and, yes, GWT. You 
   will *not* use the HTML abstraction for all the platforms. *All* present 
   platforms, including web/HTML do widgets. Depending on HTML on all is 
   possible but, then again, it really is just a web app...
   
   6. *Same as above, but expecting that the presentation layer abstraction 
   is already present (i.e. not "Swing" approach)*
   Kotlin?
   
   7. *Sharing code between client and server*
   This gets to be fun. What code do you want to share? Do you care about 
   what language you run on the server? I am very far from being a fan of 
   node.js but many use it, and it can be used with languages that can 
   translate to JavaScript (e.g. TypeScript and others).
   
   If you want Java on the server then what code will you share? If you are 
   only going to share classes that are NOT used for communication (DTOs are 
   excluded here as they are not about code sharing but inherent necessity), 
   then you really can use anything from (4) or (5). If you want to use Java 
   communicate instances of shared classes then you either need to make the 
   communication happen yourself (say via DTOs and 3rd party frameworks) but 
   you become constrained as to what you can and need to do and what libraries 
   you can use - because they need to be compatible in terms of communication. 
   If you don't want to have to worry about this, but only about efficiency of 
   communication and let the framework handle the wire transfers, then there 
   you can use GWT 2.8.1 or older (not 3.0), TeaVM (you have to code a bit but 
   it is possible) and, possibly, Dragome (not sure, but it does reflection 
   too, so it may be possible to add if not already in). 


I may have missed some solutions out there and haven't listed all those 
that do apply in all cases but you get the point. Getting the benefit of 
Closure optimization will be possible with any JavaScript-based solution, 
including JSweet, TeaVM and possibly others (not Dragome as far as I know). 
In terms of controlling UI in the web, you can use whatever fills you heart 
with warmth if you like JavaScript approaches (Angular, React and many 
others) with almost any of these, perhaps best with JSweet if you want 
Java. 

So what are differentiators of GWT? Repating, to an extent, my first post 
here:


   - J2CL? Not really. The same can be applied to most other approaches 
   mentioned above.
   - JSInterop? Not really. Other approaches have other, similar and even 
   better integration (or no need for one).
   - Presentation control? Matter of taste, but if one wants to get close 
   to the metal, then there are ways to get closer and better. Widget-based 
   approach is easier/safer to work with if one is to share presentation built 
   on top of them between different devices or of, like we do, wants to 
   abstract the foundation's appearance *and* behaviour from the code built 
   downstream from us. Availability of libraries is questionable as all those 
   that depended on GWT widgets go down the drain and have questionable future 
   support.
   - Size of code? Not really. TeaVM is close and can use the same 
   optimization tool GWT will.
   - Code splitting? Yes, if it survives, but others aren't far behind. 
   With TeaVM this may be *relatively* a simple endeavour even across 
   synchronous calls and without the "leftovers" issue.
   - Permutations? Not really. These are not a benefit but a painful means 
   to an end that isn't as needed as before and could be abstracted otherwise?
   - Serialization, RPC? Non existent.
   - Compatibility with existing code? No such thing in complex cases. 
   There will be always something you need to rewrite. It may just happen so 
   that, if you take a careful look, using something other than GWT may 
   actually be better.
   - I18N/L10N resources? We could not live with the number of permutations 
   this creates so we have done thing ourselves, took it away from the 
   permutations system. That shows the benefit of that.
   - Tooling - i.e. debugging? Others have good, if not better, tools.
   - Timing? GWT 3.0 does not exist yet. Others do and are, arguably, not 
   sitting still.


I am *personally* willing to help but can only do so if there are 
provisions made to make things at least possible...


-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit-contributors+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/0464a1db-392f-4796-9f19-0de4e9f68fbf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to