OpenJFX Lambda Day, Feb 25th 2014

Martin Sladecek martin.sladecek at oracle.com
Tue Feb 18 23:45:46 PST 2014


Looks good, please file the request into JIRA, so it won't get lost.

Thanks,
-Martin

On 02/18/2014 06:25 PM, anton nashatyrev wrote:
> Hello All,
>
>     I'd like to add my 2 cents to lambdafication of JavaFX:
>
>     Recently I was working on a fix in the JFX and used convenient JFX 
> beans feature - 'select binding':
>
> javafx.beans.binding.Bindings.select*(ObservableValue<?> root, 
> java.lang.String... steps)
>
>     I.e. to select some chain of properties one should write something 
> like:
>
> BooleanBinding bb = Bindings.selectBoolean(control.sceneProperty(), 
> "window", "isShowing");
>
>     When having templates and lambdas this API looks legacy. This kind 
> of usage is not type-safe, may lead to runtime errors and involves 
> reflection in the implementation.
>
>     The idea is to use type-safe functional-style 'selector' like this:
>
> @FunctionalInterface
> public interface Selector<T, E> {
>      ObservableValue<E> selectValue(T t);
> }
>
>     and the helper interface (class):
>
> public interface SelectElement<E> {
>      <K> SelectElement<K> select(Selector<E, K> p);
>
>      <K extends Boolean> BooleanBinding selectBoolean(Selector<E, K> p);
>      <K extends Integer> IntegerBinding selectInteger(Selector<E, K> p);
>      <K extends Long>    LongBinding selectLong(Selector<E, K> p);
>      <K extends Float>   FloatBinding selectFloat(Selector<E, K> p);
>      <K extends Double>  DoubleBinding selectDouble(Selector<E, K> p);
>      <K extends String>  StringBinding selectString(Selector<E, K> p);
>      <K>                 ObjectBinding selectObject(Selector<E, K> p);
>
> }
>
>     The new Bindings method replacing all select*() methods:
>
>     publci static <E> SelectElement<E> select(ObservableValue<E> o);
>
>     With the new API the example above would look like:
>
> BooleanBinding bb = Bindings.select(control.sceneProperty()).
>         select(s -> s.windowProperty()).
>         selectBoolean(w -> w.showingProperty());
>
>     The benefits of the new API:
>
>  * Static type checking - no chances for a mistake when selecting long
>    chain of properties
>  * IDE code assisting for property selection
>  * not restricted to properties only, but might be used with any
>    observable. I.e. one may want to select an element from observable
>    collection at any selection step
>  * might be implemented without reflection, which may result in some
>    performance gain
>
> This change is of course might be targeted to JDK9 only.
>
> Thanks for taking a look!
> Anton.
>
>
> On 15.02.2014 3:35, Stephen F Northover wrote:
>> Hello all,
>>
>> Mark it on your calendar.  Feb 25th is OpenJFX Lambda day.  On that 
>> day, we will lock the code base, lambdify everything in sight, and 
>> then open up for business again.  One thing that we won't be doing 
>> right away is converting our code to use streams and other JDK8 
>> features but this is inevitable (perhaps after 8u20).  We are part of 
>> the JDK, we ship with the JDK so we will use features from the JDK.
>>
>> Like "Lambda's to the slaughter" the Android and iOS ports of OpenJFX 
>> will be affected.  We've been discussing the use of RetroLambda on 
>> and off in JIRA for a while and it seems that it will work for both 
>> ports.  We care about these ports and it is possible that Lambda Day 
>> will slip for one reason or another. For one thing, the lambdifying 
>> tools blow up some of the source making lambda conversion a somewhat 
>> manual process.  Hopefully we can get the bugs fixed before the day.
>>
>> On that day, I will be listening to 'The Lambda Lies Down on 
>> Broadway" all day.  Those of you with children might prefer "Mary had 
>> a little Lambda".  Despite being called "The Lambda Police", I am and 
>> old Lisper and a card carrying member of the "Knights of the Lambda 
>> Calculus".  Look that one up.  I know the founder personally but will 
>> never tell who it is.
>>
>> Steve
>>
>>
>



More information about the openjfx-dev mailing list