Vorabend zurDOAG2012Development Bonn|18.Juni 2013

Entwicklung mit JavaFX WolfgangWeigend Sen.Leitender Systemberater

JavaTechnologie1 Copyright©2013Oracleand/oritsaffiliates.Allrigh undArchitekturtsreserved. Thefollowingisintendedtooutlineourgeneral productdirection.Itisintendedforinformation purposesonly,andmaynotbeincorporatedinto anycontract.Itisnotacommitmenttodeliverany material,code,orfunctionality,andshouldnotbe relieduponinmakingpurchasingdecisions.The development,release,andtimingofanyfeatures orfunctionalitydescribedforOracle’sproducts remainsatthesolediscretionofOracle.

2 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Agenda • AktuellerStatusvonJavaFX • JavaFX-AufbauundArchitekturkonzept • VorteilevonJavaFXbeiderEntwicklungvonJavaFX AnwendungenkomplettinderProgrammiersprache undmitJavaEntwicklungswerkzeugen • JavaFXSceneBuilder • OpenSourceProjektOpenJFX • Kundenbeispiele • Zusammenfassung

3 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Existierende JavaFX Produkt Releases • JavaFX2Platform – GeneralAvailabilityforWindows(sinceOctober2011) – JavaFX 2.2.25forWindows,Macandandco-bundledwithJDK7u25 – JDK7u21includesJavaFXSDK forLinuxARMv6/v7

• OracleJDK8(withJavaFX)forARMEarlyAccess

• jdk -8-ea -b36e -linux -arm -hflt -29_nov_2012.tar.gz • DevelopmentTools – NetBeans 7.3.1 – JavaFXSceneBuilder1.1DeveloperPreviewandJavaFXSceneBuilder1.0GA – e(fx)clipse

• majorreleasecyclealignmentwithroadmap

• minorreleasecyclewithJavaFX roadmap

4 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. DistributionundSupport

• JavaFXDistribution – JavaFXRuntimecanbedistributedwiththirdpartyapplications* – AppliestoJavaFX 2.0.2,2.1,2.2,2.2.25andlater • JavaFXPlatformCommercialSupport – JavaFXisnowpartoftheJavaSEtechnologiescoveredthrough OraclePremierSupport – AppliestoJavaFX 2.0,2.1,2.2,2.2.25andlater

*Asperthetermsandconditionsofthe BinaryCodeLicense forJavaSEPlatformproducts

5 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXAnwendungaufdem RaspberryPiComputer • JavaSEEmbeddedaufdemRaspberryPiComputer − build1.7.0_04-ea-b20,headless • JavaFXfürEmbeddedDevices − JavaFX DeveloperPreviewforARM(JDK7) − JavaFX.profile.embedded@8-ea • Java-ModulederJavaSEEmbeddedRuntimeEnvironmentVersion (build1.8.0-ea-b00,headless) miteinemJigsaw-Prototypen fürRaspberryPiComputererstellt • Konferenzplaneranwendung j1_2013_scheduler

6 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXRuntimeArchitektur

JavaFX Architektur Komponenten • GlassWindowingToolkit :Providesnativeoperatingservices,suchasmanagingthe windows,timers,andsurfaces • Prism :Graphicspipelinethatcanrunonhardwareandsoftwarerenderers • UIToolkit :TiesPrismandGlasstogetherandmakesthemavailabletotheJavaFX

7 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Architektur

• InternalAPI • Course-grainedportinglayer − FXAPIsisolatedfrom implementationdetails • Allowsportingtocompletely differentsystems

8 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Architektur

• QuantumToolkittiesPrismandGlass WindowingToolkittogetherandmakes themavailabletotheJavaFX layerabove inthestack

• QuantumToolkitmanagesthethreading rulesrelatedtorenderingversusevents handling

9 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Architektur

• GraphicsAPI − Convertsthescenegraphinto renderingcalls − AbstractsD3D,OpenGL,Java2D behinda“Graphics”object − Handles“dirtyregions”,clipping,and otheroptimizations − Fontsupport − • Usehardwarewherepossible Rasterization − Fastpathsusingshaders forellipses,rectangles,etc. • Reducecontextswitches − Lookingtowardspossiblestatesortingoptimizationsinthefuture • Fallbacktosoftwarerenderingwhennecessary − Baddriversarethemainreasonfordoingso 10 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Architektur

• WindowingAPI − Windows − Mac − Linux − Headless(notdone) • ProvidesbasicOSservices − Drawingsurface − Inputevents − Eventqueue

