Re: OpenJFX Lambda Day, Feb 25th 2014

2014-02-18 Thread Martin Sladecek

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 SelectorT, E {
 ObservableValueE selectValue(T t);
}

and the helper interface (class):

public interface SelectElementE {
 K SelectElementK select(SelectorE, K p);

 K extends Boolean BooleanBinding selectBoolean(SelectorE, K p);
 K extends Integer IntegerBinding selectInteger(SelectorE, K p);
 K extends LongLongBinding selectLong(SelectorE, K p);
 K extends Float   FloatBinding selectFloat(SelectorE, K p);
 K extends Double  DoubleBinding selectDouble(SelectorE, K p);
 K extends String  StringBinding selectString(SelectorE, K p);
 K ObjectBinding selectObject(SelectorE, K p);

}

The new Bindings method replacing all select*() methods:

publci static E SelectElementE select(ObservableValueE 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








OpenJFX Lambda Day, Feb 25th 2014

2014-02-14 Thread Stephen F Northover

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


Re: OpenJFX Lambda Day, Feb 25th 2014

2014-02-14 Thread Felix Bembrick
Classic post Steve :-)

 On 15 Feb 2014, at 10:35, Stephen F Northover steve.x.northo...@oracle.com 
 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