Google Earth Adds Moon To Celebrate Apollo 11 Landing

To mark the 40th anniversary of the Apollo 11 moon landing on July 20, 1969, Google on Monday released Moon in Google Earth, which allows users to explore lunar images and related lunar content.

In a post on the official Google (NSDQ: GOOG) blog, Anousheh Ansari, the first female private space explorer and a trustee of the XPRIZE Foundation, says the software will help millions of people learn about space.
"Moon in Google Earth enables you to explore lunar imagery as well as informational content about the Apollo landing sites, panoramic images shot by the Apollo astronauts, narrated tours and much more," she explains. "I believe that this educational tool is a critical step into the future, a way to both develop the dreams of young people globally, and inspire new audacious goals."
If you re-start Google Earth right now, you can see the Moon in 3D! Look for the little planet icon in the upper middle of Google Earth and you'll see a new option "Moon". The new moon in Google Earth changes the virtual globe into a 3D rendition of the moon. The terrain of the moon is in 3D and there are layers telling you more about the moon.

Here's my first screenshot of the new 3D moon in Google Earth - showing the Apollo 11 landing site:

The first thing you should check out in the new Google Earth moon mode is the awesome Apollo 11 tour found in the layers under: Moon Gallery->Guided Tours->Apollo 11. This tour is narrated by Andrew Chaiken and Astronaut Buzz Aldrin and is one of the best illustrations of the Apollo 11 mission I've seen to date!

Four years ago to the day, Google launched Google Moon, a way to explore the Moon using its Web-based Google Maps service rather than Google Earth, a desktop application. There's also a Google Maps-based Mars.

Other extra-terrestrial layers in Google Earth include Sky and Mars. There's also an Ocean layer, which was launched in February with the release of Google Earth 5.0.Moon in Google Earth details all of the Apollo landing missions, and offers lunar surface panoramas in Google's Street View format. So far, there have been no privacy complaints.

Google's Moon project is a result of the company's Space Act Agreement with NASA. Japan's space agency JAXA also helped out by donating a global terrain dataset of the Moon.

And finally, with respect to the Google Doodle problem, a picture that doesn't look like it was whipped up in five minutes appeared on Google's homepage at around 3 PM (Eastern Time).

Read Rest of Entry

The Google File System ( GFS )

Google File System (GFS) is a file system developed by Sanjay Ghemawat, Shun-Tak Leung and Urs Holzle for Google to handle rapid growth of the company’s infrastructure and to suit their needs. The company was looking for a way to improve the stability and reliability of their services and the only reasonable way to do that was to build their own file management system as no other system was able to handle massive number of requests over huge amount of servers.
The GFS supports gigantic user population combined with very cheap computer equipment that tends to break down quite often. From the beginning of Google, the company used cheap computers running Linux to maintain the need for storage space for information gathered by web crawlers (and other services, like GMail, etc.). It caused problems with reliability of service and low efficiency. They had to create reliable software to run over unreliable hardware. It was a total change to the economy of the IT companies.
In 2003 Google published a paper on their Google File System (GFS) at SOSP, the Symposium on Operating Systems Principles. This is the same venue at which Amazon published their Dynamo work, albeit four years earlier. One of the lecturers in my group tells me that SOSP is a venue where "interesting" is rated highly as a criterion for acceptance, over other more staid conferences. So what, if anything, was interesting about GFS? Read on for some details.


Filesystems are a integral component of most operating systems that mediate access to persistently stored data. When you save a file to a magnetic hard disk, it gets recorded as a logical series of 1s and 0s, amongst a sea of other files similarly represented. The filesystem is the part of the operating system that makes sense of these 1s and 0s and is able to recover the structure in terms of files and folders that was present when the data were written.

Of course this, as any other one paragraph introduction to such a broad subject must be, is a simplification. Filesystems don't tend to deal in 1s and 0s, that would be far too messy. Instead they are supported by a device driver that typically speaks in terms of blocks - large chunks of data - which takes care of actually writing the blocks to disk. But the filesystem is responsible for determining what those blocks 'mean' in the context of files and folders.

Different filesystems have different characteristics. Some filesystems are extremely simple, lightweight and fast. Others are more complex, but can recover from some disk corruption. Some are more appropriate to workstation usage patterns, whereas some are tailored towards, say, the requirements of a disk-backed SQL database.

What is GFS?

GFS as I described above is storage system which allows main functionality of storage, processing search and retrieval and in case of failure should be able to self correct it in order to retrieve huge amount of data which Google’s paper say is in terms of Multi-GB.

How GFS Work?

According to Google Lab’s Jeffery Dean, The idea behind GFS is to store data reliably even in the presence of unreliable machines. The GFS system works on master slave module. There is one machine which acts as server and several other which are slaves or node.
The master is responsible to keep track of “which data is stored on which machine” , called as meta data ( data about data). The GFS is said to maintain 3 copies of any data or file including executable. The meta data resides on the main memory of Master , i.e on ram, thus allowing faster access.GFS was designed to store huge amount of data, till current date.

The largest Google Cluster ( Cluster is group of computers together as network) stores hundreds of terrabytes of memory across thousands of disks.

How Data Failure and tolerance works in GFS ?

In GFS, The master server handles all the requests , which in turn transfer the request to exact location of data to one or more nodes or slaves. In case the request takes more time than alloted the system switches to a backup-copy ( the reason of maintaining 3 copies!!).

In case of one of the slaves or nodes fail, its Master which is responsible to maintain the count of nodes either by reallocating ro some other machine or creating a duplicate copy. Although there is only single master “active” at any given point, the state of master ( log of what the master has been doing) is present on other machines too.

Thus in case of failure of master , another machine which knows what the failed master was doing takes the position and keeps the work on move.This is an overview of how GFS works. For more technical details look at GFS Papers.


The GFS implementation we’ve looked offers many winning attributes. These include:
  • Availability. Triple redundancy (or more if users choose), pipelined chunk replication, rapid master failovers, intelligent replica placement, automatic re-replication, and cheap snapshot copies. All of these features deliver what Google users see every day: datacenter-class availability in one of the world’s largest datacenters.
  • Performance. Most workloads, even databases, are about 90% reads. GFS performance on large sequential reads is exemplary. It was child’s play for Google to add video download to their product set, and I suspect their cost-per-byte is better than YouTube or any of the other video sharing services.
  • Management. The system offers much of what IBM calls “autonomic” management. It manages itself through multiple failure modes, offers automatic load balancing and storage pooling, and provides features, such as the snapshots and 3 day window for dead chunks to remain on the system, that give management an extra line of defense against failure and mistakes. I’d love to know how many sysadmins it takes to run a system like this.
  • Cost. Storage doesn’t get any cheaper than ATA drives in a system box.
Yet as a general purpose commercial product, it suffers some serious shortcomings.
  • Performance on small reads and writes, which it wasn’t designed for, isn’t good enough for general data center workloads.
  • The record append file operation and the “relaxed” consistency model, while excellent for Google, wouldn’t fit many enterprise workloads. It might be that email systems, where SOX requirements are pushing retention, might be redesigned to eliminate deletes. Since appending is key to GFS write performance in a multi-writer environment, it might be that GFS would give up much of its performance advantage even in large serial writes in the enterprise.
  • Lest we forget, GFS is NFS, not for sale. Google must see its infrastructure technology as a critical competitive advantage, so it is highly unlikely to open source GFS any time soon.
Read Rest of Entry

Replace Microsoft Office 2007 Ribbon with Classic Menu

If you find yourself spending way too much time trying to locate frequently-used Microsoft Office commands through its newly designed interface, Ribbon Customizer is for you. It reintroduces the toolbars found in previous versions of Office.

Ribbon Customizer for Office 2007 is an application that display menus and toolbars of Office 2007. Could not see the menus in the last version of MS Office? Just download and install this software, you will see and enjoy classic menus and toolbars of Office 2007 (include Excel, Word and PowerPoint), as in the Office 2003/XP.

The familiar Office 2003 interface has been replaced by the Ribbon. It is cool and powerful, but many users can't find some of the features because they are hidden or moved to other places. If you install Ribbon Customizer, these menus and toolbars will be retrieved and shown. All new features items of Microsoft Office 2007 have been added into the classic menu and toolbars. Supports all languages that are supported by Microsoft Office 2007: English, French, German, Italian, Spanish, Portuguese, Japanese, Arabic, Korean, Chinese. You can add the menus and toolbars to Quick Access Toolbar, then you can minimize the Ribbon and finish all operations without Ribbon.

RibbonCustomizer, comes in 2 flavors - the Starter edition and Professional, professional version giving more features for a price.

Read Rest of Entry

Tech Quark ! New Design is Now Live ! has just been hit with a new design and some brand new features. The new design is white background based and gives more room to the posts contents. The advertisements are properly arranged and align so that they don't hinder the reading experience. The post pages also have a new 'sharing is sexy' option to bookmark posts.

I have also introduced Google Friend Connect feature where you can follow my blog. You can find it at bottom of the site. Features like post summaries, subscribe via email, menu bars, top labels, go to top link, blog achieve and other many features have defined a presence in this new rocking design. The new design loads fast and looks good :)

Please notify us of any bugs or improvements.

Full Test of New Design