11 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Scenegraph

Scenegraph • Insteadofremove/add: − group.getChildren().remove(node); − group.getChildren().add(0,node); • node.toFront() • node.toBack()

Scenegraph −node.toFront() −node.toBack()

12 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. DisplayingHTMLinJavaFX

publicclassWebViewDemo extendsApplication{ publicstaticvoidmain(String[]args){ launch(args); } @Overridepublicvoidstart(Stagestage){ WebViewwebView=newWebView(); webView.getEngine().load("http://java.oracle.com"); Scenescene=newScene(webView); stage.setScene(scene); stage.setTitle("WebViewDemo"); stage.show(); } }

13 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX mit JFXPanel Komponente in Anwendungen einbinden publicclassTest{

privatestaticvoidinitAndShowGUI(){ClassJFXPanel privatestaticvoidinitFX(JFXPanelfxPanel){ //ThismethodisinvokedonSwingthreadjava.lang.Object //ThismethodisinvokedonJavaFXthread JFrameframe=newJFrame("FX");java.awt.Component Scenescene=createScene(); finalJFXPanelfxPanel=newJFXPanel(); fxPanel.setScene(scene);

frame.add(fxPanel); java.awt.Container} frame.setVisible(true); javax.swing.JComponent .embed.swing.JFXPanelpublicstaticvoidmain(String[]args){ Platform.runLater(newRunnable(){ SwingUtilities.invokeLater(newRunnable(){

@Override @Override

publicvoidrun(){ publicvoidrun(){

initFX(fxPanel); initAndShowGUI();

} }

}); });

} }

}

14 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. WebView undSwingInteroperabilität

WebView Component SwingandSWTInterop. BrowserPlug-In

• EmbedWebcontentin • EmbedJavaFXcontent • FasterloadingofJavaFX JavaFXapplications intoexistingSwing Webapplicationsbased • HTMLrenderingbased applications onPrism onWebkit • ExtendexistingSwing • Pre -loaderforimproved • Hardwareaccelerated applicationswithnew userexperiencewith renderingusingPRISM JavaFXfeaturessuchas JavaFXWeb WebViewandhigh- applications • DOMaccessand performancegraphics manipulation • AppliestoSWT* applicationsaswell

15 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. *FeatureintroducedsinceJavaFX2.1 DesignObjectives JavaFX– MovingClientForward

Oracle’snextgenerationJavaclientsolution • BuiltonJavainJava • Modulararchitecture • MigrationpathforJavaclientUItechnologies • Advancedtooling • Deliveringonthecross-platformpromise

16 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Concepts

• ObservableCollections • Properties • Events – Implementations – Encapsulation • Callbacks  ObservableList – Observability • Threading  ObservableMap – Flexibility – Prototypes – Scalability  ObservableSet – Bindable  FilteredList  SortedList – EaseofDevelopment – LambdaReady

17 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaAPIsundFXML

JavaAPIsfür JavaFX FXML

• End-to-endJavadevelopment • Scriptable,XML-basedmarkuplanguage • Javalanguagefeatures- generics, fordefiningUI annotations,multi-threading • ConvenientalternativetodevelopingUI • FluentAPIforUIconstruction programmaticallyinJava • AlternativeJVMsupportedlanguages • Easytolearnandintuitivefordevelopers (e.g.Groovy,Scala)withJavaFX familiarwithwebtechnologiesorother • LeveragesophisticatedJavaIDEs, markupbasedUItechnologies debuggersandprofilers • Powerfulscriptingfeatureallows • JavaAPIspreserveconvenient embeddingscriptswithinFXML.AnyJVM JavaFXScriptfeatures(e.g.,bind) scriptinglanguagecanbeused,including JavaScript,Groovy, andScala

18 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. GraphicsundMedia

NewGraphicsPipeline Media

• Newhardwareacceleratedgraphics • Stablemediaframeworkbasedon pipeline(Prism) GStreamer • Newwindowingtoolkit(Glass)forPrism • H.264*,VP6;MP3,AAC*playbackof • Java2DSoftwarePipelineunderPrism Webmultimediacontent • High-levelsupportformakingrich • Lowlatencyaudio graphicssimple • AlphaChannelsupportforfull • Shadows,Blurs,Reflections,Effects,2D transparencytosolid Pixel transforms • Performanceimprovements • 3DTransformstoday;Full3Dobjectsin future • Fullscreenvideo

19 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. *FeatureintroducedsinceJavaFX2.1 HelloWorldinJavaFX ProgramminginJava public class JavaFXExample extends Application{ @Override publicvoid start(Stage stage){ Scenescene= new Scene( LabelBuilder.create() .text(" Hello World! ") .layoutX(25) .build()); stage.setTitle(" Welcome toJavaFX! "); stage.setScene(scene); stage.show(); } publicstaticvoid main(String[]args){ launch(args); } }

20 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. HelloWorldinJavaFX ProgramminginFXMLundJava FXML

Java public class FXMLExample extends Application{ @Override publicvoid start(Stage stage) throws Exception{ stage.setTitle(" FXML Example "); Parentroot=FXMLLoader.load(getClass().getResource (“ example. "), ResourceBundle.getBundle(“ r.fxml_example ")); stage.setScene( new Scene(root)); stage.show(); } publicstaticvoid main(String[]args){launch(args);} } Note :Exampleisforillustration 21 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. andnotsyntacticallyaccurate JavaEntwicklungswerkzeuge

• Sourceeditorwithimprovedsyntactic highlighting,codecompletion,refactoringetc. • Fulldebuggerandprofilersupport • ProjectwizardforeasycreationofJavaFX applications

OtherJavaIDE’s • Sourceeditorwithsyntactichighlighting, codecompletion,refactoringetc. • FulldebuggerandProfilersupport

22 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. DieCommunitybeteiligt sich Thethirdpartydevelopercommunityhasshowninterestin JavaFX.Hereareafewprojects: • e(fx)clipse:plugins forEclipseandforOSGi • DataFX:datasourceandcellfactoriesforJavaFXUIcontrols • ScalaFX ,GroovyFX: Scala andGroovybindingsforJavaFX • JFXFlow,eFX,JRebirth:applicationdevelopment frameworks • FXForms2:automaticformgeneration • JFXtras:UIcontrolsandextensionsforJavaFX • XDEV3IDEandXDEVApplicationFrameworkXAPI 23 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Funktionale Systemtests für JavaFX Automatisiertes Testen für JavaFX UIControls

•FunctionalTesting QF-Test •UIControls FirmaQualityFirstSoftware Professionelles GUI-Testen für •Scenegraph Java&Web www..de

24 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. QF-TestundJavaFX • JavaFXisteinepureJava-AnbindunganalogSwing • ErfahrungsschatzerlaubtschnelleErweiterungaufJavaFX • Technischer Durchstich bereits erfolgreich vollzogen • OffizielleUnterstützungvoraussichtlichparallelzuJava8 • Vorabversionen aufAnfrage

Java Swing Eclipse/SWT Web 25 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXSceneBuilder

http://otn.oracle.com/java/javafx

26 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXSceneBuilder

• UIlayouttoolforJavaFX • FXMLvisualeditor • CanbeusedstandaloneorwithallmajorJavaIDEs – TighterintegrationwithNetBeansIDE • Previewmode • CSSsupport • SupportedonWindowsandMacOSX

27 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXundOpenSource http://openjdk.java.net/projects/openjfx

•UIControls OpenJFX •Scenegraph •JemmyFX

28 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFXviaOpenSourceaufdemWeginsJDK8

OpenSource Konvergenz Standardisierung OpenJFXProjectunder Commonlicensewith Oraclecommittedto OpenJDK JavaSE(inplace) JavaFXstandardization Firstphasetofocuson JavaFXtobeincluded JSRtobesubmitted UIControls inJavaSEbyJDK8 throughJCP JavaFX forJavaSE Embedded(ARM)

29 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. OpenSourceundStandardisierung

• JavaFXsourcecodebeingcontributedaspartofOpenJFX http://openjdk.java.net/projects/openjfx/ – Sourcecodebeingcontributedinphases – OpensourcedasofMarch2013 • UIControls • SceneGraph • JemmyFX • FunctionalTests • OracleiscommittedtostandardizeJavaFXthroughJCP – OneormoreJSRswillbesubmitted – ExpectedtobebecomepartoftheJavaSEspecification

30 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Diekünftige Ausrichtung vonJavaFX Oracle’sNextGenerationJavaClientSolution • TighterIntegrationwithJavaSE • MigrationPathforJavaClientUITechnologies • OptimizedWebServicesSupport • AdvancedTooling • SupportforModernDeviceInteractions • DeliveringontheCrossPlatformPromise

31 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX UpdateundRoadmap

OpenJFX Project LinuxDeveloper JavaFX 2.1für JavaFX 2.2für JavaFX 8 created Preview MacOSX Linux • IncludedinJDK8 SceneBuilder1.0 • ConcurrentOSsupport: Windows,MacOS,Linux,ARM

Dez 2011 Jan2013 Apr2013 Aug2013 2013 2014

NetBeans 7.2 mit Linux/ARMDevPreview JavaFX 2.1und SceneBuilder SceneBuilderLinux Integration DeveloperPreview

NetBeans.next • JavaSE8support • JavaFX8support • more

32 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Kundenbeispiele

33 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Anwendungen

 HealthConnect isaBelgiancompanywithdeepexpertiseinintegrationarchitectures,software development,eHealth integrationandprojectmanagementinthehealthsector.Basedonthebroad experienceandexpertiseofitspeople,HealthConnect providesservicestohealthcarepractitioners, healthcareinstitutions,mutualinsuranceorganisations andgovernments.Thehealthsectorisouronly focusandthereforeourcustomer’sguaranteeforaddedvalue.HealthConnect hasbeenlaunchedin 2010.Aftertwoyear,itcounts35employees(inBelgiumandIndia)

 DeepAnalyticsofBigData • Createhighlyadvancedanalysisfastandcostefficient • End-UserProgramminginJava,Scala andR • Accesstothousandsofanalyticalalgorithms,methodsandtools • OracleJavaMagazine: “JavaPowersAnalyticalBreakthroughsatQuantCell Research” • JavaAnalyticalModelsandBigData:EndUserProgramminginSpreadsheets. Howtouse JavaFX tobuildanenduserenvironmentsupportingrichvisualizationandbigdataanalytics

 ContainerTerminalOperations • GeneralCargoTerminalOperations • IntermodalRailOperations • ShippingLineOperations • YardManagement

34 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. JavaFX Anwendungen

 Celer isatradingmanagementplatformforevery assetclass,thetruemultiassetmodulartrading platform.Builtbytradersfortraders.

• TheCeler Tradingmoduleisbuiltontopofthe Celer frameworkandcombinesanexecutionand ordermanagementsysteminone,givingallthe controlneededinoneeasytouseplatform.Quick orderentryandcombinationdepthdealticketsare justsomeofthefeaturesthattheplatformcanoffer customertrading.

• SoftwareDevelopmentKit(SDK) TheCeler FrameworkSDKallowstobuildthenext featuretokeepcustomerbusinessaheadofthe competitionandtoadapttocustomerneedsinthe future.

35 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Ressourcen

• Downloads: http://otn.oracle.com/javafx

• OpenJFX: http://openjdk.java.net/projects/openjfx/ • OraclePremierSupport http://www.oracle.com/us/support/software/premier/ • Blogs – http://blogs.oracle.com/javafx – http://fxexperience.com

• OTNForum: https://forums.oracle.com/forums/forum.jspa?forumID=1385 • Twitter:@javafx4you

36 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. Zusammenfassung  JavaFX als strategische UIfür Rich-Client-Applikationen  Einheitliche Applikationsentwicklung für JavaundWeb-Lösungen • BrowserPlug-in,WebStart,NativeExecutables • HardwareAcceleratedGraphics(DirectX,OpenGL) • JavaFXwirdmitHTML-DOMausgestattet − JavaFXmitWebViewfürHTML5Features(WebSockets,offlineBrowsing,lokale Datenbank) − Leistungsfähige JavaScriptEngine − JavaFXalsAppleteingebettetineinerWeb-Seitelauffähig  JavaFX 2.0Plattform Sprachwechsel • Javaals nativeSprache - anstatt JavaFX Script • JavaFXAPIsinJavaimplementiert • VorteilebeiVerwendungvonGenerics,AnnotationsundMultithreadingfürJavaFX  JavaFX 2.2.25verfügbar undmit NetBeans7.3.1unterstützt • MigrationspfadfürSwing- undSWT-basierteAnwendungen • JFXPanel Komponente ermöglicht dasEinbinden vonJavaFX Anwendungen inSwing • OpenSourcemitOpenJFXundimJCPstandardisiert  JavaFX SceneBuilder1.1DeveloperPreview

37 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved. VielenDankfürIhreAufmerksamkeit! [email protected]

38 Copyright©2013Oracleand/oritsaffiliates.Allrightsreserved.