<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gerbrand on ICT &#187; gerbrand</title>
	<atom:link href="http://www.gerbrand-ict.nl/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gerbrand-ict.nl</link>
	<description>Weblog on JEE and software-engineering</description>
	<lastBuildDate>Tue, 18 Oct 2011 14:10:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Money waste at the government</title>
		<link>http://www.gerbrand-ict.nl/2011/10/money-waste-at-the-government/</link>
		<comments>http://www.gerbrand-ict.nl/2011/10/money-waste-at-the-government/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 14:10:32 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=579</guid>
		<description><![CDATA[The (Dutch) website Computable has a interesting article on how awful it is the government wastes enormous amounts of money on it-projects. With that regard a report by System Error on the UK government who are equally awful is still a good read: Fixing the flaws in government IT]]></description>
			<content:encoded><![CDATA[<p>The (Dutch) website Computable has a <a href="http://www.computable.nl/artikel/ict_topics/overheid/4230545/1277202/rijk-verspeelt-doelbewust-5-miljard-euro-aan-ict.html">interesting article</a> on how awful it is the government wastes enormous amounts of money on it-projects. With that regard a report by System Error on the UK government who are equally awful is still a good read: <a href="http://www.instituteforgovernment.org.uk/publications/23/">Fixing the flaws in government IT</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/10/money-waste-at-the-government/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Databases on SSD</title>
		<link>http://www.gerbrand-ict.nl/2011/10/databases-on-ssd/</link>
		<comments>http://www.gerbrand-ict.nl/2011/10/databases-on-ssd/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 18:34:47 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=574</guid>
		<description><![CDATA[SSD disk are becoming increasingly popular. As they read faster, you might consider running databases such as Oracle DBMS, MySQL or non-sql databases. However, interestingly, originally databases are optimized for tradition hard drives with spinning disks: most importantly: data is read in small chunks, and sequential reads are faster than random reads. I can&#8217;t remember [...]]]></description>
			<content:encoded><![CDATA[<p>SSD disk are becoming increasingly popular. As they read faster, you might consider running databases such as Oracle DBMS, MySQL or non-sql databases. However, interestingly, originally databases are optimized for tradition hard drives with spinning disks: most importantly: data is read in small chunks, and sequential reads are faster than random reads. I can&#8217;t remember everything anymore, but I do remember doing calculations on various reading/writing algorithms during my university days.<br />
For SSD&#8217;s this model doesn&#8217;t hold anymore: this blog posting shortly explains why: <a href="http://www.acunu.com/blogs/irit-katriel/theoretical-model-writes-ssds/">Why theory fails for SSDs</a> There&#8217;s no difference, if I understand correctly between random reads and sequential reads. However writes are much slower. Also SSD&#8217;s have to calculate the physical address for every different read or write access. Meaning if you read a different part of the disk continuously, this will be slower then reading in the same pattern again and again.</p>
<p>Of course the theory doesn&#8217;t fail, but it just doesn&#8217;t apply to SSD <img src='http://www.gerbrand-ict.nl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/10/databases-on-ssd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diginotar</title>
		<link>http://www.gerbrand-ict.nl/2011/09/diginotar/</link>
		<comments>http://www.gerbrand-ict.nl/2011/09/diginotar/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 21:58:35 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Various]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=572</guid>
		<description><![CDATA[I just updated my (virtual) server, on which this weblog is running too. The update log was rather interesting this time: Setting up tzdata-java (2011j-0ubuntu0.11.04) ... Setting up ca-certificates (20090814+nmu2ubuntu0.1) ... Updating certificates in /etc/ssl/certs... WARNING: Skipping duplicate certificate brasil.gov.br.pem 0 added, 1 removed; done. Running hooks in /etc/ca-certificates/update.d.... updating keystore /etc/ssl/certs/java/cacerts... does not exist: [...]]]></description>
			<content:encoded><![CDATA[<p>I just updated my (virtual) server, on which this weblog is running too. The update log was rather interesting this time:</p>
<pre>Setting up tzdata-java (2011j-0ubuntu0.11.04) ...
Setting up ca-certificates (20090814+nmu2ubuntu0.1) ...
Updating certificates in /etc/ssl/certs... WARNING: Skipping duplicate certificate brasil.gov.br.pem
0 added, 1 removed; done.
Running hooks in /etc/ca-certificates/update.d....
updating keystore /etc/ssl/certs/java/cacerts...
  does not exist: /etc/ssl/certs/DigiNotar_Root_CA.pem
done.</pre>
<p>For those living outside the Netherlands: DigiNotar was a issuer of ssl and pki certificates, similor to Verisign. Their main customer was the Dutch government. Turned out DigiNotar was hacked by Iranian hackers, but not only that, the hack happened a few months ago but they decided not to inform their clients. In the mean time, Dutch governmental communication wasn&#8217;t as secure as you might hope.<br />
Of course the Dutch government did perform audits on DigiNotar &#8211; sort of, they outsourced the audit to the great company <a href="http://www.pwc.com/">PwC</a>, who verified that all of their procedures were correctly written down in Word documents with proper headings and jargon that pleases business consultants (quote from the <a href="http://www.diginotar.nl/OverDigiNotar/Certificeringen/tabid/1259/Default.aspx">DigiNotar</a> website: &#8216;<em><a href="http://www.diginotar.nl/LinkClick.aspx?fileticket=ARFojxrOqKY%3d&amp;tabid=1259" target="_blank">Certificering ETSI</a> door PricewaterhouseCoopers  (november 2010 &#8211; november 2013) </em>&#8216;) Of course they didn&#8217;t look at the <a href="http://www.computable.nl/artikel/ict_topics/overheid/4140101/1277202/om-stelt-onderzoek-in-naar-diginotar.html">actual software and IT security</a> &#8211; why would anyone care about such technical details?</p>
<p>For more information, I found the following <a href="http://uscyberlabs.com/blog/2011/09/12/timeline-diginotar-ssl-hack/">timeline</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/09/diginotar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Serializable Exception in Java</title>
		<link>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/</link>
		<comments>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 20:07:21 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=563</guid>
		<description><![CDATA[When  you use Wicket as webfrontend framework to build your application, sooner or later you&#8217;ll encounter the NotSerializableException. This is because Wicket will want to serialize any state you have into a HTTPSession. In Wicket, the first three pages are usually in memory too, so you could ignore the exception for a while, but of [...]]]></description>
			<content:encoded><![CDATA[<p>When  you use Wicket as webfrontend framework to build your application, sooner or later you&#8217;ll encounter the NotSerializableException. This is because Wicket will want to serialize any state you have into a HTTPSession. In Wicket, the first three pages are usually in memory too, so you could ignore the exception for a while, but of course this will fail immediately in case use want to use your webapplication in a clustered configuration. Not to mention you should never ignore Exceptions anyway.</p>
<p>The problem in solving such a Serializable exception is finding the field that is not Serializable. The stacktrace of java doesn&#8217;t help much. Fortunatelly, after some searching I&#8217;ve found the <a href="http://blog.crazybob.org/2007/02/debugging-serialization.html">solution, in the comment of blog posting</a>: add the option <em>-Dsun.io.serialization.extendedDebugInfo=true</em> to the JVM startup parameters.<br />
Now the stacktrace gives you the exact fieldname or expression that is causing the problems, as you can see in the example below:</p>
<pre>2011-07-23 21:44:50,362 ERROR [http-8080-1] [] org.apache.wicket.util.lang.Objects - Error serializing object class nl.gerbrandict.forum.AdminPage [object=[Page class = nl.gerbrandict.forum.AdminPage, id = 2, version = 0]]
java.io.NotSerializableException: org.springframework.beans.factory.support.DefaultListableBeanFactory
- field (class "org.springframework.orm.hibernate3.HibernateTransactionManager", name: "beanFactory", type: "interface org.springframework.beans.factory.BeanFactory")
- object (class "org.springframework.orm.hibernate3.HibernateTransactionManager", org.springframework.orm.hibernate3.HibernateTransactionManager@10fd8ce3)
- custom writeObject data (class "org.springframework.transaction.interceptor.TransactionInterceptor")
- object (class "org.springframework.transaction.interceptor.TransactionInterceptor", org.springframework.transaction.interceptor.TransactionInterceptor@2c96cb51)
- field (class "org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor", name: "transactionInterceptor", type: "class org.springframework.transaction.interceptor.TransactionInterceptor")
..
        - field (class "nl.gerbrandict.forum.AdminModel", name: "person", type: "class nl.gerbrandict.forum.Person")</pre>
<p>(note: not publishing the entire stack trace and using some sample dummy field/classnames).<br />
Although I haven&#8217;t tried, enabling this option in production is most likely a bad idea, because Serialization is already a pretty inefficient process without any debugging information enabled. In my case, I was using a <a href="http://wicket.apache.org/apidocs/1.4/org/apache/wicket/model/PropertyModel.html">PropertyModel</a> somewhere, using non model as target object.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenID from my website</title>
		<link>http://www.gerbrand-ict.nl/2011/06/openid-from-my-website/</link>
		<comments>http://www.gerbrand-ict.nl/2011/06/openid-from-my-website/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 08:07:03 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=558</guid>
		<description><![CDATA[A lot of websites now provide a way to authenticate yourself via OpenID. That way, you don&#8217;t have to remember a separate username and password to login to such a website, while still being secure. The only challenge in using openid is remembering your openid URL, because there are quite a few possible openid providers. [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of websites now provide a way to authenticate yourself via <a href="http://openid.net/">OpenID</a>. That way, you don&#8217;t have to remember a separate username and password to login to such a website, while still being secure.<br />
The only challenge in using openid is remembering your openid URL, because there are quite a few possible openid providers. I currently can choose from (amongst others) <a href="http://code.google.com/intl/nl/apis/accounts/docs/OpenID.html">Google</a>, <a href="http://www.yahoo.com">Yahoo</a>, <a href="http://mijnopenid.nl/">mijnopenid.nl</a>, <a href="http://www.gerbrand-ict.nl/2009/04/hyves-now-also-openid-provider/">hyves.nl</a> and quite a few others. Instead of remembering the username/password you have to remember which openid provider you&#8217;ve used for what account &#8211; which I think is the reason other authentication mechanism as <a href="http://developers.facebook.com/blog/post/108/">facebook&#8217;s connect a</a>re becoming more popular. I&#8217;ll write about that later, in this page I just want to explain how I made my homepage, http://www.gerbrand-ict.nl an openid provider.<br />
Very simple:</p>
<ul>
<li>My homepage is running <a href="http://wordpress.org/">WordPress</a>, a popular open source weblog.</li>
<li>There are a lot of plugins for WordPress, of which one is the openid plugin. By going to the administration screen and then to the section plugins, you can install the openid plugin easily by entering openid in the search box.</li>
<li>After installation, setup a default account.</li>
<li>Now I can authenticate myself to any site that uses openid, by just entering http://www.gerbrand-ict.nl !</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/06/openid-from-my-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow right click on Windows</title>
		<link>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/</link>
		<comments>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 07:12:44 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=544</guid>
		<description><![CDATA[Besides by Mac laptop I have a Windows desktop at home. Windows 7 is all in all quite a nice OS. However, after using Windows for a while, Windows seems to start degrading. Of course one solution is to reinstall Windows, but that&#8217;s not exactly a clean solution. I wanted to know the source why [...]]]></description>
			<content:encoded><![CDATA[<p>Besides by Mac laptop I have a Windows desktop at home. Windows 7 is all in all quite a nice OS. However, after using Windows for a while, Windows seems to start degrading. Of course one solution is to reinstall Windows, but that&#8217;s not exactly a clean solution. I wanted to know the source why Windows seems so slow. Better investigation seems the only problem is the File Explorer, especially when using the context menu/right clicking on a file.<br />
This led me to think some third shell extension for the explorer might be the cause.<br />
After some google&#8217;ing I found this nice article: <a href="http://windowsxp.mvps.org/slowrightclick.htm">slow right click</a>. In the article a tool is listed: <a href="http://www.nirsoft.net/utils/shexview.html">ShellExView</a>. Using this tool you can disable any shell extension that&#8217;s hooked in the explorer. I disabled all software not coming from Microsoft, and my Windows starting working smoothly again! Of course any overlay icons from for example <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> don&#8217;t work anymore, but that&#8217;s the whole idea of  these shell extensions. Now I just have to shell extensions one by one to find out what&#8217;s the actual cause of the slowness, but that&#8217;s better then reinstalling windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wicket Exception when using wrong order in addComponent</title>
		<link>http://www.gerbrand-ict.nl/2011/02/wicket-exception-when-using-wrong-order-in-addcomponent/</link>
		<comments>http://www.gerbrand-ict.nl/2011/02/wicket-exception-when-using-wrong-order-in-addcomponent/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 16:19:01 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=467</guid>
		<description><![CDATA[Today I working on a application that uses the Wicket framework. I was plagued with the following Exception: WicketMessage: org.apache.wicket.WicketRuntimeException: component myForm:myTable:editor not found on page nl.gerbrand-ict.gui.HomePage[id = 4], listener interface = [RequestListenerInterface name=IActivePageBehaviorListener, method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] Root cause: ... In place of the &#8230; there was a full stacktrace, which information that&#8217;s not [...]]]></description>
			<content:encoded><![CDATA[<p>Today I working on a application that uses the <a href="http://wicket.apache.org/">Wicket framework</a>. I was plagued with the following Exception:</p>
<pre>WicketMessage: org.apache.wicket.WicketRuntimeException: component myForm:myTable:editor not found on page nl.gerbrand-ict.gui.HomePage[id = 4], listener interface = [RequestListenerInterface name=IActivePageBehaviorListener, method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]

Root cause:

...</pre>
<p>In place of the &#8230; there was a full stacktrace, which information that&#8217;s not not relevant for this posting.</p>
<p>Turned out the solution was pretty simple, but the cause isn&#8217;t that easy to find and is quite a good example how some design decisions in Wicket aren&#8217;t considered as clean.</p>
<p><span id="more-467"></span></p>
<p>I&#8217;m using Ajax-features of Wicket extensively.<br />
I was creating a table, which contained editable fields (AjaxEdiableLabel). This would allow the user to click on a field in the table, to edit the content.<br />
Somewhere I had the following code:</p>
<pre>target.addComponent(item);
if .. needed .. {
target.addComponent(myTable.this);
... make item invisible
}
super.onSubmit(target);</pre>
<p>The super.onSubmit belonged, in this case, to AjaxEditableLabel. I found out the super.onSubmit() would call <em>target.addComponent(this);</em> to update the editable label itself. As you could see, in my code I&#8217;m telling wicket to update the component that&#8217;s the parent of the editable label also.</p>
<p>In this case, the code caused wicket to first update the parent-panel, which in this case makes the child-component invisible. Then the wicket tries to redraw the child-component, which is then invisible. That will trigger the above error.<br />
Unfortunately, solving this error isn&#8217;t quite easy in all cases. Especially when you&#8217;d use a AjaxSelfUpdatingBehaviour you can have little control on the redrawing order.</p>
<p>Fortunately I found <a href="http://apache-wicket.1842946.n4.nabble.com/WicketRuntimeException-component-not-found-on-page-td3055902.html">a good tip on the wicket mailing list</a> to get rid of the exception. Add the following code your Wicketapplication class (the class that extends org.apache.wicket.protocol.http.WebApplication):</p>
<pre>    @Override
    protected IRequestCycleProcessor newRequestCycleProcessor() {
    	//Tip from http://apache-wicket.1842946.n4.nabble.com/WicketRuntimeException-component-not-found-on-page-td3055902.html
    	return new WebRequestCycleProcessor(){
    		public IRequestTarget resolve(final RequestCycle requestCycle,
    				final RequestParameters requestParameters) {
    	        try {
    	            return super.resolve(requestCycle, requestParameters);
    	        } catch (InvalidUrlException e) {
    	            if (requestCycle.getRequest().getURL().contains("LinkListener") || requestCycle.getRequest().getURL().contains("BehaviorListener")) {
    	            	log.warn("Couldn't process event, is ignored because of: "+e.getMessage());
                        //ignore exception
    	                return new PageRequestTarget(requestCycle.getRequest().getPage());
    	            } else {
                        //normal operation
    	            	throw e;
    	            }
    	        }
    	    }

    	};
    }</pre>
<p>The above code will ignore all of the exception that occur when wicket tries to do something with an component that&#8217;s no longer available because of an ajax-update. Of course this fix isn&#8217;t very nice, hopefully later versions of Wicket fix the error all-together when Ajax-support is improved. For now, this seems the best solution.</p>
<p><script type="text/javascript">// <![CDATA[
var bol_pml={"id":"bol_1298467075904","secure":false,"baseUrl":"partnerprogramma.bol.com","urlPrefix":"http://aai.bol.com/aai","productId":"productid=1001004006005258&#038;","site_id":"2396","target":false,"rating":true,"price":true,"link_name":"Gerbrand-ICT","link_subid":"","image_size":true,"image_position":"left","width":"250","cols":"1","background_color":"#FFFFFF","text_color":"#CB0100","link_color":"#0000FF","border_color":"#D2D2D2","letter_type":"verdana","letter_size":"11"};
// ]]&gt;</script><script id="bol_1298467075904" src="http://partnerprogramma.bol.com/partner/static/js/aai/clientProductlink.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/02/wicket-exception-when-using-wrong-order-in-addcomponent/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0</title>
		<link>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/</link>
		<comments>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 22:01:27 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=495</guid>
		<description><![CDATA[Yesterday I attended a NLJug meeting at Oracle at De Meern on JavaFX, called &#8216;JavaFX 2.0 EA&#8216;. The meeting was presented by Roger Brinkley, who&#8217;s a called &#8216;Community leader&#8217;, of Mobile and Embedded. That he was formally part of Sun wasn&#8217;t hard to see based on his clothing and style. Roger gave an overview of [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I attended a <a href="http://www.nljug.org/">NLJug </a>meeting at Oracle at De Meern on <a href="http://javafx.com/">JavaFX</a>, called &#8216;<a href="http://www.nljug.org/pages/events/content/university_20110217/">JavaFX 2.0 EA</a>&#8216;. The meeting was presented by Roger Brinkley, who&#8217;s a called &#8216;Community leader&#8217;, of Mobile and Embedded. That he was formally part of Sun wasn&#8217;t hard to see based on his clothing and style.</p>
<p>Roger gave an overview of the new JavaFX 2.0, the<a href="http://javafx.com/roadmap/"> road-map</a> and the planned features. The software seems to be developed in an agile manner: the dead line is fixed, as is policy at Oracle (not meeting a dead line means exit for the responsible executive), but the final set of features is not.<br />
The preview is available now for a limited audience, in May the first public beta will be released and in November the final will be available.</p>
<p><span id="more-495"></span>The most important news I heard:</p>
<ul>
<li>JavaFX 2.0 will be a <strong>library </strong>(jfx.jar), rather than a separate scripting language <em>JavaFX</em>. The language works in the language Java of course, but you can use the language <a href="http://www.scala-lang.org/">Scala</a>, <a href="http://jruby.org/">JRuby</a>, <a href="http://www.jython.org/">Jython</a> or other languages available on the JVM. JavaFX script is end-of-life. Fortunately, the syntax of the library calls is quite similar, and there&#8217;s a program to translate JavaFX script into equivalent Javacode. Curiously, the translator, <em>FX Translator</em>, is written in <a href="http://www.scala-lang.org/">Scala</a>.<br />
<em><strong>Update 2011-06-15</strong>: I only heard about the fx translator at the here mentioned presentation. I could find little references to the translator: a back-reference to <a href="http://forums.oracle.com/forums/thread.jspa?threadID=2232556&amp;tstart=45">this postin</a>g (sigh) and the fxtranslator mentioned shortly in this posting on <a href="http://drdobbs.com/blogs/java/229400781">DrDobbs</a>.</em><br />
<em>If you want to use the FXtranslator, you&#8217;ll have to contact Oracle for now. I guess Oracle will release the automatic translation tool in some time too.</em></li>
<li>The <strong>Swing</strong>-controls can be used from JavaFX 2.0. The &#8216;traditional Swing&#8217; is now in maintenance mode, Oracle won&#8217;t create an new features for the original Swing library. Meaning, if you want to develop Swing applications, or more generally, desktop applications in Java now, you can best get the beta or coming GA of JavaFX.</li>
<li>JavaFX 2.0 will be available on <strong>neither the Mobiles nor Televisions</strong>! Oracle has accepted (Sun&#8217;s) loss, and will only focus on the desktop for the time being.<br />
JavaFX seems practical on tablet-devices. However, since most tablet devices are enlarged mobiles (running a mobile os) ratter than flattened laptops (running a full desktop os), you can&#8217;t use JavaFX on any of those devices for the time being.</li>
<li>The JavaFX is supported on the <strong>MS-Windows </strong>platform only for the coming time, (but) it will run on Mac, Linux or other platforms unsupported. This means, you might miss the hardware acceleration when not using Windows. Mind you: Roger was using a Mac while doing his presentation and demonstration the code-samples so the MS-Windows-only support might not look as dramatic as it seems at first glance.</li>
<li>Of course JavaFX runs on the JVM 6 or higher. If all goes well, JavaFX will be part of JDK 8. Before that JavaFX can be downloaded as a plugin before from <a href="http://www.java.com">java.com</a>, which will be not to painful for users, especially if they already have some version of the Java-plugin installed.</li>
</ul>
<p>The JavaFX SDK contains a set of sample application called &#8216;Ensemble&#8217;. Roger presented a few impressive programs, and showed the source code. The audience, including the Oracle employee hosting the event was very tech oriented so everyone was eager to see the code of all the nice examples.</p>
<p>Furthermore, Roger frequently mentioned <a href="http://blogs.sun.com/javaspotlight">Podcasts</a>. I have yet to listen to them, but maybe if I have some time left. Should find a way to broadcast audio while doing the dishes.<br />
All in all a nice event. Oracle may turn JavaFX in something that might be practical and usable on a limited number of platforms, ratter then trying to take over the world (or more specifically taking on Android, Flex, Apple IOS).</p>
<p>As you might notice, I&#8217;ve got no code examples or screen-shots. I hope to get access to the beta release of JavaFX 2.0, I&#8217;m quite interested in trying out all those nifty things, and expect some nice blog postings on JavaFX soon!</p>
<p>Update 2011-06-01: The public beta of JavaFX is out! I&#8217;ve published on <a href="http://blog.xebia.com/2011/05/javafx-2-0-beta/">JavaFX on the Xebia-blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Software engineering is design all the way: code as design</title>
		<link>http://www.gerbrand-ict.nl/2011/02/articles-that-had-an-influence-on-me-code-as-design/</link>
		<comments>http://www.gerbrand-ict.nl/2011/02/articles-that-had-an-influence-on-me-code-as-design/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 21:23:31 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=483</guid>
		<description><![CDATA[Recently I came across an article I remember reading quite some years ago and having quite an influence on my thinking. A short summary in my own words. Creating software is usually viewed as a form of engineering, hence the name software engineering.  Engineering consists of designing constructs and building them. What exactly is then programming? [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I came across an article I remember reading quite some years ago and having quite an influence on my thinking.<br />
A short summary in my own words. Creating software is usually viewed as a form of engineering, hence the name software engineering.  Engineering consists of designing constructs and building them.<span id="more-483"></span> What exactly is then programming? In engineering of products like hardware, house-hold devices, bridges, or houses &#8211; <em>hard products</em>- first a design is created, then a the actual product is build. How can engineers know if they&#8217;re design is correct? They create mock-ups, use calculations and their knowledge to verify correctness of their design (nowadays usually with help of software) and show mock-ups and visualizations of design to end-users, product managers, marketing or other people involved.<br />
Finally they have the product actually build by robots or contractors. Many people, even many software developers think programming is part of the building phase. Is this correct? Programmers write code and frequently use their IDE, compiler, automatic unit tests to verify the correctness. Then, they&#8217;ll show the outcome to all parties involved. When all is good, the software is packed and installed to servers or pressed on CD-ROMS to made available to the public. When comparing to other enginering jobs as listed above, these tasks are all part of the design task, except maybe for the part of releasing/publishing (which is often not done by the software engineer but by either an automatic process or a system administrator).  So all in all software engineering, as well as programming, is <em><strong>design all the way</strong></em>.</p>
<p>See <a href="http://www.developerdotstar.com/mag/articles/reeves_design_main.html">code as design</a> for the source.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/02/articles-that-had-an-influence-on-me-code-as-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling accesskeys for javascript events</title>
		<link>http://www.gerbrand-ict.nl/2010/12/enabling-accesskeys-for-general-html-elements/</link>
		<comments>http://www.gerbrand-ict.nl/2010/12/enabling-accesskeys-for-general-html-elements/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 16:48:43 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=478</guid>
		<description><![CDATA[Using the accesskey attribute, you can enable hotkeys for various html input elements. This allows one to get the focus to an input element by using the ALT-key + &#60;CHARACTER&#62; (on Windows) or CTRL-key + &#60;CHARACTER&#62; (on Mac). This way, your page is accessible by keyboards besides mouse. Here&#8217;s the example taken from the Mozilla [...]]]></description>
			<content:encoded><![CDATA[<p>Using the <a href="https://developer.mozilla.org/en/XUL/Attribute/accesskey">accesskey</a> attribute, you can enable hotkeys for various html input elements. This allows one to get the focus to an input element by using the ALT-key + &lt;CHARACTER&gt; (on Windows) or CTRL-key + &lt;CHARACTER&gt; (on Mac). This way, your page is accessible by keyboards besides mouse.</p>
<p>Here&#8217;s the example taken from the Mozilla DevCenter:</p>
<pre>  &lt;label value="Enter Name" accesskey="e" control="myName"/&gt;
  &lt;textbox id="myName"/&gt;
  &lt;button label="Cancel" accesskey="n"/&gt;
  &lt;button label="Ok" accesskey="O"/&gt;</pre>
<p>Both buttons as well as the input box can be accessed by ALT+E, ALT+N, ALT+O on Windows or CTRL+E, CTRL+N or CTRL+O on a Apple-Mac.</p>
<p>This is quite easy to program, and works for all popular browsers (including Internet Explorer, Safari or Firefox).<br />
There might be cases where you want to execute some javascript when an accesskey is hit, for example to fire a java-event. Almost all webapplications use javascript one way or another. Fortunately, you don&#8217;t not complitated key-event-handling javascript to do that, just use an empty link:</p>
<pre>&lt;a href="#" accesskey="y" onclick="some javascript"&gt; &lt;/a&gt;</pre>
<p>The javascript is executed when the acesskey is hit, this case an ALT+y on Windows. The link is not displayed, so you&#8217;re free wetter or not to display a button, link or anything within your web-application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2010/12/enabling-accesskeys-for-general-html-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

