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.

JavaFX links of the week, March 1

Another week, another bunch of JavaFX links. It was a relatively quiet week this week in the JavaFX-sphere, but there is still a few good links which I’ve included below.

  • The JavaFX community is a nice tight-knit group of enthusiasts and developers. Whilst we mostly keep in touch via twitter, we all worry about the people who aren’t part of the twitter community, and who may feel lost and isolated when learning JavaFX. Well, now that JavaFX is an Oracle product, we also mingle in Oracle Mix. Join us if you want to ask questions or just discuss JavaFX.
  • The JavaFX Composer team (a NetBeans plugin developed at Sun/Oracle which makes building JavaFX-based graphical forms easier) have started a new blog to publicise their progress as they work towards a final release. Everything I’ve heard from people using it is that it is a great tool, and very, very useful for building quality JavaFX-based software.
  • Simon Morris has posted the second tutorial on his website, covering FXD manipulation.
  • Rakesh Menon has blogged about some recommended performance optimisations when developing JavaFX applications. These are all very good tips, so do take a moment to make sure you’re aware of them. He plans to maintain this post with similar advice for JavaFX 1.3.
  • In another blog post, Rakesh shows off his results from using the JavaFX Composer tool to build a JavaFX-based user interface.
  • Drew continues his work on a JavaFX game using Phys2D. This week he updated the graphics, and also added some effects to his game.
  • I happened upon this website recently, which is just a single (but rather long) page outlining all of the JavaFX Script syntax. It seems like a very good reference for anyone new to the language.

That’s us for another week. Catch you again next week! 🙂

JavaFX links of the week, February 22

A lot of good links this week in the JavaFX-sphere. It’s interesting to read the fun that people are having with JavaFX, as well as the controversy of people who don’t quite get JavaFX and it’s relevance. Personally, I think people should continue to discuss their thoughts of JavaFX, but by no means should they write it off just yet – 1.3 is going to be a rocking release and really set the foundation for future releases. Also – give JavaFX a chance, posts like Jonathan Merritts recent post are becoming more frequent as people find hidden delights in JavaFX Script and the API’s being developed.

Anyway – on with the news.

  • As I mentioned, it’s been a funny old week in JavaFX-land, with both negative posts and positive posts. Being a good link reporter, I’ll leave you to make up your own mind.
  • The Silicon Valley JavaFX Users Group posted the video for Hinkmond Wong’sMobile Dojo‘ talk, which I’ve posted on FX Experience in a slightly larger size. You can also see just the slides at Stephen Chin’s blog.
  • Richard Bair posted about text transitions following a recent bout of bug triage, where he encountered a requested feature which he’s putting back out to the community to try and solve. This is something we occassionally encounter – deciding whether we should develop something internally or rely on third-parties to develop functionality.
  • Details about the JavaFX Composer preview 2 release came online this week. I’m not sure if this coincided with the actual preview 2 release or not. JavaFX Composer is a plugin for NetBeans that makes it easy to build JavaFX-based user interfaces (although it’s intended for developers moreso than designers, who should use the forthcoming Authoring Tool being developed at Oracle).
  • Jonathan Merritt decided to use the JavaFX Charting API to roughly predict when he believes the JavaFX 1.3 release will be. He notes that it was more of a chance to play with the chart components (and linear regression models) than anything else, and he is not in a position to actually know the release date – so take it for what it is. Also, note that his chart can only report on the public issues in the JavaFX bug tracker.
  • Geeky coder (I’m assuming that’s not his/her real name) posted a JavaFX tip titled ‘Reducing development time by running JavaFX application using class file and with JRebel‘.
  • Jan Goyvaerts posts his thoughts on implementing the Observer pattern in JavaFX.

That’s all folks. Keep on playing/working with JavaFX and, if you have a website, posting about your experiences with JavaFX. As always, I encourage you to email me, or talk to me on Twitter. You can find us at @fxexperience, and personally at @richardbair, @jasperpotts, and @jonathangiles.

Hinkmond Wong at Silicon Valley JavaFX users group

Stephen Chin has just announced that the slides for the third Silicon Valley JavaFX Users Group have been posted online. This talk was by Hinkmond Wong and therefore covered mobile aspects of Java and JavaFX. As I have done for both Richard’s and Amy’s talks previously, I have also embedded the video below for your enjoyment. You can flick between video and the slides by clicking in the top-right area of the player below.

The next talk coming up is a joint talk with the Silicon Valley Web JUG, covering Java Store and JFrog Artifactory. This is on March 10th at 6:00PM at the Googleplex, and you can find all other relevant details at the link above. Be sure to RSVP if you plan to attend, virtually or in person. Remember that attending virtually allows for you to watch the presentation live, and interact with both the presenter via Google moderator questions, as well as taking part in chat with others attending virtually. So it’s not much worse than being there in person!

Text Transitions

While pouring over bug reports today I ran across an older one, RT-4829. Essentially what the bug submitter wanted was the ability to animate text in a Text node or label. So it starts out with no characters and then a character at a time is added to the node. The sample code posted in the bug report was pretty cool, it looked a lot like one of the text bubbles you’d see in Dragon Warrior or some other old school RPG. It occurred to me that this is fertile ground for an aspiring JavaFX library developer 🙂

[jfx]
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.text.Text;
import javafx.scene.text.TextOrigin;
import javafx.scene.text.Font;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;

def BASE_WIDTH = 800;
def BASE_HEIGHT = 600;
def MARGIN = 20;

var backgroundRect = Rectangle
{
x: 0
y: 0
width: BASE_WIDTH
height: BASE_HEIGHT

onMouseClicked: function(event) { t.playFromStart() }
}

var boundingRect = Rectangle
{
x: MARGIN * 2
y: BASE_HEIGHT * 2 / 3 – MARGIN
width: BASE_WIDTH – MARGIN * 4
height: BASE_HEIGHT – (BASE_HEIGHT * 2 / 3)
fill: Color.rgb(255, 255, 255, 0.2)
stroke: Color.WHITE
strokeWidth: 2
}

var displayedText = Text
{
x: boundingRect.x + MARGIN
y: boundingRect.y + MARGIN
wrappingWidth: boundingRect.width – MARGIN * 2
content: ""
font: Font { size: 36 }
textOrigin: TextOrigin.TOP
//stroke: Color.BLACK
fill: Color.WHITE
effect: DropShadow {}
}

def FINAL_TEXT = "I was trying to get the text to wrap, but the text layout engine would keep putting a character on the previous line until the full word was visible.";
var charCount = 0 on replace
{
var textToDisplay = FINAL_TEXT.substring(0, charCount);
displayedText.content = textToDisplay;
}

Stage
{
title: "Text demo"
visible: true
scene: Scene
{
width: BASE_WIDTH
height: BASE_HEIGHT
fill: Color.BLACK
content:
[
backgroundRect,
boundingRect,
displayedText
]
}
}

var t = Timeline
{
keyFrames:
[
// In reality the speed would be per letter so the times would
// be computed dynamically. I have an idea of how to do that.
// Initial experiments also suggest that the speed of displaying
// each letter should be relative to the width of the letter.
KeyFrame { time: 0s, values: charCount => 0 }
KeyFrame { time: 3s, values: charCount => FINAL_TEXT.length() }
]
};
t.play();
[/jfx]

I think the actual feature the developer was asking for (the ability to say, KeyFrame { time: 3s, values: text => “This is the text to transition to” }) wasn’t the right way to go about the problem. Rather, there should be a handful of Transition class implementations for handling special text transition effects. So that you would be able to write something like:

[jfx]
def transition = TypewriterTextTransition {
rate: .5s
node: someTextNodeOrLabelOrSomething
toValue: "This is the text I’d like to transition to"
}
[/jfx]

And then you start the transition and voilà! It encapsulates all the nasty details and provides useful knobs for various types of effects you may want (for example, in addition to just having the letters appear, you could fade them in one at a time or have them drop from the sky or whatever you want).

Seems like a cool project for somebody who wants to get into learning JavaFX!

JavaFX links of the week, February 15

A heap of JavaFX links this week. It’s great to see more and more chatter going on in twitter and other places related to JavaFX. It feels like people are becoming more excited about what is available now, and what is coming up in JavaFX 1.3. Here’s the links for the past week – I hope you enjoy them!

That’s us for another week. Catch you all same bat time, same bat channel next week.

JavaFX links of the week, February 8

The main news out this week was the availability of a maintence release of JavaFX 1.2, taking the version number up to 1.2.3.  Other than that, there have been a number of interesting posts by people exploring physics-based software and using ‘advanced’ features of JavaFX such as clipping. I hope you find these links useful, and as always please feel free to email me any links you think might be useful to include here.

That’s it for another week. Keep up the hard work people – it’s great to see the growing enthusiasm for JavaFX, especially on your blogs, and on twitter. By the way, the FX Experience team all have twitter accounts, as well as one for this website. You can find us at @fxexperience, and personally at @richardbair, @jasperpotts, and @jonathangiles.

JavaFX links of the week, February 1

It goes without saying that this weeks big news item was of course the Sun acquisition, and the subsequent webcast by Oracle to outline the plans ahead for JavaFX. From the webcast it seems pretty clear that JavaFX has got a lot of support within Oracle, who plan to invest heavily in it in the coming months and years.

Here’s the most useful JavaFX links from the past week.

JavaFX links of the week, January 25

Well, I best start this week by mentioning that the Oracle takeover of Sun is edging very near. The EU appears to now be happy with things, and the word is that China’s and Russia’s competition bodies are now looking it all over. Of most interest for those of us in the JavaFX world will be the 5 hour (!) webcast being given this week by Oracle. The presentation is on Wednesday 27th January, 9:00am – 2:00pm Pacific time. You can register for it, and find out more, here.

Now, on with this weeks most relevant news.

That’s it folks – catch you in a weeks time!

Seeking: Awesome JavaFX developer to join our team

So, my team at Sun has an opening for a guru in rich-text user interface controls. This is a big project and it’s getting a huge push. As detailed in the job spec:

This is a software staff engineering position requiring the ability to design, test, implement and maintain rich-text user interface controls. The person in this role is expected to identify areas for improvement and modification of Sun’s platform products and contribute to Sun’s overall product strategy. This person will work closely with others within the team and across teams to accomplish project objectives. May assume a leadership role in projects, including such activities as leading projects, participator in product planning and technology evaluation and related activities. May use technical leadership and influence to negotiate product design features or applications, both internally, and with open source groups as needed.

We really want to get this position filled now, so if you are keen, or know someone that is keen – apply! Working in the JavaFX team, and of course in particular the team I’m in, is a great deal of fun, and you get to work with people who really are smart and enthused about what they’re doing. You’ll learn a lot, and get to really sink your teeth into a growing technology and platform. Of course, the thrill of seeing your code used around the world is a pretty cool thing too.

So, if you have what we need, apply today, and I look forward to working with you!

Amy Fowler at Silicon Valley JavaFX users group

Amy Fowler recently gave a talk to the Silicon Valley JavaFX Users Group covering her work on the JavaFX layout APIs. Her talk covers what we have now, as well as a sneak peak at what the plans are for JavaFX 1.3 (with plans still subject to change, etc). The video is embedded below for your viewing pleasure. Apologies to your ears for the first 10 minutes – there was a bit of trouble with the microphone – but it does improve after that.

Next up is Hinkmond Wong who will be presenting about mobile Java, including JavaME and JavaFX. This is on February 10th at 6:00PM at the Sun campus. You can find all other relevant details at the link above. Be sure to RSVP if you plan to attend, virtually or in person. Remember that attending virtually allows for you to watch the presentation live, and interact with both the presenter via Google moderator questions, as well as taking part in chat with others attending virtually. So it’s not much worse than being there in person!