Ok jfxrt.jar sizes build from openjfx: 8165779 -> 7736259 bytes
Will try to get this into a fork on github so you all can play with the actual state... -Sven On Mon, Oct 7, 2013 at 10:32 PM, Sven Reimers <sven.reim...@gmail.com>wrote: > First batch of statistics (controls submodule so far) > > 1630 vs 996 class in controls (my actual state on disk, YMMV) > > More statistics to follow... > > -Sven > > > On Mon, Oct 7, 2013 at 6:24 PM, Richard Bair <richard.b...@oracle.com>wrote: > >> My thoughts exactly, which is why I'm grateful for Sven for trying it out >> :-). I expect that Lambda would make a big reduction in static class count >> (i.e.: class files), but not a major reduction in class count at runtime >> (since dynamic classes are created for Lambdas). So a normal Jar should be >> significantly smaller, while a Pack200 jar probably has little to no >> difference. Execution speed should be the same. Startup might be faster or >> slower, I'm not sure (but I would expect it to be negligible). If the jar >> is significantly reduced in size, it might be useful for embedded which >> doesn't use Pack200. >> >> But we need the data, because making the change at this point, otherwise >> in a couple months when we get a 9 / 8u workspace opened we can start >> putting the work in there (since in my mind there is no question but that >> for 9 we need to complete lamdafication). >> >> Richard >> >> On Oct 7, 2013, at 8:19 AM, Danno Ferrin <danno.fer...@shemnon.com> >> wrote: >> >> > IntelliJ at least has a decent de-lamba assistant, not sure about >> NetBeans >> > since it isn't my daily driver. So I am not concerned about the >> > backporting impact if (and this is the big if) there is demonstrable >> > improvement in either jar size, execution speed, or runtime memory >> impact. >> > Ideally all three. Worth the hassle in that case. But if all we get >> from >> > this is busy work, then i would then question it's value. >> > >> > >> > On Mon, Oct 7, 2013 at 8:21 AM, Tom Schindl < >> tom.schi...@bestsolution.at>wrote: >> > >> >> ... I can't see any real improvement for using lambdas beside that you >> >> killed off warnings which could be fixed otherwise as well. >> >> >> >> So I really don't get what it would help us beside making e.g. RoboVM >> >> our sole chance to get FX on iOS harder to maintain. >> >> >> >> Tom >> >> >> >> On 07.10.13 16:16, Sven Reimers wrote: >> >>> Ok. So I will file a P4 saying Lambdafication for Controls >> >>> and send the diff to Richard/Kevin/Jonathan to be attached.. >> >>> >> >>> should I base the change on b110 (master)? >> >>> >> >>> I could create a public bitbucket branch based on master and add my >> >> changes >> >>> there - better idea? >> >>> >> >>> What approach is most simple for review? >> >>> >> >>> Should I split test and library code changes? >> >>> >> >>> -Sven >> >>> >> >>> P.S. Shall I try to get this done as well for other modules? Which >> would >> >> be >> >>> preferred? (Just in case I have some more time to spend) >> >>> >> >>> >> >>> >> >>> On Mon, Oct 7, 2013 at 1:26 PM, Kevin Rushforth >> >>> <kevin.rushfo...@oracle.com>wrote: >> >>> >> >>>> ** >> >>>> >> >>>> 5. Should we enable more -Xlint warnings in OpenJFX build? >> >>>> >> >>>> 6. Any chances anything of this can still go in 8 (e.g. get rid of >> >> warnings >> >>>> >> >>>> >> >>>> We have 2 weeks where we can still accept P4-P5 bugs into FX 8, and >> >>>> getting rid of warnings would be a P4 bug. I guess it depends on how >> >>>> intrusive the changes are and whether someone has time to review it >> in >> >> the >> >>>> next two weeks. >> >>>> >> >>>> -- Kevin >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> Sven Reimers wrote: >> >>>> >> >>>> Ok. So here are the results of trying to add lambda and diamond to >> the >> >>>> controls module: >> >>>> >> >>>> 1. A lot of generics and typing to be fixed (esp. in tests). Seems >> you >> >> can >> >>>> get some anonymous inner classes type checked by the compiler, but >> not >> >> the >> >>>> lambda equivalent.. very interesting. >> >>>> >> >>>> 2. 279 Files modified (including tests) >> >>>> >> >>>> 3. A lot of the automatic replacements could probably be nicer e.g. >> >>>> >> >>>> ft.setOnFinished(new EventHandler<ActionEvent>() { >> >>>> @Override public void handle(ActionEvent >> >>>> actionEvent) { >> >>>> getChildren().remove(tm.textNode); >> >>>> } >> >>>> }); >> >>>> >> >>>> was replaced to: >> >>>> >> >>>> ft.setOnFinished((ActionEvent actionEvent) -> { >> >>>> getChildren().remove(tm.textNode); >> >>>> }); >> >>>> >> >>>> most unobtrusive code probably: >> >>>> >> >>>> ft.setOnFinished((actionEvent) -> getChildren().remove(tm.textNode)); >> >>>> >> >>>> 4. A lot of illegal forward reference errors - these were result of >> >> missing >> >>>> this in the automatic transformation from anonymous inner to lambdas >> >> (seems >> >>>> the rules are not identical - you have to add "this." as prefix if >> using >> >>>> lambdas - not sure this is the expected way it should work) >> >>>> >> >>>> 5. Should we enable more -Xlint warnings in OpenJFX build? >> >>>> >> >>>> 6. Any chances anything of this can still go in 8 (e.g. get rid of >> >> warnings >> >>>> >> >>>> 7. Probably more things I just can't think of at the moment... >> >>>> >> >>>> How to take this forward? If there is interest in the change I could >> >> make >> >>>> available... >> >>>> >> >>>> Comments? Ideas? >> >>>> >> >>>> -Sven >> >>>> >> >>>> >> >>>> >> >>>> On Fri, Oct 4, 2013 at 2:19 PM, Sven Reimers <sven.reim...@gmail.com> >> < >> >> sven.reim...@gmail.com> wrote: >> >>>> >> >>>> >> >>>> >> >>>> Oh and btw - would you go for lambda with or without additional type >> >> info >> >>>> before parameter name? >> >>>> >> >>>> -Sven >> >>>> >> >>>> >> >>>> On Fri, Oct 4, 2013 at 2:05 PM, Sven Reimers <sven.reim...@gmail.com> >> < >> >> sven.reim...@gmail.com>wrote: >> >>>> >> >>>> >> >>>> >> >>>> Ok. Here you go... >> >>>> >> >>>> I just did an inspection run for the controls module and my IDE came >> up >> >>>> with (drum roll) 888 possible lambda conversions.. >> >>>> >> >>>> Looking through them I discovered that usage of <> (aka diamond >> syntax) >> >>>> is not used (or at least not used a lot) in at least the controls >> >>>> modules. My IDE showed me 1171 occurrences. >> >>>> >> >>>> Is there a good reason not to use diamonds? >> >>>> >> >>>> Will now try to apply all those changes and figure out if this still >> >>>> builds... up next: go through the other modules... >> >>>> >> >>>> -Sven >> >>>> >> >>>> >> >>>> On Fri, Oct 4, 2013 at 1:35 AM, Richard Bair < >> richard.b...@oracle.com> >> >> <richard.b...@oracle.com>wrote: >> >>>> >> >>>> >> >>>> >> >>>> Brian was telling me at J1 that whether parallel gets you performance >> >> or >> >>>> not depends on the size of the collection and the complexity of the >> >> work to >> >>>> perform. There is definitely a point at which parallel helps -- and a >> >> point >> >>>> at which it hurts. >> >>>> >> >>>> Richard >> >>>> >> >>>> On Oct 3, 2013, at 3:33 PM, Hervé Girod <herve.gi...@gmail.com> < >> >> herve.gi...@gmail.com> wrote: >> >>>> >> >>>> >> >>>> >> >>>> Here is a nice example, taking advantage of the ease of going >> >>>> >> >>>> >> >>>> parallel. Apparently the performance without parallel will also >> further >> >>>> improve. >> >> >> http://blog.hersen.name/blog/2013/10/01/project-lambda-it-was-worth-the-wait/ >> >>>> >> >>>> Hervé >> >>>> >> >>>> Sent from my iPad >> >>>> >> >>>> >> >>>> >> >>>> On 4 oct. 2013, at 00:20, David Grieve <david.gri...@oracle.com> < >> >> david.gri...@oracle.com> >> >>>> >> >>>> wrote: >> >>>> >> >>>> >> >>>> And what about Stream? I like the declarative code that comes from >> >>>> >> >>>> >> >>>> using Stream and I can see places in the code where Stream could be >> >> used, >> >>>> but I wonder about its performance relative to iterators and/or >> enhanced >> >>>> for loops. >> >>>> >> >>>> >> >>>> On Oct 3, 2013, at 4:45 PM, Richard Bair <richard.b...@oracle.com> < >> >> richard.b...@oracle.com> >> >>>> >> >>>> wrote: >> >>>> >> >>>> >> >>>> Hello, OpenJFX Community. >> >>>> >> >>>> There's a question about using Java 8 features in FX. >> >>>> >> >>>> I've been working on the support for InputMethods in JFXPanel which >> >>>> >> >>>> >> >>>> is an important feature for many users who speak hieroglyphic >> >> languages. >> >>>> >> >>>> >> >>>> The issue is tracked under: >> >>>> >> >>>> >> >>>> https://javafx-jira.kenai.com/browse/RT-13248 >> >>>> >> >>>> In order to have a high-quality support we need to change >> >>>> >> >>>> >> >>>> javafx.scene.input.InputMethodRequests interface and introduce 3 new >> >>>> methods. This is not needed for pure FX applications right now, but >> >>>> absolutely required for InputMethods in the JFXPanel. However, the >> >>>> interface is public and it was present since FX2.0, so changing it >> would >> >>>> become a breaking change. So the only way to avoid the problem is >> using >> >> the >> >>>> default methods. Those would return some stub values, the JDK is OK >> with >> >>>> that, as it would not crash or throw exceptions, but text composition >> >> would >> >>>> not work correctly. >> >>>> >> >>>> >> >>>> I know that we want to avoid using the Java 8 features in the >> >>>> >> >>>> >> >>>> JFX-8, so I wanted to ask - is it OK to use the default methods >> here? >> >>>> >> >>>> >> >>>> If you are staying away from JDK8 features for the JFX78 backport, >> >>>> >> >>>> >> >>>> don't worry. There are more issues with new JDK8 APIs than with the >> >> new >> >>>> language features. >> >>>> >> >>>> >> >>>> For example there were default methods put into some collections >> >>>> >> >>>> >> >>>> classes that we solved by pushing them down to the first implements. >> >> But >> >>>> the Date and Time picker depends on the new time package. The >> threeten >> >>>> backport won't be updated until after 8 ships, so that has been >> removed >> >> so >> >>>> far. >> >>>> >> >>>> >> >>>> I'de be interested to know what a wholesale lamdaization would >> >>>> >> >>>> >> >>>> result in speed wise and code size wise (both source and compiled). >> >> From >> >>>> what I can tell the IDEs can lambda and de-lambda fairly easily, so >> it >> >> jsut >> >>>> makes the backport more of a busy work proposition. If there were >> >>>> performance gains it would also make a great front page story in the >> >> next >> >>>> java magazine or a case study.. >> >>>> >> >>>> >> >>>> After having used Lambda's for JavaOne, I'd love to make the >> >>>> >> >>>> >> >>>> conversion, even if in the end the performance was the same, because >> >> the >> >>>> savings in noise in the Java files is so big. At one time I just took >> >> the >> >>>> concurrent classes and lambda-ized them to measure the impact on >> those >> >>>> classes. You could maybe pick a package and just lambda-ize that one >> >>>> package and see what happens in terms of size reduction. We might >> see: >> >>>> >> >>>> >> >>>> + A reduction in the overall class size (not pack-200'd) >> >>>> - An increase in startup time (have to spin up synthetic classes >> >>>> >> >>>> >> >>>> created at usage time) >> >>>> >> >>>> >> >>>> +/- And increase or decrease in performance >> >>>> + A decrease in source code >> >>>> >> >>>> It would be interesting to get some data for these points and see >> >>>> >> >>>> >> >>>> what effect lambda's have. Especially if an IDE can just do it in >> >> bulk… >> >>>> >> >>>> >> >>>> Richard >> >>>> >> >>>> >> >>>> -- >> >>>> Sven Reimers >> >>>> >> >>>> * Senior Expert Software Architect >> >>>> * NetBeans Dream Team Member: http://dreamteam.netbeans.org >> >>>> * Community Leader NetBeans: http://community.java.net/netbeans >> >>>> Desktop Java: >> >> http://community.java.net/javadesktop >> >>>> * Duke's Choice Award Winner 2009 >> >>>> * Blog: http://nbguru.blogspot.com >> >>>> >> >>>> * XING: https://www.xing.com/profile/Sven_Reimers8 >> >>>> * LinkedIn: http://www.linkedin.com/in/svenreimers >> >>>> >> >>>> Join the NetBeans Groups: >> >>>> * XING: http://www.xing.com/group-20148.82db20 >> >>>> * NUGM: http://haug-server.dyndns.org/display/NUGM/Home >> >>>> * LinkedIn: http://www.linkedin.com/groups?gid=1860468 >> >>>> http://www.linkedin.com/groups?gid=107402 >> >>>> http://www.linkedin.com/groups?gid=1684717 >> >>>> * Oracle: https://mix.oracle.com/groups/18497 >> >>>> >> >>>> >> >>>> -- >> >>>> Sven Reimers >> >>>> >> >>>> * Senior Expert Software Architect >> >>>> * NetBeans Dream Team Member: http://dreamteam.netbeans.org >> >>>> * Community Leader NetBeans: http://community.java.net/netbeans >> >>>> Desktop Java: >> >> http://community.java.net/javadesktop >> >>>> * Duke's Choice Award Winner 2009 >> >>>> * Blog: http://nbguru.blogspot.com >> >>>> >> >>>> * XING: https://www.xing.com/profile/Sven_Reimers8 >> >>>> * LinkedIn: http://www.linkedin.com/in/svenreimers >> >>>> >> >>>> Join the NetBeans Groups: >> >>>> * XING: http://www.xing.com/group-20148.82db20 >> >>>> * NUGM: http://haug-server.dyndns.org/display/NUGM/Home >> >>>> * LinkedIn: http://www.linkedin.com/groups?gid=1860468 >> >>>> http://www.linkedin.com/groups?gid=107402 >> >>>> http://www.linkedin.com/groups?gid=1684717 >> >>>> * Oracle: https://mix.oracle.com/groups/18497 >> >>>> >> >>>> >> >>>> >> >>>> >> >>> >> >>> >> >> >> >> >> >> > > > -- > Sven Reimers > > * Senior Expert Software Architect > * NetBeans Dream Team Member: http://dreamteam.netbeans.org > * Community Leader NetBeans: http://community.java.net/netbeans > Desktop Java: > http://community.java.net/javadesktop > * Duke's Choice Award Winner 2009 > * Blog: http://nbguru.blogspot.com > > * XING: https://www.xing.com/profile/Sven_Reimers8 > * LinkedIn: http://www.linkedin.com/in/svenreimers > > Join the NetBeans Groups: > * XING: http://www.xing.com/group-20148.82db20 > * NUGM: http://haug-server.dyndns.org/display/NUGM/Home > * LinkedIn: http://www.linkedin.com/groups?gid=1860468 > http://www.linkedin.com/groups?gid=107402 > http://www.linkedin.com/groups?gid=1684717 > * Oracle: https://mix.oracle.com/groups/18497 > -- Sven Reimers * Senior Expert Software Architect * NetBeans Dream Team Member: http://dreamteam.netbeans.org * Community Leader NetBeans: http://community.java.net/netbeans Desktop Java: http://community.java.net/javadesktop * Duke's Choice Award Winner 2009 * Blog: http://nbguru.blogspot.com * XING: https://www.xing.com/profile/Sven_Reimers8 * LinkedIn: http://www.linkedin.com/in/svenreimers Join the NetBeans Groups: * XING: http://www.xing.com/group-20148.82db20 * NUGM: http://haug-server.dyndns.org/display/NUGM/Home * LinkedIn: http://www.linkedin.com/groups?gid=1860468 http://www.linkedin.com/groups?gid=107402 http://www.linkedin.com/groups?gid=1684717 * Oracle: https://mix.oracle.com/groups/18497