<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title>A Code Master&#039;s Handbook</title>
		<link>http://www.benjamincoe.com/blog/index.php</link>
		<description><![CDATA[No Footer]]></description>
		<copyright>Copyright 2010, Benjamin Coe</copyright>
		<managingEditor>Benjamin Coe</managingEditor>
		<language>en-US</language>
		<generator>SPHPBLOG 0.5.1</generator>
		<item>
			<title>The Art of Building and Maintaining an Unpopular MMO</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry100117-162446</link>
			<description><![CDATA[<b>Hack Wars Part 1: In the Beginning</b><br /><br />	Even if you happen to be one of the 3,538 people who have played <a href="http://www.hackwars.net" target="_blank" >HackWars</a> for a reasonably good length of time, it must be admitted that, by most measures, my attempted incursion into the online MMO market has been a relative failure. My three-year hobby of building a massively (cough) multi-player-online-game has been an amazing learning experience.<br /><br /><br /><div style="padding-left: 20px;width:400px;"><br /><a href="javascript:openpopup('http://imgur.com/lXg38.png',1019,590,false);"><img src="http://imgur.com/lXg38.png" width="400" height="232" border="0" alt="" /></a><br /><i>Observe prime examples of feature bloat and detrimental lack of UI designer in action.</i></div><br /><br />	I’ve always found server and thread orchestration a really interesting topic in computer science. It excited me to think that I could (like some sort of mad scientist) harness the power of multiple computers to do my bidding. As part of a fourth-year research project on clustering, I built a Java-based library for parallel computing, which I called DolphinNet. At the time, I was attending a school heavily involved in the <a href="https://www.sharcnet.ca/my/front/" target="_blank" >SHARCNET</a> grid-computing project, which I eventually got to play with, but that will have to wait for another blog post. I got fairly proficient at using this library to build distributed servers, purposing it for <a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6VDC-4W3299B-1&amp;_user=10&amp;_rdoc=1&amp;_fmt=&amp;_orig=search&amp;_sort=d&amp;_docanchor=&amp;view=c&amp;_rerunOrigin=scholar.google&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=5b663794e69eae6c41d7bc322d02891b" target="_blank" >a research project in economics</a>, a networked poker game, and the beginnings of an MMO.<br /><br />	Having screwed around making video games since I was <a href="http://www.tucows.com/preview/354518" target="_blank" >about 16</a>, and with stars in my eyes from having my first few heavily-threaded networked applications under my belt, I enlisted my friend Cameron to take on a project building a fantasy-style MMO. We had a friend who was a good artist, and we figured he could do art for us. After months of getting nowhere on this project and realizing we were taking on too much, we came up with the idea of HackWars.<br /><br />	We envisioned HackWars as the ultimate geek MMO--a game modeled around running your own computer and hacking other computers. Skills reflected common computing tasks, e.g., running web-servers, transferring files, port scanning other systems, etc. I’ll be the first to admit that this analogy has sometimes become a bit haggard. The hook? Almost every action you performed in the application would run on our own proprietary scripting language which players could write themselves, unlock APIs for, maliciously install on other systems, and in general, experience a good degree of realism as a result.<br />	HackWars, being relatively un-graphical, eliminated our demand for a graphic designer (or so we thought). Furthermore, we expected that such a simple concept could be implemented in a very short period of time. We were wrong.<br /><br /><b>Hack Wars Part 2: A Brief History of Game</b><br /><br />We began development of HackWars in august of 2007, and by December of 2007 we had our first (arguably quite atrocious) version of HackWars launched. Throughout the start of 2008, Cameron and I were adding in features like maniacs. This was partially due to wanting to keep up with player demands, and partially due to the perception that once we hit a sweet spot, our numbers would suddenly explode. We eventually drove each other nuts; this was mainly a result of our breakneck working schedule, and the frustrations that came with our failure to get any real traction for the game.<br /><br />In August of 2008, friends I met in my master’s program convinced me to dust the project off, Cameron was pulled in, and we vowed to approach HackWars with a new era of professionalism. Unfortunately, the work-schedule, conflicting obligations, and general frustration again lead to the stagnation of the project. This motivated me, and the remaining team, to take arguably drastic action. We decided to open source Hack Wars.<br /><br /><b>Hack Wars Part 3: Back to the Future</b><br /><br />So far this experiment has gone fairly well. HackWars is still up and running, although I now treat it more as a hobby than as a potential career. We’ve put the source up on Sourceforge, and now (finally) have several of our players contributing to coding, writing, quest-design, and game-balance. We give our ‘player devs’ a good amount of design freedom, and keep a centralized server running. Another developer and I act as project leads to a few of our most trusted players who now play a development role. These ‘player devs’ have free reign to go out and recruit other players within the game to contribute to the development process (although permission to access the server, commit to Sourceforge, and other mission critical things must be granted through us).<br /><br />Each new player of our game, if they so please, can contribute to the future underlying design of the game itself. This new development approach is in its relative infancy but I think, for a game about hacking, it’s the direction we should have been going in all along.<br /><br /><b>What I’ve Learned So Far:</b><br /><br />

<ul>
<li>
A game (perhaps specifically an MMO) is not a good get-rich-quick scheme; you cannot underestimate how long it will take to develop, test, and balance.
</li>
<li>Listen to your community! Given the genre of our game, we constantly had individuals offering their time to help us develop HackWars. Wanting to maintain intellectual control of the product, we always turned these offers down. I, not too secretly, feel that if we had built a developer community around HackWars from its conception, and been less greedy, we would have had a much better chance of success.
</li>
<li>Avoid feature bloat! As we built our initial community for HackWars, we were constantly getting suggestions for functionality from the user base. We quickly rushed and added many of these features, feeling that they would be our ticket to larger numbers of users. This lead to many unpolished features (I feel, an unpolished product in general) and did not gain us noticeable numbers of users.
</li>
<li>But why didn’t you use this? No matter what libraries you use, there might be tools that individuals will point to as a better technology choice. As a perfect example, perhaps a Python interpreter would have been a better choice than our own compiler built in ANTLR. Certainly, at the time of conception, attempts should be made choose the best technology possible but, if you make the occasional unpopular technological choice (and you will), don’t beat yourself up about it, or refactor a giant portion of your system if there is no compelling reason other than a sarcastic comment on a forum somewhere.
</li>
<br />So <a href="http://www.hackwars.net" target="_blank" >checkout HackWars.net</a> already.<br />	<br />Benjamin E. Coe<br /><hr /><br />Also known as Johnny Heart<br />]]></description>
			<category>Programming</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry100117-162446</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 17 Jan 2010 22:24:46 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=10&amp;m=01&amp;entry=entry100117-162446</comments>
		</item>
		<item>
			<title>Everything is a Tree</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry100109-180757</link>
			<description><![CDATA[A couple days ago my friend pointed out a programming problem that had been posed on Hacker News. He mentioned he had written a slick Ruby application that had been attacking the problem using statistical theory and random number generation -- he had almost solved the problem in 12 hours, which was apparently better than the previous poster who had been attempting to brute force the problem for a couple weeks. Loving a challenge, and sensing there was a better way to attack the problem, I decided to give it a kick of the can.<br /><br /><b>Here&#039;s the Problem:</b><br /><br />Using digits in the order 1, 2, 3, 4, 5, 6, 7, 8, 9 connected by &#039;+&#039;, &#039;-&#039;, &#039;*&#039;, &#039;/&#039;  and any bracketing make an equation that calculates every value from 1900 to 2100.<br /><br />For instance, <br /><br />1.0+(((2.0*((3.0*4.0)+5.0))*(6.0+(7.0*8.0)))-9.0) = 2100<br /><br />My solution to this problem ended up, I feel, being a good demonstration of the power of context free grammars, abstraction, and good data structure choice.<br /><br />We can decompose the problem posed above as a binary parse tree. Meaning each tree node has two child nodes.<br /><br />There are two types of child nodes:<br /><br />
<ol>
<li>Value nodes which represent the digits 1 through 9.</li>
<li>Operation nodes which represent the operations '+', '-', '*', '/'.</li>
</ol>
<br />Every single possible order of operation can be represented in the topology of a parse tree, e.g.,<br /><br />
<pre>

                /\
              /\ 5
             /\ 4
            /\ 3
          1  2
</pre>
<br />or,<br />
<pre>

               /\
            /\   /\
          /\ 4   5 6
         1 /\
           2 3
</pre>
<br /><br />Even though there are many different parse trees, I only needed to generate a few hundred random trees to solve the problem. For a further discussion regarding the problem space, see <a href="http://justingiancola.tumblr.com/" target="_blank" >this</a> blog post.<br /><br />To generate a solution to the problem:<br />
<ul>
<li>we simply vary the 8 operators in a given parse tree topology.</li>
<li>we evaluate our tree by recursively calling the operators on the value nodes.</li>
<li>we print a solution by recursively printing the tree and creating a string representation.</li>
</ul>
<br /><br />My program solved the problem in about five seconds (I was a bit lazy and randomly generated the trees, so it might take two or three runs to find all 201 solutions). The difference from the programs that ran much slower can be summed up in a few important problem solving fundamentals: <br /><br />
<ol>
<li>Make good data-type choices.</li>
<li>Think in terms of intelligent abstractions (by making everything inherit from a tree node class we can do tons of neat recursive operations).</li>
<li>Think in a context free manner (parse trees are your friend).</li>
</ol>
<br /><br /><b>The Code:</b><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">


<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
 * Solve a problem I found on Hacker News using trees and recursion.
 */</span>  
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">util</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#ff0000;" title="java/java/class_name">ZachProblem</span><span style="color:#008000;" title="java/java/symbol">{</span>

	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">count</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">AllTrees</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/HashMap.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util">HashMap</span></a> <span style="color:#000000;" title="java/java/variable">results</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/HashMap.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util">HashMap</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Classes for our tree representation of this problem.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">abstract</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#000000;" title="java/java/abstract">ProblemNode</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">Left</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java">Right</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">Operators</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
				
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">abstract</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/abstract">performOperation</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">abstract</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/abstract">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">abstract</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/abstract">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">slot</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">Head</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">2</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/variable">value1</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/variable">value2</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">TempLeft</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">TempLeft</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">value1</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">TempLeft</span><span style="color:#008000;" title="java/java/symbol">;</span>				
	
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">TempRight</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">TempRight</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">value2</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">TempRight</span><span style="color:#008000;" title="java/java/symbol">;</span>
				
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">value2</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#cc66cc;" title="java/java/num/dbl">9.0</span><span style="color:#000000;" title="java/java/variable">f</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">NewTree</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Head</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">AllTrees</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">NewTree</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">count</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">i</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Math</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">random</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">*</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">-</span> <span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				
					
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">A</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">ii</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">ii</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#000000;" title="java/java/variable">A</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">B</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">iii</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">iii</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span> <span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#000000;" title="java/java/variable">B</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">A</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">Temp</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">Temp</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">A</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Temp</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">slot</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">A</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">Head</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">B</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">Temp</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">Temp</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">float</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">B</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Temp</span><span style="color:#008000;" title="java/java/symbol">;</span>
					
					<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">Temp</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#cc66cc;" title="java/java/num/dbl">9.0</span><span style="color:#000000;" title="java/java/variable">f</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
						<span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">NewTree</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Head</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
						<span style="color:#000000;" title="java/java/variable">AllTrees</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">NewTree</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
						<span style="color:#000000;" title="java/java/variable">count</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#008000;" title="java/java/symbol">}</span>
					
				<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">slot</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">B</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">Head</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
					
			<span style="color:#008000;" title="java/java/symbol">}</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
	
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span>  <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#a6a600;" title="java/java/keyword">extends</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">MULTIPLY</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">ADD</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">SUBTRACT</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">2</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">DIVIDE</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">3</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">operationStrings</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">{</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">*</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">+</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">-</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">/</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#008000;" title="java/java/symbol">;</span>
	
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/method">performOperation</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">performOperation</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">*</span> <span style="color:#000000;" title="java/java/static_class">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">performOperation</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/method">toString</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">Left</span> <span style="color:#a6a600;" title="java/java/keyword">instanceof</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">(</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">Left</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">)</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">operationStrings</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#000000;" title="java/java/variable">operation</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java">Right</span> <span style="color:#a6a600;" title="java/java/keyword">instanceof</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">Right</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">(</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">Right</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">)</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/method">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">copy</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">Operators</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Operators</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Operators</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">Operators</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Operators</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			
			<span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">MULTIPLY</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">*</span> <span style="color:#000000;" title="java/java/variable">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">DIVIDE</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">/</span> <span style="color:#000000;" title="java/java/variable">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">ADD</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span> <span style="color:#a6a600;" title="java/java/keyword">else</span> <span style="color:#008000;" title="java/java/symbol">{</span>
				<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">Left</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">-</span> <span style="color:#000000;" title="java/java/variable">Right</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
	
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#a6a600;" title="java/java/keyword">extends</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/variable">value</span><span style="color:#008000;" title="java/java/symbol">;</span>
	
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/method">performOperation</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">value</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/method">toString</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">value</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span> <span style="color:#000000;" title="java/java/variable">copy</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">value</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">copy</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">return</span> <span style="color:#000000;" title="java/java/variable">value</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
		
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	Construct the algorithm and execute it.
	*/</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">ZachProblem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">SlotThese</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">1.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">2.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">3.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">4.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">5.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">6.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">7.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">8.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Float.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Float</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#cc66cc;" title="java/java/num/dbl">9.0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create the intial head node, this will be used to create all the trees.</span>
		<span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">HeadNode</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">AllTrees</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span> <span style="color:#1111ee;" title="java/java/num/int">1024</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#000000;" title="java/java/variable">HeadNode</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">slot</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">SlotThese</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">HeadNode</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Terminal condition hit </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">count</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> times.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#000000;" title="java/java/method">bruteForce</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	Perform the brute force search for solutions in the problem space.
	*/</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">bruteForce</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">iteration</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">for</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">index</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">index</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span> <span style="color:#000000;" title="java/java/variable">AllTrees</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">index</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span> <span style="color:#000000;" title="java/java/variable">ProblemTree</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">ProblemNode</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">AllTrees</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">index</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a> <span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">ProblemTree</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">Operators</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">toArray</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
													
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">iv</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">iv</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">iv</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">v</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">v</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">v</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">vi</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">vi</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">vi</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">vii</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">vii</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">vii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">for</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">viii</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">viii</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java/variable">viii</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>

				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">ii</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">2</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">iii</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">3</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">iv</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">4</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">v</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">5</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">vi</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">6</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">vii</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/Operation.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/rmi/server">Operation</span></a><span style="color:#ff0000;" title="java/java/class_name">Node</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">Operators</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">7</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">operation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">viii</span><span style="color:#008000;" title="java/java/symbol">;</span>

				<span style="color:#993333;" title="java/java/dtype">float</span> <span style="color:#000000;" title="java/java/variable">calculation</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">ProblemTree</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">calculate</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">calculation</span> <span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">1900</span> <span style="color:#008000;" title="java/java/symbol">&amp;</span><span style="color:#008000;" title="java/java/symbol">&amp;</span> <span style="color:#000000;" title="java/java/variable">calculation</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">2100</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/generic_type">calculationInteger</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">calculation</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">if</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">calculation</span> <span style="color:#008000;" title="java/java/symbol">-</span> <span style="color:#000000;" title="java/java/variable">calculationInteger</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
						<span style="color:#000000;" title="java/java/variable">results</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">put</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Integer</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">calculationInteger</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">ProblemTree</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#008000;" title="java/java/symbol">}</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#000000;" title="java/java/variable">iteration</span> <span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">results</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">201</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#a6a600;" title="java/java/keyword">break</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Output the results for confirmation.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#000000;" title="java/java/variable">key</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">results</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">keySet</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">toArray</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#000000;" title="java/java/static_class">s</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">sort</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">key</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span> 
		
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span> <span style="color:#000000;" title="java/java/variable">FinalResults</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/reflect">Array</span></a><span style="color:#ff0000;" title="java/java/class_name">List</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">for</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">i</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">i</span> <span style="color:#008000;" title="java/java/symbol">&lt;</span> <span style="color:#000000;" title="java/java/variable">key</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">length</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#000000;" title="java/java/variable">FinalResults</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">{</span><span style="color:#000000;" title="java/java/variable">key</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">results</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">key</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">for</span> <span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">i</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">&lt;</span> <span style="color:#000000;" title="java/java/variable">FinalResults</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">size</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span> <span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a> <span style="color:#000000;" title="java/java/variable">O</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">FinalResults</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">i</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">O</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> = </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">O</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		

		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Object</span></a><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span> <span style="color:#000000;" title="java/java/variable">data</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#000000;" title="java/java/variable">results</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">values</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">toArray</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Result Size = </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span> <span style="color:#008000;" title="java/java/symbol">+</span> <span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">length</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
	
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Testing main.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#00ff00;" title="java/java/static">main</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">args</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#ff0000;" title="java/java/class_name">ZachProblem</span> <span style="color:#000000;" title="java/java/variable">MyProblem</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">ZachProblem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
<span style="color:#008000;" title="java/java/symbol">}</span>

  


</pre></div><br /><b>The Solution:</b><br /><br />(1.0+(2.0*(3.0*4.0)))*((((5.0+6.0)*7.0)+8.0)-9.0) = 1900<br />(1.0*2.0)-(((3.0+4.0)-(((5.0*6.0)*7.0)+8.0))*9.0) = 1901<br />(1.0+2.0)-(((3.0+4.0)-(((5.0*6.0)*7.0)+8.0))*9.0) = 1902<br />((((1.0+2.0)/3.0)+((4.0+(5.0*6.0))*7.0))*8.0)-9.0 = 1903<br />(((((1.0+(2.0+3.0))-4.0)*5.0)+6.0)*7.0)*(8.0+9.0) = 1904<br />((1.0*2.0)*(3.0*(4.0*5.0)))*((6.0+(7.0/8.0))+9.0) = 1905<br />(1.0*2.0)*(((3.0*4.0)+5.0)+((6.0+7.0)*(8.0*9.0))) = 1906<br />(((((1.0*(2.0+3.0))+4.0)*5.0)*6.0)*7.0)+(8.0+9.0) = 1907<br />((1.0/2.0)+((3.0*(4.0+5.0))+(6.0-7.0)))*(8.0*9.0) = 1908<br />1.0+((2.0*(((3.0*(4.0+5.0))*6.0)-(7.0*8.0)))*9.0) = 1909<br />(1.0-2.0)*(3.0-(((4.0+(5.0*6.0))*(7.0*8.0))+9.0)) = 1910<br />(1.0+2.0)*((3.0*4.0)+(((5.0+6.0)*(7.0*8.0))+9.0)) = 1911<br />((1.0-2.0)-3.0)*(((4.0*5.0)+6.0)-((7.0*8.0)*9.0)) = 1912<br />(1.0/2.0)+(3.0/((4.0/5.0)/(6.0+((7.0*8.0)*9.0)))) = 1913<br />1.0+((2.0*(((3.0+(4.0*5.0))-6.0)*(7.0*8.0)))+9.0) = 1914<br />((1.0*2.0)*((3.0+(4.0*5.0))*(6.0*7.0)))-(8.0+9.0) = 1915<br />((1.0+2.0)+3.0)*(4.0*(((5.0/6.0)+7.0)+(8.0*9.0))) = 1916<br />((1.0+2.0)*3.0)*(4.0+(((5.0*6.0)*7.0)+(8.0-9.0))) = 1917<br />((1.0+2.0)*3.0)*(4.0+(((5.0*6.0)*7.0)-(8.0/9.0))) = 1918<br />(1.0*2.0)+(3.0*((4.0+5.0)*(6.0+((7.0*8.0)+9.0)))) = 1919<br />((1.0*2.0)*((3.0/(4.0+5.0))+(6.0+7.0)))*(8.0*9.0) = 1920<br />(((((1.0+(2.0-3.0))+4.0)*5.0)*6.0)-7.0)*(8.0+9.0) = 1921<br />((1.0+2.0)/3.0)+(((4.0*(5.0*6.0))-7.0)*(8.0+9.0)) = 1922<br />1.0*(((2.0+((3.0/4.0)*5.0))*(6.0*(7.0*8.0)))-9.0) = 1923<br />1.0+(((2.0+((3.0/4.0)*5.0))*(6.0*(7.0*8.0)))-9.0) = 1924<br />(1.0-(2.0-(3.0*4.0)))*((((5.0*6.0)-7.0)*8.0)-9.0) = 1925<br />((1.0-2.0)-((3.0/4.0)*(5.0-(6.0*7.0))))*(8.0*9.0) = 1926<br />(((1.0-2.0)+(3.0*4.0))+(5.0*6.0))*((7.0*8.0)-9.0) = 1927<br />(1.0*2.0)+(((3.0*4.0)+(((5.0*6.0)*7.0)-8.0))*9.0) = 1928<br />(1.0+2.0)+(((3.0*4.0)+(((5.0*6.0)*7.0)-8.0))*9.0) = 1929<br />(1.0+(2.0+(3.0+4.0)))*((((5.0*6.0)*7.0)-8.0)-9.0) = 1930<br />((1.0*2.0)*((3.0+(4.0*5.0))*(6.0*7.0)))+(8.0-9.0) = 1931<br />((1.0/2.0)+3.0)*(4.0*(((5.0*6.0)*7.0)-(8.0*9.0))) = 1932<br />((1.0*2.0)*((3.0+(4.0*5.0))*(6.0*7.0)))-(8.0-9.0) = 1933<br />((1.0+2.0)*3.0)*(4.0+(((5.0*6.0)*7.0)+(8.0/9.0))) = 1934<br />((1.0+2.0)*3.0)*(4.0+(((5.0*6.0)*7.0)-(8.0-9.0))) = 1935<br />(1.0+(2.0*((3.0*4.0)*5.0)))*((6.0-7.0)+(8.0+9.0)) = 1936<br />(1.0-2.0)+(((3.0*4.0)+5.0)*((6.0*7.0)+(8.0*9.0))) = 1937<br />(1.0+(2.0+3.0))*(((4.0*5.0)+(6.0-7.0))*(8.0+9.0)) = 1938<br />(1.0-(2.0*(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1939<br />(1.0*2.0)+(((3.0*4.0)+5.0)*((6.0*7.0)+(8.0*9.0))) = 1940<br />1.0*(((2.0+((3.0/4.0)*5.0))*(6.0*(7.0*8.0)))+9.0) = 1941<br />1.0+(((2.0+((3.0/4.0)*5.0))*(6.0*(7.0*8.0)))+9.0) = 1942<br />(1.0-2.0)+(3.0*((4.0/5.0)*(6.0*((7.0+8.0)*9.0)))) = 1943<br />((1.0+2.0)+((3.0+(4.0*5.0))-(6.0-7.0)))*(8.0*9.0) = 1944<br />1.0-(((2.0*((3.0*4.0)*5.0))-(6.0*(7.0*8.0)))*9.0) = 1945<br />(1.0*2.0)+(3.0*((4.0/5.0)*(6.0*((7.0+8.0)*9.0)))) = 1946<br />(1.0-(2.0*((3.0*4.0)+5.0)))*((6.0+7.0)-(8.0*9.0)) = 1947<br />(1.0-((2.0-3.0)+4.0))+((5.0*6.0)*((7.0*8.0)+9.0)) = 1948<br />((1.0*2.0)*((3.0+(4.0*5.0))*(6.0*7.0)))+(8.0+9.0) = 1949<br />(1.0+(2.0*(3.0*4.0)))*((((5.0+6.0)*7.0)-8.0)+9.0) = 1950<br />(((1.0*((2.0*3.0)*4.0))+(5.0+6.0))*(7.0*8.0))-9.0 = 1951<br />(1.0*(2.0-(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1952<br />1.0/(((2.0/((3.0*4.0)-5.0))/(6.0+(7.0*8.0)))/9.0) = 1953<br />(1.0-(2.0+(3.0+4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1954<br />(1.0*2.0)+((3.0+4.0)*(((5.0*6.0)-(7.0-8.0))*9.0)) = 1955<br />(1.0-(2.0+3.0))*((4.0+(5.0+6.0))-((7.0*8.0)*9.0)) = 1956<br />(1.0*(2.0-(3.0+4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1957<br />(1.0+(2.0-(3.0+4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1958<br />((1.0+2.0)+((3.0+(4.0*5.0))/(6.0/(7.0*8.0))))*9.0 = 1959<br />(1.0-(2.0-(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1960<br />(1.0+(2.0/(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1961<br />(1.0-(2.0+(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1962<br />(1.0/(2.0+(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1963<br />(1.0+(2.0+(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1964<br />(1.0-(2.0/(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1965<br />(1.0+(2.0-(3.0-4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1966<br />(1.0-((2.0-3.0)*4.0))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1967<br />((1.0/2.0)+((3.0+(4.0*5.0))/(6.0/7.0)))*(8.0*9.0) = 1968<br />((1.0+(2.0*3.0))+4.0)*((5.0*((6.0*7.0)-8.0))+9.0) = 1969<br />(1.0-2.0)-(((3.0-4.0)-(((5.0*6.0)*7.0)+8.0))*9.0) = 1970<br />(1.0*(2.0+(3.0+4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1971<br />(1.0+(2.0+(3.0+4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1972<br />(1.0-(2.0-(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1973<br />(((1.0/2.0)+(3.0+(4.0*5.0)))/(6.0/(7.0*8.0)))*9.0 = 1974<br />((((1.0+2.0)*(3.0*4.0))-5.0)-6.0)*(7.0+(8.0*9.0)) = 1975<br />(1.0*(2.0+(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1976<br />(1.0+(2.0+(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1977<br />(1.0+(((2.0+3.0)+4.0)*5.0))*((6.0*7.0)-(8.0-9.0)) = 1978<br />((1.0*2.0)-3.0)+((4.0*5.0)*((6.0*(7.0+8.0))+9.0)) = 1979<br />((1.0/2.0)-((3.0*(4.0+5.0))/(6.0-7.0)))*(8.0*9.0) = 1980<br />1.0-(((2.0+((3.0*4.0)/5.0))*(6.0-(7.0*8.0)))*9.0) = 1981<br />((1.0-2.0)+3.0)+((4.0*5.0)*((6.0*(7.0+8.0))+9.0)) = 1982<br />((1.0+2.0)*(((3.0/4.0)+(5.0+6.0))*(7.0*8.0)))+9.0 = 1983<br />(1.0-(2.0*3.0))+(((4.0+5.0)*(6.0+7.0))*(8.0+9.0)) = 1984<br />(1.0-(2.0+3.0))+(((4.0+5.0)*(6.0+7.0))*(8.0+9.0)) = 1985<br />(1.0*(2.0*(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1986<br />(1.0+(2.0*(3.0*4.0)))+((((5.0*6.0)*7.0)+8.0)*9.0) = 1987<br />((1.0/2.0)+3.0)*(4.0+(((5.0/6.0)+7.0)*(8.0*9.0))) = 1988<br />((1.0+2.0)/((3.0/(4.0+5.0))/(6.0+7.0)))*(8.0+9.0) = 1989<br />1.0+((2.0*(((3.0*(4.0*5.0))+6.0)*(7.0+8.0)))+9.0) = 1990<br />(1.0-(2.0-3.0))+(((4.0+5.0)*(6.0+7.0))*(8.0+9.0)) = 1991<br />(1.0*2.0)*(((3.0*4.0)*5.0)+((6.0+7.0)*(8.0*9.0))) = 1992<br />1.0+((2.0*3.0)-(4.0*(((5.0/6.0)-(7.0*8.0))*9.0))) = 1993<br />(1.0*(2.0+3.0))+(((4.0+5.0)*(6.0+7.0))*(8.0+9.0)) = 1994<br />(1.0*(2.0+(3.0*4.0)))*((((5.0/6.0)+7.0)+8.0)*9.0) = 1995<br />(1.0-(2.0+3.0))*((4.0-(5.0-6.0))-((7.0*8.0)*9.0)) = 1996<br />(1.0-2.0)+(((3.0/4.0)*(((5.0*6.0)+7.0)*8.0))*9.0) = 1997<br />(((1.0+(2.0/3.0))+(4.0/5.0))*6.0)*((7.0+8.0)*9.0) = 1998<br />1.0-(((2.0+((3.0+4.0)*5.0))*(6.0/(7.0-8.0)))*9.0) = 1999<br />((1.0-2.0)-3.0)*(4.0+(((5.0-6.0)*7.0)*(8.0*9.0))) = 2000<br />(1.0+2.0)+(((3.0/4.0)*(((5.0*6.0)+7.0)*8.0))*9.0) = 2001<br />(1.0+(2.0*3.0))*((4.0+((5.0*6.0)*7.0))+(8.0*9.0)) = 2002<br />(1.0*(2.0+3.0))+((4.0+((5.0*(6.0*7.0))+8.0))*9.0) = 2003<br />((1.0*2.0)*((3.0+(4.0*5.0))*(6.0*7.0)))+(8.0*9.0) = 2004<br />1.0+(((2.0/3.0)+((4.0+(5.0*(6.0*7.0)))+8.0))*9.0) = 2005<br />((1.0*2.0)*((3.0*(4.0*5.0))+(6.0-7.0)))*(8.0+9.0) = 2006<br />1.0*(((2.0+((3.0-4.0)+5.0))*(6.0*(7.0*8.0)))-9.0) = 2007<br />1.0+(((2.0+((3.0-4.0)+5.0))*(6.0*(7.0*8.0)))-9.0) = 2008<br />1.0*((2.0-(((3.0-(4.0+5.0))*6.0)*(7.0*8.0)))-9.0) = 2009<br />((1.0-2.0)-3.0)*(((4.0+5.0)/6.0)-((7.0*8.0)*9.0)) = 2010<br />(1.0-(2.0*3.0))-((4.0/(5.0-6.0))*((7.0*8.0)*9.0)) = 2011<br />(1.0-(2.0+3.0))-((4.0/(5.0-6.0))*((7.0*8.0)*9.0)) = 2012<br />((1.0-2.0)*3.0)-(4.0*(((5.0-6.0)*7.0)*(8.0*9.0))) = 2013<br />((1.0+2.0)+((3.0+4.0)*5.0))*((6.0+(7.0*8.0))-9.0) = 2014<br />(((1.0*(2.0+3.0))+(4.0*5.0))+6.0)*((7.0*8.0)+9.0) = 2015<br />1.0*(((2.0*((3.0+4.0)+5.0))/(6.0/(7.0*8.0)))*9.0) = 2016<br />1.0+(((2.0*((3.0+4.0)+5.0))/(6.0/(7.0*8.0)))*9.0) = 2017<br />(1.0-(2.0-3.0))-((4.0/(5.0-6.0))*((7.0*8.0)*9.0)) = 2018<br />(1.0+2.0)+(((3.0+4.0)*(((5.0+6.0)-7.0)*8.0))*9.0) = 2019<br />(1.0-(2.0*3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2020<br />(1.0*(2.0+3.0))-((4.0/(5.0-6.0))*((7.0*8.0)*9.0)) = 2021<br />(1.0+(2.0+3.0))-((4.0/(5.0-6.0))*((7.0*8.0)*9.0)) = 2022<br />(1.0-(2.0*((3.0*4.0)*5.0)))/((6.0-7.0)/(8.0+9.0)) = 2023<br />(1.0/(2.0-3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2024<br />1.0*(((2.0+((3.0-4.0)+5.0))*(6.0*(7.0*8.0)))+9.0) = 2025<br />1.0+(((2.0+((3.0-4.0)+5.0))*(6.0*(7.0*8.0)))+9.0) = 2026<br />(1.0-(2.0-3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2027<br />(((((1.0+(2.0+3.0))+4.0)*5.0)*6.0)*7.0)-(8.0*9.0) = 2028<br />1.0-(((2.0-(3.0*4.0))*((5.0*6.0)*7.0))+(8.0*9.0)) = 2029<br />(1.0*(2.0+3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2030<br />(1.0+(2.0+3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2031<br />(1.0+(2.0*3.0))+((4.0+(5.0+6.0))*((7.0+8.0)*9.0)) = 2032<br />((1.0-((2.0*3.0)/(((4.0-5.0)/6.0)/7.0)))*8.0)+9.0 = 2033<br />((1.0/2.0)-((3.0/4.0)*(5.0-(6.0*7.0))))*(8.0*9.0) = 2034<br />1.0+((2.0+(3.0+4.0))*(5.0+((6.0+7.0)*(8.0+9.0)))) = 2035<br />((1.0-2.0)-3.0)*(4.0+((5.0-(6.0+(7.0*8.0)))*9.0)) = 2036<br />(1.0+(2.0*3.0))*((4.0*((5.0+6.0)*7.0))-(8.0+9.0)) = 2037<br />1.0-(((2.0-((3.0+4.0)*5.0))*(6.0+(7.0*8.0)))+9.0) = 2038<br />(1.0-2.0)+(((3.0-4.0)+5.0)*(6.0+(7.0*(8.0*9.0)))) = 2039<br />((1.0+2.0)*((3.0*(4.0+5.0))+(6.0+7.0)))*(8.0+9.0) = 2040<br />1.0-((2.0*(3.0*4.0))*(5.0/((6.0-7.0)/(8.0+9.0)))) = 2041<br />(1.0*2.0)+(((3.0-4.0)+5.0)*(6.0+(7.0*(8.0*9.0)))) = 2042<br />(1.0*(2.0+(3.0+4.0)))*((((5.0*6.0)*7.0)+8.0)+9.0) = 2043<br />(1.0-(2.0+3.0))*((4.0-(5.0+6.0))-((7.0*8.0)*9.0)) = 2044<br />1.0*((2.0-3.0)+(4.0*(((5.0/6.0)+(7.0*8.0))*9.0))) = 2045<br />(1.0+2.0)/((3.0/4.0)/(((5.0/6.0)+(7.0*8.0))*9.0)) = 2046<br />1.0-((2.0*3.0)+(4.0*(((5.0-6.0)-(7.0*8.0))*9.0))) = 2047<br />1.0-((2.0-3.0)-(4.0*(((5.0/6.0)+(7.0*8.0))*9.0))) = 2048<br />((1.0+(2.0+3.0))*(4.0*(((5.0+6.0)*7.0)+8.0)))+9.0 = 2049<br />(((1.0+2.0)+(3.0+4.0))*5.0)*((6.0*7.0)+(8.0-9.0)) = 2050<br />1.0-((2.0-(3.0*4.0))*(5.0*((6.0*7.0)+(8.0-9.0)))) = 2051<br />((1.0/2.0)+((3.0*(4.0+5.0))-(6.0-7.0)))*(8.0*9.0) = 2052<br />((1.0*2.0)-3.0)+(((4.0*5.0)+6.0)*(7.0+(8.0*9.0))) = 2053<br />((((1.0+2.0)+(3.0*4.0))+5.0)+6.0)*(7.0+(8.0*9.0)) = 2054<br />((1.0+2.0)+(3.0*4.0))*((5.0*(6.0+7.0))+(8.0*9.0)) = 2055<br />1.0-(((2.0-((3.0+4.0)*5.0))*(6.0+(7.0*8.0)))-9.0) = 2056<br />(((((1.0+(2.0+3.0))*4.0)*5.0)-6.0)+7.0)*(8.0+9.0) = 2057<br />(1.0*2.0)*(((3.0*4.0)*(((5.0+6.0)*7.0)+8.0))+9.0) = 2058<br />((1.0*2.0)+(3.0*(4.0+5.0)))*((6.0+(7.0*8.0))+9.0) = 2059<br />1.0-((2.0-(((3.0+(4.0*5.0))*6.0)*(7.0+8.0)))+9.0) = 2060<br />((1.0*(2.0+3.0))-(4.0*(((5.0-6.0)*7.0)*8.0)))*9.0 = 2061<br />(1.0-2.0)+(((3.0+4.0)*(((5.0*6.0)+7.0)*8.0))-9.0) = 2062<br />(1.0-(2.0*3.0))+((4.0*(5.0+6.0))*((7.0*8.0)-9.0)) = 2063<br />(1.0-(2.0+3.0))+((4.0*(5.0+6.0))*((7.0*8.0)-9.0)) = 2064<br />(1.0+(2.0*((3.0*4.0)+5.0)))*((6.0*7.0)+(8.0+9.0)) = 2065<br />(1.0+2.0)+(((3.0+4.0)*(((5.0*6.0)+7.0)*8.0))-9.0) = 2066<br />(1.0/(2.0-3.0))+((4.0*(5.0+6.0))*((7.0*8.0)-9.0)) = 2067<br />(1.0+(2.0/(3.0/4.0)))*((((5.0/6.0)+7.0)*8.0)*9.0) = 2068<br />(1.0-2.0)+(((3.0*4.0)+(((5.0*6.0)*7.0)+8.0))*9.0) = 2069<br />(1.0*(2.0-(3.0/4.0)))*((((5.0*6.0)-7.0)*8.0)*9.0) = 2070<br />1.0+(((2.0-(3.0/4.0))*((5.0*6.0)-7.0))*(8.0*9.0)) = 2071<br />(1.0*2.0)+(((3.0*4.0)+(((5.0*6.0)*7.0)+8.0))*9.0) = 2072<br />(1.0*(2.0+3.0))+((4.0*(5.0+6.0))*((7.0*8.0)-9.0)) = 2073<br />((1.0*2.0)*((3.0*(4.0*5.0))-(6.0-7.0)))*(8.0+9.0) = 2074<br />(1.0+(2.0*3.0))+((4.0*(5.0+6.0))*((7.0*8.0)-9.0)) = 2075<br />((1.0*2.0)+((3.0+(4.0*5.0))/(6.0/7.0)))*(8.0*9.0) = 2076<br />1.0+(((2.0+3.0)+((4.0*(5.0*(6.0+7.0)))*8.0))-9.0) = 2077<br />1.0-((2.0-(((3.0+(4.0*5.0))*6.0)*(7.0+8.0)))-9.0) = 2078<br />(1.0*(2.0*(3.0*4.0)))*((((5.0+6.0)*7.0)/8.0)*9.0) = 2079<br />1.0-(((2.0-((3.0+4.0)*5.0))*(6.0-(7.0-8.0)))*9.0) = 2080<br />1.0*((2.0+(((3.0+(4.0*5.0))*6.0)*(7.0+8.0)))+9.0) = 2081<br />1.0+((2.0+(((3.0+(4.0*5.0))*6.0)*(7.0+8.0)))+9.0) = 2082<br />(((((1.0+(2.0+3.0))+4.0)*5.0)*6.0)*7.0)-(8.0+9.0) = 2083<br />(1.0+2.0)+(((3.0+4.0)*(((5.0*6.0)+7.0)*8.0))+9.0) = 2084<br />1.0-(((2.0+3.0)-((4.0*(5.0*(6.0+7.0)))*8.0))-9.0) = 2085<br />((1.0/2.0)+3.0)*(4.0*(((5.0+6.0)*7.0)+(8.0*9.0))) = 2086<br />(1.0-2.0)+((3.0*4.0)*(((5.0+6.0)*(7.0+8.0))+9.0)) = 2087<br />((1.0*2.0)-((3.0*(4.0+5.0))/(6.0-7.0)))*(8.0*9.0) = 2088<br />1.0+((2.0-(3.0*((4.0+5.0)/(6.0-7.0))))*(8.0*9.0)) = 2089<br />(1.0+(2.0+(3.0+4.0)))*((((5.0*6.0)*7.0)+8.0)-9.0) = 2090<br />1.0*(((2.0-((3.0/4.0)-5.0))*(6.0*(7.0*8.0)))-9.0) = 2091<br />1.0+(((2.0-((3.0/4.0)-5.0))*(6.0*(7.0*8.0)))-9.0) = 2092<br />(1.0-((((2.0*3.0)+4.0)*5.0)*6.0))*(7.0/(8.0-9.0)) = 2093<br />1.0*(((2.0+3.0)+((4.0*(5.0*(6.0+7.0)))*8.0))+9.0) = 2094<br />((1.0/2.0)-((3.0+4.0)*(5.0*6.0)))*((7.0-8.0)-9.0) = 2095<br />1.0+(((2.0*3.0)+((4.0*(5.0*(6.0+7.0)))*8.0))+9.0) = 2096<br />((1.0/2.0)+((3.0/(4.0/5.0))*(6.0+(7.0*8.0))))*9.0 = 2097<br />(((1.0+2.0)*3.0)+(((4.0*5.0)*(6.0+7.0))*8.0))+9.0 = 2098<br />1.0*(((2.0*((3.0*4.0)+5.0))*(6.0+(7.0*8.0)))-9.0) = 2099<br />1.0+(((2.0*((3.0*4.0)+5.0))*(6.0+(7.0*8.0)))-9.0) = 2100<br /><br />My friend Justin&#039;s <a href="http://giancola.posterous.com/" target="_blank" >blog</a> has a post explaining his approach to this problem.<br /><br />-------------------------------<br />Benjamin E. Coe<br />Programming Guy]]></description>
			<category>Programming</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry100109-180757</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 10 Jan 2010 00:07:57 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=10&amp;m=01&amp;entry=entry100109-180757</comments>
		</item>
		<item>
			<title>2009, The Year of Ben.</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry091220-174026</link>
			<description><![CDATA[	2009 has been an insanely awesome year for me, so I thought I&#039;d summarize it in a bit of a blog post for friends, family, and stalkers.<br /><br /><b>My Thesis</b><br /><br />	I finished my thesis this year. It&#039;s basically a massive Java application designed to read someone&#039;s writing and judge how they feel about various named entities in a film review, e.g., actors, directors, the film itself. I was comparing my approach against other papers that attempt to apply a thumbs-up, or thumbs-down rating to a given film review, using only its language.<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/thesis.jpg',735,325,false);"><img src="http://www.benjamincoe.com/blog/images/thesis.jpg" width="300" height="133" border="0" alt="" /></a><br /><br />That diagram shows how the various pieces of my thesis fit together. As I said though, it&#039;s probably best described as a big honking Java application. Here&#039;s a graph of the film &quot;The Mod Squad&quot;, as analyzed by my program:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/modsquad.jpg',998,385,false);"><img src="http://www.benjamincoe.com/blog/images/modsquad.jpg" width="400" height="154" border="0" alt="" /></a><br /><br /><b>My Job</b><br /><br />	In September I started work at <a href="http://www.freshbooks.com" target="_blank" >FreshBooks</a>, &quot;The Leader in Online Invoicing&quot;. <br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/freshbooks.png',610,564,false);"><img src="http://www.benjamincoe.com/blog/images/freshbooks.png" width="400" height="370" border="0" alt="" /></a><br /><br />It is pretty much my dream job,  a-hip-young-startup-environment -- fringe benefits include, foosball, free beer, and semi-monthly cakes. Making the transition from Java/C++/C# development, to more PHP and Python development has certainly been a change, but it has been helped along by working with a lot of really great coders. I&#039;m really starting to improve upon some skills that I have frequently wished I was better at, e.g., Unix sys-admin licks, working with legacy code, modern Javascript techniques.<br /><br /><b>My Hobbies</b>	<br /><br />My two main hobbies are music and climbing; 2009 has been a great year for both. <br /><br />I got to see the <a href="http://tinyurl.com/ydjmrp7" target="_blank">pixies</a> in August, which was a dream come true. I saw countless other bands at various bars and venues throughout the year, but Virgin Festival was definitely the high-point.<br /><br />As for hobby #2, I went climbing in <a href="http://tinyurl.com/ykpg3wh"        
 target="_blank">Squamish</a>, which was absolutely beautiful, and built a <a href="http://tinyurl.com/yl7mkfs" target="_blank">DIY climbing wall</a> which has been great for training. Also on the climbing front, I&#039;ve been going to <a href="http://www.joerockheads.com/joerockheadsflash.html"
 target="_blank">Joe Rockhead's</a> in Toronto. It&#039;s a great climbing gym -- and their problems seem to keep me in my place.<br /><br /><b>My Game</b>	<br /><br />If you haven&#039;t seen <a href="http://www.hackwars.net" target="_blank" >my game HackWars</a>, geez, what&#039;s wrong with you? 2009 has been the year of open source, with the help of some of our great players we have rolled out more updates for HackWars in the last few months than I think any previous year. It has been really exciting to watch. My role in the game has been significantly different than it used to be, I provide a bit of coding help on the weekends, but we have been leaving a lot of the conceptual steering of the game to our awesome player base.<br /><br /><b>My House</b><br /><br />	I bought a <a href="http://tinyurl.com/ye7aytk" target="_blank">condo</a> this year in what is, I assume affectionately, referred to by other Torontonians as Scarberia (Scarborough, Ontario). I&#039;m right on the subway line and, being a relatively new citizen of Toronto, have been taking in the various sights, sounds, and yes, smells throughout the city.<br /><br /><b>The World of Tomorrow</b><br /><br />2009 has been a great year for me, and I&#039;m looking forward to continuing to kick butt in 2010. So all I can say to you 2010 is bring it on, I&#039;m ready for you.<br />------------------------------<br />Benjamin E. Coe<br />Excited that his 7 year plan has worked out so successfully.<br />]]></description>
			<category>General</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry091220-174026</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 20 Dec 2009 23:40:26 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=12&amp;entry=entry091220-174026</comments>
		</item>
		<item>
			<title>McKenzie Music</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry091012-193155</link>
			<description><![CDATA[I just finished putting together the website <a href="http://www.mckenziemusic.net/albums.php" target="_blank" >McKenzieMusic.net</a>, for friend-of-a-friend, Stephen McKenzie. Putting together a band website was a fun experience, and it gave me a lot of media to work with, e.g., cover-art.<br /><br /><img src="http://www.benjamincoe.com/blog/images/coverFront.jpg" width="335" height="334" border="0" alt="" /><br /><br />Checkout the site, and give Steve&#039;s music a listen -- Steve is a great guy, and I hope this site gets him the exposure he&#039;s looking for.<br /><br />- Ben.]]></description>
			<category>Music</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry091012-193155</guid>
			<author>Benjamin Coe</author>
			<pubDate>Tue, 13 Oct 2009 00:31:55 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=10&amp;entry=entry091012-193155</comments>
		</item>
		<item>
			<title>The Pixies at Virgin Festival</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090829-222739</link>
			<description><![CDATA[The Pixies are by far one of my favorite bands. I got to see them live today at Virgin Festival, and they did not disappoint. It helped that I had ridiculously good seats. Virgin Festival Ontario this year started out as an outdoor venue and got moved to the Molson Amphitheater. Those of us who bought the initial tickets got upgraded to the best seats in the place; my wife and I were in the 5th row. Here&#039;s the view:<br /><br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/pixies1.jpg',336,248,false);"><img src="http://www.benjamincoe.com/blog/images/pixies1.jpg" width="300" height="221" border="0" alt="" /></a><br /><br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/pixies2.jpg',528,400,false);"><img src="http://www.benjamincoe.com/blog/images/pixies2.jpg" width="300" height="227" border="0" alt="" /></a><br /><br />The set included your obligatory tracks from Rockband (&#039;This Monkey&#039;s Gone to Heaven&#039;, &#039;Debaser&#039;, &#039;Wave of Mutilation&#039;). Other songs in their set included:<br />
<ul>
<li>Hey</li>
<li>Here Comes Your Man</li>
<li>Tame</li>
<li>Dig for Fire</li>
<li>Gauge Away</li>
<li>Where is My Mind</li>
</ul>
<br />It was a great experience hearing all these songs live, and in the amphitheater it sounded wonderful -- having originally planned for an outdoor concert, I didn&#039;t expect killer acoustics. &#039;Where is My Mind&#039; was particularly spectacular.<br /><br />I would have loved to have heard &#039;The Happening&#039; live:<br /><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/CWNm1ZF8wwg&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CWNm1ZF8wwg&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
<br /><br />Which they didn&#039;t play, but with a catalog as big as the Pixies&#039;, this can&#039;t really be a complaint. It was a great band, doing a great concert, in a venue with great acoustics. Everyone was begging for more at the end, I feel kind of sorry for Ben Harper and Relentless7.<br /><br />----------------<br />Ben  ]]></description>
			<category>Music</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090829-222739</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 30 Aug 2009 03:27:39 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090829-222739</comments>
		</item>
		<item>
			<title>My DIY Climbing Wall</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090818-151851</link>
			<description><![CDATA[Those of you voyeuristic enough to have read my post regarding my new condo may have noticed the large climbing wall shaped object in the spare bedroom. To help in training for my climbing addiction, it was my intention to dedicate the spare bedroom to being my office/personal bouldering room. <br /><br />Having not performed the act of carpentry since building forts around the age of thirteen, building the wall was somewhat of an exciting experience. Building things, however, was noticeably easier with good materials (rather than pinched scrap wood).<br /><br />Here&#039;s some photos showing off my climbing wall:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/wall3.jpg',604,453,false);"><img src="http://www.benjamincoe.com/blog/images/wall3.jpg" width="350" height="263" border="0" alt="" /></a><br />Here I am observing my handy-work, I&#039;ve yet to have put any weight on the wall.<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/wall1.jpg',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/wall1.jpg" width="350" height="263" border="0" alt="" /></a><br />Here I am contemplating putting a hold on the wall. Climbing holds are attached from bolts on the front into T-Nuts hammered into the back of the plywood.<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/wall2.jpg',604,453,false);"><img src="http://www.benjamincoe.com/blog/images/wall2.jpg" width="350" height="263" border="0" alt="" /></a><br />Here my climbing wall is pictured successfully holding my weight (although I would still like to put in a few more load-bearing features).<br /><br />
<h2>Some Things I Learned</h2>
<ul>
<li>Climbing holds are freaking expensive (I already kind of knew this.)</li>
<li>A simpler design is best, especially if you are a relatively inexperienced carpenter.</i>
<li>It's hard to find the bolts need for climbing holds.</li> 
</ul>
<br /><br />So there you have it, I&#039;m sure I&#039;ll post some more pictures in the future when I actually have some more problems up on my wall.<br /><br />-------------------<br />Benjamin E. Coe<br />Carpenter-Apparently<br /><br />]]></description>
			<category>Climbing</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090818-151851</guid>
			<author>Benjamin Coe</author>
			<pubDate>Tue, 18 Aug 2009 20:18:51 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090818-151851</comments>
		</item>
		<item>
			<title>Building a Sweet Forking Server in Java</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090816-140205</link>
			<description><![CDATA[I was talking to some of the players of <a href="http://www.hackwars.net" target="_blank" >HackWars</a>, trying to decide what a good topic for the next tutorial on my blog would be. An interest was expressed in how the underpinnings of the server I built for the HackWars MMO work.<br /><br />I decided that this sounded like a good topic, but that there was too much application specific code in HackWars, and that copying and pasting it would be a waste of time. So, I&#039;ve put together this much smaller example that uses a similar architecture. Some changes include:<br /><br />
<ul>
<li>The original server sends objects over the socket rather than raw data, this is easy since you read/write to sockets in Java using Input and Output Streams. These can be cast to ObjectInput and ObjectOutput streams.</li>
<li>
While the basic threading infrastructure is in place, for the example given it's not used as much as it could be, e.g., each process spawned only performs one task.
</li>
<li>
In HackWars a separate connection is used four inbound and outbound data.
</li>
</ul>
<br /><br />Without further ado, here&#039;s annotated code for this tutorial.<br /><br />
<h2>ServerThreadListener.java</h2>
<br />This class listens for inbound connections from clients and spawns off new threads to process them.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

<span style="color:#a6a600;" title="java/java/keyword">package</span> <span style="color:#000000;" title="java/java/package">ForkingServer</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">net</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">io</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">util</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">ArrayList</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
This is an implementation of a simple forking server used for accpeting incomming files
for the file bckup system.
*/</span>
<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#ff0000;" title="java/java/class_name">ServerThreadListener</span> <span style="color:#a6a600;" title="java/java/keyword">implements</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Runnable</span></a><span style="color:#008000;" title="java/java/symbol">{</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Data.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Thread</span></a> <span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The thread that will listen for client connections.</span>

	
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">ServerSocket</span></a> <span style="color:#000000;" title="java/java/variable">SReceive</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The server socket.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">receiveSocket</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">8880</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The port to listen on.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">inSocketTimeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">150000</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Wait time before we throw a socket exception.</span>
	
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">timeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">180000</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Timeout that will be sent to new server threads.	</span>

</pre></div><br />For starters, note that this class implements runnable. Runnable is an interface implemented by classes that we want to perform threading. The interface simply requires the implementation of the function <i>run()</i>, this will be the main entry point of the thread. The variable <i>t</i> is the thread object that will be initialized with this runnable class. The variable <i>SReceive</i> is the server socket that will listen for inbound connections, on the port <i>8880</i>. The functionality of the two timeout variables (<i>inSocketTimeout</i> and <i>timeOut</i>) will be discussed in a bit.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">////////////////</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Constuctors.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#000000;" title="java/java/method">ServerThreadListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create the socket that will listen for inbound connections.</span>
			<span style="color:#000000;" title="java/java/variable">SReceive</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">ServerSocket</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">receiveSocket</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setSoTimeout</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">inSocketTimeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">printStackTrace</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Initialize the server thread.</span>
		<span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Thread</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">start</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />In the constructor we do three main things:<br />
<ol>
<li>Create a server socket and listen on a port.</li>
<li>Set the socket timeout. This will cause an exception to be thrown when a connection is idle for too long. This is important, because if something weird happens we don't want the whole server to hang permanently.
<li>
Finally we create a new thread initialized with this runnable object and start it up.
</li>
</ol>
<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/** The run method listens for a connection on the Send and Receive ports. */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">run</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Check for a client to pass data to.</span>
			<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>

				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">Socket</span></a> <span style="color:#000000;" title="java/java/variable">temp</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/static_class">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">accept</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Accept a new connection.</span>
				
				<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create a new threaded server from the connection accepted.</span>
				<span style="color:#ff0000;" title="java/java/class_name">ServerThread</span> <span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">ServerThread</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">temp</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">init</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">inSocketTimeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setTimeOut</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">timeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">execute</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Forking off new client connection.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Thread</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">sleep</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#1111ee;" title="java/java/num/int">10</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Always sleep in threads!</span>
			<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />Within the <i>run()</i> function is the code executed from a separate thread. Note that we simply loop permanently within this thread performing the same two operations:<br />
<ol>
<li>We accept new connections on the Server Socket.</li>
<li>We create and initialize a new instance of the <i>ServerThread</i> class to handle these new connections.
</ol>
<br />Note that we perform these steps within a <i>try</i>-<i>catch</i> block. This means that, in the situation that the code hangs on <i>accept()</i> and the timeout exception is thrown, the server simply goes back to step 1.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Testing main.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#00ff00;" title="java/java/static">main</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">args</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#ff0000;" title="java/java/class_name">ServerThreadListener</span> <span style="color:#000000;" title="java/java/variable">STL</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">ServerThreadListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>


</pre></div><br />The <i>main()</i> method simply creates an instance of the class and starts the thread running.<br /><br />
<h2>ServerThread.java</h2>
<br />This class contains the new thread that is forked off from <i>ServerThreadListener.java</i> for each new connection accepted.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

<span style="color:#a6a600;" title="java/java/keyword">package</span> <span style="color:#000000;" title="java/java/package">ForkingServer</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">util</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">net</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">io</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
A simple inbound server thread.
*/</span>

<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#ff0000;" title="java/java/class_name">ServerThread</span> <span style="color:#a6a600;" title="java/java/keyword">implements</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Runnable</span></a><span style="color:#008000;" title="java/java/symbol">{</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Some constants used to keep track of the servers state in this simple example.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">final</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">READ_HEADER</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">final</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">SEND_EQUATION</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">final</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">READ_RESPONSE</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">2</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">final</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">HEADER_LENGTH</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">32</span><span style="color:#008000;" title="java/java/symbol">;</span>
	
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">READ_HEADER</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The initial state.</span>

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Variables used for this server's thread.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#a6a600;" title="java/java/keyword">volatile</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Thread</span></a> <span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">boolean</span> <span style="color:#000000;" title="java/java/variable">run</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">threadSleepTime</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">50</span><span style="color:#008000;" title="java/java/symbol">;</span>

	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">100000</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">When should we force an exception on the socket if no operation has taken place?</span>

	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">Socket</span></a> <span style="color:#000000;" title="java/java/variable">SReceive</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Our socket connection to the client.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/io">InputStream</span></a> <span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Read from client.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/io">OutputStream</span></a> <span style="color:#000000;" title="java/java/variable">out</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Write to client.</span>

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Kill our server thread after a given amount of inactivity from the client.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">long</span> <span style="color:#000000;" title="java/java/variable">timeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">300000</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">About 3 minutes.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#993333;" title="java/java/dtype">long</span> <span style="color:#000000;" title="java/java/variable">timeStamp</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
	
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>

</pre></div><br />The first set of constants in this example are simply used to orchestrate the server/client communication (in the case of HackWars, this process is controlled by a much more complex underlying architecture). Again we have a thread that is initialized within this class and implement runnable. <i>threadSleepTime</i> represents how long the thread will sleep for in each iteration. It is never good to let this run unbounded, because a loop without a sleep will eat up tons of processing power. <i>socketTimeOut</i> is again used by the socket to determine how long it should be allowed to hang before an exception is thrown. <i>timeOut</i>, on the other hand, represents how long we should allow no meaningful operations to take place before we completely kill this thread. The <i>timeStamp</i> variable is used to keep track of this.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/** Initialize the socket.*/</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">init</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Setup our object input stream.</span>
			<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setSoTimeout</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">This function is important because it forces the socket to not permanently hang due to an error.</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Little tweak that can help speed.</span>
			<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setTcpNoDelay</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setKeepAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Get the streams from the socket.</span>
			<span style="color:#000000;" title="java/java/variable">out</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/static_class">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getOutputStream</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/static_class">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getInputStream</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">	e.printStackTrace();</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />The <i>init()</i> method is where the socket input and output streams are actually initialized. In order to allow the parent object (<i>ServerThreadListener</i>) to set several parameters, this is not done within the constructor... a more complex constructor would also suffice. Here&#039;s what&#039;s going on:<br />
<ul>
<li><i>setSoTimeout()</i> again this will cause an exception to be thrown due to too much time spent on a blocking method.
<li><i>setTcpNoDelay()</i> can speedup network traffic somewhat.</li>
<li><i>setKeepAlive()</i> is set in an attempt to stop the connection from dying on some OSes (I don't honestly know if this does much).</li>
<li>Finally, and most importantly, we get a standard Java InputStream and OutputStream from the underlying Socket object. This is what is used to do all our reading and writing.
</ul>
<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">


	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">/////////////////////////</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Getters.</span>
	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 Check the current tick-count and see whether we should keep this connection alive.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">boolean</span> <span style="color:#000000;" title="java/java/method">getAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util">Calendar</span></a> <span style="color:#000000;" title="java/java/variable">time</span> <span style="color:#008000;" title="java/java/symbol">=</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util/static_class">Calendar</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getInstance</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		 <span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">time</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getTimeInMillis</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">-</span><span style="color:#000000;" title="java/java">timeStamp</span><span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#000000;" title="java/java/variable">timeOut</span><span style="color:#008000;" title="java/java/symbol">)</span>
		 	<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">false</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		 <span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">/////////////////////////</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Setters.</span>
	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 How long should the thread sleep in each iteration of the run function?
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">setThreadSleepTime</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">threadSleepTime</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">threadSleepTime</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">threadSleepTime</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 Update the thread's timeout, allowing indicating it is still alive.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">setAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util">Calendar</span></a> <span style="color:#000000;" title="java/java/variable">time</span> <span style="color:#008000;" title="java/java/symbol">=</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/util/static_class">Calendar</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getInstance</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">timeStamp</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">time</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getTimeInMillis</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 How much inactivity before we kill the thread?
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">setTimeOut</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">timeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">timeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">timeOut</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 How much idle time on the socket before we throw an exception.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">setSocketTimeOut</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">socketTimeOut</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>


</pre></div><br />This fairly drab block of code is simply getters and setters, mainly for checking whether timeouts have taken place in the thread.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/** Start the server. */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">execute</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Thread</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">start</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	Helper functions for parsing the various parts of the inbound packet.
	*/</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/method">parseHeader</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">In this example we just parse the user-name out of the header.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">split</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">,</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>


</pre></div><br /><i>execute()</i> is called to start this thread running. <i>parseHeader()</i> is simply a helper function for parsing the header sent from the client.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">/////////////////////////</span>
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment"> Methods.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">run</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>		
	
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Thread</span></a> <span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#000000;" title="java/java">Thread</span> <span style="color:#008000;" title="java/java/symbol">=</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Thread</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">currentThread</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">run</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>
				
				<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Make sure we haven't reached our timeout.</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#000000;" title="java/java/method">getAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Killing connection.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/method">kill</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Read the header from the client and parse their id.</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java">READ_HEADER</span><span style="color:#008000;" title="java/java/symbol">&amp;</span><span style="color:#008000;" title="java/java/symbol">&amp;</span><span style="color:#000000;" title="java/java/static_class">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">available</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
				
					<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#993333;" title="java/java/dtype">byte</span> <span style="color:#000000;" title="java/java/variable">hb</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#993333;" title="java/java/dtype">byte</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#000000;" title="java/java">HEADER_LENGTH</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#000000;" title="java/java/generic_type">HEADER_LENGTH</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
						<span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/generic_type/static_class">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">read</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">hb</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;" title="java/java/generic_type">HEADER_LENGTH</span><span style="color:#008000;" title="java/java/symbol">-</span><span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
						<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">offset</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span>
							<span style="color:#a6a600;" title="java/java/keyword">break</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#008000;" title="java/java/symbol">}</span>
					
					<span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/method">parseHeader</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">hb</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">SEND_EQUATION</span><span style="color:#008000;" title="java/java/symbol">;</span>
					
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Header Read, Starting Session for </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/double_string/start/static_class">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/method">setAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Send a mathematical equation to the client for them to perform.</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">SEND_EQUATION</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#a6a600;" title="java/java/keyword">do</span><span style="color:#ff0000;" title="java/java/class_name">uble</span> <span style="color:#000000;" title="java/java/variable">a</span><span style="color:#008000;" title="java/java/symbol">=</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Math</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">random</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#1111ee;" title="java/java/num/int">32</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">do</span><span style="color:#ff0000;" title="java/java/class_name">uble</span> <span style="color:#000000;" title="java/java">b</span><span style="color:#008000;" title="java/java/symbol">=</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Math</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">random</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#1111ee;" title="java/java/num/int">32</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">a</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">*</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java">b</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Sending client </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> equation </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/double_string/start/static_class">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/static_class">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">write</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getBytes</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">READ_RESPONSE</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#000000;" title="java/java/method">setAlive</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Receive the response from the client, with the result of the equation just sent.</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">mode</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">READ_RESPONSE</span><span style="color:#008000;" title="java/java/symbol">&amp;</span><span style="color:#008000;" title="java/java/symbol">&amp;</span><span style="color:#000000;" title="java/java/static_class">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">available</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">&gt;</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">response</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/static_class">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">read</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#dd0022;" title="java/java/single_string/start">'</span><span style="color:#dd0022;" title="java/java/single_string">;</span><span style="color:#dd0022;" title="java/java/single_string/end">'</span><span style="color:#008000;" title="java/java/symbol">)</span>
						<span style="color:#000000;" title="java/java/variable">response</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">char</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">;</span>
					<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Client </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> returned response </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">response</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/double_string/start/static_class">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>					
					<span style="color:#000000;" title="java/java/method">kill</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
				
				<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">Thread</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">sleep</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">threadSleepTime</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">	e.printStackTrace();</span>
				<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">e</span> <span style="color:#a6a600;" title="java/java/keyword">instanceof</span> <span style="color:#000000;" title="java/java/class_name/static_class">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">net</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">SocketTimeoutException</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
					<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">kill</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
				<span style="color:#008000;" title="java/java/symbol">}</span>
			<span style="color:#008000;" title="java/java/symbol">}</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Clean up data.</span>
		<span style="color:#000000;" title="java/java/method">kill</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>


</pre></div><br /><br />Here we get to the meat and potatoes of the server-side of the application. Note that we are again running a loop in <i>run()</i>, however, this time it runs based on a boolean variable. This makes it possible to terminate execution. The contents of the loop are basically a finite state machine. We write to the client using <i>out</i> and read from the client using <i>in</i>. As conditions are met, we step our mode variable through the various states of the server. Now, in the case of an MMO, like HackWars, this interaction would be differed to the game&#039;s underlying logic. Also, casting our input and output streams to object input and output streams is a good way to abstract logic away from messy byte-based communication. Let&#039;s look at some of the interesting parts of this code:<br />
<ul>
<li>We periodically check for timeouts, exceptional states, etc, and call the <i>kill()</i> method. This will cause the thread to cleanup after itself, freeing up server resources.</li>
<li>When reading the header (or other data for that matter) if we know it has a fixed maximum size, we can read up to that many bytes in one read. In the best case scenario we quickly get all the available bytes, in the worst case we loop reading as much as possible until we do have the whole header.</li>
<li>When writing data we can just send all the bytes of a string using <i>getBytes()</i></li>
<li>We could potentially read one byte at a time looking for a terminal character if the data being sent is of an unknown size. This is however slow. It is better to plan out your protocol nicely so you can always read a maximum number of bytes.
</ul>
<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/** Kill this process. */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">kill</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Stop the thread.</span>
		<span style="color:#000000;" title="java/java/variable">run</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">false</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">t</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Clean the socket connections.</span>
		<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java">out</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#000000;" title="java/java/static_class">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">close</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java">in</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#000000;" title="java/java/static_class">in</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">close</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">if</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java">SReceive</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#000000;" title="java/java/static_class">SReceive</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">close</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">	e.printStackTrace();</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
 
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Set everything to null to avoid memory leaks.</span>
		<span style="color:#000000;" title="java/java/variable">SReceive</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">in</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">out</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br /><i>kill()</i> simply stops our thread from running, and cleans up the socket resources.<br /><br />
<h2>Client.java</h2>
<br />The client that attaches to our simple forking server example.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

<span style="color:#a6a600;" title="java/java/keyword">package</span> <span style="color:#000000;" title="java/java/package">ForkingServer</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">util</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">net</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">java</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">io</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
A simple client that connects to our forking server, gets a mathematical equation to perform, and returns the result.
*/</span>

<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">{</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">Socket</span></a> <span style="color:#000000;" title="java/java/variable">MySocket</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;font-weight:bold;" title="java/java/const">null</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The socket that will connect to the server.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">An ID associated with the client.</span>
	
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Constructor.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">clientID</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">clientID</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/method">runExample</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />Nothing overly fancy here, but notice that we use the Socket object rather than the ServerSocket object.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 This example function demonstrates client server communication. The sample
	 function simply performs mathematical operations sent over the server.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">runExample</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">try</span><span style="color:#008000;" title="java/java/symbol">{</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create a connection to our server.</span>
			<span style="color:#000000;" title="java/java/variable">MySocket</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/net">Socket</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">localhost</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#1111ee;" title="java/java/num/int">8880</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Connect the socket to the forking server.</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/io">InputStream</span></a> <span style="color:#000000;" title="java/java/variable">In</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">MySocket</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getInputStream</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/io">OutputStream</span></a> <span style="color:#000000;" title="java/java/variable">Out</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">MySocket</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getOutputStream</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">First we send the header to the server.</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java">clientID</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">,</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">length</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">&lt;</span><span style="color:#1111ee;" title="java/java/num/int">32</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span> <span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">Out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">write</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">header</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getBytes</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Now we receive the response from the server and perform the mathematical operation.</span>
			<span style="color:#993333;" title="java/java/dtype">int</span> <span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">while</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">In</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">read</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">!</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#dd0022;" title="java/java/single_string/start">'</span><span style="color:#dd0022;" title="java/java/single_string">;</span><span style="color:#dd0022;" title="java/java/single_string/end">'</span><span style="color:#008000;" title="java/java/symbol">)</span>
				<span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#993333;" title="java/java/dtype">char</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#000000;" title="java/java/variable">c</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang/static_class">System</span></a><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">println</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Client </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java">clientID</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> Received equation </span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> performing operation.</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">equation</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">split</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#000066;font-weight:bold;" title="java/java/double_string/esc">\\</span><span style="color:#ff0000;" title="java/java/double_string">*</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">do</span><span style="color:#ff0000;" title="java/java/class_name">uble</span> <span style="color:#000000;" title="java/java/variable">a</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Double.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Double</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">0</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#a6a600;" title="java/java/keyword">do</span><span style="color:#ff0000;" title="java/java/class_name">uble</span> <span style="color:#000000;" title="java/java">b</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Double.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Double</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">data</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#1111ee;" title="java/java/num/int">1</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">result</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">a</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#ff0000;" title="java/java/class_name">b</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">+</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Now we send the result back to the server easy.</span>
			<span style="color:#000000;" title="java/java/variable">Out</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">write</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">result</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">getBytes</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
		<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#a6a600;" title="java/java/keyword">catch</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">Exception</span></a> <span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#000000;" title="java/java/variable">e</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">printStackTrace</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />We begin by making a connection to the server on the same port that it is listening on. As in the server example, we then get Input and Output streams for writing to the server. <i>Out</i> this time will write to the server, and <i>In</i> will read from the server. Having set this up we simply step through a series of reads and writes that directly correspond to the pseudo-finite-state-machine running server-side.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Testing main.</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#00ff00;" title="java/java/static">main</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">args</span><span style="color:#008000;" title="java/java/symbol">[</span><span style="color:#008000;" title="java/java/symbol">]</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create a few sample clients to show our threaded server in action.</span>
		<span style="color:#ff0000;" title="java/java/class_name">Client</span> <span style="color:#000000;" title="java/java/variable">C1</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Client 1</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#ff0000;" title="java/java/class_name">Client</span> <span style="color:#000000;" title="java/java/variable">C2</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Client 2</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#ff0000;" title="java/java/class_name">Client</span> <span style="color:#000000;" title="java/java/variable">C3</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Client 3</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#ff0000;" title="java/java/class_name">Client</span> <span style="color:#000000;" title="java/java/variable">C4</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">Client</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Client 4</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />You will need to be running the server-side <i>main()</i> method for this <i>main()</i> method to work. It will create a few client instances and demonstrate the forking server in action.<br /><br />So there you have it, A fairly minimal threaded server architecture, similar to that used in HackWars. Now go forth and make your own MMOs.<br /><br />-------------------<br />Benjamin Coe<br />Server-Integration-Summarizing-Analyst ]]></description>
			<category>Java</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090816-140205</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 16 Aug 2009 19:02:05 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090816-140205</comments>
		</item>
		<item>
			<title>GWT Basics a Practical Tutorial</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090809-163832</link>
			<description><![CDATA[As I mentioned in my first blog post, I used Google Web Toolkit for the menus and some of the layout on this site. I thought I would post a quick and, I hope, useful tutorial on how to add this functionality to your own website. The technology is even more useful when used to tie your website into a web-service back-end, but this is beyond what I needed it for for my personal site (I just wanted nice cross-platform Javascript widgets).<br /><br /><i><br />As I started typing up this tutorial, I immediately noticed that the <b>&#091;code&#093;</b> tags in the blogging software I have installed (<a href="http://www.simplephpblog.com/" target="_blank" >Simple PHP Blog</a>) look quite terrible. I quickly sat down and spliced <a href="http://qbnz.com/highlighter/" target="_blank" >Generic Syntax Highlighting</a> into the library. You can now leave code related comments using the tag <b>&#091;code language=java,php,etc&#093;</b>. Let me know if there&#039;s any interest in me posting information about how I went about this little hack.<br /></i><br /><br />So, let&#039;s get started. This tutorial will show you how to:<br />
<ol>
<li>Use a couple basic controls in GWT.</li>
<li>Use two different types of event interfaces in GWT.</li>
<li>Make a Youtube video pop-up (handy for just about any website.)</li>
<li>Use a panel for layout.</li>
</ol>
<br /><br /><b>Below is what the finished product will be:</b><br />
<div id="examplePanel"></div>
<br /><br /><b>Step 1: Downloading GWT/Related Software</b><br />First of all, you will need to install the GWT software, which can be found <a href="http://code.google.com/webtoolkit/download.html" target="_blank" >here</a>. You will also need <a href="http://ant.apache.org/manual/install.html" target="_blank" >ant</a>, and a <a href="http://java.sun.com/javase/index.jsp" target="_blank" >Java Development Environment</a> setup. If you so please, you might try using a development environment like  <a href="http://www.eclipse.org/" target="_blank" >Eclipse</a>, but I&#039;m more of a command line kind of guy.<br /><br /><b>Step 2: Creating a Project</b><br />GWT provides the command line tool <i>webAppCreator</i> for creating a project. For this tutorial I created a project using this command:<br /><br /><b><i>./webAppCreator -out example com.bencoe.example</i></b><br /><br />This creates a folder called <i>&#039;example&#039;</i>. This folder contains all the files we will be editing.<br /><br /><b>Step 3: HTML/CSS</b><br />If we look in <i>&#039;example/war/&#039;</i> we can note two files <i>example.css</i> and <i>example.html</i>. These files are not re-created when we run ant, and are where we can make changes to our website&#039;s style and layout.<br /><br />For this tutorial I edited the HTML in <i>example.html</i> to look like this:<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">

<span style="color:#993333;font-weight:bold;" title="html/html/doctype/start">&lt;!DOCTYPE </span><span style="color:#993333;font-weight:bold;" title="html/html/doctype">HTML PUBLIC </span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">-//W3C//DTD HTML 4.01 Transitional//EN</span><span style="color:#993333;" title="html/html/string/end">&quot;</span><span style="color:#993333;font-weight:bold;" title="html/html/doctype/end">&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> The HTML 4.01 Transitional DOCTYPE declaration</span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> above set at the top of the file will set     </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> the browser's rendering engine into           </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> &quot;Quirks Mode&quot;. Replacing this declaration     </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> with a &quot;Standards Mode&quot; doctype is supported, </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
<span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> but may lead to some differences in layout.   </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>

<span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;html</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
  <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;head</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;meta</span> <span style="color:#000066;" title="html/html/tag/attribute">http-equiv</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">content-type</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">content</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">text/html; charset=UTF-8</span><span style="color:#993333;" title="html/html/string/end">&quot;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                                               <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> Consider inlining CSS to reduce the number of requested files </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                                               <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;link</span> <span style="color:#000066;" title="html/html/tag/attribute">type</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">text/css</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">rel</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">stylesheet</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">href</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">example.css</span><span style="color:#993333;" title="html/html/string/end">&quot;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> Any title is fine                         </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;title</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span><span style="color:#000000;" title="html/html">Web Application Starter Project</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/title</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
    
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> This script loads your compiled module.   </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> If you add any GWT meta tags, they must   </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> be added before this line.                </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;script</span> <span style="color:#000066;" title="html/html/tag/attribute">type</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">text/javascript</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">language</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">javascript</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">src</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">example/example.nocache.js</span><span style="color:#993333;" title="html/html/string/end">&quot;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/script</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
  <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/head</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

  <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
  <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> The body can have arbitrary html, or      </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
  <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> you can leave the body empty if you want  </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
  <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> to create a completely dynamic UI.        </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
  <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span>                                           <span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
  <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;body</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

    <span style="color:#888888;" title="html/html/comment/start">&lt;!--</span><span style="color:#888888;" title="html/html/comment"> OPTIONAL: include this if you want history support </span><span style="color:#888888;" title="html/html/comment/end">--&gt;</span>
    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;iframe</span> <span style="color:#000066;" title="html/html/tag/attribute">src</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#000000;" title="javascript/javascript">javascript</span><span style="color:#008000;" title="javascript/javascript/symbol">:</span><span style="color:#993333;" title="html/html/string">''</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">id</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">__gwt_historyFrame</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#000066;" title="html/html/tag/attribute">tabIndex</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">'</span><span style="color:#993333;" title="html/html/string">-1</span><span style="color:#993333;" title="html/html/string/end">'</span> <span style="color:#000066;" title="html/html/tag/attribute">style</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">position:absolute;width:0;height:0;border:0</span><span style="color:#993333;" title="html/html/string/end">&quot;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/iframe</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

    <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;h1</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span><span style="color:#000000;" title="html/html">Ben's GWT Example</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/h1</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

	<span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;div</span> <span style="color:#000066;" title="html/html/tag/attribute">id</span><span style="color:#008000;" title="html/html/tag/symbol">=</span><span style="color:#993333;" title="html/html/string/start">&quot;</span><span style="color:#993333;" title="html/html/string">examplePanel</span><span style="color:#993333;" title="html/html/string/end">&quot;</span> <span style="color:#008000;" title="html/html/tag/symbol">/</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
  <span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/body</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>
<span style="color:#000000;font-weight:bold;" title="html/html/tag/start">&lt;/html</span><span style="color:#000000;font-weight:bold;" title="html/html/tag/end">&gt;</span>

</pre></div><br /><br />The important thing to note is the <i>div</i> with the id <i>examplePanel</i> this is where the panel I create in this tutorial will be inserted.<br /><br /><b>Step 3: The Java Code</b><br />GWT converts code you make in Java into cross-browser Javascript. The code we will be editing can be found in <i>example/src/com/bencoe/client/example.java</i>. The example they provide you with involves a web-service, you would need to install Tomcat and deploy the <i>war</i> file to use this. Just delete the contents of <i>example.java</i> we will be making a simpler application.<br /><br />Here&#039;s the code with comments:<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">  
  
<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
A simple example of using GWT to make a couple cool GUI components for a website.

Benjamin E. Coe (2009).

*/</span>

<span style="color:#a6a600;" title="java/java/keyword">package</span> <span style="color:#000000;" title="java/java/package">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/package">bencoe</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/package">client</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">core</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">EntryPoint</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">core</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">GWT</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">event</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">dom</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">ClickEvent</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">event</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">dom</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">ClickHandler</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">event</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">dom</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">KeyCodes</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">event</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">dom</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">KeyUpEvent</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">event</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">dom</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">KeyUpHandler</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">user</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">rpc</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">AsyncCallback</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">user</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">ui</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>
<span style="color:#a6a600;" title="java/java/keyword">import</span> <span style="color:#ac23ef;" title="java/java/import">com</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">google</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">gwt</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">user</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#ac23ef;" title="java/java/import">client</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#008000;" title="java/java/symbol">*</span><span style="color:#008000;" title="java/java/symbol">;</span>

<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
 * Entry point classes define </span><span style="color:#000000;font-weight:bold;" title="doxygen/doxygen/htmltag/start">&lt;code</span><span style="color:#000000;font-weight:bold;" title="doxygen/doxygen/htmltag/end">&gt;</span><span style="color:#555555;font-style:italic;" title="doxygen/doxygen">onModuleLoad()</span><span style="color:#000000;font-weight:bold;" title="doxygen/doxygen/htmltag/start">&lt;/code</span><span style="color:#000000;font-weight:bold;" title="doxygen/doxygen/htmltag/end">&gt;</span><span style="color:#555555;font-style:italic;" title="doxygen/doxygen">.
 */</span>
<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#ff0000;" title="java/java/class_name">example</span> <span style="color:#a6a600;" title="java/java/keyword">implements</span> <span style="color:#000000;" title="java/java/interface">EntryPoint</span> <span style="color:#008000;" title="java/java/symbol">{</span>

</pre></div>
The only thing important to note here is that we import a bunch of GUI/Event-Handling libraries and implement the <i>EntryPoint</i> interface. This will let this class be used as the main entry-point for our GWT application.

<div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">
	
	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Used to generate a video pop-up event.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#00ff00;" title="java/java/static">videoCommand</span> <span style="color:#a6a600;" title="java/java/keyword">implements</span> <span style="color:#000000;" title="java/java/interface">Command</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;" title="java/java/interface">ClickListener</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#a6a600;" title="java/java/keyword">private</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Constructor.</span>
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#000000;" title="java/java/method">videoCommand</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">video</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">execute</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">VideoDialog</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">show</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>

		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">onClick</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">Widget</span> <span style="color:#000000;" title="java/java/variable">sender</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
			<span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">VideoDialog</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">show</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />This internal class is used to pop-up our Youtube videos. It implements the <i>Command</i> interface, which allows instances of this class to handle menu events, and also the <i>ClickListener</i> interface, which allows it to handle clicks from the mouse. When either of these events fires (<i>execute</i> or <i>onClick</i>), we create an instance of our <i>VideoDialog</i> class.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">    

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create video commands for both the videos I use in this example.</span>
	<span style="color:#ff0000;" title="java/java/class_name">videoCommand</span> <span style="color:#000000;" title="java/java/variable">portfollioVideo</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">videoCommand</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&lt;object width=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#1111ee;" title="java/java/num/int">425</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> height=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#1111ee;" title="java/java/num/int">344</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&gt;&lt;param name=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java">movie\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> value=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java/variable">http</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">www.youtube.com/v/dKQRAGghfH0&amp;hl=en&amp;fs=1&amp;\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/dKQRAGghfH0&amp;hl=en&amp;fs=1&amp;\&quot; type=\&quot;application/x-shockwave-flash\&quot; allowscriptaccess=\&quot;always\&quot; allowfullscreen=\&quot;true\&quot; width=\&quot;425\&quot; height=\&quot;344\&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&quot;);</span>

	<span style="color:#ff0000;" title="java/java/class_name">videoCommand</span> <span style="color:#000000;" title="java/java/variable">wikiearthVideo</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">videoCommand</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&lt;object width=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#1111ee;" title="java/java/num/int">560</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> height=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#1111ee;" title="java/java/num/int">340</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&gt;&lt;param name=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java">movie\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> value=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java/variable">http</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">www.youtube.com/v/HsyHecofNHw&amp;hl=en&amp;fs=1&amp;\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/HsyHecofNHw&amp;hl=en&amp;fs=1&amp;\&quot; type=\&quot;application/x-shockwave-flash\&quot; allowscriptaccess=\&quot;always\&quot; allowfullscreen=\&quot;true\&quot; width=\&quot;560\&quot; height=\&quot;340\&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&quot;);</span>

</pre></div><br />Here we create two instances of the <i>videoCommand</i> class, one for each of the videos that our GUI can pop-up.	<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">    

	<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">This class actually displays the video.</span>
	<span style="color:#a6a600;" title="java/java/keyword">private</span> <span style="color:#a6a600;" title="java/java/keyword">static</span> <span style="color:#a6a600;" title="java/java/keyword">class</span> <span style="color:#00ff00;" title="java/java/static">VideoDialog</span> <span style="color:#a6a600;" title="java/java/keyword">extends</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/Popup.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/javax/swing">Popup</span></a><span style="color:#ff0000;" title="java/java/class_name">Panel</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#000000;" title="java/java/method">VideoDialog</span><span style="color:#008000;" title="java/java/symbol">(</span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/lang">String</span></a> <span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/HTML.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/javax/swing/text/html">HTML</span></a> <span style="color:#000000;" title="java/java/variable">youtubeHTML</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/HTML.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/javax/swing/text/html">HTML</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">video</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Button.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Button</span></a> <span style="color:#000000;" title="java/java/variable">ok</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Button.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Button</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Close Video</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">ok</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addClickListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">ClickListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
								<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">onClick</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">Widget</span> <span style="color:#000000;" title="java/java/variable">sender</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
								<span style="color:#000000;" title="java/java/static_class">VideoDialog</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#993333;" title="java/java/ootoken">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">hide</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
								<span style="color:#008000;" title="java/java/symbol">}</span>
								<span style="color:#008000;" title="java/java/symbol">}</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#ff0000;" title="java/java/class_name">VerticalPanel</span> <span style="color:#000000;" title="java/java/variable">panel</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">VerticalPanel</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">panel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">youtubeHTML</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/variable">panel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">ok</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			<span style="color:#000000;" title="java/java/method">setWidget</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">panel</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
			
			<span style="color:#a6a600;" title="java/java/keyword">this</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">center</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#008000;" title="java/java/symbol">}</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />This is the internal class that actually pops up our Youtube video, it is instantiated from our instances of <i>videoCommand</i> and the specific video is passed in via the constructor. The code does the following:<br />
<ul>
<li>Creates an HTML widget from the Youtube video passed into the constructor.</li>
<li>Creates a button widget with a <i>ClickListener</i>. This will hide the video when the button is pressed.</li>
<li>Creates a <i>VerticalPanel</i> and adds both the widgets to it.</li>
<li>Centers the widget on the screen.</li>
</ul>
<br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">    
	
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 Create the menu GUI component and return it.
	 */</span>
	<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a> <span style="color:#000000;" title="java/java/method">createMenu</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The top-level of our example menu.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a> <span style="color:#000000;" title="java/java/variable">exampleMenu</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">The sub-menu for the videos.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a> <span style="color:#000000;" title="java/java/variable">videos</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">videos</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&lt;a style=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java/variable">color</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#000000;" title="java/java/variable">black</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java">text</span><span style="color:#008000;" title="java/java/symbol">-</span><span style="color:#000000;" title="java/java/variable">decoration</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#000000;" title="java/java/variable">none</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> &gt;Portfollio Video&lt;/a&gt;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;" title="java/java/variable">portfollioVideo</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">videos</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">&lt;a style=\</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#000000;" title="java/java/variable">color</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#000000;" title="java/java/variable">black</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java">text</span><span style="color:#008000;" title="java/java/symbol">-</span><span style="color:#000000;" title="java/java/variable">decoration</span><span style="color:#008000;" title="java/java/symbol">:</span><span style="color:#000000;" title="java/java/variable">none</span><span style="color:#008000;" title="java/java/symbol">;</span><span style="color:#000000;" title="java/java">\</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string"> &gt;Wikiearth Video&lt;/a&gt;</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;font-weight:bold;" title="java/java/const">true</span><span style="color:#008000;" title="java/java/symbol">,</span><span style="color:#000000;" title="java/java/variable">wikiearthVideo</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Add our sub-menu to the parent menu item.</span>
		<span style="color:#000000;" title="java/java/variable">exampleMenu</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Videos</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">videos</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Add all the menus to our top-level menu-bar.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a> <span style="color:#000000;" title="java/java/variable">menu</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">menu</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Menu</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">,</span> <span style="color:#000000;" title="java/java/variable">exampleMenu</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">menu</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div>	<br />This code creates our pull-down menu widget. Basically we can recursively add menu items or other menus into the <i>MenuBar</i> objects (creating a multi-level menu). Note that while adding the menu items we can pass in classes implementing the <i>Command</i> interface. When these menu items are clicked the <i>execute()</i> method of these classes will be fired. In this case, clicking on <i>&#039;Portfollio Video&#039;</i> and <i>&#039;Wikiearth Video&#039;</i> respectively, will cause our classes to execute and pop-up a video.<br /><br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">    

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 Create a tree menu.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#000000;" title="java/java">Tree</span> <span style="color:#000000;" title="java/java/method">createTree</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#ff0000;" title="java/java/class_name">TreeItem</span> <span style="color:#000000;" title="java/java/variable">exampleTree</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">TreeItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Example Tree</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#ff0000;" title="java/java/class_name">TreeItem</span> <span style="color:#000000;" title="java/java/variable">videosNode</span> <span style="color:#008000;" title="java/java/symbol">=</span> <span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">TreeItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Videos</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#000000;" title="java/java/variable">exampleTree</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">videosNode</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create the video labels.</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Label.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Label</span></a> <span style="color:#000000;" title="java/java/variable">portfollioLabel</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Label.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Label</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Portfollio Video</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">portfollioLabel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addClickListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">portfollioVideo</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Label.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Label</span></a> <span style="color:#000000;" title="java/java/variable">wikiearthLabel</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Label.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">Label</span></a><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">Wikiearth Label</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">wikiearthLabel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addClickListener</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/class_name">wikiearthVideo</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#000000;" title="java/java/variable">videosNode</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">portfollioLabel</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">videosNode</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">wikiearthLabel</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#000000;" title="java/java">Tree</span> <span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">Tree</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java/static_class">Me</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">addItem</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">exampleTree</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#a6a600;" title="java/java/keyword">return</span><span style="color:#000000;" title="java/java">Me</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />This creates our tree widget in a manner similar to our pull-down menu. However, we instead attach a click listener to the menu items. This will have the same ultimate effect, but will call the <i>onClick</i> method in our class instead.<br />	<br /><div width="1500"><pre style="background-color:#ffc;border:1px solid #cc9;width:100%;padding:8px;white-space: pre-wrap;white-space: -moz-pre-wrap !important;white-space: -pre-wrap;white-space: -o-pre-wrap;word-wrap: break-word;">
    
	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 Create all the GUI components for this small tutorial.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">createGUI</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">{</span>
		<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuBar.html"><span style="color:#99bbdd;font-weight:bold;" title="java/java/java/awt">MenuBar</span></a> <span style="color:#000000;" title="java/java/variable">menu</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/method">createMenu</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#ff0000;" title="java/java/class_name">Tree</span> <span style="color:#000000;" title="java/java/variable">tree</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#000000;" title="java/java/method">createTree</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Create a panel for adding our components to.</span>
		<span style="color:#ff0000;" title="java/java/class_name">HorizontalPanel</span> <span style="color:#000000;" title="java/java/variable">MyHorizontalPanel</span><span style="color:#008000;" title="java/java/symbol">=</span><span style="color:#a6a600;" title="java/java/keyword">new</span> <span style="color:#ff0000;" title="java/java/class_name">HorizontalPanel</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		
		<span style="color:#888888;font-style:italic;" title="java/java/single_comment/start">//</span><span style="color:#888888;font-style:italic;" title="java/java/single_comment">Add our menu to the horizontal panel.</span>
		<span style="color:#000000;" title="java/java/variable">MyHorizontalPanel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">menu</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/variable">MyHorizontalPanel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">tree</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>

		<span style="color:#000000;" title="java/java/static_class">RootPanel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">examplePanel</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">add</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#000000;" title="java/java/variable">MyHorizontalPanel</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
		<span style="color:#000000;" title="java/java/static_class">RootPanel</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">get</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">examplePanel</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">.</span><span style="color:#000000;" title="java/java/method">setStylePrimaryName</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#ff0000;" title="java/java/double_string/start">&quot;</span><span style="color:#ff0000;" title="java/java/double_string">examplePanel</span><span style="color:#ff0000;" title="java/java/double_string/end">&quot;</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>

	<span style="color:#555555;font-style:italic;" title="doxygen/doxygen">/**
	 * This is the entry point method.
	 */</span>
	<span style="color:#a6a600;" title="java/java/keyword">public</span> <span style="color:#993333;" title="java/java/dtype">void</span> <span style="color:#000000;" title="java/java/method">onModuleLoad</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span> <span style="color:#008000;" title="java/java/symbol">{</span>
		<span style="color:#000000;" title="java/java/method">createGUI</span><span style="color:#008000;" title="java/java/symbol">(</span><span style="color:#008000;" title="java/java/symbol">)</span><span style="color:#008000;" title="java/java/symbol">;</span>
	<span style="color:#008000;" title="java/java/symbol">}</span>
<span style="color:#008000;" title="java/java/symbol">}</span>

</pre></div><br />The remaining code does the following:<br />
<ul>
<li><i>onModuleLoad()</i> is the main entry point for the application. Upon executing it simply calls the method that creates our GUI.</i>
<li>In <i>createGUI()</i> our pull-down menu and tree-menu are created.</li>
<li>A new horizontal panel is created and both the components are added in (this means the components will be aligned left to right).</li>
<li>Using the static class <i>RootPanel</i>, we fetch the div we previously added into our HTML </i>'examplePanel'</i>. The ids we have access to via <i>RootPanel</i> correspond directly with the div ids in our <i>example.html</i> file. Add is used, to insert the horizontal panel we just created into the body of our HTML document.
</ul>
<br /><b>Step 4: Compiling our Code</b><br />From the directory <i>example/</i> simply type <i>ant</i>. Once ant finishes running, you should now be able to open up <i>example/war/example.html</i> and have a working application.<br /><br />So there you have it, let me know how you find the tutorial. I&#039;ll certainly post more when I&#039;m extremely bored/procrastinating.<br /><br />------------------------<br />Benjamin E. Coe<br />Procrastination-Expert<br />]]></description>
			<category>Java</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090809-163832</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sun, 09 Aug 2009 21:38:32 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090809-163832</comments>
		</item>
		<item>
			<title>Wikiearth Climate Demo</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090807-194401</link>
			<description><![CDATA[I just finished putting together a video demonstrating Wikiearth for <a href="http://iswc2009.semanticweb.org/" target="_blank" >The 8th International Semantic Web Conference</a>. The hope being that my partners and I might be able to demo the project at the conference. This is the same project we were at the World Student Environmental Summit launching (unfortunately I doubt the climbing in Washington, DC will be as good). Any ways, I figured I&#039;d post the video on my personal website, to give people an idea of what I&#039;ve been up to.<br /><br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/HsyHecofNHw&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HsyHecofNHw&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>
<br /><br /><br />------------<br />Benjamin E. Coe<br />Climate-Change-Semantic-Collaboration-Facilitator]]></description>
			<category>Technology</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090807-194401</guid>
			<author>Benjamin Coe</author>
			<pubDate>Sat, 08 Aug 2009 00:44:01 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090807-194401</comments>
		</item>
		<item>
			<title>My New Place</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090804-025408</link>
			<description><![CDATA[My wife and I just finished financing the purchase of our first home, a condo in Scarborough area of Toronto.<br /><br />It all started around six-months ago; I received a $5000 scholarship, which I proceeded to invest in RIM. During the early summer, noting that my stock had just about doubled in value, and that interest rates were insanely low, I decided to cash in my stock for a down-payment on a place.<br /><br />Getting a mortgage was frustrating, but, to cut a long story short, Toronto here I come!<br /><br />My new found pride of ownership in tow, I decided it&#039;s about time I stop living like a student. My wife and I are going to throw out most of our ratty furniture, and plan on actually having a cohesive looking place. Being that I&#039;m OCD, I decided I&#039;d therefore layout our place in Google SketchUp.<br /><br />Without any more delay, here are my new digs:<br /><br /><a href="javascript:openpopup('images/newApartment.png',1159,619,false);"><img src="images/newApartment.png" width="500" height="267" border="0" alt="" /></a><br /><b>The gray thing is my practice climbing wall.</b><br /><br />I&#039;m very excited about this new chapter in my wife&#039;s and my life.<br /><br />--------------<br />Benjamin E. Coe<br />Paradigm-Shifting-Condo-Acquisition-Expert<br /><br />]]></description>
			<category>General</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090804-025408</guid>
			<author>Benjamin Coe</author>
			<pubDate>Tue, 04 Aug 2009 07:54:08 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=08&amp;entry=entry090804-025408</comments>
		</item>
		<item>
			<title>Squamish Trip 2009</title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090730-151837</link>
			<description><![CDATA[When I left for BC in late June I was already fairly addicted to bouldering (think climbing things but replace cliffs with boulders and ropes with rigid mats), my only experience however had been inside.<br /><br />My business partner and I were down in Victoria for the <a href="http://www.bclocalnews.com/vancouver_island_south/victorianews/community/48291257.html" target="_blank" >World Student Environmental Summit</a> overseeing the launch of <a href="http://www.wikiearth.net" target="_blank" >Wikiearth</a>. Victoria was quite interesting, note all the rabbits:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/rabbits.JPG',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/rabbits.JPG" width="450" height="338" border="0" alt="" /></a><br /><b>Rabbits on UVic Campus</b><br /><br />By our 3rd or fourth day at the conference we were already itching to climb, our plan being to sneak off to <a href="http://maps.google.ca/maps?hl=en&amp;q=Squamish+BC&amp;um=1&amp;ie=UTF-8&amp;split=0&amp;gl=ca&amp;ei=ewdySs7RF9WGlAeopunkCg&amp;sa=X&amp;oi=geocode_result&amp;ct=title&amp;resnum=1" target="_blank" >Squamish</a> for four days after the conference. To satiate our hunger for climbing, we even took to climbing a few of the larger trees around campus (teaching me just how allergic I seem to be to tree bark).  <br /><br />After the conference, as we drove out of Vancouver into the mountains, and the sense of excitement reached a crescendo. Squamish, upon first impression, did not disappoint. I&#039;m not one to speak in cliches, but the place really is <i>a little piece of heaven on earth</i>:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/squamish.JPG',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/squamish.JPG" width="450" height="338" border="0" alt="" /></a><br /><b>Squamish, BC</b><br /><br />Upon arriving in town, we were promptly overcharged for a bouldering mat, bought some groceries, and took off to find a campsite. <br /><br />Driving up to the car camping area under the Chief, we found a location that had the dualistic properties of 1. being one of the worst campsites imaginable and, 2. having one of the most beautiful views I have ever seen. <i>Note, there was a beautiful mountain lake behind our campsite, I&#039;m not talking about Christian.</i><br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/campsite.JPG',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/campsite.JPG" width="450" height="338" border="0" alt="" /></a><br /><b>Our Campsite</b><br /><br />But hey, we were here to climb, not to have tea at a fancy-pants campsite.<br /><br /><b>Day 1:</b><br /><br />Upon parking at our site, we immediately hiked into the woods with our mat, our topographical map, and climbing shoes. We promptly found what Christian informed me was an easy problem and proceeded to crush our spirits on it.<br /><br />We bumped into a local about ten minutes later who kindly informed us that we were climbing about a <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V6</a> or <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V7</a> (about twice what we were in the market for). We proceeded to climb the <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V2</a> that this fellow was working on, and our spirits began to quickly be lifted. We then hiked with him over to a <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V4</a> he had been working on and had a great time working on that problem for a bit:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/climbing1.JPG',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/climbing1.JPG" width="450" height="338" border="0" alt="" /></a><br /><br /><b>Day 2:</b><br /><br />Did I mention that, despite our pristine surroundings of our campsite, we were within a two minute drive of Starbucks:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/starbucks.JPG',600,450,false);"><img src="http://www.benjamincoe.com/blog/images/starbucks.JPG" width="450" height="338" border="0" alt="" /></a><br /><b>Starbucks with WiFi, next to the Chief</b><br /><br />Upon waking up, being the workaholics that we are, we headed into town with our laptops to take advantage of said Starbucks&#039; internet. We also bought some blankets, the previous night having been one of the coldest, most miserable, sleeps that I can remember.<br /><br />Upon getting back to our campsite, we had a great day of climbing. Ascending a great  <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V3</a> problem and a frightening  <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V0</a>:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/climbing2.JPG',450,600,false);"><img src="http://www.benjamincoe.com/blog/images/climbing2.JPG" width="450" height="600" border="0" alt="" /></a><br /><b>Great little V3 Problem</b><br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/climbing3.JPG',450,600,false);"><img src="http://www.benjamincoe.com/blog/images/climbing3.JPG" width="450" height="600" border="0" alt="" /></a><br /><b>Frightening V0 Problem</b><br /><br /><b>Day 3:</b><br />The cold from the previous two nights sleeps was starting to kill Christian, so we were seriously thinking about heading back into Vancouver a day early. This having been said, I wanted to at least try to kill a <a href="http://en.wikipedia.org/wiki/Grade_(bouldering)" target="_blank" >V3</a> bouldering problem I had started working on the previous day:<br /><br /><a href="javascript:openpopup('http://www.benjamincoe.com/blog/images/climbing4.JPG',450,600,false);"><img src="http://www.benjamincoe.com/blog/images/climbing4.JPG" width="450" height="600" border="0" alt="" /></a><br /><br />I was triumphant, and we decided to head back into Vancouver before Christian&#039;s fledgling pneumonia managed to really do a number.<br /><br /><br />I had a wonderful trip, climbing at Squamish managed to change a climbing compulsion into a climbing obsession.<br /><br />------------------------<br />Benjamin Coe<br />Paradigm-Shifting-Analyst ]]></description>
			<category>Trips</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090730-151837</guid>
			<author>Benjamin Coe</author>
			<pubDate>Thu, 30 Jul 2009 20:18:37 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=07&amp;entry=entry090730-151837</comments>
		</item>
		<item>
			<title>How I Became the Victim of Library Discrimination </title>
			<link>http://www.benjamincoe.com/blog/index.php?entry=entry090730-055502</link>
			<description><![CDATA[So here it is my first post on my very own personal website! There are several other fairly busy sites on the Internet that I help run, e.g, <a href="http://www.hackwars.net" target="_blank" >HackWars</a>, but this is the first time I&#039;ve put my very own personal site up in years.<br /><br />Why? You ask, the sudden interested in having my own web-presence?<br /><br />Well, it all started about a month ago, when I realized I didn&#039;t work for a hip, young, start-up company. I&#039;m a nice guy, I have great coding skills, I&#039;m about to finish my M.Sc, so why this predicament?<br /><br />My working theory is that without a personal website to point people towards, potential employers might not necessarily realize all the neat stuff I&#039;ve done.<br /><br />So without further adieu, let me walk you through the architecture of my new personal website and the motivation for the specific technology choices, i.e., grumpiness.<br /><br />About a week ago I had an interview with what looked like (and probably is) a pretty cool start-up company in Toronto. During the phone interview I was asked what I knew about the Google Web Toolkit, unfortunately, I&#039;d never heard of it before and, even though I did feel the interview went quite well, I didn&#039;t get the job and I feel my lack of knowledge regarding this library was detrimental to me.<br /><br />I feel I may have been a victim of library discrimination in fact.<br /><br />I&#039;m never one to shy away from a challenge, so the fancy-pants menu system that this site uses is being powered by Google Web Toolkit. <br /><br />Now if you&#039;re a start-up company out there looking to hire young talent, I beg of you hire for analytic, creative, and fundamental software design ability, a skilled Java/PHP/C++/C# programmer, such as myself, can learn a new library/platform in a very short period of time... I hate to see a hiring process overlook employees based on faddy buzz-words/technologies, e.g, extreme programming, semantic-web, UX, GWT, agile-development, cloud-computing, AJAX, etc...<br /><br />Any ways, my tiny little instance of library discrimination aside, GWT seems to be a great technology and I&#039;m happy to have picked it up (a process which to re-iterate my point, only took about 5 hours).<br /><br />If I had a champagne bottle, and the budget for a new laptop, I would crack it on my screen right now. This blog/website is officially launched. I intend to use it to talk about various issues in the field of CS, my hobbies, my research, my ongoing job hunt, and whatever else crosses and/or frustratingly baffles my mind.<br /><br />----------------<br />Benjamin Coe<br />User-Centered-Extreme-Agile-Programming-Paradigm-Integration-Specialist]]></description>
			<category>Technology</category>
			<guid isPermaLink="true">http://www.benjamincoe.com/blog/index.php?entry=entry090730-055502</guid>
			<author>Benjamin Coe</author>
			<pubDate>Thu, 30 Jul 2009 10:55:02 GMT</pubDate>
			<comments>http://www.benjamincoe.com/blog/comments.php?y=09&amp;m=07&amp;entry=entry090730-055502</comments>
		</item>
	</channel>
</rss>
