<?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>yonkeltron &#187; Java</title>
	<atom:link href="http://yonkeltron.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://yonkeltron.com</link>
	<description>Temporary Exile</description>
	<lastBuildDate>Fri, 16 Jul 2010 18:45:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Getting somewhere with Scala</title>
		<link>http://yonkeltron.com/2009/07/31/getting-somewhere-with-scala/</link>
		<comments>http://yonkeltron.com/2009/07/31/getting-somewhere-with-scala/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:47:44 +0000</pubDate>
		<dc:creator>Jonathan Magen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://yonkeltron.com/?p=569</guid>
		<description><![CDATA[Ok, so when beginning with Scala, it was hard to figure certain things out. For example, what&#8217;s the best way to document my code? How should I go about testing my new programs? Which race in StarCraft best represents the ideals of Scala? Well, to prevent other people from getting stuck on these, I am ]]></description>
			<content:encoded><![CDATA[<p>Ok, so when beginning with Scala, it was hard to figure certain things out. For example, what&#8217;s the best way to document my code? How should I go about testing my new programs? Which race in StarCraft best represents the ideals of Scala? Well, to prevent other people from getting stuck on these, I am writing this post to help out.</p>
<p><strong>Writing code</strong></p>
<p>How best to write code? Are there IDEs which support or maybe even encourage Scala? Yes! Yes, there are!</p>
<ul>
<li><a href="http://www.scala-lang.org/node/91">IDE plugins (Eclipe, NetBeans, IntelliJ)</a></li>
<li><a href="http://www.scala-lang.org/node/354">Emacs</a> &#8211; and a post on how to <a href="http://scala.sygneca.com//tools/emacs">put many Scala pieces together with Emacs</a>.</li>
</ul>
<p><strong>Project management</strong></p>
<p>How best to keep track of Scala projects? Well, everyone&#8217;s got their favorite way to build stuff (Make and cousins) and those will most likely work fine. However, if you want something a little more specialized there are several tools which can help.</p>
<ul>
<li><a href="http://code.google.com/p/simple-build-tool/">Simple Build Tool (sbt)</a></li>
<li><a href="http://www.scala-lang.org/node/345">Apache Maven</a></li>
</ul>
<p><strong>Testing</strong></p>
<p>There is no one way to test Scala, and this is true of most langauges. However, Scala does include a test framework called SUnit. That being said, it&#8217;s slated for deprecation as soon as it can be replaced and removed. Also, the current thinking out there seems to be that SUnit sucks. So, you know what, kids? We aren&#8217;t going to let that bother us because there are many great frameworks out there which may be used to effectively test Scala. Since Scala compiles to Java bytecode, there shouldn&#8217;t be trouble testing Scala from Java or Java from Scala.</p>
<ul>
<li><a href="http://www.artima.com/scalatest/">ScalaTest</a></li>
<li><a href="http://code.google.com/p/specs/">Specs</a></li>
<li><a href="http://code.google.com/p/scalacheck/">ScalaCheck</a> (pseudo-clone of <a href="http://www.cs.chalmers.se/~rjmh/QuickCheck/">Haskell&#8217;s QuickCheck</a>)</li>
<li><a href="http://junit.org">JUnit</a> &#8211; Oldie-but-goodie still works well from Java or from Scala (<a href="http://junit.org/apidocs/org/junit/Assert.html">helpful list of assertions</a>)</li>
</ul>
<p><strong>Documentation</strong></p>
<p>Who doesn&#8217;t love documentation? I know that I sure do! To help satisfy my deep-seated urge to author code-centric exposition, there is scaladoc. Ever hear of javadoc? Yeah, it&#8217;s like that. <a href="http://java.sun.com/j2se/javadoc/writingdoccomments/">Read about javadoc here</a> and then check out the <a href="http://www.scala-lang.org/docu/files/tools/scaladoc.html">scaladoc manpage</a>. If, for some reason you don&#8217;t like scaladoc&#8217;s output, you&#8217;re in luck because there is an <a href="http://code.google.com/p/vscaladoc/">alternative generator called vscaladoc</a>.</p>
<p><strong>Notes</strong></p>
<p>This list is most likely incomplete and certainly not exhaustive. If someone would like me to add something, please provide the link and info in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://yonkeltron.com/2009/07/31/getting-somewhere-with-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can I get a little MapReduce from my Debian people?</title>
		<link>http://yonkeltron.com/2009/07/05/can-i-get-a-little-mapreduce-from-my-debian-people/</link>
		<comments>http://yonkeltron.com/2009/07/05/can-i-get-a-little-mapreduce-from-my-debian-people/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 20:13:17 +0000</pubDate>
		<dc:creator>Jonathan Magen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://yonkeltron.com/?p=549</guid>
		<description><![CDATA[Debian is a world-class Linux distribution. It is used on it&#8217;s own for so many applications (desktop, laptop, workstation, handeld, server, etc.) as well as the foundation for so many wonderful projects ((U&#124;K&#124;X)buntu, Maemo, etc.). Personally, I run Debian on my laptop as well as my servers.  In fact, when I went to see about ]]></description>
			<content:encoded><![CDATA[<p>Debian is a world-class Linux distribution. It is used on it&#8217;s own for so many applications (desktop, laptop, workstation, handeld, server, etc.) as well as the foundation for so many wonderful projects ((U|K|X)buntu, Maemo, etc.). Personally, I run Debian on my laptop as well as my servers.  In fact, when I went to see about setting up a little ad-hoc cluster, I was rather disappointed. Though there are a few <a href="http://packages.debian.org/search?keywords=redhat-cluster-suite">clustering tools available</a>, as well as several distributed filesystems (<a href="http://packages.debian.org/search?keywords=gfs2">GFS</a>, <a href="http://packages.debian.org/search?keywords=gluster">GlusterFS</a>, <a href="http://packages.debian.org/search?keywords=ocfs2">OCFS2</a>, and <a href="http://packages.debian.org/search?keywords=lustre">Lustre</a>), shockingly, I could not find any implementation of MapReduce available in the Debian repositories.</p>
<p>For those who might not know, MapReduce is a novel data-processing system developed by Google for internal usage and described in their publication entitled <a href="http://labs.google.com/papers/mapreduce.html"><em>MapReduce: Simplified Data Processing on Large Clusters</em></a>. For the enlightened out there, it should be clear that the name and mechanism are derived from Lisp&#8217;s <code>map</code> and <code>reduce</code> functions. In any case, though Google&#8217;s implementation is proprietary, there have been several implementations based on their paper both written in and geared toward a variety of programming languages. Unfortunately, none of these are available in the Debian repositories. In all fairness, Debian does include <a href="http://couchdb.apache.org/">CouchDB</a> which uses map and reduce functions for generating views. However, it&#8217;s not a solution aimed at sorting and processing huge amounts of data, though it is an interesting and capable piece of software.</p>
<p>So, to try and get things moving, I have filed three Debian RFPs (Request For Package) for a few seperate MapReduce implementations.</p>
<ul>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535861">Hadoop</a> &#8211; Probably the most well-known of the Free/Open Source implementations. Includes a distributed filesystem (HDFS), scaleable distributed database (HBase) and tools to get you going from start to finish. Hadoop is written in Java though it can interoperate with other languages (<a href="http://scala-blogs.org/2008/09/scalable-language-and-scalable.html">Scala</a>, too). It&#8217;s a top-level project of the <a href="http://www.apache.org/">Apache Software Foundation</a> and licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> &#8211; <a href="http://hadoop.apache.org/">http://hadoop.apache.org</a></li>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535898">Skynet</a> &#8211; A MapReduce implementation written in Ruby. It&#8217;s designed to be fault-tolerant and distrubuted, just like the big boys. Originally written for use at <a href="http://www.geni.com">Geni.com</a> and licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT License</a> &#8211; <a href="http://skynet.rubyforge.org/">http://skynet.rubyforge.org/</a></li>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535891">Disco</a> &#8211; Though the implementation is itself written in Erlang, thus providing excellent distributed fault-tolerance, Disco jobs can be written in Python. It was <a href="http://research.nokia.com/">developed as an in-house tool for rapid data analysis at Nokia</a> and they seem to be quite keen on it. Disco is licensed under a modified BSD License. Page at <a href="http://discoproject.org/">http://discoproject.org/</a> and code at <a href="http://github.com/tuulos/disco/tree/master">http://github.com/tuulos/disco/tree/master</a></li>
</ul>
<p>Ok, there might be a few objections to my choices. Why did I leave out neat projects like <a href="http://www.gridgain.com/">GridGain</a>, <a href="http://mfisk.github.com/filemap/">FileMap</a> and <a href="http://blog.last.fm/2009/04/06/mapreduce-bash-script">BashReduce</a>? Well, for starters, GridGain is another Java implementation that doesn&#8217;t seem (at least to me) to have the same momentum Hadoop does. FileMap and BashReduce, while novel, useful and fascinating, are not designed for use in networked environments and are therefore unsuitable for cluster situations. So then whey not <a href="http://mapsharp.codeplex.com/">MapSharp</a>? Well, primarily because of all the <a href="http://www.itwire.com/content/view/25954/1231/">Debian Mono debates</a> going on right now (Gnome&#8217;s fail!) . I&#8217;ve done work in C# and it&#8217;s got some neat features but cool stuff doesn&#8217;t and <a href="http://www.fsf.org/news/dont-depend-on-mono">will not ensure that users are not liable from patent litigation</a>.</p>
<p>Also, it seems like those RFPs have some mistakes, so if anyone figures out how to edit them, let me know so I can clean them up.</p>
]]></content:encoded>
			<wfw:commentRss>http://yonkeltron.com/2009/07/05/can-i-get-a-little-mapreduce-from-my-debian-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compile JavaScript to Java classes with Rhino</title>
		<link>http://yonkeltron.com/2009/03/24/compile-javascript-to-java-classes-with-rhino/</link>
		<comments>http://yonkeltron.com/2009/03/24/compile-javascript-to-java-classes-with-rhino/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 13:26:54 +0000</pubDate>
		<dc:creator>Jonathan Magen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://yonkeltron.com/?p=519</guid>
		<description><![CDATA[Can you compile JavaScript to Java classes? Why, yes! Yes, you can! Rhino lets you do exactly that. Example here]]></description>
			<content:encoded><![CDATA[<p>Can you compile JavaScript to Java classes? Why, yes! Yes, you can! <a href="https://developer.mozilla.org/en/Rhino_Overview">Rhino</a> lets you do exactly that. <a href="https://developer.mozilla.org/en/Rhino_JavaScript_Compiler">Example here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yonkeltron.com/2009/03/24/compile-javascript-to-java-classes-with-rhino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
