23 November 2009

Current Status On JavaFX 1.3

Some news has been reported from the Devoxx 09 conference including what is currently happening with JavaFX. A lot of people who have been to the conference have reported that there will be a JavaFX GUI designer for NetBeans. It has been reported that the GUI designer will be part of the upcoming NetBeans 6.8 which is due to be released on the 10th of December (approx), unless there are any major delays. What is currently unknown about the GUI designer is whether or not it supports JavaFX 1.2, we will soon see if it does.

Some people at the conference have also reported that some of the new JavaFX 1.3 controls were demonstrated using the GUI designer for NetBeans. The major question is will JavaFX 1.3 come with NetBeans 6.8? Currently there is no official word on exactly what new controls will be included in JavaFX 1.3. What is an important question though is will the GUI designer handle the visual design of animations? Also how does the GUI designer differ from the JavaFX Authoring tool?

Prism may actually be the new JavaFX runtime starting with JavaFX 1.3? This is certainly confusing as I originally thought that prism was only a rendering system, all will be revealed when JavaFX 1.3 is released. One person who reported on the Prism demonstration at Devoxx mentioned that it is lightning fast performance wise. It will be interesting to see how that performance scales when there are many nodes on the scenegraph and/or a lot of binding is involved.

Unfortunately there is no official word on when the JavaFX mobile emulators will be released for Linux, although there is the old screenshot that shows the JME (Java Mobile Edition) 3 SDK in action on Linux. Hopefully the mobile emulators will be arriving soon. As always there is nothing official being released about the exact release date for JavaFX 1.3 (it will be released as soon as its ready – good things take time :<) ).

Oracle wise (not the actual company) I think that JavaFX 1.3 will most likely be released around the middle of December after the release of NetBeans 6.8. Again I am just repeating what I have mentioned in a previous post. It will be most interesting to see exactly when JavaFX 1.3 is released. Apparently JavaFX 1.3 will be targeted for release around Jan/Feb 2010 (Jonathan Giles mentioned this in a Twitter) which is a long time away. Prism will most likely not appear in JavaFX 1.3, but will be demonstrated at JavaOne 2010. A possible reason for this might be that Prism will be handling full 3D in the next release of JavaFX after SoMa.

16 November 2009

Introducing JFX Blocks


Introduction

Often there will be parts (blocks – see further down for an explanation) that you want to add to an existing or new application. These parts are missing items of functionality which make the application complete. Today's issues often revolve around being able to quickly and easily find parts that adequately satisfy the functionality that is missing without adding bloat.

But when some parts are found you often find yourself in the situation where other parts have to be used, and/or some prior configuration (significant amounts) is required before using it. Frameworks are extremely poor when it comes to supplying what you need since there is additional baggage that has to be handled as mentioned above.

How does one grab what they need without requiring anything else? A key answer to this is with platform libraries since they do not require you to use what you don't need. Instead the libraries underlying design (eg through loose coupling) permits software developers to use only what they need, and not what they don't want.

An inspiration of this is the NetBeans Platform because the designers have taken into consideration that every application is different in terms of its requirements, and have designed the platform as such that if anything else is required it has sufficient design reasons for including it (eg makes it easier to implement a given piece of functionality).

Another issue is being able to easily integrate a part into an existing application. Especially if this application is used by the masses. Difficulties arise when significant changes need to be made in order to incorporate the part. In this situation you would go for a different part (from a different supplier - see further down for an explanation) provided there are some choices out there.

Certainly we are starting to see the emergence of platform libraries as a trend away from frameworks. So you could be mistaken for thinking that libraries are back with a vengeance. Indeed that is exactly what is occurring since software developers are after a balance between flexibility and simplicity when building applications.

JFX Blocks is designed to quickly and easily build new JavaFX applications (mobile and desktop, not mobile web), and add functionality to existing JavaFX applications. Currently JFX Blocks is at the design stage therefore any core functionality that is mentioned may change.



