With GWT 2.8 yes. It's been suggested that there could be some regexp (or 
other kind of pattern) matching added later to whitelist/blacklist some 
@JsType(isNative=false) that you would/wouldn't want to see exported.
In the mean time, don't over-use @JsType without isNative=true (in 
libraries), better (if possible) separate exported types to a specific 
"application" project to be compiled to a standalone JS script.

Note that for the java.util.List et al. currently annotated with @JsType, 
the overhead was deemed small enough (because that's only 4 classes without 
that many subclasses).

My suggestion would be, for GWT 2.8, to only use JsInterop for mapping 
native objects (i.e. only isNative=true).
Google likely uses JsInterop with isNative=false but with 
-closureFormattedOutput and an additional round of Closure Compiler 
optimisations that would prune unused code and re-obfuscate the names.

On Thursday, September 15, 2016 at 11:01:14 AM UTC+2, Vassilis Virvilis 
wrote:
>
> So
> What you say is: It is not possible to have a page with: 
>     *** gwtapp + gwtlib + js_export + optimization ***
>
> What is possible to have is either or
>
> 1) gwtapp + gwtlib + optimization
>
> or  (xor actually)
>
> 2) gwtapp + gwtlib + js_export
>
> right?
>
> a) We assume gwtlib has @JsType(isNative=false) types
> b) Optimization is used in the broad sense for method and properties 
> renaming, removal and other optimization steps
>
> Jens, Thomas thanks a lot for the education.
>
>    Vassilis
>
>
> On Thu, Sep 15, 2016 at 11:44 AM, Thomas Broyer wrote:
>
>> Let me try: without -generateJsInteropExports, GWT acts as if 
>> @JsType(isNative=false) wasn't there at all.
>> Why'd you want this?
>>
>>    - when @JsType(isNative=false) is applied to types you didn't write 
>>    yourself (third-party). For example, java.util.Collection, 
>> java.util.List, 
>>    java.util.Map, java.util.Set, and java.lang.Enum are annotated with 
>>    @JsType. If you don't use -generateJsInteropExports, their 
>> non-@JsIgnoreâ‹…d 
>>    public members won't be renamed, and the @JsProperty and 
>>    @JsMethod-specified names won't be honored, so you'll have very short 
>>    (obfuscated) names in your app. If you use -generateJsInteropExports, the 
>>    given js-names will be honored and your code will be slightly bigger, but 
>>    then you can pass a java.util.List to JS and you can call getAtIndex and 
>>    removeAtIndex (for example) on it from JS code.
>>    - when you want to possibly export your project as a standalone JS 
>>    lib, but have it consumable by GWT apps with all the GWT optimization 
>>    goodness: your types will be annotated with @JsType, apps that use your 
>> GWT 
>>    library without using -generateJsInteropExports will have 
>> highly-optimized 
>>    code; but you can use -generateJsInteropExports to export your annotated 
>>    types to create a standalone JS lib. GWT apps consuming your GWT library 
>>    and using -generateJsInteropExports will pay the price for your @JsType 
>>    though (see example above about java.util.List), so you'll probably want 
>> to 
>>    separate out some of your code into a project specific to exporting your 
>> JS 
>>    lib (similarly to how GWTUpload/JSUpload did it)
>>    That was Jens' example.
>>
>>
>> On Thursday, September 15, 2016 at 10:18:55 AM UTC+2, Vassilis Virvilis 
>> wrote:
>>>
>>> Jens sorry - one more round if you please
>>>
>>> > The library exists as GWT library (*.jar file with *.gwt.xml)...
>>>
>>> This GWT library is source right? That means it is compiled by the 
>>> compilation session of MyApplication right?
>>>
>>> Unless.... (light bulb goes on)
>>>
>>> In some cases you want the library to act as JS library for one Page but 
>>> for another page you only plan to link it with the GWT MyApplication (and 
>>> not export is as a JS library) where normal optimization techniques apply.
>>>
>>> Is that it? If so tricky...
>>>
>>>
>>>     Vassilis
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Sep 15, 2016 at 1:54 AM, Jens wrote:
>>>
>>>>
>>>> Is this GWT library exported as JS only? ... 
>>>>>
>>>> So I don't get it. What am I missing?
>>>>>
>>>>
>>>> The library exists as GWT library (*.jar file with *.gwt.xml) so you 
>>>> can use it right away in your GWT app, but the library is also exported by 
>>>> the library maintainer to JavaScript so that JavaScript people can also 
>>>> use 
>>>> it right away by including a *.js file.
>>>>
>>>> In that case your app does not want to use -generateJsInteropExports 
>>>> because it directly uses the GWT library which has @JsType(isNative = 
>>>> false) all over the place in its Java files. If you would use 
>>>> -generateJsInteropExport in your app, it would have a negative impact on 
>>>> your code size because these @JsType classes would not be optimized/pruned 
>>>> then. Now imagine you have several of such libraries in your app.
>>>>
>>>> -- J.
>>>>  
>>>>
>>>
>>>
>>>
>>> -- 
>>> Vassilis Virvilis
>>>
>>
>>
>
>
> -- 
> Vassilis Virvilis
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to