Steve On Java

Hacking Java, JavaFX, and Flash with Agility
  • rss
  • Home
  • About
  • Contact
    • E-mail Steve
    • SC2 Challenge
  • SvJugFX
  • JFXtras
    • JFXtras Individual CLA
    • JFXtras Corporate CLA
  • Freedom From XML
  • Travel Map
    • Let’s Meetup!

Taking Control of the Flex Soft Keyboard

steveonjava | July 14, 2011

This is part 2 of my Flex Mobile series.  Please see my first post for information on getting started.

When using the text components, the Android soft keyboard will automatically trigger upon focus as you would expect. However, sometimes you need finer grained control over when the soft keyboard gets triggered and what happens when it gets activated.

The soft keyboard in Flex is controlled by the application focus. When a component that has the needsSoftKeyboard property set to true is given the focus, the soft keyboard will come to the front and the stage will scroll so that the selected component is visible. When that component loses focus, the soft keyboard will disappear and the stage will return to its normal position.

With the understanding of the focus, you can control the soft keyboard by doing the following:

  • To show the soft keyboard declaratively – Set needsSoftKeyboard to true for your component
  • To show the soft keyboard programmatically – Call requestSoftKeyboard() on a component that already has needsSoftKeyboard set.
  • To hide the soft keyboard – Call setFocus() on a component that does not have needsSoftKeyboard set.

This works fine for components that do not normally trigger the soft keyboard; however, for components that automatically raise the keyboard, setting needsSoftKeyboard to false has no effect. A workaround to prevent the keyboard from popping up on these components is to listen for the activating event and suppressing it with code like the following:

<fx:Script>
  <![CDATA[
    private function preventActivate(event:SoftKeyboardEvent):void {
      event.preventDefault();
    }
  ]]>
</fx:Script>
<s:TextArea text="I am a text component, but have no keyboard?"
  softKeyboardActivating="preventActivate(event)"/>

This code catches the softKeyboardActivating event on the TextArea component and suppresses the default action of raising the soft keyboard.

In addition to getting events on activation, you can also catch softKeyboardActivate and softKeyboardDeactivate events in order to perform actions based on the soft keyboard status.

The following is the full code listing for a soft keyboard sample application that demonstrates all these techniques used together to take complete control over the soft keyboard.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         splashScreenImage="@Embed('ProAndroidFlash400.png')">
  <fx:Script>
    <![CDATA[
      [Bindable]
      private var state:String;

      [Bindable]
      private var type:String;

      private function handleActivating(event:SoftKeyboardEvent):void {
        state = "Activating...";
        type = event.triggerType;
      }

      private function handleActivate(event:SoftKeyboardEvent):void {
        state = "Active";
        type = event.triggerType;
      }

      private function handleDeactivate(event:SoftKeyboardEvent):void {
        state = "Deactive";
        type = event.triggerType;
      }

      private function preventActivate(event:SoftKeyboardEvent):void {
        event.preventDefault();
      }
    ]]>
  </fx:Script>
  <s:VGroup left="20" top="20" right="20" gap="15"
        softKeyboardActivating="handleActivating(event)"
        softKeyboardActivate="handleActivate(event)"
        softKeyboardDeactivate="handleDeactivate(event)">
    <s:HGroup>
      <s:Label text="Keyboard State: " fontWeight="bold"/>
      <s:Label text="{state}"/>
    </s:HGroup>
    <s:HGroup>
      <s:Label text="Trigger Type: " fontWeight="bold"/>
      <s:Label text="{type}"/>
    </s:HGroup>
    <s:Button id="needy" label="I Need the Keyboard" needsSoftKeyboard="true" emphasized="true"/>
    <s:TextArea text="I am a text component, but have no keyboard?"
          softKeyboardActivating="preventActivate(event)"/>
    <s:HGroup width="100%" gap="15">
      <s:Button label="Hide Keyboard" click="{setFocus()}" width="50%"/>
      <s:Button label="Show Keyboard" click="{needy.requestSoftKeyboard()}" width="50%"/>
    </s:HGroup>
  </s:VGroup>
</s:Application>

This code creates several controls and attaches actions to them so that you can hide and show the soft keyboard at will, as well as see the current soft keyboard state as reported by the events that trickle up. When you run the application it should look like this:

Notice that the TextArea control, which normally triggers the soft keyboard no longer brings it up, while the highlighted button immediately raises the soft keyboard whenever it gets focus. The two buttons at the bottom to show and hide the keyboard merely play focus tricks to get Flash to show and hide the keyboard at will.

