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

<channel>
	<title>Kev009.com &#187; java</title>
	<atom:link href="http://www.kev009.com/wp/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kev009.com/wp</link>
	<description>Speed and Accuracy are fine, kev009 is final: Projects and Ventures of Kevin Bowling</description>
	<lastBuildDate>Thu, 19 Jan 2012 03:18:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Something good about every language I used in 2010</title>
		<link>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/</link>
		<comments>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 10:38:40 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[VHDL]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=596</guid>
		<description><![CDATA[Inspired by Samuel Tardieu&#8217;s post, I want to do a year in review of all the languages I have used this year.  A lot of times we prima donna programmers complain about anything and everything. I really enjoyed the positive &#8230; <a href="http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Inspired by <a href="http://www.rfc1149.net/blog/2010/12/09/something-nice-about-every-language-i-use/">Samuel Tardieu&#8217;s post</a>, I want to do a year in review of all the languages I have used this year.  A lot of times we prima donna programmers complain about anything and everything.  I really enjoyed the positive outlook of Samuel&#8217;s post and want to take note of my experiences with similar attitude.</p>
<h3>Bread &amp; Butter</h3>
<ul>
<li>Python &#8211; My language of choice for the year.  Whether prototyping, experimenting, developing a Facebook application, maintaining a test framework I wrote for my workplace, or implementing cryptographic algorithms for a security course, Python continued to serve me well.  Between a copy of &#8220;Python Essential Reference&#8221; and PyPI, I feel there are very few problems beyond my means thanks to the power of this beautiful language and its surrounding community.</li>
<li>Java &#8211; As a student, I pounded out many a line of Java throughout the wee hours of the morning in my capstone classes.  Java seems to be the New Age language of academia and I can speak it universally to my classmates and professors as a lingua franca.  I&#8217;ve noticed that my Java programs tend to structure themselves well without much effort thanks to the strong object influence forced by Java and expansive standard library and Collections classes.  Also used at two collegiate programming competitions which is an entirely different experience than normal software development where the large standard library again came in handy.</li>
</ul>
<h3>Good Progress</h3>
<ul>
<li>C &#8211; I launched a <a href="https://github.com/kev009/craftd">good sized networking project</a> in C as my first big project in the language and contributed a number of portability fixes to the <a href="http://monkey.org/~provos/libevent/">libevent</a> project.  Fast to compile, fast at runtime, and full low level control, C is a great language for Unix Systems Programming.  I greatly expanded my knowledge of the POSIX interfaces this year and really enjoy programming at this level.  I&#8217;ve noticed that some principles from other higher order languages have rubbed off on my C style; namely, data hiding and well formed/adaptable interfaces (see the post right before this one).</li>
<li>C++ &#8211; Been putting this one off because of all the FUD and intimidation at the sheer size of it.  C++ is pretty much the Latin of our field and is used in everything from safety-critical Jet aircraft systems, to GUIs, to games, to JITs, to cutting edge research.  As some of the pundits say, C++ is the language for &#8220;Demanding Applications&#8221;.  If you consider Java as the Flight Engineer of a large aircraft, C++ is definitely in the Pilot seat.  You have full control and high visibility of what is going on, but if you aren&#8217;t careful you can crash and burn.  I&#8217;ve probably progressed to the advanced beginner stage where I can use it as a better C but haven&#8217;t endured the trials and tribulations of an expert in the art of C++, nor read important references like Scott Meyers&#8217; &#8220;Effective C++&#8221; series.  I really like the power and efficiency of the STL and plan on knowing enough C++ to use it when called upon.</li>
</ul>
<h3>Breaking New Ground</h3>
<ul>
<li>VHDL &#8211; After a required Electrical Engineering course, I was exposed to the entirely different paradigm of programmable hardware (FPGAs).  This was an eye opening experience.  Fundamentally, digital design is concurrent.  There may be valuable lessons here for both academic and professional Computer Science and I need to explore more here.  In 2011, I&#8217;d like to buy my own FPGA development board and work through the design of a simple CPU to gain further appreciation of hardware and VHDL or Verilog.</li>
</ul>
<h3>Back Burner</h3>
<ul>
<li>PHP &#8211; The first language I seriously learned and used some 12 years ago (I dabbled in Perl before that at the ripe age of 8, and probably Lego Logo a year before that :-P ).  I&#8217;ve been keeping an eye on it and it seems some of the Framework movement that stole a lot of developers away to other languages has sprouted mature analogues in PHP land.  No longer just C for the web, PHP 5.3 continues the lineage of the 5-series as a serious object-oriented language for web development that is basically universally available and dead simple to scale.  The extent of my PHP coding in 2010 was limited to maintaining some programs I&#8217;d written in years past (aside from merely installing/using PHP products like this blog).</li>
</ul>
<h3>On to 2011</h3>
<ul>
<li>D &#8211; D2 has me really excited.  For some intents and purposes, it seems like an evolution of C++ with a healthy removal of backward compatibility.  Embracing fast compile times, integrating concurrency and message passing, allowing easy interfacing to C libraries, and more mean this is a language capable of &#8220;Demanding Applications&#8221;.  Perhaps most intriguing is the use of the language proper for metaprogramming and compile-time programs.  I have Andrei Alexandrescu&#8217;s book on my shelf and have thumbed through it a few times.  The fact that he is involved speak volumes of D&#8217;s potential and his book looks superbly written. 2011 means working my way through the book and working on at least one sizable project in D.</li>
<li>Erlang &#8211; Erlang has been on my radar for a couple years now.  The fact that the OTP has roots in the demanding and critical realm of telecom means this is a serious language and seems to deliver interesting take on concurrency.  Erlang has already proven itself effective for XMPP servers and Message Queues.  This may yet be one of the best languages around for scalable networking applications and I&#8217;d like to get some hands on experience with it in 2011.</li>
<li>Haskell &#8211; I don&#8217;t know much about Haskell other than playing around with TryHaskell.  What I do know is that Haskell has a fairly mature Software Transactional Memory and that alone interests me.  I&#8217;ve also heard the optimizing compiler is pretty good.  Through investigation is due in the second half of the year.</li>
</ul>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2011/01/something-good-about-every-language-i-used-in-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sun/Oracle Ultra 27 Workstation Discontinued?</title>
		<link>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/</link>
		<comments>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 02:30:20 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[OpenSolaris]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Ultra 27]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=501</guid>
		<description><![CDATA[I just noticed that the Sun/Oracle Ultra 27 is no longer listed on the Desktops section of Oracles products page.  This is a shame because I&#8217;m quite pleased with mine. This sends a couple of messages: Oracle doesn&#8217;t think Solaris/OpenSolaris &#8230; <a href="http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I just noticed that the Sun/Oracle Ultra 27 is no longer listed on the <a href="http://www.oracle.com/us/products/servers-storage/desktop-workstations/index.html">Desktops section</a> of Oracles products page.  This is a shame because I&#8217;m <a href="http://www.kev009.com/wp/2009/12/sun-ultra-27-review-the-ultimate-linux-workstation/">quite pleased</a> with mine.</p>
<p>This sends a couple of messages:</p>
<ol>
<li> Oracle doesn&#8217;t think Solaris/OpenSolaris is viable on the workstation</li>
<li>Oracle can&#8217;t deliver low margin hardware (the prices on these boxes skyrocketed after the acquisition)</li>
</ol>
<p>It could be a purge while they bump to a new model featuring 6-core Xeons.  Yet more than likely, another victim of the merger.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/07/sunoracle-ultra-27-workstation-discontinued/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>But First, Write No Code</title>
		<link>http://www.kev009.com/wp/2010/05/but-first-write-no-code/</link>
		<comments>http://www.kev009.com/wp/2010/05/but-first-write-no-code/#comments</comments>
		<pubDate>Fri, 28 May 2010 06:28:30 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[c]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[pragmatic]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=468</guid>
		<description><![CDATA[Something I see often in person and online are programmers constantly implementing common solutions, reinventing wheels, or embracing NIH. Before you do this, please consider the Kev009’s Oath – “But First, Write No Code”.  This is a solution to a &#8230; <a href="http://www.kev009.com/wp/2010/05/but-first-write-no-code/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Something I see often in person and online are programmers constantly implementing common solutions, reinventing wheels, or embracing <acronym title="Not Invented Here">NIH</acronym>.</p>
<p>Before you do this, please consider the <em>Kev009’s Oath</em> – <strong>“But First, Write No Code”</strong>.  This is a solution to a variety of problems in software development, but today&#8217;s article is specifically on using external code.</p>
<p>I’ve found that programmers who follow a system similar to mine (detailed below) develop systems that are more stable, maintainable, and sane.  They likely write better code because it means they understand their tools and also read others’ code.  They examine the problem first rather than going in guns blazing.</p>
<p>Steps to decide whether to use an existing solution or write your own implementation:</p>
<ol>
<li><strong>Scan the area.</strong> <a href="http://www.google.com/">Google</a>, <a href="http://www.freshmeat.net/">Freshmeat</a>, <a href="http://www.sf.net/">SourceForge</a>, standard library, OS libraries, etc. are your friend.  See if the problem you are trying to solve has been solved.  I don’t care how long you’ve been programming or how much you think you know. The ecosystem of a language is constantly changing.Make a list of hits that look similar to the problem you are trying to solve.  Try and get a quick sense of the idiomatic methods of using your language, OS, etc.</li>
<li><strong>Do research.</strong> Are the solutions you found in step 1 suitable to the problem at hand?  Consider the <em>pros</em> and <em>cons</em> of each item.  Now, carefully evaluate how idiomatic the items are to your language and environment.If the item is open source, does the community seem active?  If it doesn’t fully map to your problem, does it look like you can modify it to do so?
<p>Even if you end up developing a solution from scratch, you should at  least now have some good references.  Keep in mind, extending an existing project may be considerably less work.  You might even be able to offload maintenance of that component.</li>
<li><strong>Consider the license.</strong> This isn’t just for the legal department.  What kind of project you are working on will weigh in heavily.  Commercial or open source?  As a software professional, you need to be abreast with the various licenses in the wild.  As an open source developer, you need to consider how licenses will affect your work being packaged by distributions.An open source library licensed under the GPL is not acceptable for static linking to commercial software.  However, you can link to an operating system provided copy or bundle the dynamic library with your application.  LGPL does not have this restriction.  With both of these, you must supply your changes upon request from end users among other things.
<p>BSD, MIT, and Apache style licenses allow you to make changes and redistribute under completely different licenses.  Some just want credit in your documentation.  These are very compelling even in commercial development.</p>
<p>Commercial components may have a per-copy fee associated which may dissuade their use by your organization.  If you don’t get the source, you won’t be able to effectively change or maintain it so you will also be at mercy of that developer.</li>
<li><strong>Make a decision.</strong> By now, your list should have been pared down based on licenses and research.  Perform extensive evaluations of the remainder and eventually hone in on the one you think fits best.  You’re going to have to rely on your experience and intuition while making the critical decision.  Perhaps the hardest part:  weighing it against a mythical home-grown solution in your mind.</li>
<li><strong>Implement the decision.</strong> Self explanatory.  This either means bootstrapping your own project or fully integrating the external one.  If you are extending an open source solution, consider submitting the patches back to the community for feedback and perhaps integration.  If you are bootstrapping your own solution, you’ve got your work cut out.  Is this only suitable for an internal project, or perhaps it would have its own merit as a new open source project?Be sure to reevaluate early and often.  That library you chose might turn out to be a can of worms, just as the &#8220;easy&#8221; new solution you had in your head might require years of development.</li>
<li><strong>Subscribe to the announce mailing list.</strong> <em>Only if you used an external solution</em>. Does the project have an RSS feed for releases or a low volume announcement list?  Don’t be like Adobe.  <a href="http://secunia.com/blog/76">Avoid embarrassing security problems</a>.  Also consider how enhancements and bug fixes to the external project might make your own project better, more stable, and more efficient.  This is where the real lasting dividends of using an external solution come from.</li>
</ol>
<p>This list is widely applicable.  You’ve got a seriously high bar to reach if you are developing containers of &lt;T&gt;, sorting methods, GUI frameworks, parsers, text and binary file formats, and much more so try and follow it the next time you code.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2010/05/but-first-write-no-code/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>boo2pdf Update</title>
		<link>http://www.kev009.com/wp/2009/11/boo2pdf-update/</link>
		<comments>http://www.kev009.com/wp/2009/11/boo2pdf-update/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 14:48:10 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Retrocomputing]]></category>
		<category><![CDATA[boo]]></category>
		<category><![CDATA[boo2pdf]]></category>
		<category><![CDATA[BookManager]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=394</guid>
		<description><![CDATA[I did some minor updates to boo2pdf. Graphics should now be within the page margins.  Please let me know if there are any other common formatting mistakes. Unfortunately, IBM&#8217;s &#8220;transmogrifier&#8221; utility doesn&#8217;t work very well in Wine, so you should &#8230; <a href="http://www.kev009.com/wp/2009/11/boo2pdf-update/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I did some minor updates to <a href="http://www.kev009.com/wp/boo2pdf/">boo2pdf. </a> Graphics should now be within the page margins.  Please let me know if there are any other common formatting mistakes.</p>
<p>Unfortunately, IBM&#8217;s &#8220;transmogrifier&#8221; utility doesn&#8217;t work very well in Wine, so you should preprocess older books in Windows before running them through the <a href="http://ps-2.kev009.com:8081/boo2pdf/">boo2pdf web</a> service (download is on that page).</p>
<p>Source code is now available from <a href="http://git.kev009.com/gitweb/?p=boo2pdf/.git;a=summary">boo2pdf gitweb</a>.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2009/11/boo2pdf-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing boo2pdf</title>
		<link>http://www.kev009.com/wp/2009/10/announcing-boo2pdf/</link>
		<comments>http://www.kev009.com/wp/2009/10/announcing-boo2pdf/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 07:35:07 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Retrocomputing]]></category>
		<category><![CDATA[BookManager]]></category>
		<category><![CDATA[mainframe]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=346</guid>
		<description><![CDATA[I&#8217;ve just uploaded a beta of boo2pdf, an IBM BookManager to PDF conversion app &#38; web service. I&#8217;m currently experimenting with the HTML to PDF backends and would like feedback with book files I haven&#8217;t tried. Once the code is &#8230; <a href="http://www.kev009.com/wp/2009/10/announcing-boo2pdf/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just uploaded a beta of <a href="http://www.kev009.com/wp/boo2pdf/">boo2pdf</a>,  an IBM BookManager to PDF conversion app &amp; web service.  I&#8217;m currently experimenting with the HTML to PDF backends and would like feedback with book files I haven&#8217;t tried. Once the code is cleaned up, I will dump it on my site.</p>
<h3>Motivation</h3>
<p>I have a large collection of old IBM machines and documentation.  I want this documentation indexed by my own search facilities and Google for easy retrieval.  PDF is widely read, while BookManager requires proprietary software and no search engines I know of parse it.  This will probably be useful to Mainframers as well.</p>
<p>Take the web service for a spin here: <a href="http://ps-2.kev009.com:8081/boo2pdf/" target="_blank"></p>
<p>http://ps-2.kev009.com:8081/boo2pdf/</a>.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2009/10/announcing-boo2pdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java: The Good Parts</title>
		<link>http://www.kev009.com/wp/2009/10/java-the-good-parts/</link>
		<comments>http://www.kev009.com/wp/2009/10/java-the-good-parts/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 05:31:24 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[openjdk]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=303</guid>
		<description><![CDATA[A while back, a book entitled JavaScript: The Good Parts made waves on the internet, especially social networking sites.  This book purported to show the inner beauty of a language that was long considered second or third rate, coming of &#8230; <a href="http://www.kev009.com/wp/2009/10/java-the-good-parts/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-313" style="margin-left: 5px; margin-right: 5px;" title="javascript-the-good-parts" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/javascript-the-good-parts.gif" alt="javascript-the-good-parts" width="180" height="236" />A while back, a book entitled <a href="http://oreilly.com/catalog/9780596517748" target="_blank">JavaScript: The Good Parts</a> made waves on the internet, especially social networking sites.  This book purported to show the inner beauty of a language that was long considered second or third rate, coming of age.  With the advent of toolkits like JQuery, Javascript/AJAX development has become easy and even fun.</p>
<p>I aim to do the same by showing &#8220;Java: The Good Parts&#8221; here at a high level.<img class="alignright size-full wp-image-312" title="java_powered_logo_rgb" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/java_powered_logo_rgb.gif" alt="java_powered_logo_rgb" width="70" height="131" /></p>
<p>When I was younger, I used to despise Java for political reasons and bad memories of early applets and applications.  I suspect many users and developers (especially Libre software devs!) are on the same boat.  By the end of this article, I hope I swayed your opinion or at least caused you to reevaluate your bias.  I also wish to  encourage further discussion about these points and ways we can improve any deficiencies.</p>
<h2>Rough and Tumble Upbringing</h2>
<p>When Java first started gaining popularity, it was loudly hyped as the end all language.  It was expected that Java would take the &#8220;rich client&#8221; by storm, and applets would be the go to solution for enhancing web pages.  What happened was a bit different.  Java floundered and struggled to find a niche.  On the client side, AWT apps looked horrendous despite using native widgets.  Then Swing came about and despite easing development, it looked equally bad on all platforms (by default).  Applets were basically a stillbirth.  The ugly gray box, loadtime sometime measuring in minutes, and no coordination with the DOM and web browser made the average user hate Java.</p>
<p>One area Java was able to develop and secure a foundation, however, was the back end of large web applications.  The Virtual Machine approach provided a marked advantage over the CGI and interpreted scripts of the day.  Java&#8217;s rich networking libraries, clean Object Oriented design, and safety made this the language de jour for large web applications.</p>
<h2>Open Source Matters</h2>
<p title="Just In Time">In my opinion, the open sourcing of Java during its  early infancy would have  had  little impact on most of the teething issues.  The Virtual Machine, JIT, and Garbage Collection required many years of tuning to get acceptable performance and Sun did an acceptable job keeping it under wing.  The relatively limited CPU and RAM of the mid &#8217;90s also made these concepts a bit ahead of their time.  Somewhere in the 1999-2002 time frame, though, Sun really dropped the ball.  An Open Source Java would have led to ubiquity on the booming Linux platform and a chance for all sorts of cross-platform software.</p>
<p>Open Source matters, and not just for the source code.  Open Source  projects naturally bring about very pragmatic and intelligent  developers.  These are the folks that thoroughly enjoy their hobby,  work, and tools.  The marketing guys and pointed haired bosses have much  less pull here.  On one hand, a vibrant community built itself with the many Apache Software Foundation projects.  However, most of these were squarely focused on web applications or low level things such as build tools, testing frameworks, and message buses.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-331" title="ThumbsUp" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/ThumbsUp.jpg" alt="ThumbsUp" width="224" height="180" />Due to the void, interpreted languages such as Python rose to the challenge while C and C++ remained the mainstay for applications programming.  Microsoft started dominating Windows development with their .NET CLR languages.  The glib/Gtk+ and Qt toolkits brought about a renaissance in cross-platform development with C and C++ respectively [though not limited].</p>
<p>It wasn&#8217;t until the open-sourcing of SWT that GUI development in Java became attractive.  The obvious killer apps here were the <a href="http://www.eclipse.org/" target="_blank">Eclipse IDE</a> and the Azureus (now <a href="http://en.wikipedia.org/wiki/Vuze" target="_blank">Vuze</a>) bittorrent client.</p>
<p>Sun&#8217;s closed grip of Java really stagnated any chance of abundant expansion in these middle years (2001-2006).  Microsoft leveraged this weakness to create the excellent .NET platform and associated languages to maintain their closed platform and market dominance.  The counterbalance that would have been Java was thus left playing catchup.</p>
<p>We are just beginning to see the fruits of this labor from 2006 through today.  The OpenJDK project is now distributed with popular Linux distributions such as Ubuntu and Fedora.  We finally have decent browser plugins and Java Web Start applications across 32 and 64-bit machines.  The Java deployment problem will slowly fade from memory.</p>
<h2>Application Development</h2>
<p>SWT made Java apps beautiful.  OpenJDK should make them ubiquitous.  We finally have an Open Source platform that is widely deployed.  The strong built in standard library and clean OO design patterns of Java make it a very pleasant host for developing rich client apps.  Obvious areas for improvement here include better layout/form design tools and closer integration with upstream Linux distributors.</p>
<p><img class="alignleft size-full wp-image-319" title="qt-logo" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/qt-logo.png" alt="qt-logo" width="196" height="80" />Somewhere along the line, Trolltech/<a href="http://www.qtsoftware.com/" target="_blank">QT Software</a> (now owned by Nokia) released Jambi &#8212; the complete Qt bindings, GUI framework, and incredibly rich library &#8212; for Java.  Oddly, this bombshell received little of the community and fanfare I thought it would or deserves.  Indeed, QT Software demoted Jambi from their teir-1 platforms and hopes the community will pick it up.  I hope this project isn&#8217;t allowed to stagnate as there is a lot of potential here.</p>
<h2>Web Apps</h2>
<p>Along the &#8220;Enterprise Web Application&#8221; lineage of Java, we wound up with some disgustingly overcomplicated and bloated frameworks for building web apps.  Ruby on Rails and Python Django came about and put a new spin on the development of rapid and robust web apps.  The learning curve of these frameworks is much less than Java EE and I will go as far as saying they are more capable because of it.</p>
<p>By using Java, JSP, and Servlets directly on top of a light Model-View-Controller, I believe Java is just as compelling as some of the more popular scripting languages.  Developers need to know they can trim the fat and that there are many advantages to developing in Java, namely because of the next topic&#8230;</p>
<h2>Dynamic Languages, its all about the VM</h2>
<p>It&#8217;s all about the JVM stupid!  One of the best features of Java and .NET are the underlying Virtual Machines.  By using JIT compiled VMs, Java code has a distinct advantage over the common interpreted languages such as Perl, Python, and PHP.  In the case of Java, the resultant is even naturally crossplatform.</p>
<p>The really interesting developments here focus on extending the JVM to syntax and paradigms other than the statically typed C++ lookalike.  <a href="http://clojure.org/" target="_blank">Clojure</a> and <a href="http://www.scala-lang.org/" target="_blank">Scala</a> deliver innovative new techniques while <a href="http://www.jython.org/" target="_blank">Jython</a> and <a href="http://www.jruby.org/" target="_blank">JRuby</a> bring these excellent languages to the Java software platform and virtual machine.</p>
<p>In short, Java provides everyone with a counter to Microsoft&#8217;s .NET CLR.  The Java VM has been around the block and tuned by giants such as Sun, IBM, Oracle, SAP and more.</p>
<p>I call on the community to discuss how we can encourage use of the JVM for languages other than Java and build this into a defacto runtime.  Continued tuning and integration with Windows, Mac OS X, and Gnome/KDE *NIX systems is paramount.  Research for easy multi-core development is also worthwhile.  Meanwhile, distributions need to continue packaging the JRE and make it a default.  Individual developers need to be made aware of &#8220;Java: The Good Parts&#8221; and myths debunked.</p>
<h2>Applets, Rich Media, Native Code!?</h2>
<p><img class="alignright size-full wp-image-311" title="javafx_logo" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/javafx_logo.png" alt="javafx_logo" width="120" height="52" />With the release of <a href="http://www.javafx.com/" target="_blank">Java FX</a>, widespread deployment of the JRE, and better browser integration, Java has set the stage for a comeback to its roots.</p>
<p>During the late &#8217;90s and 2000s, Adobe Flash became the tool of choice for web animation and interactive pages.  It really exploded with the advent of Youtube and other internet streaming sites making use of the Flash video format.  Unfortunately, Flash player is notoriously insecure, resource intensive, and crash-prone.  It is also not widely available for the millions of smartphones that have become more accessible than computers.</p>
<p>Luckily, there seems to be a shift back to the browser with new developments in AJAX, JavaScript, and HTML.  The &lt;video&gt; tag will hopefully make video as easy and portable as graphics are today in the browser.  Clean JavaScript libraries and fast JIT JS engines make it practical to use this paradigm for many domains.</p>
<p>Yet one must acknowledge that somewhere along the line, manipulating a DOM/markup language with a scripting language isn&#8217;t the most effective development platform for everything.  Google even thinks it poignant to run x86 machine code in a sandboxed environment in your browser.  I personally fail to see the logic behind this.  Java provides a well evolved, cross-platform solution.   Java can run on your ARM powered Android.  Requiring an x86 CPU just seems like the wrong track in this modern age.  Hopefully JavaFX will pick up the slack and return Java to its roots.  I would love to see the demise of the terrible Flash plugin.</p>
<h2>Future and Conclusion</h2>
<p>It&#8217;s time we considered Java for The Good Parts.</p>
<p>I hope some of my points caused you to reevaluate any bad preconceptions or past experiences you may have had with Java.  Java has undergone great change since its birth and I think it is capable of becoming the premier development platform for applications programming of all types.  Particularly interesting are some of the new languages such as Scala and Clojure.  Java has long been a staple in web development, but has traditionally scared away amateur coders.  If you cut the fat, Servlets and JSP are not much harder to set up than common place scripting languages.  Frameworks such as Grails bring it to parity with Rails or Django.</p>
<p>Java underwent a sea change in 2006 with the releasing of the source code and opening of the development process.  Java and the JVM should be championed by Libre software developers and users alike!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><img class="alignleft size-full wp-image-313" style="margin-left: 5px; margin-right: 5px;" title="javascript-the-good-parts" src="http://www.kev009.com/wp/wp-content/uploads/2009/10/javascript-the-good-parts.gif" alt="javascript-the-good-parts" width="180" height="236" /></div>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2009/10/java-the-good-parts/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>El Reg Humor and Java in free software</title>
		<link>http://www.kev009.com/wp/2009/05/el-reg-humor-and-java-in-free-software/</link>
		<comments>http://www.kev009.com/wp/2009/05/el-reg-humor-and-java-in-free-software/#comments</comments>
		<pubDate>Sat, 09 May 2009 05:45:24 +0000</pubDate>
		<dc:creator>kev009</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.kev009.com/wp/?p=248</guid>
		<description><![CDATA[The Register has a good article on Sphinx search with some entertaining pop-shots at Java and &#8220;enterprise software&#8221; that got a rise out of me: Solr is popular with the enterprise crowd, who love its Java. Being a Java program, &#8230; <a href="http://www.kev009.com/wp/2009/05/el-reg-humor-and-java-in-free-software/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>The Register has a good <a href="http://www.theregister.co.uk/2009/05/08/dziuba_sphinx/">article on Sphinx</a> search with some entertaining pop-shots at Java and &#8220;enterprise software&#8221; that got a rise out of me:</p>
<p style="padding-left: 30px;">Solr is popular with the enterprise crowd, who love its Java. Being a Java program, Solr includes no shortage of technology whose acronyms contain the letters J and X.</p>
<div id="article-mpu-container">
<p style="padding-left: 30px;">This tickles the enterprise pink, because these sorts of developers love nothing more than hanging out around a whiteboard drawing boxes and arrows and, from time to time, writing XML to make it look like they&#8217;re doing real work. Solr thrives in this environment, being an Apache Foundation project, the Apache Foundation, of course, widely known as a cruel experiment to see what happens when bureaucrats do open source.</p>
<p>Having a bit of experience with Java from academia and a few open source projects I make use of, I can&#8217;t help but laugh at how comically and concisely the editor summed it up.</p>
<p>By and large, successful open source projects tend to be written in languages other than Java. The entire GNU/Linux OS stack is primarily C, with some components using C++ like KDE, OpenOffice and Firefox.  On the ever popular web front, PHP, Ruby, and Python lead the pack.</p>
<p>I think it turned out this way for a multitude of reasons.  When working on the OS stack, the power and control of C and C++ are hard to beat.  The plethora of libraries and raw speed of these compiled languages set the bar high for any newcomers.  Java exists as a kludge, mildly useful for desktop apps and mildly useful for web apps while historically having a lot of problems.  Native look and feel have long been the layman&#8217;s complaint, though SWT has done a pretty good job there.  Of course, omnipresent Java in the Linux world is relatively new.  I think Java would have been the darling language of client apps had it been open sourced sooner, but this came about 7 years too late to have a large impact on shaping the common FOSS userland.</p>
<p>It is interesting how the open source projects built with Java tend to be highly bureaucratic and abstract.  I think the bottom line is that FOSS programmers do what they do because it is fun and demand pragmatism.  The &#8220;enterprise software&#8221; attitude/baggage that many Java apps and libraries carry are a big turn off to pragmatism and the hacking culture.  The barrier to entry for Java web programming is also much higher than its &#8220;scripting language&#8221; competitors, which carry light and simple frameworks that focus on results, not procedure.</p>
<p>Java itself isn&#8217;t that of a bad language.  I actually enjoy working with it in school (&#8230;though I think it really isn&#8217;t appropriate as an introductory teaching language, shielding important concepts from students.  Maybe a future post?..).  When it comes time for real work though, I consider Python, C,  C++ more pragmatic depending on the job at hand.  That, and the fact that most of the common scripting languages are gaining JIT compilers may accelerate Java toward status as a legacy language.</p>
<p>Your thoughts?</p></div>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kev009.com/wp/2009/05/el-reg-humor-and-java-in-free-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