No.Tested CriteriaPointPassFail
1Template Support Available2
2Compatible with IE71
3Compatible with Firefox1
4Floating Content within post area1
5Auto adjustment within the post area1
6Proper Image Alignment1
7Proper Display of Commenting System1
8Proper Display of Links and Quick Editing1
9Proper Display of Blog Archive and Followers Gadget1

Total10 pts10 pts

Design Score100%

Please pour in your feedback on what you think of the new Tech Quark ! and if it was something better we could have done – We’d love to know.

Thank You for your efforts, inputs and patience.
Read Rest of Entry

Test Read and Write Speed of USB Flash Drives

USBDeview is a small utility that lists all USB devices that currently connected to your computer, as well as all USB devices that you previously used. For each USB device, extended information is displayed are : Device name/description, device type, serial number (for mass storage devices), the date/time that device was added, VendorID, and ProductID.

Using USBDeview

USBDeview doesn't require any installation process or additional DLL files. Just copy the executable file (USBDeview.exe) to any folder you like, and run it. The main window of USBDeview displays all USB devices installed on your system. You can select one or more items, and then disconnect (unplug) them , uninstall them, or just save the information into text/xml/html file.

USBDeview Columns Description
  • Device Name: Specifies the device name. For some device, this column may display meaningless name, like "USB Device". If the device name is meaningless, try to look at the Description column.
  • Device Description: The description of the device.
  • Device Type: The device type, according to USB class code.
  • Connected: Specifies whether the device is currently connected to your computer. If the device is connected, you can use the 'Disconnect Selected Devices' option (F9) to disconnect the device.
  • Safe To Unplug: Specifies whether it's safe to unplug the device from the USB plug without disconnecting it first. If the value of this column is false, and you want to unplug this device, you must first disconnect this device by using the 'Disconnect Selected Devices' option (F9) of USBDeview utility, or by using the 'Unplug or Eject Hardware' utility of Windows operating system.
  • Drive Letter: Specifies the drive letter of the USB device. This column is only relevant to USB flash memory devices and to USB CD/DVD drives. Be aware that USBDeview cannot detect drive letters of USB hard-disks.
  • Serial Number: Specifies the serial number of the device. This column is only relevant to mass storage devices (flash memory devices, CD/DVD drives, and USB hard-disks).
  • Created Date: Specifies the date/time that the device was installed. In most cases, this date/time value represents the time that you first plugged the device to the USB port. However, be aware that in some circumstances this value may be wrong.
  • Last Plug/Unplug Date: Specifies the last time that you plugged/unplugged the device. This date value is lost when you restart the computer.
  • VendorID/ProductID: Specifies the VendorID and ProductID of the device.
  • USB Class/Subclass/Protocol: Specifies the Class/Subclass/Protocol of the device according to USB specifications.
  • Hub/Port: Specifies the hub number and port number that the device was plugged into. This value is empty for mass storage devices.
USBDeview Icons Legend

The device is not connected.
The device is connected. It's safe to physically unplug the device without disconnecting it.
The device is connected. You must disconnect the device from USBDeview or from Windows "Safely Remove Hardware" option before you physically unplug it.
The device is disabled.

Test Speed
To test the speed of your USB flash drive, plug the drive into your computer, and run USBDeview. Right click on the USB flash drive device listed in USBDeview and select SpeedTest. Alternative you can also use the hotkey Ctrl+T. When you see the SpeedTest window, click the Start Test button to start the speed test.

USBDeview will start writing a large file into the USB flash drive, and then reading back the same file to getting the read speed. Do take note that you need at least 100 MB of free disk space in order to successfully make this speed test. After a few seconds you should get the read and write speed in Megabyte per second.

Publishing Your Speed Test Result

If you want to share your speed test results, so other people that want to purchase a USB flash drive will be able to easily compare the speed of different flash drives, you can use the 'Publish Test Result' option to do that.

When you successfully finish a speed test, the 'Publish Test Result' button is automatically enabled. Clicking this button opens a new window that displays all the data that will be sent to Web site, and ask you the confirm the speed test publishing. Be aware that only the data displayed in this window is transmitted to Web site. USBDeview doesn't send the serial number of your USB device or any other information that may violate your privacy.
Read Rest of Entry

Explore IPv6 with Windows XP

Forward-looking organizations are beginning to evaluate the benefits of moving to the next version of TCP/IP—IPv6, which, among other benefits, eliminates the need for the patchwork of fixes, such as Network Address Translation, that has invaded many a networked environment over the past few years.

It is necessary to rework many TCP/IP stacks and applications to take advantage of the new architecture and features. You’re in luck if you’re running Windows XP because it’s in the beginning stages of making use of IPv6. I’ll show you how to enable IPv6 under XP and give you some tips on what to look out for.

IPv6 has been included in both Windows XP Professional, and Home Edition. At first, it was positioned as developer release, which meant no support for ordinary users. But Microsoft announced official support for IPv6 with Service Pack-1 (XP SP-1). XP SP-1 has some additional functionalities in install and IPv6 commands. I will basically follow procedures common to XP and XP SP-1 below, and add explanation about the differences between two versions.

Not quite ready for prime time

IPv6 is not recommended for production use yet. While IPv6 functionality is present in Windows XP, it’s definitely not as well supported as IPv4, the current version of TCP/IP. This lack of functionality is evident because even the earliest stages of enabling IPv6 support in the new OS are difficult to configure. For instance, everything related to IPv6 is performed at the command line. Also, none of the current GUI utilities present in XP will show you any IPv6 information, even when it is enabled and you’re actively using it.

Installing and verifying the stack

As a separate service to Windows XP, you must install IPv6 before you can use it. This installation can only be performed while you’re logged on as an administrative user. In my examples, I’ll always be logged in as Administrator.


To install IPv6, start a command prompt session and type the following:
Ipv6 install

You’ll be greeted with a very simple message: “Installing…,” followed by “Succeeded.”


Once IPv6 is installed, make sure that the stack is actually up and operational with the command below, which will give you a list of the IPv6 interfaces present on your system:
Ipv6 if

Windows’ response to this command is quite lengthy, as shown in Table A.

Table A

C:\Documents and Settings\Administrator>ipv6 if
Interface 4: Ethernet: Local Area Connection
uses Neighbor Discovery
uses Router Discovery
link-layer address: 00-50-56-40-4c-ee
preferred link-local fe80::250:56ff:fe40:4cee, life infinite
multicast interface-local ff01::1, 1 refs, not reportable
multicast link-local ff02::1, 1 refs, not reportable
multicast link-local ff02::1:ff40:4cee, 1 refs, last reporter
link MTU 1500 (true link MTU 1500)
current hop limit 128
reachable time 21000ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 1
Interface 3: 6to4 Tunneling Pseudo-Interface
does not use Neighbor Discovery
does not use Router Discovery
link MTU 1280 (true link MTU 65515)
current hop limit 128
reachable time 16500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 0
Interface 2: Automatic Tunneling Pseudo-Interface
does not use Neighbor Discovery
does not use Router Discovery
router link-layer address:
EUI-64 embedded IPv4 address:
preferred link-local fe80::5efe:, life infinite
link MTU 1280 (true link MTU 65515)
current hop limit 128
reachable time 27500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 0
Interface 1: Loopback Pseudo-Interface
does not use Neighbor Discovery
does not use Router Discovery
link-layer address:
preferred link-local ::1, life infinite
preferred link-local fe80::1, life infinite
link MTU 1500 (true link MTU 4294967295)
current hop limit 128
reachable time 35500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 0

The IPv6 interface list

As you can see, this is a very different list of interfaces from those you get when you work with IPv4. For this example, I have a total of four IPv6 interfaces present in my Windows XP test system (Table B). The first three interfaces should be the same in most of the systems that you use. Interfaces four and up vary from system to system, depending on the hardware in use.

Table B

Interface number Name Description
1 Loopback Pseudo-Interface If you have used the IPv4 address to test network connectivity, you already know what this interface is used for. This interface provides an IPv6 loopback interface with the address ::1 or fe80::1
2 Automatic Tunneling Pseudo-Interface As its name implies, this is an interface used for automatic tunneling.
3 6to4 Tunneling Pseudo-Interface This interface provides an IPv6 to IPv4 tunnel.
4 Network adapters Interfaces four and up are created on the fly and are dependent on the hardware that exists in the workstation.

Windows XP IPv6 interface explanation

As a second step in making sure that your Windows XP machine’s IPv6 stack is operational, you can use the ping command, aptly named ping6 for IPv6. To ping the loopback interface in IPv4, you used the command ping because that was the address of the loopback interface on your machine. For IPv6, you can use either of the following commands; the results are shown in Table C.

ping6 ::1
ping6 fe80::1

Table C
C:\Documents and Settings\Administrator>ping6 ::1

Pinging ::1
from ::1 with 32 bytes of data:

Reply from ::1: bytes=32 time=4ms
Reply from ::1: bytes=32 time<1ms bytes="32" bytes="32">

Ping statistics for ::1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 4ms, Average = 1ms

Statistics using IPv6 to ping the loopback interface

Using the IPv6 commands

The Windows XP IPv6 command provides significant functionality for installing and using IPv6 in XP. In addition to this command, XP provides ping6 and tracert6, which perform the same functions as their IPv4 counterparts. Also, XP’s telnet and FTP clients work with IPv6 addresses.

Add or delete an IPv6 Address:
  • From a windows command line invoke the netsh tool by typing “netsh” and then pressing the enter key.
  • Next change the context of netsh to interface by typing “interface” and press enter.
  • Change the context of the interface to ipv6 mode by typing “ipv6” and pressing enter.
  • The command to add an address has the form of “add address [interface=] [address=]
a. Example: add address interface="Local Area Connection 2" 2001:1945:feed:deef::1

Deletion can be handled in the same manner by using keyword delete instead of keyword add.

IPv6 Home LAN Topology Assumptions

This article assumes that the vast majority of home network topologies have (or will have in the near future) the following properties:

  • A single home router
  • One subnet per household
  • IPv4 and/or IPv6-capable computers and devices
  • The home router serving as the network security boundary.

Figure 1 shows a network reference topology of a home network, which consists of a single subnet, four computers, and a Voice over IP (VoIP) phone. As a growing trend, home networks now consist of multiple wired and wireless segments. Figure 1 also shows a second wireless router to illustrate a common case of wireless expansion in the home?most new wireless access points (APs) come with integrated router functionality whether the home user needs it or not. Further discussion about the differences between routers and wireless APs can be found in the following section.

Figure 1 : A Single Home Router

In Figure 1, Home Router A implements network address translator (NAT) functionality for IPv4 traffic and router functionality for IPv6 traffic. The home LAN is a leaf network of the IPv6 Internet. Physical network configuration may be more complex, involving Ethernet switches, wireless APs, VoIP adapters, and other connectivity solutions.

A "pure" home router is a device with two Ethernet ports: a wide area network (WAN) port connected to the ISP and a local area network (LAN) port for the home network. However, often home routers are also integrated with other functionalities such as being a broadband modem (digital subscriber line [DSL] or cable), multi-port LAN switch, wireless AP, etc. Figure 2 illustrates the conceptual breakdown of this integration trend. Note that such integration does not alter the core router functionality.

Figure 2: Router integration with other devices

One Subnet per Household

The underlying assumption in this article is that homes consist of a single subnet. From a home network addressing perspective, multi-subnet configurations and intra-home routing are unwarranted. Exceptions to the single subnet design might include:

  • Mistaken double NATs. This commonly occurs when an integrated wireless router (instead of a bridged wireless AP) is added to the home network.
  • Layered security barriers, or perimeter networks (also known as DMZs). For example, parents may want to separate confidential or sensitive computers away from their children's Internet-facing gaming computers.

In a single-subnet home network, all wired or wireless segments must be bridged transparently. When an integrated router is added to this existing network (for wireless or Ethernet switching), the integrated device must either:

  • Turn off its own router functionality and only operate as a wireless AP or bridge, or
  • Provide multiple LAN ports and clearly instruct users to connect all segment cables to LAN ports only and to avoid any use of the WAN port (see Figure 3).

Microsoft further recommends including double NAT detection functionality in the home router. When an integrated router obtains a private IPv4 address for its WAN port through the Dynamic Host Configuration Protocol (DHCP), it is most likely due to a double NAT configuration. In contrast, a private IPv4 address obtained through Point-to-Point Protocol over Ethernet (PPPoE), Layer Two Tunneling Protocol (L2TP), or similar WAN/ISP mechanisms are most likely due to an ISP service that is limited to private IPv4 addresses, and is not necessarily an indication of misconfiguration. This is not an entirely accurate technique for detecting double NATs. For example, a DHCP server may be purposefully configured to hand out private IPv4 addresses. Microsoft strongly recommends that customers be warned about the potential network misconfiguration and provided guidelines for fixing the problem.

Figure 3: Router functionality bypass (LAN switching)

When to expect the full version

Current IPv6 functionality is still in the dark ages with its command-line-only interface. Microsoft is slated to release Windows XP Service Pack 1 on August 14, 2002. One of the significant changes will be in the area of IPv6. With XP SP1, Microsoft will release a fully supported, fully GUI-integrated version of IPv6. With this much backing from Microsoft, you can be sure IPv6 will slowly begin to supplant IPv4 as organizations acquire hardware and software that can support it.
Read Rest of Entry

JavaFX 1.2 Released @ JavaOne Conference


At the JavaOne Conference Sun Microsystems has announced the release of version 1.2 of its rich internet application framework and language – JavaFX. Numerous features have been added, including skinnable UI controls, better layout, local data storage, RSS/Atom feed support, chart support, improved dialogues and remodelled event processing. Also of note is that JavaFX 1.2 now officially runs on Linux and Solaris. I’m happy to see many more UI controls included in this latest release of JavaFX, most notably ScrollBar, which is so painful to re-implement yourself.
JavaFX is a rich client platform for building cross-device applications and content. In the following I will demonstrate JavaFX script, the programming language for JavaFX there I use JavaFX as a short form for JavaFX script.