You can use the same techniques in your own application to take full control over the soft keyboard.

 
Comments
6 Comments »
Categories
AIR, Flash, Flex, Mobile
Tags
Android, Flex, keyboard, Mobile
Comments rss Comments rss
Trackback Trackback

Celebrating Java 7 with 7 Reasons to Attend OSCON Java

steveonjava | July 7, 2011

OSCON Java is a new conference that I am helping to kick off as co-chair this July.  While there are plenty of conferences out there that you could attend, I am confident that this is the one you won’t want to miss.

To celebrate the Java 7 release, I put together 7 reasons why you should attend OSCON Java.  Also, make sure to use the 20% discount code of “OS11COM” when you register:

Register now

1. Come Celebrate the First New Java Release in Half a Decade!

The last major release of Java was Java 6, which came out 5 years ago on December 11, 2006. After only a year of the Sun acquisition, Oracle has already made a major Java release happen with another scheduled in a year’s time.

We have broad coverage of the Java 7 release with a keynote and technical session by Joe Darcy, and technical sessions on OpenJDK and Coin by Dalibor Topic and Stuart Marks. I have been pretty impressed with Stuart’s coverage of topics from a developer’s perspective and am looking forward to his talk myself. :)

2. Because Google Matters

Regardless of what you think about the Android lawsuit, I think the biggest detriment has been the lack of good content on Google technologies at Java conferences. We are an independent conference, so it allows us to bring content that you would otherwise not find, such as an exclusive keynote from Joshua Bloch and several mobile Android sessions to help you leverage your Java skills on modern devices.

3. You Think JVM Languages are Cool

It has been said that the crown jewel of the Java platform is the JVM, not the language. Java 7 has further solidified this with better support for dynamic languages. Come find out what is the latest and greatest on the alternative language front with a keynote and some meaty sessions from Martin Odersky, deep technical sessions on Groovy, Clojure, Scala, and other languages, and some bytecode hacking with Charles Nutter.

4. And You Wouldn’t Mind Hanging out with JVM language Authors for a Day…

On the Sunday before OSCON we are organizing a free JVM Languages Symposium that many of the speakers will be attending.  This is a great opportunity to hang out with JVM language authors and the movers and shakers in the industry in an informal unconference atmosphere.  Events like this are what I believe sets apart community-driven conferences from large corporate events, and provide a lot more value to the attendees than simply one-way content.  If you happen to be in the Portland area, you can drop by for this free event with no obligation to stay for OSCON.

5. Your Boss Won’t Let You Fly to Belgium

I travel to speak at different conferences around the world and I would have to say that the golden standard for Java conferences is Devoxx. They have an amazing venue — it is great to see your slides on a huge movie screen, and relaxing for attendees to take it in from nice, plush seats. They attract an international audience… not only Belgium, but Italy, France, Germany, and citizens of many of the other surrounding countries consider Devoxx their home conference. Even though Devoxx is a wildly successful conference, they still have a small-conference feel, run by a very tight knit conference committee that acts more like a user group than an organization. This makes the entire conference experience much more personalized.

OSCON Java has a lot of similarities with Devoxx. It has a small, enthusiastic program committee with folks who really care about Java technologies. We are also following the Devoxx model of recording and posting talks online afterwards, so even if you miss a great talk because you are in the room next door, you can always watch it online later. Finally, since we are an independent conference, you get the full experience of Java, Android, and other technologies that you would otherwise have to go to multiple conferences to see.

6. OSCON is a Pretty Sweet Conference as Well…


OSCON 2011

The O’Reilly OSCON conference has been underrepresented in the Java community, but is a pretty huge event in its own right.  They have some amazing content around emerging languages and mobile platforms.  Plus, you can get OSCON, OSCON Java, and OSCON Data all wrapped up in one neat package with the OSCON Superpass.

7. There is Only One Inaugural Year!


OSCON Java 2011

This is our first year putting on OSCON Java, so we are pulling out all the stops with the best speakers, tutorials, content, and events.  You will have a unique opportunity to participate in the creation of a new Java tradition, and a decade from now can brag to your friends about being a founding attendee of the biggest open-source Java conference in the world.

 
Comments
No Comments »
Categories
Android, Announcements, Events, JavaFX, Mobile, OSCON Java
Tags
Android, java 7, jvm languages, oscon, OSCON Java
Comments rss Comments rss
Trackback Trackback

