[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: plans to make JavaFX 8 platform independent again?
From:       Tom Schindl <tom.schindl () bestsolution ! at>
Date:       2016-02-17 18:30:00
Message-ID: 56C4BC28.8010805 () bestsolution ! at
[Download RAW message or body]

Hi,

In general I think this whole Spinner thing is completely bogus!!!!

Suppose the following:

> Spinner<Integer> s = new Spinner<>(0.0, 1.0, 0.0);
> 			s.valueProperty().addListener( new ChangeListener<Integer>() {
> 
> 				@Override
> 				public void changed(ObservableValue<? extends Integer> observable, Integer \
> oldValue, Integer newValue) {  System.err.println("HELLO WORLD");
> 				}
> 			});
> 			s.increment();

This will naturally give you a CCE. Those constructurs should have never
ever be supplied but what should have be provided is

Spinner.createDouble( double, double, double ) : Spinner<Double>;
Spinner.createInt( int, int, int );

I have not tried but the work around is to explicitly

public Spinner(@NamedArg("valueFactory") SpinnerValueFactory<T>
valueFactory)!

a) You need your own SpinnerValueFactory because one can not reference
inner classes in FXML


> package application;
> 
> import javafx.beans.NamedArg;
> import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory;
> 
> public class MyWrapperFactory extends IntegerSpinnerValueFactory {
> 
> 	public MyWrapperFactory(@NamedArg("min") int min,
> @NamedArg("max") int max,
> @NamedArg("initialValue") int initialValue) {
> 		super(min, max, initialValue);
> 	}
> 
> }


b) make your FXML look like this

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Spinner?>
<?import application.MyWrapperFactory?>

<VBox xmlns:fx="http://javafx.com/fxml/1">
	<Spinner>
		<valueFactory>
			<MyWrapperFactory min="0" max="100" initialValue="3" />
		</valueFactory>
	</Spinner>
</VBox>


So IMHO action items are:
* deprecate those constructors
* provide static factory methods

The order in which constructors are provided by reflection is not
guaranteed and BTW you can make your sample break on windows. Change
Spinner<Integer> to Spinner<Double>!

Tom

On 17.02.16 18:30, Kevin Rushforth wrote:
> Hi Stefan,
> 
> Java and JavaFX are platform-independent, so asking whether we will
> "make it platform-independent again" is asking the wrong question.
> Really, your question should be:  can a fix for a serious bug be
> backported to JDK 8 after it is fixed in JDK 9. The answer to that
> question is "yes" for serious bugs and regressions.
> 
> What you have discovered in this case is a serious bug that happens to
> affect a single platform. In fact, my reading of the bug is that we are
> just getting lucky on the other platforms. If this turns out to be as
> serious as it seems, then I will bump the priority to P2 and we will
> consider a backport to a JDK 8 update release.
> 
> -- Kevin
> 
> 
> Stefan Endrullis wrote:
> > Dear JavaFX team,
> > 
> > over years one of the key features of Java was its platform
> > independence.  A Java application would run under Windows, Mac OS, and
> > Linux (if well programmed).
> > 
> > Since https://bugs.openjdk.java.net/browse/JDK-8146325 this is no
> > longer the case.  Once you use the JavaFX Spinner<Integer> component
> > your application will still work under Windows, but will crash under
> > Linux.
> > 
> > Since this bug attacks a fundamental feature of Java we expected it to
> > be fixed quite fast and definitely in Java 8.  But now we discover
> > that it's planned to be fixed in Java 9 only.
> > Does this mean that Java 8 is not considered to be platform
> > independent anymore?  Do we have to start deploying different jars for
> > different platforms now?
> > 
> > Best regards,
> > Stefan Endrullis
> > 


-- 
Thomas Schindl, CTO
BestSolution.at EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
http://www.bestsolution.at/
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic