JavaFX News, Demos and Insight // FX Experience

FX Experience Has Gone Read-Only

I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!

tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.

February Open Source Update

by | Feb 11, 2013 | News | 49 comments

We’ve been making progress in getting JavaFX open sourced. I wanted to take a few minutes to include this information on fxexperience (since many of you aren’t watching the mailing list). Oh, and you might want to read this one, there is some big news at the end of the post 😉

Late last year at JavaOne our Executive VP Hasan Risvi announced at JavaOne that we would be open sourcing all of JavaFX by the end of 2012. We didn’t quite make that (actually, it was a pleasant surprise to me as the announcement was made as much as to everybody else in the audience!). We quickly got into gear and started the substantial effort that goes into open sourcing each project. We have a lot of code. The following projects have already been open sourced as of this writing:

Project Name Release Date LOC* Description
apps/ConferenceScheduleApp Oct 22, 2012 11,052 Conference schedule application shown at JavaOne 2012
apps/Modena Nov 27, 2012 2,578 Experimental application as a playground for prototyping a new look and feel for JavaFX
apps/ModenaTest Jan 23, 2013 289 Simple test app for Modena
decora-compiler Nov 06, 2012 20,032 Build-time tool for compiling .jsl files into fragment shaders
decora-d3d Feb 07, 2013 45 D3D specific decora implementation
decora-es2 Feb 07, 2013 45 OpenGL ES 2.0 specific decora implementation
decora-jsw Feb 07, 2013 9,891 Java2D Software decora implementation
decora-prism Feb 07, 2013 1,033 Prism-based base classes for implementations of decora
decora-prism-ps Feb 07, 2013 4,157 Pixel shader / prism based implementation of decora
decora-prism-sw Feb 07, 2013 529 Software / prism based implementation of decora
decora-sse Feb 07, 2013 5,378 Native SSE implementation of decora (java half)
decora-sse-native Feb 07, 2013 7,733 Native SSE implementation of decora (native half)
deploy Dec 18, 2012 13,356 JavaFXPackager and launcher deployment tools
javafx-anim Dec 18, 2012 17,622 Animation APIs and implementation
javafx-annotation-processor Dec 18, 2012 1,569 Builder-generator annotation processor (build-time only)
javafx-beans Feb 05, 2013 100,041 Beans, Properties, and Collections
javafx-beans-dt Dec 12, 2011 6,443 Design-time API for Beans (not shipped yet, but used by SceneBuilder)
javafx-common Dec 18, 2012 7,758 APIs common to all of FX (events and utils)
javafx-concurrent Dec 23, 2011 8,368 Worker, Task, Service, and related concurrency APIs
javafx-designtime Dec 12, 2011 683 Design time implementations (not shipped)
javafx-embed-swing Feb 04, 2013 2,224 Swing embedding APIs
javafx-embed-swt Feb 04, 2013 1,990 SWT embedding APIs
javafx-fxml Sep 20, 2012 11,302 FXML API and implementation
javafx-geom Dec 18, 2012 32,180 Internal geometry classes used by prism
javafx-logging Dec 18, 2012 378 Internal logging helper
javafx-sg-common Dec 18, 2012 4,344 Internal interfaces for scene graph peers
javafx-sg-prism Dec 18, 2012 10,537 Prism scene graph peers
javafx-ui-charts Feb 23, 2012 9,316 Charting APIs
javafx-ui-controls Nov 10, 2011 154,214 UI Control APIs
javafx-util-converter Dec 29, 2011 2,902 String converter APIs
pisces Dec 18, 2012 3,735 2D software rasterizer
test-stub-toolkit Dec 23, 2011 4,855 Stubs for testing
tests/bigapps Feb 10, 2012 468 Start of a big-apps test based on Ensemble
tests/functional/SceneGraphTests Dec 17, 2012 57,090 Functional tests for the Scene Graph
tests/tools Feb 03, 2012 28,918 JemmyFX for functional testing of JavaFX apps

* LOC is just a simple wc -l on the Java files (and in the case of javafx-sse-native the .cc & .h files). This is not comprehensive, doesn’t include build files, etc. But it does include tests.

An additional 7 projects should come out within the next two weeks (glass, image I/O, and much of prism), representing another 138,034 lines of code. We’ll follow that by releasing the remainder of prism, web, and media sources within the next one-to-two months. At that point we will ALMOST be fully open source. The only remaining nugget is javafx-font, and we’re working on the OpenJFX list on a plan to replace this in the open source with direct calls to the native operating system.

We’re also going to open source our iOS and Android implementations over the next couple months. We THANK YOU for filling out the survey forms we posted last month, these were of great value. A majority of you said you’d contribute to an iOS / Android port (either via bug reports or direct code contributions) and we’re working hard to be setup so that when the code is opened you’ll be able to start in on it. One aspect of this is fixing up our build / test setup so that it is trivial for people to build and test fixes on JavaFX (including us!). I’ve prioritized fixing the build / test system now so that we will be in a position to accept contributions at a more rapid pace. The first bits and pieces for iOS should be out next week, with the rest of iOS and Android coming out at about the same time as the rest of prism (there is some timing dependency there). Both our ports are based on an as-yet unreleased version of JavaSE Embedded for iOS/Android.

There have been some question about licensing on iOS as Apple doesn’t allow for GPL licensed applications in their app store. OpenJFX and OpenJDK are both licensed with the same GPLv2 with Classpath Extension. My understanding (and I’m not a lawyer) is that this means that if you take OpenJFX + OpenJDK (minus any binary stubs released under a different license), then you can safely combine this with your application and release your application under your own license as a single application co-bundle. You can do the same with the GA release of JavaFX + JavaSE. The difference is that we do not yet have iOS / Android on our official release roadmap, so that for the time being, the only way to use JavaFX on iOS is via OpenJDK / OpenJFX. I can imagine this would make open source guys smile (open source goes where closed source does not!). This is also why we’ve been prioritizing open source so highly for the last little while — when OpenJFX can be built without any binary stubs, then there is nothing stopping you from taking OpenJFX with iOS port + OpenJDK and creating commercial applications that can be sold in the iOS app store.

I am looking forward to seeing what you all will do with this contribution, and hope to be running many Java apps on my phone / iPad in the near future.

Update 2/19/2013: The response to this post has been incredible! I got a ton of positive feedback, both here and in the press. It’s great that there is so much interest. In reading all the feedback and media coverage, I’ve realized that I there are a few things I should clarify. I mentioned "We’re also going to open source our iOS and Android implementations over the next couple months." It turns out that that statement can be read in a bunch of different ways, and deserves a clarification. I’ve made the same points previously on the openjfx-dev mailing list, but not everybody reading this blog is also reading the mailing list and so some context is missing.

A few years ago at JavaOne 2011 we showed a demo of JavaFX running on Android and iOS devices. This was a proof-of-concept which has two essential elements. The first is a port of the Windowing / Graphics layer of JavaFX (Glass & Prism) to use iOS & Android APIs. This is what we are open-sourcing, nothing more nor less. We are not providing a JVM for these platforms, nor am I aware of any such plan, so it’s not in any way a complete solution. Nor do we have a plan for releasing these ports in any release. We’re just opening up JavaFX code to the Java community for further experimentation.

Speaking of which, there are a ton of things that we continue to look toward the community for help with in the core platform which apply to all our target platforms including desktop and embedded (such as the Raspberry PI). There are a lot of areas that need more work, such as support for X on Raspberry PI, a Windows 8 Metro port, more controls (formatted text anyone?), performance optimizations, 3D, printing, internationalization, camera and video recording and much more. If you want to pitch in on any of these projects visit JIRA or our openjfx-dev mailing list!

I also received some questions about my statements regarding the GPL and Apple. I told you I wasn’t a lawyer and I wasn’t kidding! Law is complicated so it’s probably just best to disregard any statements I might make on the subject.

Lastly, cross-platform development for these mobile platforms isn’t a first for Oracle — check out what my colleagues over in Oracle’s Java Tools and Frameworks group released a few weeks ago with Oracle ADF Mobile. You may have seen the announcement at this past JavaOne. You write your logic in Java and use HTML5 for the UI. The best part is that if you use JDeveloper you have an environment with declarative binding to datasources and the whole bit. So far, they’ve released it on iOS and Android – and it’s fully supported. Oracle is basing most of its mobile application development going forward on ADF Mobile and customers are already having success like the folks at ECSTeam. You can download it and try it out for free.

I hope to see you on the dev list and can’t wait to see what we can do together in this community!

49 Comments

  1. Mohsen on February 11, 2013 at 12:47 pm

    JavaFX on android and ios ! really ?
    It’s amazing.

    Reply
  2. Gerrit on February 11, 2013 at 12:57 pm

    just one word…AWESOME !!!!

    Thanx a lot for making it possible !

    Reply
  3. Miguel García on February 11, 2013 at 1:07 pm

    Great news! Congrats and thanks to all!

    Reply
  4. Peter Pilgrim on February 11, 2013 at 1:31 pm

    This is stunning news!

    I tried doing `gradle build’ on Sunday; of course, it did not quite work yet, however I am sure with the correct JDK8 bundle and time it will. Great stuff!

    Reply
  5. Alvin Tabontabon on February 11, 2013 at 1:44 pm

    JavaFX on Android and iOS implementation will be no longer a rumor!

    Reply
  6. Robert on February 11, 2013 at 1:49 pm

    Very positive direction!!

    Reply
  7. Tobi on February 11, 2013 at 2:02 pm

    Hi Richard,

    thank you very much for all your great efforts! Thanks Oracle!

    Could you please tell us more about the “unreleased version of JavaSE Embedded for iOS/Android”? Is it a special version of JavaSE embedded ARM?

    What about your prototypes for iOS and Android? Do they use AOT? If we want to build iOS apps for the AppStore we need one single binary! So we need AOT…

    Best regards,
    Tobi

    Reply
  8. Andy on February 11, 2013 at 2:15 pm

    Thank you…that will be a game changer…

    Reply
  9. Pedro Duque Vieira on February 11, 2013 at 2:20 pm

    Very good news!!

    When ios and android ports become possible JavaFX will reign the UI toolkit scene, for sure.

    How will the contributions to this open source project work? will it be like what happens with the rest of the javafx sdk?

    Cheers,

    Reply
  10. Eduardo on February 11, 2013 at 2:50 pm

    AMAZING!! This will end up being one of the most disruptive events in the history of programming! JavaFX rocks! A HUGE THANK YOU!!!

    Reply
  11. Carl Dea on February 11, 2013 at 5:34 pm

    Super Cool!
    I don’t want to sound cheesy but I was thinking about the movie ‘Field of Dreams’ where Kevin Costner hears the whispering of “If you build it, they will come.”

    Being able to build everything will be awesome.;-)

    Keep up the amazing work!. Kudos to the JavaFX teams.

    Thank you!

    Carl

    Reply
  12. Harmeet Singh on February 11, 2013 at 9:39 pm

    cooooooooooolllllllllllllllllllllllllll………………………. Java Rocks……………..

    Reply
  13. Sébastien Bordes on February 12, 2013 at 1:10 am

    Excellent news !!

    JavaFX is really a broken rules Toolkit, and Oracle an awesome OpenSource contributor 😀

    Big Thanks to JavaFX Teams !!

    Reply
  14. goddard on February 12, 2013 at 2:43 am

    This is awesome news!
    Can’t wait to try out and spread the word 🙂

    Thank you very much

    Reply
  15. Narayan on February 12, 2013 at 3:16 am

    I like to say “I love you JavaFX” . My 2013 Valentine is you 🙂 …WAITING FOR ios and droid develpment

    Reply
  16. giovanni on February 12, 2013 at 3:25 am

    Congrats. I believe that community support will increase exponentially. Could spend more information about java SE is embeded ANDROID and IOS?

    Reply
  17. Gath on February 12, 2013 at 4:51 am

    This is so great Richard!!!

    BIG THANK YOU to everybody on the Java/JavaFX teams!!!!

    Reply
  18. Mihaela on February 12, 2013 at 6:36 am

    Thanks a lot! You’re awesome!!

    Reply
  19. Matthieu Brouillard on February 12, 2013 at 7:37 am

    What an awesome news !!!

    Thanks a lot to all of you @Oracle to make this possible.

    Reply
  20. Rick Walker on February 12, 2013 at 8:18 am

    Marvellous!

    Reply
  21. Henrik on February 12, 2013 at 8:31 am

    This is amazing!

    Reply
  22. Bruce Boyes on February 12, 2013 at 8:42 am

    Wow. I was impressed with the FX demos at JavaOne and in the FX HOL. If there are iOS and Android implementations, and it is OS with reasonable licensing, it gives me hope that FX could get some real traction in the marketplace. It’s nice to see you are keeping the momentum going. It will be interesting to see what FX there is at J1 this year… If Android release is ready we might try to do a project at java.net for home automation…

    Reply
  23. rene Okouya on February 12, 2013 at 10:22 am

    Ohhh My Gosh , This Is Awesome …free at last, free at last, thanks Oracle almighty JavaFX is Free last …

    Humm JavaFX on IOS and Android that’s Just Insane …man i’ll believe when i see it !

    Keep Up the Good work

    Thank you JavaFX Team !!!

    Reply
  24. Possebon on February 12, 2013 at 4:05 pm

    Best news of the last decade or century!
    Thank you JavaFX Team … and Bair you are Man to next java revolution

    Reply
  25. Mario Torre on February 13, 2013 at 3:02 am

    Thanks Richard for all the hard work you’re putting into this. OpenJFX is an amazing and very rewarding project to work on, and this is definitely you’re biggest merit!

    Reply
  26. Andrea Tasca on February 13, 2013 at 3:42 am

    This is the best news for 2013!
    Thank you guys.

    Reply
  27. Ryan J on February 13, 2013 at 8:02 am

    I’m extremely excited to see the Android / iOS stuff.

    I’ve been spending a decent amount of time looking at the options for mobile development over the last month and I was starting to get pretty dejected about it. The web-based options produce a sub-par UI, the native options require A LOT more work, and everything seems to be built on a network stack that’s far more complex than what I need for the types of applications I want to write.

    I bet we could eventually see some pretty compelling end-to-end Java application platforms built around JavaEE, JavaFX, the Application Client Container, and upcoming v8 language features. How about one line of code that gives you a CompletableFuture that’ll contain the result of a server side call from an auto-magically injected resource plus it works across desktop and mobile? Yes please!!

    Reply
    • Mattias Eliasson on February 26, 2013 at 9:34 am

      “I bet we could eventually see some pretty compelling end-to-end Java application”

      Hopefully we will also see it become similar to Vaadin but using Java all the way.

      What I would like to have is a solution where I write a single application and Java separates it into a serverside war and a JavaFX applet. I would want annotations like @RunAt(Server) and @RunAt(Client) which will mark which class of function goes where. Java should take care of all function calls that happens between client and server and whatever advanced network code that is used for it.

      Reply
  28. Bear on February 13, 2013 at 12:09 pm

    Huge respect Oracle!!! Stay the course.

    Reply
  29. Alex Ignácio da Silva on February 13, 2013 at 4:51 pm

    This is Oracle’s style: not much talking and vaporware, but instead lots of hardworking behind the scenes to finally give us amazing results!

    I’m glad to know I won’t have to go for HTML 5 and code my applications in javascript when there are far supperior choices in the Java platform, such as Scala.

    Thanks Oracle for the commitment and investment made to the Java platform!

    Reply
  30. Ali Ebrahimi on February 13, 2013 at 10:17 pm

    You’re awesome!!!
    Thanks a lot for great work.

    Reply
  31. Mike Tallent on February 13, 2013 at 11:32 pm

    You might have just saved me 200K — thank you.

    Reply
  32. kazero on February 14, 2013 at 1:09 am

    Great!

    Reply
  33. Jorge Menezes on February 14, 2013 at 2:58 am

    Thanks Oracle.

    Reply
  34. Ashish Agre on February 17, 2013 at 9:58 pm

    YeahHhhHhHhhhH….!!!! Thats what it defines JAVA cross platform… OnAndroid and OniOS

    Reply
  35. Antonello on February 18, 2013 at 8:52 am

    JavaFX on Android and iOS! What about? Great news, thanks for your great job! Really.

    Reply
  36. Innokenti Han on February 19, 2013 at 12:22 pm

    It’s soooooooo GREAT! Huray Oracle! Huray JavaFX!

    Reply
  37. Innokenti Han on February 19, 2013 at 12:25 pm

    Would someone create JavaFX mobile OS like Addroid? We propose Oracle to do it.

    Reply
  38. Pedro Bros on February 22, 2013 at 6:13 am

    Excelente.
    Felicitaciones.

    Reply
  39. Mattias Eliasson on February 26, 2013 at 10:42 am

    “There are a lot of areas that need more work, such as support for X on Raspberry PI, a Windows 8 Metro port, more controls (formatted text anyone?), performance optimizations, 3D, printing, internationalization, camera and video recording and much more.”

    I have noted that Java do not use Qt which I think would simplify a lot of this work. Are there licencing problems or any other reason to not use Qt?

    There are lots of overlapping functionality in the OpenJDK sources I have reviewed and Qt. Unless there are some really compelling reason not to use Qt and save a lot of development cost I do not see why the Java developer should reinvent the wheel and maintain multi-platform code where Qt already does this.

    Qt5 has support for X on many platforms, including RasPI. It is likely that Java would not need to do anything to support RasPi:s X.

    Qt Controls are quite fast, able to utilize hardware acceleration and integrates well with OpenGL. The currently unsupported QtJambi integrates support for JOGL.

    Therefore Qt would work well as a base for JavaFX, Swing and Java2D.

    QtWebKit are ported to many platforms. I have observed that JavaFX also ships with webkit which are in the pipeline to be released. Again the wheel have been reinvented.

    More controls? Qt have a many controls, including formatted text… and QtWebKit.

    Printing? Qt have platform independent printing including print to PDF and PS.

    3D? QtJambi supports 2D + JOGL integration that works quite well.

    Internationalization? While Qt have that I suppose that doing something in pure Java may be better.

    “camera and video recording”
    Qt have platform independent support for cameras, video recording and playback. Making a platform independent music and video player in Qt is quite easy and that could naturally be useful for Java.

    And also there are the big elephant in the room. Bindings. Qt have the community project QtJambi that provides Java bindings for Qt. Those are not officially supported by digia that owns Qt, but I bet that Oracle can fix that with a phonecall.

    By utilizing existing code like Qt you decrease development and maintenance costs for everything that’s supported by that code. That cost could be redistributed in order to provide more functionality in other areas.

    Reply
  40. Dirk Fehrmann on February 27, 2013 at 8:42 am

    Just great to have an alternative to Objective-C! We are with Java since 1997!

    Reply

Trackbacks/Pingbacks

  1. < bouye : blog /> - [...] Bair (Java Client Platform Architect chez Oracle) vient de publier un long post (mise a jour de février concernant…
  2. JavaFX to come on iOS and Android | techscouting through the java news - [...] a recent post, Richard Bair told a lot of more about JavaFX code having just been handed over to the OpenJFX [...]
  3. JavaFX-Implementierungen für iOS und Android | Edv-Sicherheitskonzepte.de – News Blog aus vielen Bereichen - [...] will Oracle nun auch die Portierungen für die mobilen Betriebssysteme iOS und Android quelloffen freigeben. JavaFX ist Oracles Framework…
  4. Thoughts on JavaFX for Android and iOS | Tomsondev Blog - [...] the big news is out: Oracle will provide the sources of their Android and iOS prototypes. While I agree…
  5. JavaFX bald Open Source – inkl. JavaFX für Android und iOS | JUGSaar - [...] folgendem Blog-Eintrag http://fxexperience.com/2013/02/february-open-source-update/ haben Oracles hauptamtliche JavaFX Entwickler bestätigt, dass die Java FX Technologie bald Open [...]
  6. Coming soon: Open source JavaFX for iOS, Android - Stiri It&C ,Servere Linux , Servicii Linux - [...] in on it,” Richard Bair, chief architect of the Client Java Platform at Oracle, wrote in a blog post atFX [...]
  7. Java desktop links of the week, February 18 | Jonathan Giles - [...] Bair posted an open source status update, and included some news about iOS and Android plans. It is important…
  8. JavaFX links of the week, February 18 // JavaFX News, Demos and Insight // FX Experience - [...] « February Open Source Update [...]
  9. Članak – Open sourcing JavaFX « HUJAK – Hrvatska udruga Java korisnika - [...] Kao što naslov kaže evo nam malo objašnjenja kada i kako će JavaFX završiti kao open source February Open…
  10. Dear Oracle, | #javaforgames - [...] and Glass had the potential to be a game development platform. The recent news by Oracle that there are…

Leave a Reply to Mattias Eliasson Cancel reply

Your email address will not be published. Required fields are marked *

AltStyle によって変換されたページ (->オリジナル) /