Flash Android Touch Checker

steveonjava | June 16, 2011

This is the first in a 3 part blog series I am doing on Flash Mobile technology. With the release of Flash Builder 4.5, Flash and Flex now have support for building mobile applications that target Android and, with an update coming out on 6/20, also iPhone and Blackberry devices. In my opinion, this is now the best platform for building cross-platform mobile applications available today.

When targeting applications for mobile development you both have different constraints due to screen size and limited CPU/memory, as well as additional opportunities for enhancing your application by taking advantage of features like multitouch, the accelerometer, and the GPS. In this blog I chose to focus on multitouch, because it is something that every application should take advantage of.

Flash supports 5 different multitouch gestures. The following table describes the gestures and includes a figure demonstrating the multitouch action needed to trigger it.

Gesture Name Event Description
Pan gesturePan Place two fingers on the screen, and drag left or right; commonly used for scrolling the contents of the whole screen
Rotate gestureRotate Touch the screen with two fingers, and move them in an arc. This is an interactive gesture that will often be used to perform arbitrary rotation of objects.
Zoom gestureZoom Place two fingers on the screen, and move them apart or together along a single line. Moving the fingers apart indicates zooming in, and moving the fingers together indicates zooming out.
Swipe gestureSwipe Place one finger on the screen, and quickly swipe it in a single line of travel. Swipes are commonly used to change the screen contents or take an alternate action, such as deleting an item from a list.
Two-Finger Tap gestureTwoFingerTap Lightly tap the screen with two fingers, making only brief contact. This can be used as an alternative or secondary click where more than one action is required.

Read the rest of this entry »

 
Comments
No Comments »
Categories
AIR, Flash, Flex
Tags
Android, Blackberry, Flex 4.5, iPhone, multitouch
Comments rss Comments rss
Trackback Trackback

OSCON Java, The Java Open Source Conference

steveonjava | March 24, 2011

It is pretty easy to get lost in the media hype around the Java events of the past year.  If you follow the headlines, you might believe that all the Java talent left Oracle in a mass exodus, Larry hates open source, or Java is turning into the next COBOL.  Regardless of the factual correctness of these headlines, the Java ecosystem is about more than a single company or set of individuals.  Java has the largest open-source community of any language in existence!

So how big is Java and open-source?  Here is an informal search poll of some of the most popular open-source project hosting providers:

The data for this chart comes from the top six open-source hosting providers using Google Search as a metric for gauging activity level for each of the platforms.  As you can see, Java is still the most active open-source platform in the world, followed closely by PHP and Python.  While not an indicator of language popularity, Bill Gates has gone on record speaking out against open source, so the poor representation from the C# community is not surprising.

This takes us to OSCON Java, which is a new conference I am helping to kick off as conference co-chair together with Laurel Ruma.  It is colocated with OSCON in Portland, Oregon, but is exclusively focused on Java and open source.  O’Reilly is the conference organizer, but they are very neutral when it comes to corporations and technologies.  This allows us to reach out to a wide variety of Java technology players including Apache, Google, Adobe, Oracle, the JCP, and many others.

We have big plans for the OSCON Java keynotes, technical content, and exhibitors.  Also, we are working on making this a model conference from the get-go based on my experience attending and speaking at premier conference venues across the world.  Expect a huge focus on community outreach, a lot of interaction between speakers and attendees, and a particular focus on the JVM languages of tomorrow.

If you are interested in participating as a speaker, it is still not too late to submit a talk.  The CFP ends on March 28th (4 days!), so you still have time to submit a last minute talk:

http://www.oscon.com/oscon2011/public/cfp/159

If you have a great idea, but can’t get your talk together in time or miss the deadline by a few days, shoot me an e-mail via the contact form on my blog.

I look forward to seeing you at OSCON Java, uniting the Java open-source community towards a brighter future!

 
Comments
2 Comments »
Categories
Announcements, Events, Flash, JavaFX, OSCON Java
Tags
c++, java, open source, OSCON Java, php, python, ruby
Comments rss Comments rss
Trackback Trackback

JavaFX 2.0 at the Chennai JUG

steveonjava | February 21, 2011

I was fortunate enough to be invited to speak at the Chennai Java User Group during my trip to India.  I was expecting a small group of very devoted Java fans; however, I was surprised to walk into a room of over 200 developers eager to learn about JavaFX 2.0.  The venue was very impressive with rows of workstations that we later used for a lab, as well as plenty of seating.

Chennai User Group Venue at Tenth Planet

Also, Raj was a great host, and both he and the folks at Tenth Planet went completely over the top with this event.  This included:

  • A life-size poster with the event details
  • An ornamental flower arrangement with the event details
  • Two gifts presented at the conclusion of the talk

Life-Size Event Poster

The session ran from 10AM through 4:30PM with a break for lunch in the middle.  When half the hands went up for returning after lunch, I didn’t believe most of them would be back, but we easily had 60% of the folks back in their seats by the time we were ready to start.

If you are interested to see the slides from the talk, you can find them on Slideshare here:

Thanks again to the folks in the Chennai JUG for being great hosts!

 
Comments
1 Comment »
Categories
Events, JavaFX, Presentation
Tags
chennai, india, JavaFX, jug, Presentation, Visage
Comments rss Comments rss
Trackback Trackback

Flash Capability Reporter Sample and Video

steveonjava | February 2, 2011

The folks at Marakana did a great job hosting the recent Flash Android event, as well as recording and publishing the talk. As a fellow user group leader, I can appreciate the hard work that went into preparing the video, including some fine editing and splicing by Max Walker (the presentation was not as flawless as he made it look!)

You can view the talk on the Marakana website, or here as an embedded video:

YouTube Preview Image

All the slides for the talk can be found on SlideShare: http://www.slideshare.net/steveonjava/beginning-android-flash-development

Flash Capability Reporter

Also, as promised I am going to start posting different samples from the book. The first of these is the Flash Capability Reporter. It is a simple application that displays your device characteristics in a scrolling text field.  Figure 1 shows a screenshot of the Capability Reporter in action.

Figure 1. Flash Capability Reporter running on the desktop

Read the rest of this entry »

 
Comments
No Comments »
Categories
AIR, Android, Events, Flash, Mobile
Tags
Android, Flash, sfandroid, Video
Comments rss Comments rss
Trackback Trackback

Beginning Flash at the SF Android UG

steveonjava | January 31, 2011

One of my coauthors on the upcoming Pro Android Flash title, Oswald Campesato, and I had the pleasure of speaking to the San Francisco Android User Group.  It was a packed audience with around 150 eager Android developers who wanted to hear how they could use Flash on their devices (they were a great audience).  Here is what some of them had to say about the meetup:

  • Alec Dara-Abrams

    Stephen and Oswald gave a very good over view of Flash development on Android. Like a number of other SF Android speakers, packing the hour or so with the right level of technical detail. Thanks to them also for being responsive to audience questions – not so easy I’d guess with 100+ people out there past the lighting for the video. I’m looking forward to following Stephen’s blog.
  • Drew Dara-Abrams

    Stephen and Oswald gave a good overview of the current state of Flash on Android. Unfortunately the Adobe tools and their book won’t be out until spring, but I appreciated all the working examples of code that Stephen demonstrated. I’ll definitely look for their book when it comes out.
  • Francisco Carretero

    Looks like an incredibly useful topic for android for giving android that push to the next level.

As I promised folks in the audience, here is a copy of the full presentation.  Lots of this information was added very recently from different chapters in our book, so it is definitely the latest and greatest source of information on what you can do with Flash on mobile devices:

Beginning Android Flash Development

I will be posting examples from the book on this blog over the next few weeks.  Please follow my blog if you are interested to see the latest examples of Flash Android capabilities.

http://www.sfandroid.org/events/15196582/
 
Comments
No Comments »
Categories
Android, Events, Flash, Mobile, Presentation
Tags
Android, Flash, Flex, sfandroid
Comments rss Comments rss
Trackback Trackback

Visage Android – Cleaner APIs, Cleaner UIs

steveonjava | January 13, 2011

I have been busily working away at getting Visage ready for developing Android applications. It is a great fit, because Android converts regular Java class files into its special class format, and the Visage compiler happens to generate Java class files. Also, Android is desperately in need of some TLC on their APIs (more on this in a future blog).

So why use Visage for coding Android applications? We do a yearly Hack-a-Thon event at my company (this year called the GXS Xathon). The winning application was written by Tim McNamara, one of my coworkers, and happened to be an Android application.  I decided to do a small port of his code to see if I could improve the maintainability using Visage.  Here is a screenshot of the application:

A base settings page for an application.  It uses a couple edit text fields, several lists, and takes advantage of the summary line to display the current values.  The original version included:

  • A Java PreferenceActivity class file
  • An XML UI layout descriptor
  • Another XML file for array resources

Believe it or not, this is the minimum necessary set of files to create the above screen.  In converting this to Visage, my goal was to get rid of a lot of the redundancy and glue code needed to work across 3 different files.

The end results of the conversion were as follows:

FilesLinesCharacters
Raw Android1 Java, 2 XML2087413
Visage Android1 Visage903640

While the numbers are impressive, what really matters is the code.

Here is the final Visage code for the settings page:

public class Settings extends PreferenceActivity {
    var senderPref:ListPreference;
    var receiverPref:ListPreference;
    var statusPref:ListPreference;
    var pollingPref:ListPreference;
    var passwordPref:EditTextPreference;
    var usernamePref:EditTextPreference;

    override var screen = PreferenceScreen { // 1
        preferences: [
            PreferenceCategory { // 1
                "Preferences" // 2
                preferences: [
                    usernamePref = EditTextPreference { // 1...
                        "Username" // 2
                        key: "usernamePref"
                        summary: bind if (usernamePref.text == "") "Currently undefined" else "Current value: {usernamePref.text}" // 3
                    }
                    passwordPref = EditTextPreference {
                        "Password"
                        key: "passwordPref"
                        summary: bind passwordPref.text.replaceAll(".", "*"); // 3
                    }
                    pollingPref = ListPreference {
                        "Polling Interval"
                        key: "pollingPref"
                        defaultValue: "60000"
                        entries: ["30 seconds", "1 minute", "5 minutes", "10 minutes", "15 minutes", "30 minutes", "1 hour"] // 4
                        entryValues: ["30000", "60000", "300000", "600000", "900000", "1800000", "3600000"] // 4
                        summary: bind pollingPref.entry
                    }
                ]
            }
            PreferenceCategory {
                "Filter"
                def CLEAR = "\{Clear Filter\}"; // 5
                preferences: [
                    statusPref = ListPreference {
                        def status = [CLEAR, "HEALTHY", "WARNING", "DOWN"]; // 5
                        "Filter By Status"
                        key: "statusPref"
                        defaultValue: CLEAR
                        entries: status
                        entryValues: status
                        summary: bind if (statusPref.value == CLEAR) "Select a status to filter on." else "Current value: {statusPref.value}"
                    }
                    senderPref = ListPreference {
                        def senders = [CLEAR, for (s in ConnectionService.getSenderNameList()) s];
                        "Filter By Sender"
                        key: "senderPref"
                        defaultValue: CLEAR
                        entries: senders
                        entryValues: senders
                        summary: bind if (senderPref.value == CLEAR) "Select a sender to filter on." else "Current value: {senderPref.value}"
                    }
                    receiverPref = ListPreference {
                        def receivers = [CLEAR, for (r in ConnectionService.getReceiverNameList()) r];
                        "Filter By Receiver"
                        key: "receiverPref"
                        defaultValue: CLEAR
                        entries: receivers
                        entryValues: receivers
                        summary: bind if (receiverPref.value == CLEAR) "Select a receiver to filter on." else "Current value: {receiverPref.value}"
                    }
                ]
            }
        ]
    }
}

While I am not going to include the full original Android code (200 lines is a lot of code!), here are some of the changes that made the Visage version much more succinct (the below bullets match the numbers in the comments above):

  1. The Visage object literal syntax is more concise than XML and just as readable!
  2. Default properties make the object literal syntax even more concise
  3. One bind call can replace dozens of lines of code to setup and instantiate event listeners
  4. No need to declare arrays in a separate file (yes, we have real data types)
  5. This is a real programming language, so you can use constants and variables to repeat arguments (try doing that in XML!)

All of the technology here is real, but getting a completed set of APIs that covers all of the things you can accomplish in Android is still a work in progress.

If you are interested in helping out with this, please join the Visage Developers mailing list.  I will be posting instructions there soon on how to access the bleeding edge Android Visage repository, and contribute to the growing set of Android APIs.

 
Comments
19 Comments »
Categories
Android, JavaFX, Visage
Tags
Android, api, ui, Visage
Comments rss Comments rss
Trackback Trackback

SC2 Coders Challenge – Geeks Only Need Apply

steveonjava | December 2, 2010

I announced the Starcraft 2 Coders Challenge at Devoxx in Belgium. This is a little off topic for my coding blog, but an interesting aside for anyone who enjoys Real Time Strategy (RTS) gaming.