JavaFX Script is a new programming language from Sun for creating rich media and interactive content which is tightly integrated with Java, as the name indicates. With JavaFX it should be easy to develop Rich Internet Applications (RIA). JavaFX is a compiled language the result of the compilation is Java byte code.
It is also a statically typed language which means that the data types of each variable, return value, etc. is known at compile time. JavaFX is also a declarative language, e.g. you describe what the application should do, rather then specifying the control flow of the application yourself. The language also provides data binding to connect UI elements directly with model elements.

I took a look at JavaFX 1.0 not long after it was released in this article. Two years have passed, and JavaFX has reached version 1.2, just released with significant changes to the language and the API. Applications created under JavaFX 1.1 must be recompiled and may need minor alterations.
The basic nature of JavaFX continues to be creation of GUIs (Graphic User Interfaces) in a declarative language format that defines interface components from Java's well developed "Swing" interface toolkit plus a variety of display effects including animation, vector graphics, audio tracks and video, all running in a Java JVM. Many of the new features in 1.2 are related to flashy display effects. There are also significant additions which will be useful in accessing Web services.
The JavaFX language creates computation functions in a style familiar to Java programmers, with classes extending base classes and implementing interfaces. Version 1.2 brings a new feature which may surprise you: the "mix-in" class declaration modifier. A mix-in class cannot be instantiated directly, rather like the java "abstract" class, but a custom class can extend any number of mix-in classes. Java has insisted on single inheritance in the class hierarchy. If you want multiple inheritance, here is your chance to try it. I wonder if mix-in may make it back to standard Java!

(a JavaFX sample application)

Top 10 New Features
  1. Stage infrastructure enhancements, including Screen class and Alerts.
  2. Direct referencing of Java arrays.
  3. Mixin inheritance and the elimination of multiple inheritance.
  4. The BoxBlur effect — nearly 20 effects are available now!
  5. Improved asynchronous processing model, extended by API classes that require it — for example, HttpRequest.
  6. The Math and Properties classes.
  7. New layout classes and improved support for creating custom layouts.
  8. More skinnable or CSS-styled controls, and improved support for creating custom UI controls — for example, the Behavior class.
  9. RSS and Atom feed support.
  10. Charting support, including Area, Bar, Bubble, Line, Pie, Scatter, and X/Y.

(the JavaFX install screen)

Here’s a look at some of the new additions I found :
  • No addition in javafx.animation package
  • Same goes for javafx.animation.transition package
  • In javafx.async package old classes are rem,oved and 3 new classes namely, JavaTaskBase to provide running classes in thread outside EDT, RunnableFuture(the name explains it all), and Task class which a way of starting, stopping and tracking code that does not run on the JavaFX event dispatch thread(straight from the docs).
  • a new package which has 2 classes Converter(incidentally it have fromString() and toString() method) and a Pair class which defines a simple name value variables
  • This is the big one, there is a whole package(and 3 of them ) for managing feed(RSS and Atom) defines the base classes for pacakges and packages and they provide both RSS and atom functionality
  • No surprises in and package (this is not an in-depth view)
  • a new package which provides support for proleptic Gregorian calendar (the pure Gregorian calendar with no Julian-Gregorian transition).
  • A new SwingUtils class in javafx.ext.swing package which have a new function toFXImage() to convert bufferedimage to fx image
  • A new FXDNode class which is a revamped UIStub class which has backgroundloading support
  • Many new classes in javafx.geometry package HPos, VPos(for positioning and alignment) and Insets class and BOunds and BoundingBox class
  • A new class URLConverter in package which support string to URL conversion among other functionality
  • Another Big one for me in terms for funtionality a local package containing Resource and Storage classes for local persistence
  • nothing new in javafx.reflect and javafx.lang
  • a new class javafx.scene.Parent
  • 3 new javafx.scene.chart, javafx.scene.chart, for data needs, this is something which is much requested functionality for every RIA platform
  • A whole new set of controls
  1. Behavior
  2. Button
  3. ButtonBase
  4. CheckBox
  5. Control
  6. Hyperlink
  7. Keystroke
  8. Label
  9. Labeled
  10. ListView
  11. OverrunStyle
  12. ProgressBar
  13. ProgressIndicator
  14. RadioButton
  15. ScrollBar
  16. Skin
  17. Slider
  18. TextBox
  19. TextInputControl
  20. ToggleButton
  21. ToggleGroup

  • A new BoxBlur effect in javafx.scene.effect
  • A revamped javafx.scene.input package with 4 additional class , not much in terms of functionalityA new Panel class in javafx.scene.layout to define new level of view, with additional layouts namely , Stack, Tile,Flow
  • nothing new in next few packages
  • An Alert class to show alerts in javafx.stage and a Screen class for accessing screen properties
  • 2 new classes in javafx.util package Math(A straight funcitionality import for java.lang.Math) nad Properties (utility class for storing name value pairs)

I wasn’t expecting the controls to have a platform neutral look, though I think this was a good idea (similar to how Adobe Flex controls have an platform agnostic look).
Finally some real JavaFX components. No wrapped Swing components, but full JavaFX components. The most important components are now included, such as a scrollbar, sliders, progress bars and a list component. Still basic (no fancy datagrid for example), but enough to be used seriously. All of the components are supporting CSS, which enables you to easily change the look & feel of your application just using standard components.
Besides all the standard components, some charting components are available. Again, all fully supporting CSS, and the API looks nice you use.
The lack of layout managers was another important problem in the previous release. You were basically left calculating sizes and positions manually which is not very pleasant. First of all the way component sizes are calculated by a container is improved. Next they created some standard layout components. The containers are still simple (compared to the Swing layout managers), but they do the basic magic that's required for most applications. I was also happy to hear that the HBox and VBox are now working properly, which have cost me a few too much hours working around in the previous release.
JavaFX 1.1 provided meager support for node layout on the screen, with Group and Container classes that required the programmer to position each node explicitly. For automatic layout, there were only two classes, HBox and VBox, which laid out the scene graph nodes in horizontal rows and vertical columns, respectively. However, even these two layout classes had limitations; the HBox class always aligned its nodes across the top, whereas VBox aligned all its nodes at left. These limitations have been fixed in JavaFX 1.2. In addition, there are four new layout classes: Flow, Stack, Tile, and ClipView.
The following list summarizes the classes for node layout:
  • HBox lays out its contents in a single horizontal row (see Figure 1).
ack, Tile, and ClipView.
The following list summarizes the classes for node layout:
  • HBox lays out its contents in a single horizontal row (see Figure 1).
  • VBox lays out its contents in a single vertical column (see Figure 2).
  • Flow lays out its contents in either a horizontal or vertical flow, wrapping at its geometric boundaries (see Figure 3).
  • Stack lays out its contents in a back-to-front stack (see Figure 4).
  • Tile lays out its contents in uniformly sized spaces or tiles (see Figure 5).
  • ClipView provides a clipped view of its contents, with optional panning (see Figure 6). The underlying node is clipped to the viewable region. If panning is specified, by dragging the mouse within the ClipView the underlying node is moved around the viewable region

Inherent in the new layout scheme is the addition of new instance variables to govern how a node should be laid out in the available layout space. Each node now has an instance variable called layoutInfo. This variable may contain an instance of the LayoutInfo class that defines the minimum, preferred, and maximum sizes of the node, along with variables for telling the layout manager how the node should be aligned vertically and horizontally within its allocated space. Some layout managers will try to resize the node to fill the allocated space if the node is resizable; others may not. If the resulting node size is smaller than the allocated space, the node will be positioned based on its horizontal or vertical position variables.
If the node's layoutInfo variable is absent, you can define defaults for the positioning of the node on the layout container itself. To illustrate this concept, let's examine the horizontal box example. The HBox class defines an instance variable, nodeVPos, that contains the default vertical position for each of its nodes. By default, this variable is set to javafx.geometry.VPos.TOP, which is the same positioning that the JavaFX 1.1 system forced. However, in JavaFX 1.2, you can set the nodeVPos to TOP (shown in Figure 7), CENTER (Figure 8), or BOTTOM (Figure 9). Notice that the last two rectangles in the node change relative positions in Figures 7-9, because they're shorter than the first two rectangles in the node.
Now, suppose you want the third rectangle (the green one) in the node to always be centered. You can arrange for this positioning by assigning a LayoutInfo instance to the node's layoutInfo variable on the third rectangle. Then set the vertical position variable, vpos, within LayoutInfo. For example (note the relevant coding in bold):
Rectangle {
width: 75
height: 75
fill: Color.GREEN
stroke: Color.BLACK
layoutInfo: LayoutInfo {
vpos: VPos.CENTER
The results are shown in Figures 10-12. Regardless of the alignment of the other rectangles—top (Figure 10), center (Figure 11), or bottom (Figure 12)—the third (green) rectangle now stays centered.

Getting Started With JavaFX Technology
My first tutorial was the "Getting Started With JavaFX Technology" which can be found here. Its more than just a "Hello World" introduction which is kinda refreshing sometimes although I'm famous for doing "Hello World" samples. The tutorial does a good job of showing off some of the power JavaFX holds.

I ran into no problems with the code or tutorial and had it coded and running in about 10 minutes. My only gripe is the the placement of the braces (perhaps this can be changed but I couldn't find a way).
Overall though I enjoyed the experience of going through this tutorial (and others) and I liked the ability to drag off items from the palette and drop them into the code. It greatly sped up my time creating the tutorial projects and it of course ensured I had the syntax correct as well as the capitalization.

For developers wanting to simply go for the code samples in working projects rather than working through the numerous JavaFX tutorials there is the option to go into Netbeans and select: File -> New Project and then navigate to the Samples folder and then into the JavaFX folder. Here you'll find a good number of samples that go from beginner to more advanced levels.

Also keep in mind there are several good screencasts if you prefer that method to learn new technologies. Overall I'm impressed with the amount and quality of tutorials/documentation for JavaFX, its one of the better documented developer technologies out there with no lack of tutorials.

(What you see while waiting for JavaFX to load)
Now here's the catch for developers that might already know Java and suddenly are working their way through say the "Learning the JavaFX Script Programming Language - Tutorial Overview". Did you catch that? JavaFX S-C-R-I-P-T. You don't use the Java language with JavaFX, you use JavaFX Script. If your familiar with Java, JavaScript or ActionScript I think you will be able to pickup Java FX Script pretty fast. Also, JavaFX script is compiled, not interpreted and of course it runs on the JVM compiled into Java bytecode just like Java, Groovy, and Scala. Your javaFX source file extensions end with ".jx" rather than ".java".
JavaFX's niche might just end up being putting RIA front ends on existing or new Java back end systems. I don't know of course, but it seems like that is a good fit for it and its UI capabilities.
If I've piqued your interest in JavaFX then stay tuned to this blog because I will be putting up some more articles/tutorials on it in the future. I definitely had a much more pleasant experience with JavaFX than I was expecting, that said though I have to wonder where JavaFX will find it's market? Its coming late to the market compared to Flash and even Silverlight but then again it seems to have a thriving community and above all some excellent documentation and of course free tools. I'll be curious to see how well JavaFX is adopted not just by developers but end users and companies as well.

What I'm Missing in JavaFX 1.2

OK, tons of new things in JavaFX 1.2, but of course we developers always want more! I'm not asking for major stuff right now, as I understand that the effort behind JavaFX is huge. But there's really a small thing, that I realize is missing right now: support for logging.
Of course I'm not talking of the desktop profile: you can use anything you want, from java.util.logging, to log4j or SLF4J. I'm talking of the mobile profile, where we don't have anything.
And, of course, you can write your own, and would be pretty simple. But look at this:
1.def x = 3;
2.logger.fine("x = {x}");
The problem is about performance. Even though the "fine" logging level is disabled, the JavaFX compiler will always first build the string parameter, converting x to a string, putting into the template according to the braces placeholder and then call the method, where it will be ignored. In contrast, SLF4J approach is smarter since when you write: x = 3;
2.logger.debug("x = {}", x);
You don't have any string manipulation before calling the method; instead, it is SFL4J code that inspects the string template and replaces the braces placeholder. Of course, only if the debug level is enabled.
Clearly, this is really important in the mobile profile, where every single piece of performance is needed; and polluting the code with "if (debugLevel) ..." is even worse than in Java, since JavaFX is so concise.

Downloading the JavaFX release

As with previous releases of JavaFX, you can get a combined download of the NetBeans 6.5.1 IDE plus the JavaFX release. You can also download just the plug-in if you already have the latest NetBeans installed. Although one Sun Web page says Java JDK 5 is sufficient, this page says JDK 6 update 13 is the minimum for developers and update 14 is recommended. In addition to Windows (XP or Vista), Mac OS X is supported while Solaris and Linux versions are still in beta release.
Read Rest of Entry

About Tech Guru

TechGuru is a leading technology site, dedicated to software, gadgets, tech news and reviews. The site offers articles, tutorials and how-to guides on all things related to personal technology, desktop applications, productive online tools, social networking sites, windows, office etc.

Founded in 2007, TechGuru features audience who have the passion for Software and Technology and seeks to promote awareness about the internet and computing.

Get News on the Go

Mobile TechQuarkTech Guru is a mobile-friendly website. Simply bookmark in your mobile browser for free access anytime, anywhere.

Contact Us / Send a Tip

Use Contact Form, if you have Comments, Problems, Suggestions, Praise, Complains about the site. Your suggestions and articles are valuable to us.

Copyright © 2007- Tech Guru - All rights reserved. No part of this blog be republished or written without prior permission of the author

Privacy Policy | Disclaimer | Contact | Advertise With Us

Designed and Maintained by Shubham Gupta