Main Aims

  • Emphasise a declarative approach to building applications with a focus on what is needed

  • Use mixins as “building blocks” to easily build against other existing code

  • Minimise or remove the need for configuration before using a “block”

  • Provide default behaviour for every “block” so it is usable straight “out of the box” in a new or existing application

  • Emphasise the use of design to provide “blocks” that produce huge benefits with little effort

  • Maintain high documentation standards that incorporate an extensive use of examples (samples) for getting started

  • Minimise the use of tight coupling

  • Maintain high coding standards

  • Provide core functionality that will work on both mobile (not mobile web) and desktop applications without any major changes (JFX Blocks common profile)




Terminology

  • Block – A self contained piece of functionality that is loosely coupled (a mixin)

  • Container – Contains a set of blocks that handle a specific (unique) area (a JAR)

  • Blueprint – Like a block except it contains no default behaviour and it only specifies how to structure something (a mixin that is like a interface)

  • Connector – Enables a block to be “connected” to an application (a class)

  • Supplier – Designs and creates the blocks/containers/blueprints/connectors

  • Builder – The user that builds or partly builds an application using what is provided by supplier(s)




Core Functionality

  • A basic (generic) lookup system that can obtain physical files, JAR resources

  • IO (Input/Output) utilities

  • Factory for controlled creation of “blocks”

  • Handle all aspects of the application's lifecycle (eg startup, shutdown, resource loading, setting up user settings)

  • A basic (generic) persistence system for general data, program and user settings

09 November 2009

First Impressions Of Ubuntu 9.10

Lately you might have noticed that I haven't made a post for quite some time. The reason for the delay is because of some mysterious display problems with the previous version of Ubuntu (8.04 LTS) that I used. Eventually the problems reached a point where the OS had to be reinstalled, and it was a great opportunity to make a clean install of Ubuntu 9.10. After all with the glowing reviews of the OS hitting the web I thought that it would be reasonably smooth sailing with getting the current version of Ubuntu installed.


Display Woes

Smooth sailing wasn't to be the case with the live CD failing to display anything at all. In order to get something displayed the resolution was changed through the use of two keyboard shortcuts (Ctrl+Alt++, Ctrl+Alt+-). Normally most people (non technical) would give up at this point so Ubuntu was not making a good impression so far. At that point the installer could then be started.

Luckily the install went very smoothly and after a reboot everything seemed to be going fine until.... more problems occurred. Once EnvyNG (video driver management for ATI and NVidia video cards) was installed I had tried to run it but to no avail. It turns out that one has to install the envyng-qt package since envyng-gtk is broken. After a reboot the display was showing the CLI login prompt which was flickering for some strange reason.

When I tried entering in the username no characters were being displayed at all. This happened to be one of the most irritating parts of installing and setting up Ubuntu since many people (who have an ATI or NVidia video card) were having the exact same issue, and it took a long time to resolve (a matter of hours). Even worse was the fact that the Nvidia driver package is currently broken thus there is no GUI login being displayed.

Once the NVidia drivers were installed using the version supplied on the official NVidia website some progress was finally being made. Not all the display issues had been resolved yet since not all of the resolutions were being picked up properly. This part took the longest amount of time to resolve through trial and error with editing /etc/X11/xorg.conf. In my case I had eventually reached the point where I had to put up with the resolutions that the NVidia driver had picked up. Luckily after commenting out the "HorizSync" and "VertRefresh" lines in the monitor section, and logging in again all of the resolutions were then picked up properly.


What Is New And Different
  • Many packages in the Ubuntu repositories have been updated including NetBeans, and the Sun JRE (Java runtime)
  • Firefox is now at version 3.5.4
  • Open Office is now at version 3.1.1
  • Gnome is now at version 2.28.1
  • Vastly improved general performance (start up times are so quick that they rival the Hibernate mode)
  • The new Palimpsest Disk Utility 2.28.0 has been included, more details to follow
  • Introduction of the new Ubuntu One service, more details to follow
  • Default option to use the new ext4 file system when partitioning
  • Linux kernel is now at version 2.6.31-14