As a genre, I find RTS games interesting for the following reasons:

  • Matches are online, testing your skills and wit against other human opponents
  • The matches are relatively short (~15 minutes on average), but extremely intense
  • After you get the mechanics down, winning is all about strategy
  • The options for build order, troop composition, and tactics make it a great discussion topic

The original Starcraft came out back in 2000 and was a huge hit. In the past decade it has become one of the most popular online games in the world, selling over 9.5 million copies. Just under half of those were sold to South Korea where Starcraft and Pro-gaming has become close to a national sport. One of the features of the game is a 3 race system with hundreds of patches and tweaks that have gone into game balance to improve the playability of matches.

I mostly swore off games many years ago to increase my development productivity (as a developer there is a limited amount of focused time you can spend in front of the computer).  However, with the release of Starcraft 2 I started picking up matches between coding sessions as a mental break.  At this point I am probably one of the few people who has bought the game and never tried the single player campaign. However, I am quite skilled at multiplayer matches with a diamond gaming rank.

If you are interested, I am taking challenge matches via this blog.  Simply click on the SC2 Challenge link in the menu and submit your account information so I can arrange a match.  The only criteria is that you can program (Java, JavaFX, Javascript, Actionscript, etc.).  Standard 1v1 quick match rules apply.

The first person to take me down will get their match featured on my blog (I promise not to broadcast losing matches).

As a teaser, here is a short webcast of a recent random match-up I played online (complete with some announcer voiceovers explaining what is happening):

View in High Definition

At some point I will probably post some information on how to capture, convert, and post high quality videos. This was non-trivial for various reasons, but will come in handy with some other coding related videos I plan to post soon (Visage on Android anyone?).

Let the battle begin!

 
Comments
6 Comments »
Categories
Starcraft, Video
Tags
challenge, rts, starcraft 2, Video
Comments rss Comments rss
Trackback Trackback

Alternative Languages at Devoxx and Soon JavaOne Brazil

steveonjava | November 24, 2010

I did my JavaFX Alternative Languages talk at Devoxx and will soon be presenting it at JavaOne Brazil (December 7-9th).

During the Devoxx talk I was honored to have Martin Odersky in the audience (for those of you who don’t know him, Martin is the man behind Generic Java and now Scala).  There were several great questions at the end of the talk, one posed by Martin himself.

The question was around this Scala code fragment:

def timeline = new Timeline {
  repeatCount = INDEFINITE
  autoReverse = true
  keyFrames = List(
    new KeyFrame(50) {
      values = List(
        new KeyValue(rect1.x() -> 300),
        new KeyValue(rect2.y() -> 500),
        new KeyValue(rect2.width() -> 150)
      )
    }
  )
}

He was wondering why I had the extra parenthesis after the variables (x, y, and width).  In Scala using parenthesis is optional for methods and allowed for variables, so it appears to be a style issue.  However, there is a good reason for this.

The current JavaFX property model has 4 helper methods for each variable:

  • int getX() – Standard JavaBeans getter function for the property x.
  • setX(int x) – Standard JavaBeans setter function for the property x.
  • static PropertyReference X() – A static function that returns a property reference for x that can be used to refer to this field.
  • ValueBinding x() – A member function that returns a mutable reference to x that can be used to get or set the value dynamically.

So the extra parenthesis were to differentiate between a normal method call (“x”) and a ValueBinding (“x()”).

By popular demand at the earlier SvJugFx Event, I also added in some new content demonstrating usage of the Fantom language for coding JavaFX. Besides being extremely easy to create DSLs in, it also has a built-in Duration operator, making the end result extremely similar to the equivalent JavaFX Script:

Here is the full talk on alternative languages with all the updates for the latest conceptual JavaFX 2.0 APIs:

If you are going to be at JavaOne Brazil, please drop me a line and I will be happy to meet up and chat about JavaFX futures.

 
Comments
1 Comment »
Categories
Events, JavaFX, Presentation, SvJugFx, Visage
Tags
clojure, Fantom, groovy, javafx 2.0, jruby, scala, Visage
Comments rss Comments rss
Trackback Trackback

« Previous Entries Next Entries »

  • Travel Map - Let's Meetup

Publications

   

Upcoming Talks

QCon NY

Steve On…

  • Everything
  • Agile
  • Flash
  • JavaFX

Archives

Affiliations

Awards

2009 JavaOne Rock Star!

Disclaimer

Views and opinions expressed here are all my fault... complain to me, not my employer. :)
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox