<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5" -->
<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/"
>

<channel>
	<title>fitzsim's development log</title>
	<link>http://fitzsim.org/blog</link>
	<description></description>
	<pubDate>Thu, 05 Jun 2008 13:54:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5</generator>
	<language>en</language>

		<item>
		<title>OpenJDK and Fedora 10</title>
		<link>http://fitzsim.org/blog/?p=27</link>
		<comments>http://fitzsim.org/blog/?p=27#comments</comments>
		<pubDate>Thu, 29 May 2008 12:37:23 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=27</guid>
		<description><![CDATA[I'm planning two Fedora Features for OpenJDK in Fedora 10.  I'll write the Wiki pages soon.

Improved Multilib Support for JDK Packages

The first feature is improved multilib support for Java packages. This will involve fixing the darn persistent rpm scriptlet argument bug and adding multilib support to jpackage-utils and java-1.6.0-openjdk.  I already have patches [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;m planning two Fedora Features for OpenJDK in Fedora 10.  I&#8217;ll write the Wiki pages soon.</p>
	<p><strong>Improved Multilib Support for JDK Packages</strong></p>
	<p>The first feature is improved multilib support for Java packages. This will involve fixing the darn persistent <a href="https://bugzilla.redhat.com/show_bug.cgi?id=340391">rpm scriptlet argument bug</a> and adding multilib support to jpackage-utils and java-1.6.0-openjdk.  I already have patches for these latter two but they depend on the rpm bug being fixed.  We&#8217;ll have to carefully test upgrade paths when introducing these changes.</p>
	<p>I&#8217;m hoping we can make java-gcj-compat multilib-compatible as well.  My current plan involves using wrapper binaries for the tools instead of the direct symlinks we use now.</p>
	<p>If we complete this feature Fedora 10 will allow parallel installation of 32-bit and 64-bit OpenJDK packages.  Likewise for subsequent RHEL releases.</p>
	<p><strong>Java Packaging Improvements</strong></p>
	<p>The second feature deals with miscellaneous messiness in the current packages.</p>
	<ul>
	<li><em>Merging the rest of java-gcj-compat into libgcj.</em>  We&#8217;ve made steady progress in this direction with each Fedora release.  Hopefully Fedora 10 will complete the process.  <a href="http://jsumali.wordpress.com/">Josh Sumali</a> is already making headway on this.
</li>
	<li><em>Security provider and extensions packaging improvements.</em>  This will allow us to package extensions like BouncyCastle such that they&#8217;re automatically loaded by the JRE.  It will also allow us to move the GNOME Java Access Bridge currently bundled in the OpenJDK packages into its own separate package.</li>
	<li><em>Move %config files under /usr to /etc and replace them with symlinks.</em></li>
	<li><em>Rename java-1.6.0-openjdk* to openjdk*?</em>  Now that OpenJDK is becoming a standard component of Fedora we should revisit the JPackage naming conventions for it.  The idea would be to use the python naming approach.  The latest OpenJDK packages would be called openjdk and older releases would be renamed e.g., compat-openjdk6.  (I&#8217;m a little conflicted about this.  There&#8217;s some merit to the shared library approach &#8212; that once a name&#8217;s been used you can&#8217;t reuse it for an incompatible update because you&#8217;ll break dependents &#8212; but retaining one name across major versions forces dependent packages to update to the new version (a good thing for Fedora) and also simplifies dependency specifications.)</li>
	<li><em>Eliminate embedded full version strings from the OpenJDK directory names.</em>  We&#8217;d collapse directories like /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0 to just /usr/lib/jvm/java-1.6.0-openjdk.  Our internal rpmdiff tool has trouble with versioned directories &#8212; this change would reduce rpmdiff output noise.  It would mean that you couldn&#8217;t install OpenJDK 1.6.0.0 and OpenJDK 1.6.0.1 in parallel, but people should never need to do that.  If they did, it would be to work around a bug that should just be fixed instead.</li>
	<li><em>Eliminate alternatives use from the OpenJDK packages, making them the exclusive owners of /usr/bin/* symlinks.</em>  I wish!  It&#8217;s probably too soon to relegate other JDK alternatives to /opt though.</li>
	</ul>
	<p>The primary goal of this feature is to make our OpenJDK packages easier to maintain.  A secondary goal is to make packages that depend on OpenJDK easier to maintain.  And the larger goal is smooth long-term maintenance of these packages in RHEL.</p>
	<p><strong>Plugin and Web Start</strong></p>
	<p>A shout-out to Planet JDK readers:  Wouldn&#8217;t it be awesome if Sun&#8217;s cool plugin and Web Start rewrites were <a href="http://fedoraproject.org/wiki/Releases/10/Schedule#Key_Milestones">released in time</a> to be shipped in Fedora 10? <img src='http://fitzsim.org/blog/wp-images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=27</wfw:commentRSS>
	</item>
		<item>
		<title>OpenJDK 6 and Fedora 9</title>
		<link>http://fitzsim.org/blog/?p=24</link>
		<comments>http://fitzsim.org/blog/?p=24#comments</comments>
		<pubDate>Thu, 29 May 2008 12:32:32 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=24</guid>
		<description><![CDATA[OpenJDK 6 was released in Fedora 9.  Yay!  The name change is satisfying and it's great to see the past 6 months' efforts come to fruition.  For me this isn't quite as exciting as the release of Fedora 8, which was the first distribution release to include IcedTea packages, based on an [...]]]></description>
			<content:encoded><![CDATA[	<p>OpenJDK 6 was released in Fedora 9.  Yay!  The name change is satisfying and it&#8217;s great to see the past 6 months&#8217; efforts come to fruition.  For me this isn&#8217;t quite as exciting as the release of Fedora 8, which was the first distribution release to include <a href="http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/i386/os/Packages/java-1.7.0-icedtea-1.7.0.0-0.19.b21.snapshot.fc8.i586.rpm">IcedTea packages</a>, based on an OpenJDK 7 pre-release snapshot.  Still, it&#8217;s nice to see OpenJDK maturing into its role as Fedora&#8217;s default JDK.</p>
	<p>Unfortunately I missed the <a href="http://overholt.ca/wp/?p=105">Toronto Fedora 9 release party</a> since I was on vacation.  From the pictures it looks like it was a fun time!</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=24</wfw:commentRSS>
	</item>
		<item>
		<title>CommunityOne 2008, JavaOne 2008</title>
		<link>http://fitzsim.org/blog/?p=25</link>
		<comments>http://fitzsim.org/blog/?p=25#comments</comments>
		<pubDate>Fri, 23 May 2008 00:41:35 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=25</guid>
		<description><![CDATA[CommunityOne 2008

Monday, May 5

I thought my CommunityOne talk, The IcedTea Project: Developing OpenJDK for Deployment on GNU/Linux, went pretty well.  The audience was small but full of important people :-)  Martin Buchholz introduced himself after my presentation and we chatted a little about Google's plans to contribute to OpenJDK.  After the talk [...]]]></description>
			<content:encoded><![CDATA[	<p><strong>CommunityOne 2008</strong></p>
	<p><strong>Monday, May 5</strong></p>
	<p>I thought my CommunityOne talk, <em>The IcedTea Project: Developing OpenJDK for Deployment on GNU/Linux</em>, went pretty well.  The audience was small but full of important people <img src='http://fitzsim.org/blog/wp-images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   Martin Buchholz introduced himself after my presentation and we chatted a little about Google&#8217;s plans to contribute to OpenJDK.  After the talk I was interviewed briefly by a reporter from InfoWorld.</p>
	<p>I arrived at the presentation room halfway through the <em>Lightning Talks</em> session that preceded mine.  One demo really jumped out at me: an astronomy viewer that the speaker was porting from C++ to Java.  I can&#8217;t remember its name and Google didn&#8217;t turn it up readily but it was a very impressive demo.</p>
	<p>After my talk I dropped in for the last half of Karsten Wade&#8217;s <em>Insight into the Fedora Distro and Community</em>.  I thought it was a nice blend of high-level observations on community building and real world examples of how the Fedora project engages contributors.  Later that day, Patrick Macdonald, Karsten and I recorded a <a href="http://blogs.sun.com/barton808/entry/openjdk_and_icedtea_a_view">podcast</a> with Sun&#8217;s Barton George.</p>
	<p><strong>JavaOne 2008</strong></p>
	<p><strong>Tuesday, May 6</strong></p>
	<p>The keynote was fun.  Both the Kindle and JavaFX demos were problematic, apparently because Moscone&#8217;s wireless network was unreliable.  Rich Green covered with a good line: &#8220;This shows that the JavaOne demos are live, not pre-recorded&#8221;.  I had heard Neil Young would be there explaining &#8220;what Java means to him&#8221; which I thought was pretty funny.  I was expecting a contrived marketing spiel but of course Neil Young kept it real with a convincing story about his use of Java (he&#8217;s producing digital archives of his life&#8217;s work).  Best quote of the keynote:  Neil Young: &#8220;We&#8217;ve got some demos to show you.  Now these are <em>fake</em>, so we know they&#8217;re gonna work.&#8221;</p>
	<p>Later on Tuesday I attended <em>Is There a Place For Applets in Web 2.0?</em>.  There I learned about the upcoming JRE u10 plugin features, including JRE version selection and the new one-JVM-per-applet model (which gcjwebplugin uses for the sake of simplicity).  I was surprised to learn that >= 1.5 JREs provide DOM APIs through LiveConnect.  The speakers promoted a &#8220;<a href="http://coolapplets.blogspot.com">cool applets</a>&#8221; blog which I&#8217;ve been following.</p>
	<p><strong>Wednesday, May 7</strong></p>
	<p>I co-presented <em>Growing Open Source Developer Communities</em> with Dalibor Topic.  I really appreciated Dalibor inviting me to speak with him.  This talk was well-attended; about 130 people showed up.  I had never co-presented before but I enjoyed the experience &#8212; preparing over tea at the amazing <a href="http://www.samovartea.com/">Samovar Tea Lounge</a> was great fun.  There were some good questions from the audience both during Q&#038;A and after the talk so I think it was well-received.</p>
	<p>Next, I chatted with David Herron about OpenJDK testing strategies for Red Hat&#8217;s packages.  David gave me some suggestions about how best to apply the newly-freed jtreg harness in our processes.  We also briefly discussed how to share TCK test results between Red Hat and Sun.</p>
	<p>Mark Reinhold&#8217;s <em>OpenJDK Community Update</em> covered a story that was mostly familiar to me (he attended my talk, which I&#8217;m sure was familiar to him <img src='http://fitzsim.org/blog/wp-images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ), but also broke news about community governance.  The deadline for writing the OpenJDK project&#8217;s constitution was this year&#8217;s JavaOne, but it&#8217;s been extended to next year&#8217;s JavaOne.  And since Dalibor had joined Sun, the governance board seated three Sun employees and two non-Sun members.  To address this Sun added two more seats to the board.</p>
	<p>Later that night I dropped in on the tail end of the modules BOF, <em>Modularity in the Java Platform: Demos and Q&#038;A</em>.  Unfortunately it was the last session and security personnel ushered us out before I had a chance to chat with Alex Buckley.</p>
	<p>On Tuesday and Wednesday I spent some time wandering through the JavaOne pavilion.  Highlights:</p>
	<ul>
	<li>
<em>Intel&#8217;s Itanium port of Sun&#8217;s Java</em>: This is almost complete and is due out later this year.  Unfortunately it seems this won&#8217;t go into OpenJDK.
</li>
	<li>
<em>Second Life</em>: Sun had set up a Second Life replica of the JavaOne pavilion &#8212; recursively creepy!
</li>
	<li>
<em>Wonderland preview</em>: Wonderland is a Sun project similar to Second Life but with tricked-out 3D audio, shared whiteboards and in-world shared X windows.
</li>
	<li>
<em>Java realtime demo</em>: This was a series of tubes that sorted falling coloured balls according to selections made in a Swing GUI.  I was able to temporarily jam the sorter by exploiting a GUI/sorter race condition, hehehe.
</li>
	</ul>
	<p><strong>Thursday, May 8</strong></p>
	<p>The <em>Open Source Development Tools for the Java Platform, Enterprise Edition (Java EE Platform), Web 2.0, and SOA</em> talk introduced me to Drools.  The presenters demoed modifying the canonical &#8220;online store&#8221; Java EE application from the point of view of developers, store employees and store customers.  The graphical tools seemed pretty impressive &#8212; they allowed effortless connections to be established between pre-made components resulting in automatic updates to the employee/customer &#8220;workflows&#8221;.</p>
	<p>Later I recorded another podcast, this time with Dalibor Topic for Sun&#8217;s OpenJDK blog.</p>
	<p>Thursday night was the <em>OpenJDK Porters&#8217; BOF</em> where I described Gary Benson&#8217;s work on IcedTea porting: his libffi port and <em>Shark</em>, his LLVM port.  Jonathan Springer described his 64-bit MIPS port, and Volker Simonis described SAP&#8217;s porting efforts: 64-bit server JITs for PowerPC, Itanium and zSeries.</p>
	<p><strong>Friday, May 9</strong></p>
	<p>On Friday afternoon I attended the lab, &#8220;OpenOffice.org Extensions with NetBeans&#8221;.  The tutorials were very well-organized.  Once you&#8217;re familiar with the terminology &#8212; that is, once you know which wizards to invoke &#8212; it&#8217;s fairly straightforward to create first-class OO.o UI elements with NetBeans and the Java-to-UNO bridge.</p>
	<p><strong>Wrap-up</strong></p>
	<p>I talked to Jaroslav Tulach about progress getting NetBeans packaged and into Fedora.  I also chatted with Chok Poh and Marc Schoenefeld (great to finally meet Marc in person!) about handling JDK security updates.  I wanted to meet with Kenneth Russell, team lead for the new Java plugin, but our paths didn&#8217;t cross.</p>
	<p>Dalibor was very helpful throughout the week facilitating various meetings and I appreciated his efforts to get good exposure for IcedTea, Fedora and Red Hat&#8217;s efforts in general.  Plus he was a great drinking buddy <img src='http://fitzsim.org/blog/wp-images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   On that note, it was great to meet up with friends throughout the week: Casey Marshall, Erinn Clark, Alex Gravely, John McCutchan, Tom Marble and all the familiar members of Sun&#8217;s OpenJDK team.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=25</wfw:commentRSS>
	</item>
		<item>
		<title>LiveConnect support in IcedTea</title>
		<link>http://fitzsim.org/blog/?p=23</link>
		<comments>http://fitzsim.org/blog/?p=23#comments</comments>
		<pubDate>Wed, 27 Feb 2008 19:42:55 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=23</guid>
		<description><![CDATA[My FOSDEM talk was on IcedTea and LiveConnect.  I've been working on a gcjwebplugin rewrite called IcedTeaPlugin on-and-off for the past five months.  Whereas gcjwebplugin is a Netscape 4.x plugin, IcedTeaPlugin is an XPCOM plugin that implements OJI -- the Open JVM Interface -- for LiveConnect support.  I showed two demos at [...]]]></description>
			<content:encoded><![CDATA[	<p>My FOSDEM talk was on IcedTea and LiveConnect.  I&#8217;ve been working on a gcjwebplugin rewrite called IcedTeaPlugin on-and-off for the past five months.  Whereas gcjwebplugin is a Netscape 4.x plugin, IcedTeaPlugin is an XPCOM plugin that implements OJI &#8212; the Open JVM Interface &#8212; for LiveConnect support.  I showed two demos at FOSDEM, one demo for each of the two test applets I&#8217;ve used for development.  Here are the screenshots, taken just after I got each applet working:</p>
	<p><strong>JavaScript-to-Java direction</strong><br />
<a href="http://fitzsim.org/screenshots/IcedTeaPlugin-2008-01-21.png"><img src="http://fitzsim.org/screenshots/IcedTeaPlugin-2008-01-21-thumbnail.png" alt="JavaScript-to-Java direction" /></a></p>
	<p>The text field and setText button are HTML form widgets.  The &#8220;hello&#8221; string is passed from the text field to the Java applet on the right and displayed in bold.  You can see the code in the page source of the <a href="http://www.sislands.com/coin70/week9/java/example.htm">original example</a>.</p>
	<p>Because of LiveConnect&#8217;s extensive use of Java reflection upon initialization, making <em>any</em> applet work, even the trivial &#8220;Hello, World&#8221; applet shown here, involves implementing <em>most</em> of OJI.</p>
	<p><strong>Java-to-JavaScript direction</strong><br />
<a href="http://fitzsim.org/screenshots/IcedTeaPlugin-2008-02-16.png"><img src="http://fitzsim.org/screenshots/IcedTeaPlugin-2008-02-16-thumbnail.png" alt="JavaScript-to-Java direction" /></a></p>
	<p>The Java applet on this page calls into JavaScript to retrieve the page&#8217;s background color, then sets its own background color to match.  Here&#8217;s the <a href="http://www.apl.jhu.edu/~hall/CWP-Sources/CWP-Examples/Chapter19/MatchColor.java">example source code</a>.</p>
	<p>I put my <a href="http://people.redhat.com/fitzsim/fosdem-2008/fosdem-2008-liveconnect.pdf">presentation slides</a> online.</p>
	<p>I&#8217;m pleased that I was able to retain gcjwebplugin&#8217;s out-of-process-JVM design in IcedTeaPlugin, despite the fact that OJI was obviously designed with libjvm.so embedding in mind.  Basic applets work but there&#8217;s still lots to be done before IcedTeaPlugin can be declared production-ready.  It is hosted in the IcedTea 7 Mercurial repository enabled by the &#8211;enable-liveconnect configure option.</p>
	<p>I learned at FOSDEM that Sun is also working on a new plugin framework, in a private repository.  LiveConnect support is <a href="https://bugzilla.redhat.com/show_bug.cgi?id=304021">important</a> <a href="http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=85">to</a> Fedora plugin users, and that&#8217;s what motivates my work on IcedTeaPlugin.  If Sun&#8217;s new plugin framework were released and could be deployed in Fedora faster than IcedTeaPlugin then I&#8217;d be willing to work on it instead.</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=23</wfw:commentRSS>
	</item>
		<item>
		<title>Conkeror</title>
		<link>http://fitzsim.org/blog/?p=22</link>
		<comments>http://fitzsim.org/blog/?p=22#comments</comments>
		<pubDate>Wed, 17 Oct 2007 15:42:49 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=22</guid>
		<description><![CDATA[On Monday, I found Conkeror through the EmacsWiki.  It's a Firefox extension that provides an Emacs-like interface to the browser.  It includes all the essential Emacs features (minibuffer, incremental search, bookmark tab completion, buffer management) and an additional killer feature: numbered links.  I've always wanted an efficient way to follow links and [...]]]></description>
			<content:encoded><![CDATA[	<p>On Monday, I found <a href="http://conkeror.mozdev.org/">Conkeror</a> through the <a href="http://emacswiki.org">EmacsWiki</a>.  It&#8217;s a Firefox extension that provides an Emacs-like interface to the browser.  It includes all the essential Emacs features (minibuffer, incremental search, bookmark tab completion, buffer management) and an additional killer feature: numbered links.  I&#8217;ve always wanted an efficient way to follow links and this is it.  You can&#8217;t get much faster than <b>&lt;number&gt;-&lt;Return&gt;</b>!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=22</wfw:commentRSS>
	</item>
		<item>
		<title>gcjwebplugin + IcedTea</title>
		<link>http://fitzsim.org/blog/?p=21</link>
		<comments>http://fitzsim.org/blog/?p=21#comments</comments>
		<pubDate>Mon, 20 Aug 2007 01:28:11 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=21</guid>
		<description><![CDATA[I integrated gcjwebplugin into the IcedTea repository today.  With Sun's class library I'm able to install a proper applet security manager so that gcjwebplugin can run untrusted applets safely.

 ]]></description>
			<content:encoded><![CDATA[	<p>I integrated gcjwebplugin into the IcedTea repository today.  With Sun&#8217;s class library I&#8217;m able to install a proper applet security manager so that gcjwebplugin can run untrusted applets safely.</p>
	<p><center><a href="http://fitzsim.org/screenshots/gcjwebplugin-IcedTea-2007-08-20.png"><img src="http://fitzsim.org/screenshots/gcjwebplugin-IcedTea-2007-08-20-thumbnail.png" alt="screenshot of gcjwebplugin on IcedTea in Firefox" /></a></center>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=21</wfw:commentRSS>
	</item>
		<item>
		<title>OpenJDK Testing</title>
		<link>http://fitzsim.org/blog/?p=20</link>
		<comments>http://fitzsim.org/blog/?p=20#comments</comments>
		<pubDate>Wed, 18 Jul 2007 15:53:57 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=20</guid>
		<description><![CDATA[Here are some testing strategies that I'd like to see implemented for IcedTea.  I've asked one of our interns to investigate these points.

Reduce Mauve-on-IcedTea failures to 0
Provide reproducible way of running Mauve on IcedTea which should result in 0 failures
"make dist" target for Mauve

Once these are complete we can a) set up nightly regression [...]]]></description>
			<content:encoded><![CDATA[	<p>Here are some testing strategies that I&#8217;d like to see implemented for IcedTea.  I&#8217;ve asked one of our interns to investigate these points.</p>
	<p><strong><em>Reduce Mauve-on-IcedTea failures to 0<br />
Provide reproducible way of running Mauve on IcedTea which should result in 0 failures<br />
&#8220;make dist&#8221; target for Mauve</em></strong></p>
	<p>Once these are complete we can a) set up nightly regression runs on <a href="http://icedtea.classpath.org">http://icedtea.classpath.org</a>, b) insist on having no regressions in package releases by running Mauve as part of the RPM build.</p>
	<p><strong><em>Make IcedTea demos build standalone</em></strong></p>
	<p>The IcedTea demos include libraries built during the IcedTea build, but these libraries cannot be built using the provided sample Makefiles.  Installing the java-1.7.0-icedtea-demo RPM should a) install the demo source code in /usr/share/java-1.7.0-icedtea/demo, b) install the demo code&#8217;s build requirements as dependencies, c) provide working sample Makefiles.  That way, trying the demos can be reduced to something like:<br />
  <tt><br />
  yum install java-1.7.0-icedtea-demo<br />
  cp -r /usr/share/java-1.7.0-icedtea/demo ~<br />
  cd ~/demo<br />
  make -f <demo>/Makefile.sample<br />
  make -f </demo><demo>/Makefile.sample run<br />
  </demo></tt></p>
	<p>  Ideally we&#8217;d test building and running the demos as part of the RPM build.</p>
	<p><strong><em>Run DaCapo benchmark reproducibly on IcedTea</em></strong></p>
	<p>Once <a href="http://dacapobench.org">DaCapo</a> runs reliably we can set up nightly benchmark runs on <a href="http://icedtea.classpath.org">http://icedtea.classpath.org</a>.</p>
	<p><strong><em>Run graphical demos with java.awt.Robot and Xvfb</em></strong></p>
	<p>I&#8217;d like to include such graphical tests in the RPM build if the setup isn&#8217;t too fragile.</p>
	<p>Longer term if Sun releases the jtreg harness (and some tests), we won&#8217;t <a href="http://thread.gmane.org/gmane.comp.java.openjdk.general/280/focus=284">hate it</a>. <img src='http://fitzsim.org/blog/wp-images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  More likely we&#8217;ll want to integrate it too into our RPM builds.</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=20</wfw:commentRSS>
	</item>
		<item>
		<title>OpenJDK Packager&#8217;s Wishlist</title>
		<link>http://fitzsim.org/blog/?p=19</link>
		<comments>http://fitzsim.org/blog/?p=19#comments</comments>
		<pubDate>Fri, 13 Jul 2007 15:40:53 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=19</guid>
		<description><![CDATA[Here are some thoughts about how to make OpenJDK easily maintainable on Fedora.  Achieving this goal will require changes to OpenJDK, updates to the Fedora implementation of the JPackage conventions and an rpm patch.

Here is a list of problems and a strawman solution for each.  Each item needs careful investigation to determine the [...]]]></description>
			<content:encoded><![CDATA[	<p>Here are some thoughts about how to make OpenJDK easily maintainable on Fedora.  Achieving this goal will require changes to OpenJDK, updates to the Fedora implementation of the JPackage conventions and an rpm patch.</p>
	<p>Here is a list of problems and a strawman solution for each.  Each item needs careful investigation to determine the most appropriate solution.</p>
	<p><strong>OpenJDK Changes</strong></p>
	<p><em><strong>Read OpenSSL certs directly</strong></em></p>
	<p><em>Now:</em> We generate a cacerts file from certificates shipped with the Fedora OpenSSL package.</p>
	<p><em>Future:</em> OpenJDK should parse the OpenSSL certificates directly.  That would give us one point of maintenance for the certificates and allow OpenJDK to take advantage of new certificates when OpenSSL is updated.</p>
	<p><em><strong>Replace font.properties with fontconfig</strong></em></p>
	<p><em>Now:</em> fontconfig.Fedora.properties hard-codes Fedora fonts that OpenJDK uses.</p>
	<p><em>Future:</em> OpenJDK should use fontconfig to determine which fonts to use, to match desktop font preferences.</p>
	<p><em><strong>Read glibc timezone and locale data</strong></em></p>
	<p><em>Now:</em> OpenJDK bundles its own set of timezone and locale data.</p>
	<p><em>Future:</em> OpenJDK should read glibc&#8217;s timezone and locale data.  This provides a single point of maintenance for these data and eliminates the need to reinstall OpenJDK, or run a separate tool like tzupdater, whenever timezone or locale data updates are required.</p>
	<p><em><strong>Security policy and provider configuration under /etc/java</strong></em></p>
	<p><em>Now:</em> OpenJDK security policies are installed and configured under /usr/lib/jvm/java-$version-$vendor/jre/lib/security.</p>
	<p><em>Future:</em> OpenJDK security policies and providers should be configured from /etc/java, since /etc is the standard location for administrator-edited configuration files.  If configuration were under /etc/java/java-$version, the settings could be shared between same-versioned JDKs.  There should also be a .d directory so that new security policies and providers can be easily installed by separate packages.</p>
	<p><em><strong>Endorsed directories: /usr/lib*/java-$version/endorsed, /usr/share/java-$version/endorsed</strong></em></p>
	<p><em>Now:</em> OpenJDK loads endorsed jars from /usr/lib/jvm/java-$version-$vendor/jre/lib/ext.</p>
	<p><em>Future:</em> OpenJDK should load endorsed jars from locations like /usr/lib/java-$version/endorsed and /usr/share/java-$version/endorsed so that separate packages can easily install and uninstall additional endorsed jars.</p>
	<p><em><strong>Properties files in /etc/java</strong></em></p>
	<p><em>Now:</em> OpenJDK loads .properties files from /usr/lib/jvm/java-$version-$vendor/jre/lib.</p>
	<p><em>Future:</em> OpenJDK should load .properties files from /etc/java, since /etc is the standard location for config files.</p>
	<p><em><strong>Split out bundled code, push Sun patches upstream</strong></em></p>
	<p><em>Now:</em> OpenJDK bundles source code packages from many other projects.</p>
	<p><em>Future:</em> Using the new module system or some other mechanism, OpenJDK should use the system-installed versions of these packages.  Any modifications to these projects that Sun has been maintaining in their tree should go upstream.</p>
	<p><em><strong>Default JNI load path, to support loading 32-bit and 64-bit JNI libraries from the same jar</strong></em></p>
	<p><em>Now:</em> System.loadLibrary relies on the default library paths.</p>
	<p><em>Future:</em> System.loadLibrary should also look in standard paths where packages can install JNI libraries: /usr/lib/jni on 32-bit JVMs and /usr/lib64/jni on 64-bit JVMs.</p>
	<p><em><strong>Default /usr/share/java &#8220;CLASSPATH&#8221; directory</strong></em></p>
	<p><em>Now:</em> JPackage provides a build-classpath script to build CLASSPATH settings from jars found in system-default locations such as /usr/share/java.</p>
	<p><em>Future:</em> OpenJDK&#8217;s module system should resolve dependencies from these system-default locations, obviating the build-classpath script.  Related: <a href="https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=170128">Red Hat bug 170128</a>.</p>
	<p><strong>OpenJDK Package Changes</strong></p>
	<p><em><strong>Multiarch support in jpackage-utils</strong></em></p>
	<p><em>Now:</em> the jpackage-utils package is built as a noarch package but contains references to /usr/lib.</p>
	<p><em>Future:</em> jpackage-utils should also support JDK installations in /usr/lib64.  Doing so will raise questions about how JDK alternatives are handled, since they are based in /usr/lib.  It may be best to change the alternatives tool itself to special-case /usr/lib and /usr/lib64.</p>
	<p><em><strong>Simplify package split to base, javadoc</strong></em></p>
	<p><em>Now:</em> JDK packages are split up into base (JRE), devel, demo, src and javadoc subpackages.</p>
	<p><em>Future:</em> We could reduce this to just a base &#8220;java&#8221; package, which includes the JRE, development tools, demos and src.zip.  javadoc will still need to remain a separate subpackage because of its installed size.</p>
	<p><em><strong>Simplify alternatives to just &#8220;java&#8221;</strong></em></p>
	<p><em>Now:</em> There are many JDK primary alternatives: java, javac, jre_$vendor, $jre_$version, java_sdk_$vendor, java_sdk_$version, libjavaplugin.so</p>
	<p><em>Future:</em> With the simplified package split we could reduce this list to two primary alternatives: java and javadoc.  But simplification may not be required if everyone just uses system-switch-java instead of dealing with alternatives directly.</p>
	<p><strong>RPM Changes</strong></p>
	<p><em><strong>Fix rpm $1 arch-specific bug</strong></em></p>
	<p><em>Now:</em> <a href="https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=127359">Red Hat bug 127359</a> prevents correct upgrading of alternatives symlinks in multilib installations.</p>
	<p><em>Future:</em> The bug must be fixed.</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=19</wfw:commentRSS>
	</item>
		<item>
		<title>Java, Accessibility, GNOME</title>
		<link>http://fitzsim.org/blog/?p=18</link>
		<comments>http://fitzsim.org/blog/?p=18#comments</comments>
		<pubDate>Fri, 29 Jun 2007 23:09:37 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=18</guid>
		<description><![CDATA[I'm experimenting with GNOME's accessibility support; specifically, how it interacts with Swing and AWT applications.  I'm impressed with the framework's implementation.  I had trouble saving GOK's alternative pointer device setting, and there seems to be an issue with having the alternative pointer device control the core pointer, but otherwise the interface is stable [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;m experimenting with GNOME&#8217;s accessibility support; specifically, how it interacts with Swing and AWT applications.  I&#8217;m impressed with the framework&#8217;s implementation.  I had trouble saving <a href="http://gok.ca/">GOK</a>&#8217;s alternative pointer device setting, and there seems to be an issue with having the alternative pointer device control the core pointer, but otherwise the interface is stable and usable.  As an experiment, I wrote this blog post using only a single-button mouse we had lying around the office <img src='http://fitzsim.org/blog/wp-images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   The process was slow but smooth.  My other experiments were also successful: GOK works with Swing and AWT applications over the <a href="http://live.gnome.org/Java_Access_Bridge">Java Access Bridge</a>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=18</wfw:commentRSS>
	</item>
		<item>
		<title>Plans for OpenJDK</title>
		<link>http://fitzsim.org/blog/?p=17</link>
		<comments>http://fitzsim.org/blog/?p=17#comments</comments>
		<pubDate>Fri, 18 May 2007 14:42:06 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://fitzsim.org/blog/?p=17</guid>
		<description><![CDATA[Our team at Red Hat has been doing some planning now that OpenJDK has been released.  First, a summary of OpenJDK's status:


What Sun has released:


  most of the 1.6-level JDK, including:
  
    the Hotspot virtual machine with x86 and x86_64 JITs
    the Java compiler
   [...]]]></description>
			<content:encoded><![CDATA[	<p>Our team at Red Hat has been doing some planning now that OpenJDK has been released.  First, a summary of OpenJDK&#8217;s status:</p>
	<p>
What Sun has released:</p>
	<ul>
	<li>most of the 1.6-level JDK, including:</li>
	</ul>
	<ul>
	<li>the Hotspot virtual machine with x86 and x86_64 JITs</li>
	<li>the Java compiler</li>
	<li>most of the class libraries</li>
	</ul>
	<p>What Sun hasn&#8217;t released:</p>
	<ul>
	<li>4% of the class library code &#8212; some of the class library code is &#8220;encumbered&#8221; meaning that Sun can&#8217;t release it under the GPL.  The encumbrances are in the sound system, font rasterizer, graphics rasterizer, SNMP and crypto areas.</li>
	<li>plugin and javaws</li>
	<li>a 1.5 version</li>
	</ul>
	<p>The second list points the way to some of our immediate goals.  Here is a list of some of the goals we decided on:</p>
	<ol>
	<li>
	<h4>Packaging OpenJDK as IcedTea</h4>
	<p>
We can&#8217;t call what we ship &#8220;OpenJDK&#8221; because that&#8217;s a Sun trademark.  We&#8217;ve decided on the temporary name &#8220;IcedTea&#8221;, and we can say that it&#8217;s based on code from openjdk.java.net.  We&#8217;ve posted <a href="http://people.redhat.com/fitzsim/java-1.7.0-icedtea-1.7.0.0-0.1.nonfree.src.rpm">an SRPM</a> containing the free OpenJDK sources. But it still requires non-free stuff to build, which brings us to the next goal.</p>
</li>
	<li>
	<h4>Building with free software</h4>
	<p>
Currently OpenJDK requires openmotif, Sun&#8217;s proprietary JDK 1.6 and a bundle of proprietary &#8220;plugs&#8221; (to replace the encumbrances) to build. Our group&#8217;s first goal is to make OpenJDK buildable against a set of fully-free packages.
</p>
</li>
	<li>
	<h4>Setting up icedtea.classpath.org</h4>
	<p>
With help from some GNU Classpath community members we&#8217;re setting up icedtea.classpath.org with a Wiki, mailing list and a Subversion repository, to host the work we&#8217;ll be doing on OpenJDK.  This is a temporary site where we can experiment with the OpenJDK code while Sun works out its contribution processes.  The site is not complete yet.
</p>
</li>
	<li>
	<h4>Testing without the encumbrances</h4>
	<p>
Because we haven&#8217;t built OpenJDK without the binary plugs for the encumbrances yet, we don&#8217;t know exactly how it fails if they&#8217;re not present.  We need to see if the result can be proposed for inclusion in Fedora.
</p>
</li>
	<li>
	<h4>Replacing encumbered bits with parts from GNU Classpath</h4>
	<p>
Once we&#8217;ve tested running without the encumbrances we&#8217;ll know where to focus our replacement efforts.
</p>
</li>
	<li>
	<h4>Testing OpenJDK interpreter on other architectures</h4>
	<p>
Since at this point we only have x86 and x86_64 JITs, platform coverage will be a problem.  In the short term we should test the OpenJDK interpreter portability since it may be possible to use it as a stop-gap on the architectures for which we don&#8217;t have JITs.
</p>
</li>
	<li>
	<h4>Working with Sun on contributor license agreements, use of trademarks, self-certification and governance.</h4>
	<p>
Eventually, we&#8217;d like to ship in Fedora a certified Java implementation that we can call OpenJDK and &#8220;Java compatible&#8221;.  Sun intends to make that possible through a self-certification process. Eventually we should be able to contribute code directly to the OpenJDK project &#8212; Sun has worked out the governance model it will use and is implementing a Mercurial repository.
</p>
</li>
	<li>
	<h4>Working with other Red Hat groups on OpenJDK</h4>
	<p>
We expect to work closely with other Red Hat groups on both system integration (kernel, tools, desktop, packaging) and on requests from internal &#8220;consumers&#8221; of the JDK (JBoss, Eclipse).
</p>
</li>
	</ol>
	<h3>GCJ</h3>
	<p>
We will continue to support GCJ where it is deployed, but any new work we do will be on the OpenJDK codebase.  GCJ still has better architecture coverage than OpenJDK, supporting all 7 RHEL architectures where OpenJDK supports 2, but we&#8217;ve decided that the benefits of OpenJDK outweigh this advantage of GCJ, and that effort is better spent trying to get (or write, if need be) more JITs for OpenJDK.</p>
	<h3>Timelines</h3>
	</p>
	<p>
We don&#8217;t have definite timelines yet.  We&#8217;re in an investigation stage right now, so precise timelines will have to wait until we&#8217;ve had more time to discuss the OpenJDK codebase and Sun&#8217;s timelines.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fitzsim.org/blog/wp-commentsrss2.php?p=17</wfw:commentRSS>
	</item>
	</channel>
</rss>