What is most notable about the current Ubuntu release is the introduction of the brand new Ubuntu One service. Ubuntu One allows contacts, notes, and files (2GB free storage) to be synchronised with one or more Ubuntu (9.10 or later) PCs. Initially when I logged into the service (via Firefox) a message was displayed saying there was a version mismatch with the server. An OS update quickly resolved the problem with updating the Ubuntu One desktop client to handle the current server.

I would advise anyone who is using Ubuntu One on Ubuntu to use Nautilus (file browser) when uploading a batch of files, since the web client is slow and produces errors every time a file is uploaded. With the desktop client you can add directories and files to the Ubuntu One directory. For example with the joe user this is located in "/home/joe/Ubuntu One". Every time you add or remove a directory and/or file the client automatically synchronises the changes whenever your computer is connected with the service.


Another notable change in Ubuntu is the new Palimpsest Disk Utility. Palimpest manages disk partitions, and provides very handy diagnostic information on partitions and all storage devices. It is absolutely amazing what you can find out using this handy utility. For example one can find out about the current airflow temperature for a particular storage device, and can see what the normal temperature is supposed to be. Also Palimpest automatically notifies the OS if there are any major problems, and can perform some tests on the user's behalf for a particular storage device.


One other major change is the brand new refreshing Ubuntu look. This look reminds me of the JavaFX look, classy, legible, and visually appealing which doesn't take up too much screen real estate (netbook friendly).


Lastly Ubuntu's Add Software has been replaced with the new Ubuntu Software Center. When using the software center you can no longer install/uninstall a group of software at once, and more details are provided for each piece of software (including a screenshot, package name and version etc). Installation and uninstallation of software is now handled in the same window used to browse software, and one can swap between "Get Free Software" and "Installed Software" tabs with navigation being remembered with "Get Free Software".


Current Issues


Sound performance in my case is much worse than in Ubuntu 8.04. There is a very noticeable sound lag (consistent) which wasn't present before. Hopefully this will be resolved in the next batch of OS updates. Wireless networking is now a bit of hit or miss. It used to be in Ubuntu 8.04 that if the IP address was not picked up through DHCP the first time, then the second attempt would always pick up an address. However with Ubuntu 9.10 I usually have to restart the wireless router in order for an IP address to be obtained properly. Again the next batch of OS updates should resolve this.


Conclusion

For people who have an ATI or NVidia video card in their machine, and are currently thinking of installing Ubuntu 9.10 are advised to hold off until Ubuntu 10.04 LTS arrives. The reason for this is because 10.04 is a long term support release which is supposed to be much more robust for hardware support, and OS stability. If your machine contains an Intel video card then 9.10 is for you since many improvements have been made with supporting Intel video cards out of the box.

02 November 2009

Why Oracle Should Dump JDeveloper For NetBeans (Update)

This is going to be a very short post. Oracle have announced in their Sun Product Support FAQ that they are endorsing NetBeans as an open source IDE option for the Java platform alongside Eclipse and JDeveloper. Some people have commented that Oracle have given a lukewarm response to NetBeans.

What is not certain is how Oracle are going to support NetBeans. Perhaps Oracle will be releasing plugins for NetBeans just like they are currently doing for Eclipse? This is probably a mere coincidence but NetBeans is moving to a completely new infrastructure (an announcement was made just a few days after the Oracle FAQ was released), I am sure that this has nothing to do with the timing of Oracle's FAQ.

On an unrelated side note the next version of NetBeans (version 6.8), which is going to be released around December will have JavaFX support ready straight away. Also all future NetBeans releases are going to be synchronised with the JavaFX releases (current and future) which should help increase development speed, and improve stability for the JavaFX plugin.