<?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>let x=x &#187; oracle</title>
	<atom:link href="http://www.crazymcphee.net/x/tag/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crazymcphee.net/x</link>
	<description>programming idiom and methodology</description>
	<lastBuildDate>Fri, 27 Jan 2012 09:36:24 +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>Broken Weblogic JMS &#8220;clustering&#8221;</title>
		<link>http://www.crazymcphee.net/x/2011/03/04/broken-weblogic-jms-clustering/</link>
		<comments>http://www.crazymcphee.net/x/2011/03/04/broken-weblogic-jms-clustering/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 08:54:15 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=606</guid>
		<description><![CDATA[I&#8217;ve ranted before that Weblogic 11g clustering/distribution technology of its messaging is fundamentally broken. Despite what Oracle claims, JMS in Weblogic is not clustered. Load balanced is a better description. It&#8217;s architectural &#8211; if any other technology (e.g. SOA Suite, EDN, etc) uses Weblogic JMS as its underlying messaging implementation, it will be broken too. [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; min-height: 17.0px} -->I&#8217;ve ranted before that Weblogic 11g clustering/distribution technology of its messaging is <a href="http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/">fundamentally broken</a>. Despite what Oracle claims, JMS in Weblogic is not clustered. <em>Load balanced </em>is a better description. It&#8217;s architectural &#8211; if any other technology (e.g. SOA Suite, EDN, etc) uses Weblogic JMS as its underlying messaging implementation, it will be broken too.</p>
<p>The problem is simple. In Weblogic, if you cluster a <em>logical</em> topic (or a queue) across two machines, underlying this you&#8217;ve actually got two uniquely named and non-cooperating <em>physical</em> topics, one on each member of the cluster. A topic message that is sent to the <em>logical</em> topic is delivered (copied) to both physical topics. Now, if your logical topic <em>listener</em> is also clustered, you&#8217;ve got, in effect, <em>two</em> physical topic listeners on <em>two</em> different, and non-cooperating, physical topics. The topic message is then always delivered twice &#8211; even if both listeners have <em>identical</em> durable subscription ids (i.e. indicating that they belong to the same <em>logical</em> component, which should only get the topic message once). This terrible architectural blunder occurs because there is physically underlying your logical configuration, totally separate, non-cooperating, uniquely-named topics on each of the cluster members, with what amounts to a JNDI name service hack in the middle to spray the load about your cluster. In other words, it is <em>load balanced</em>, not clustered. JMS <em>Queues</em> are the same &#8211; however its just that the implicit side-effects of the queue semantics &#8211; which ever only delivers to a single consumer even if there are many configured &#8211; means it isn&#8217;t impacted as much. Because of that semantic, a queue message is only delivered to <em>one</em> of the two physical queues (i.e. again, it&#8217;s load-balanced) so only one of your two clustered queue listeners gets the message. And there&#8217;s a terrible time-out based hack to redeliver the message to another member of your queue cluster just in case there isn&#8217;t any listener instances on the cluster that the message ends up on.</p>
<p>N.B. Coherence does not, apparently, have this massive architectural fail. If you need to do <em>clustered</em> fail-safe broadcast messaging in an Oracle Weblogic environment, do yourself a favour and use Coherence.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/03/04/broken-weblogic-jms-clustering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stuff that is just plain wrong, part 1,893,567</title>
		<link>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/</link>
		<comments>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 23:04:19 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=591</guid>
		<description><![CDATA[Weblogic&#8217;s a big, vendor-supported, application server right? And it has advanced clustering features, right? So you&#8217;d think it&#8217;s clustered JMS implementation is one of the best in the business &#8212; after all large enterprise systems often require high capacity and reliable clustered messaging, right? And Weblogic is offered as a solution to those sorts of [...]]]></description>
			<content:encoded><![CDATA[<p>Weblogic&#8217;s a big, vendor-supported, application server right? And it has <em>advanced</em> clustering features, right? So you&#8217;d think it&#8217;s clustered JMS implementation is one of the best in the business &#8212; after all large enterprise systems often require high capacity and reliable clustered messaging, right? And Weblogic is offered as a solution to those sorts of problems with all it&#8217;s additional high-priced enterprise-grade products that run on it, right?</p>
<p>Well, <em>nope</em>.</p>
<p><em>Especially</em> nope if you hope to use clustered broadcast messaging (i.e. Topics)  to multiple connected clustered application receivers. Unless you cope with multiple versions of the same message in your application code.</p>
<p>Funny thing is, they <em>already</em> have this product that can do clustered broadcast messaging well proper, it&#8217;s called Coherence. But if you need the JMS API, not so suitable. However they could use this product to underpin their crappy 10 year old clustered JMS implementation in Weblogic. Do you think they will do that? Anyone want to open a book on it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ordeal of Installing Oracle Service Bus on a Windows-based developer workstation</title>
		<link>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/</link>
		<comments>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 07:30:12 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[osb]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=570</guid>
		<description><![CDATA[This is a genuine installation procedure which I wrote, but you might want to read it for its other values. Overview OSB installation in a development environment consists of a completely separate Weblogic instance and yet another &#8216;special installation&#8217; of Eclipse. You can&#8217;t use existing Eclipse installations. Nor is it recommend to use one of [...]]]></description>
			<content:encoded><![CDATA[<p>This is a genuine installation procedure which I wrote, but you might want to read it for its other values.</p>
<h2>Overview</h2>
<p>OSB installation in a development environment consists of a completely separate Weblogic instance and yet another &#8216;special installation&#8217; of Eclipse. You can&#8217;t use existing Eclipse installations. Nor is it recommend to use one of the five other existing Weblogic instances that Oracle products thoughtfully demand their own copy thereof (SOA Suite, I am looking at you).</p>
<h2>Installation process</h2>
<p>This is the procedure for installing OSB development environment.</p>
<p>As network firewall policy prevents the downloading of files, you will need to use installation media located within &lt;companyname&gt; network. Take the files conveniently stored on network server &lt;location redacted&gt; and copy them into a directory on your local computer. This directory is hereafter referred to as &#8216;installation files directory&#8217; below.</p>
<h3>Install Weblogic</h3>
<ol>
<li>Go to the installation files directory.</li>
<li>Run the executable file wls1033_oepe111150_win32.exe</li>
<li>This action launches the Oracle Installer for the Weblogic instance. It takes some time to run so contemplate the meaning of your life for a few minutes while it does. Maybe get a cup of tea. Stretch your legs. Think about lunch or your next holiday. File a support request for more memory. You should get at least 8GB.</li>
<li>Okay that&#8217;s it, you&#8217;ll finally see the Oracle Weblogic 10.3.3.0 installer. Think about the fact that Oracle sees fit to put &#8220;instructions&#8221; on the first screen telling you what the &#8220;Next&#8221; button does. This is advanced JEE server technology you&#8217;re installing, and potentially, Oracle think you don&#8217;t know what the &#8220;Next&#8221; button does. Maybe this reflects the level of experience inside Oracle, or perhaps it is indicative of the depth of respect in which Oracle holds their customers.</li>
<li>Press the &#8220;Next&#8221; button. The next screen you will see  is very important. If you fsck it up you&#8217;ll have to uninstall and start over. It does not have any instructions, but that&#8217;s OK, we&#8217;ve done it here in this wiki page for you. Pay attention.</li>
<li><strong>DO. NOT. ACCEPT. THE. DEFAULT.</strong> Especially if you installed SOA Suite or some other Oracle product before you installed this one. Double especially if you still want that product to work.</li>
<li>SELECT &#8220;Create a new Middleware Home&#8221; (THIS IS VERY IMPORTANT)</li>
<li>TYPE a name of an Appropriate Directory. I used &#8220;C:\Oracle\OSB_Middleware&#8221;</li>
<li>PRESS The &#8220;Next&#8221; button. Use the &#8220;Back&#8221; button if you need to see the instructions about how to use the &#8220;Next&#8221; button that Oracle conveniently provided for you on the first Screen. No, don&#8217;t do that. If you do that you&#8217;ll probably have to do this proceedure again and it will just make this entire experience last longer than it needs to. This is not a recommended practice.</li>
<li>The next screen demands that you give Oracle your Email Address to get &#8220;security updates&#8221;. It also wants a thing called your &#8220;My Oracle Support Password&#8221; (I suspect this is what might have been known as Oracle TechNet). As we both know, the best possible security measure is not to give out your password to strange programs that demand it.</li>
<li>As I planned on giving them my &lt;workcompany&gt; email, and as my Technet sub doesn&#8217;t use that Email address, I also unchecked the &#8220;I wish to receive security updated via My Oracle Support&#8221; check box.</li>
<li>Are you Sure? YES I&#8217;M VERY SURE. I would like to be &#8220;ignorant of security updates&#8221; and also Oracle spam. Ignorance is Bliss.</li>
<li>Look at that, I can&#8217;t give them my email address after all, what they really meant was &#8220;type your Oracle Support user id&#8221;. Press &#8220;Next&#8221;.</li>
<li>Now you have to choose whether you want a &#8220;Typical&#8221; installation or a &#8220;Custom&#8221; one. I chose &#8220;Typical&#8221;, which, being an Oracle installation, I expect to require an 8-core 64GB RAM 2TB SAN SSD -based supercomputer with a external 4-way Oracle RAC for configuration (&#8220;infrastructure&#8221;) DB in order to have enough grunt to service about 3 requests a minute. Press &#8220;Next&#8221;.</li>
<li>There&#8217;s a lot of choices here about the various subdirectories under the Middleware Home Directory that you created further back. I recommend accepting the defaults, but you can probably cause yourself countless of fun trolling on the My Oracle Support forums as you get ever-more-desparate for a solution to a very obscure problem that the phone support have no idea about and that was likely caused by you mucking about these defaults, causing the support personel to simply recommend you to reinstall the product, if you really feel the need to change them here.</li>
<li>If you can remember the instruction about the use of the &#8220;Next&#8221; button at step 4, then Press &#8220;Next&#8221;.</li>
<li>Now you can choose whether you want to put the shortcuts for &#8220;All users&#8221; or just you (&#8220;Local user&#8221;). If you are the BOFH I recommend &#8220;All Users&#8221;. As this is the default, we can all safely assume that the BOFH works for Oracle and is now responsible for designing their installation processes. Accept the default, and press &#8220;Next&#8221;.</li>
<li>The next screen is a summary of what you&#8217;ll be installing. You can also select each item and see a summary of what it does. Ponder the mystery of Oracle, and press &#8220;Next&#8221;.</li>
<li>Keep pondering that mystery while Oracle Weblogic Server 11g Release 1 (10.3.3.0) is installed. It takes a little bit of time. While it does that, you might to book that Holiday, get another cup of tea, or chase up that support request for the additional RAM you&#8217;ll be soon needing.</li>
<li>Congratulations! Installation is complete.</li>
<li>I opted to leave the &#8220;Run Quickstart&#8221; option checked.</li>
<li>Press &#8220;Done&#8221;. There are no onscreen instructions for this button.</li>
<li>Quickstart will run. It&#8217;s just a link farm.</li>
</ol>
<h3>Install Oracle Enterprise Pack for Eclipse (OEPE aka &#8220;Special Eclipse&#8221;)</h3>
<ol>
<li>Go to the installation files directory</li>
<li>Extract the file oepe-galileo-all-in-one-11.1.1.5.0.201003170852-win32.zip &#8230; I used 7zip and made sure to put it into a subdirectory of the installation files directory.</li>
<li>It&#8217;s kind of pretty big, takes a cople of minutes.</li>
<li>Just like a regular version of Eclipse, once this is unzipped, it&#8217;s installed. However it&#8217;s not a regular version of Eclipse. It is a &#8220;special&#8221; Eclipse that went to &#8220;special&#8221; school.</li>
<li>Although this directory can <em>probably</em> live anywhere, it&#8217;s a good idea to copy this directory into the new Oracle Middleware Home that you created when you installed Weblogic. Look I really have no idea why this is the case, however, it&#8217;s not good to anger the Oracle by using you regular development directories. ORACLE_HOME sweet ORACLE_HOME it is then.</li>
</ol>
<h3>Install OSB and OSB Dev Tools</h3>
<ol>
<li>Go to the installation files directory.</li>
<li>Extract the file ofm_osb_generic_11.1.1.3.0_disk1_1of1.zip &#8230; again I used 7zip and made sure to put it into a directory underneath the installation files directory.</li>
<li>Enter this directory. Enter the directory &#8220;osb&#8221; that will be created underneath it. Note that even though the file said &#8220;disk1_1of1&#8243; in the file name that underneath here there&#8217;s two directories, Disk1 and Disk2.</li>
<li>Go into the directory &#8220;Disk1&#8243;</li>
<li>Run the executable file &#8220;setup.exe&#8221;</li>
<li>A DOS window opens which asks you for the location of a JRE in order to use Oracle Universal Installer. Probably. Exactly why the Weblogic installer didn&#8217;t need to know where the JDK was, I do not know. Probably it used a sensible installer rather then the Oracle Universal Installer. I don&#8217;t ever think I&#8217;ve ever seen an machine with two Oracle installations on it that didn&#8217;t also have two or more installations of the Oracle Universal Installer also installed on it. Its name perhaps means that it installs itself universally, rather than it is a product which has a universal use for installing other software. Ponder the mystery of the Oracle.</li>
<li>A JRE will be located in the original Oracle Middleware Home that you created when you installed Weblogic. In fact there&#8217;s at least two (Sun JDK and JRockit). Use the Sun JDK. For example, my value for the JDK was &#8220;C:\Oracle\OSB_Middleware\jdk160_18&#8243;. Press Enter.</li>
<li>Now the Universal Installer will actually attempt to install something. It says &#8220;You are about to install the Oracle Service Bus (OSB) and may install the Oracle Service Bus IDE and Oracle Service Bus Examples (OSBE). Before proceeding, make sure that you have installed and configured Oracle WebLogic Server 11g. If you want to design OSB applications in Eclipse, make sure Oracle Enterprise Package for Eclipse (OEPE) is installed.&#8221; Which is all true if you&#8217;ve been following this guide.</li>
<li>Press &#8220;Next&#8221;. There&#8217;s no instructions in this program for the use of the &#8220;Next&#8221; button. Someone ought to file a change request for that.</li>
<li>Now you can choose whether you want a &#8220;Typical&#8221; installation or a &#8220;Custom&#8221; one. Typically, choose &#8220;Typical&#8221;.</li>
<li>Press &#8220;Next&#8221;. I tried looking for online help here about the use of the &#8220;Next&#8221; button but I did not find anything.</li>
<li>It does a prerequisite check. It should pass, and if it doesn&#8217;t, you are probably screwed. If it does, you will be able to Press &#8220;Next&#8221;</li>
<li>At this next screen <strong>DO NOT ACCEPT THE DEFAULTS</strong>.</li>
<li>Choose the Oracle Middleware Home that you installed the Weblogic into at the first part of this installation procedure. E.g. I chose &#8220;C:\Oracle\OSB_Middleware&#8221;.</li>
<li>Once you do the previous step, ff you followed the instructions for the Special Eclipse (OEPE), it will have found it automatically. If not, choose the location where you installed the Special Eclipse (OEPE Location). For example, my value was &#8220;C:\Oracle\OSB_Middleware\oepe-galileo-all-in-one-11.1.1.5.0.201003170852-win32&#8243;</li>
<li>Press &#8220;Next&#8221;. Did you know that the Oracle at Delphi was a priestess called the &#8216;Pythoness&#8217; who answered your question using gibberish verse. A Male Attendant of the Pythoness interpreted her raving mad gibberings and told you what they meant. For a fee. Does this sound familiar?</li>
<li>Review the installation details. When you are sure they are correct, press &#8220;Install&#8221;.</li>
<li>OSB will now install. It takes a little time so run those errands, go to lunch, get a coffee, dream of the Holiday you just Booked. I&#8217;d tell you to install the new 8GB of memory that you ordered before which surely has arrived by now, but that would mean turning your computer off. Best to wait until it&#8217;s finished then.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Glassfish is doomed in the &#8216;department&#8217;</title>
		<link>http://www.crazymcphee.net/x/2010/02/04/glassfish-is-doomed-in-the-department/</link>
		<comments>http://www.crazymcphee.net/x/2010/02/04/glassfish-is-doomed-in-the-department/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 10:25:18 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=508</guid>
		<description><![CDATA[There&#8217;s been lots of discussion the past six months about the fate of MySQL under the ownership of Oracle. Now that the purchase of Sun is complete, I&#8217;m much more concerned about the fate of the excellent JEE platform Glassfish. For example some people think that superior technology will prove to Oracle that Glassfish is [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been lots of discussion the past six months about the fate of MySQL under the ownership of Oracle. Now that the purchase of Sun is complete, I&#8217;m much more concerned about the fate of the excellent JEE platform <a href="http://glassfish.dev.java.net/">Glassfish</a>. For example some people think that superior technology will prove to Oracle that Glassfish is worth pursuing (see the <a href="http://java.dzone.com/news/oh-yes-sun-not-set-yet">comments on this dZone thread about Kenai.com</a>).</p>
<p>The problem for Glassfish, as <a href="http://www.theserverside.com/news/thread.tss?thread_id=59317">the  second sentence of this ServerSide article states</a> (see it straight from Oracle&#8217;s mouth <a href="http://blogs.sun.com/arungupta/entry/glassfish_strategy_by_oracle_sun">here</a>, and see also <a href="http://www.infoworld.com/d/open-source/oracle-reveals-strategy-glassfish-mysql-openoffice-and-solaris-914">here</a>) is that Oracle  view it as being used for &#8220;non-mission critical department apps&#8221;. Glassfish&#8217;s superior technology (or otherwise) just doesn&#8217;t come into it. It&#8217;s not a factor (as it rarely every is).</p>
<p>Not so long ago Oracle spent a <em>big</em> wad of money acquiring an app server (Weblogic) and then a stack of <em>more</em> money porting all its other products into it and branding the resulting <span style="text-decoration: line-through;">mess</span> platform &#8220;Oracle Fusion Middleware 11g&#8221;. Now not only do they have their <em>third</em> app server (OC4J/OAS, Weblogic and Glassfish), but the Sun product suite includes products that compete with various Fusion Middleware 11g products (portals, ESBs, and so on).   So on one hand you&#8217;ve got a &#8220;departmental&#8221; application server, which you can either licence for free by downloading the open-source version, or buy support for the fancier &#8216;Enterprise&#8217; version, and on the other, an expensive, full-stack-integrated (all the way to the IDE), fully-branded <em>strategic platform</em> that Oracle just invested a vast amount of money into, and have been pushing like crazy onto customers the past six months. And it is the same sales team that will sell both this licensed &#8220;departmental&#8221; Glassfish. Therefore if you say the magic words like &#8220;need a cluster&#8221; or maybe &#8220;we might build a portal&#8221;, or &#8220;we are considering adopting a service-orientated architecture&#8221;, lo and behold you&#8217;ll find the molto-dinero &#8220;Fusion Middleware&#8221; based solution installed all over your sorry arse quicker than you can say &#8220;<em>can you please explain this per-core with special CPU-architecture-loading-factor licencing schema to me once again and why is it a different price if I upgrade my hardware without adding any additional cores???</em>&#8220;.</p>
<p>Let&#8217;s dissect those &#8220;key points&#8221; of Oracle&#8217;s strategy announcement:</p>
<blockquote>
<table cellpadding="10">
<tr>
<th width="50%">
Key Point
</th>
<th width="50%">
What they meant to say
</th>
</tr>
<tr>
</tr>
<tr valign="top">
<td>GlassFish continues as the Java EE reference implementation and as an open source project.</td>
<td>
We see it as the way to dominate the direction of Java EE for at least two years, but for Larry&#8217;s sake don&#8217;t try to use it <em>in production</em>.
</td>
</tr>
<tr valign="top">
<td>Oracle&#8217;s strategic application server, Oracle WebLogic Server, together with GlassFish, provide world class Java EE infrastructure.</td>
<td>
Oracle&#8217;s strategic application server, Oracle WebLogic Server something something something provide world-class something something infrastructure.
</td>
</tr>
<tr valign="top">
<td>GlassFish Enterprise Server and WebLogic Server expected to share core components.</td>
<td>
We are the Borg. Resistance is futile. You will be assimilated.
</td>
</tr>
<tr valign="top">
<td>Oracle plans to add GlassFish Enterprise Server all WebLogic offerings.</td>
<td>
Hey, look at this cute free &#8220;reference implementation&#8221; thingy that comes free with Weblogic! You could use that to run your departmental Wiki instead of having to pay us another fortune for more Weblogic licences. Did you say &#8220;WIKI&#8221;? Did we tell you all about the great wiki-like Enterprise 2.0 features available in the Oracle Fusion Middleware 11g offering? How many test environments did you say you needed licences for?
</td>
</tr>
<tr valign="top">
<td>GlassFish Web Stack maintained for existing customers.</td>
<td>
Not available for sale.
</td>
</tr>
<tr valign="top">
<td>GlassFish Message Queue remains as the GlassFish messaging infrastructure.</td>
<td>
We&#8217;re not expecting to sell any licences of this. Just use Oracle Fusion Middleware&#8217;s SOA Suite 11g already. We&#8217;re fairly sure that&#8217;s got a message queue in it.
</td>
</tr>
<tr valign="top">
<td>Oracle plans to license GlassFish Enterprise Server and Java System Web Server with all WebLogic Server offerings.</td>
<td>
See above.
</td>
</tr>
<tr valign="top">
<td>GlassFish also available as standalone offering.</td>
<td>
Are you sure you didn&#8217;t mean to say &#8220;Weblogic&#8221;? No? Can you call back next Thursday at 2pm and ask for Fred? We&#8217;re reasonably certain he might know something about that Glassthingy.
</td>
</tr>
<tr valign="top">
<td>GlassFish will continue to be supported and maintained for an extended time period for customers current on support.</td>
<td>
Well, the lawyers said we had to. We know how to do this. Ask any 10g customer.
</td>
</tr>
<tr valign="top">
<td>GlassFish open source projects thrive</td>
<td>
As long as we will let them.</td>
</tr>
</table>
</blockquote>
<p>I know I&#8217;m a completely cynical bastard about these things, but I will wager within a few months that even if you deliberately ask for Glassfish Enterprise <em>directly</em> that you&#8217;ll have to fight off the Weblogic borg absolutely <em>tooth and nail to the last man</em> as they repeatedly try to board your IT department brandishing their integrated-wizard-driven <em>Red Stack</em>. I predict that, basically, after a year of not even <em>trying</em> to sell any Glassfish licences &#8211; because if you ask for any of the features that are in the licenced version and not the open-source one, you&#8217;ll be pushed to Weblogic (and anyway, at ten times the price they&#8217;ll prefer to sell you Weblogic as a default position, after all &#8220;Glassfish comes free with Weblogic&#8221;) &#8211; Oracle will announce, &#8220;there&#8217;s no sales in it&#8221;, then probably ditch the licenced Glassfish version completely, leaving only the open source version. Finally sometime after that they&#8217;ll cut the open source funding off and it will have to limp along without hardly any of the resources it formerly had. Maybe they&#8217;ll donate it to the ghetto of an Apache incubator project where it can die unnoticed a couple of years after that.  It&#8217;s a pity because IMHO Glassfish is ten thousand times a better app server than anything Oracle ever produced, or even bought before this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/02/04/glassfish-is-doomed-in-the-department/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Running Oracle XE on Mac OSX using virtualised JeOS</title>
		<link>http://www.crazymcphee.net/x/2009/08/27/oracle-xe-on-mac-osx/</link>
		<comments>http://www.crazymcphee.net/x/2009/08/27/oracle-xe-on-mac-osx/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 06:30:20 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[oracle-xe]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=462</guid>
		<description><![CDATA[So Oracle in its wisdom doesn&#8217;t have Mac OSX version of its free database. This is of course really annoying to Mac users who need to develop systems that use Oracle databases &#8211; Oracle XE is a great little database especially for development environments. Recently I found myself in a situation where I would be [...]]]></description>
			<content:encoded><![CDATA[<p>So Oracle in its wisdom doesn&#8217;t have Mac OSX version of its free database. This is of course really annoying to Mac users who need to develop systems that use Oracle databases &#8211; Oracle XE is a great little database especially for development environments. Recently I found myself in a situation where I would be needing to bind a Hibernate object to a PL/SQL function in the target Oracle database rather than a table or view per se. As the function call is database specific, when developing the application I needed to use an Oracle database and could use e.g. HSQL or MySql as a substitute Oracle DB for development purposes. Oracle XE is a great way out here because it fully supports PL/SQL packages and functions and procedures.</p>
<p>I was off the client site so I couldn&#8217;t rely on a fast connection to their development databases. I just wrote a dummy function that was called the same as the real function with the same input and output parameters and instead of the complex function body it just wrapped a simple mock table of test data. Problem solved, Oracle XE to the rescue. But first you have get Oracle XE running on your Mac, this is what the rest of this article is about, because you can&#8217;t just download an Oracle XE edition for the Macintosh.</p>
<h3>Virtualisation is great &#8211; use a Linux VM</h3>
<p>However modern Virtualisation is your saviour. Put simply, you can use a virtualisation tool like Parallels, or my choice, VMWare Fusion, to run a virtualised version of Linux that contains the Oracle XE instance.</p>
<p>Because VMs can waste a bit of your local resources, luckily there is a specialised version of Ubuntu designed for running as a virtualised machine of this type. Its called JeOS (pron. <em>Juice</em>, apparently). It doesn&#8217;t have an X-window environment, just the shell, so it&#8217;s pretty lightweight and can run, with Oracle XE, in less than 512MB of memory. Perfect for getting a copy of Oracle XE onto your Macbook Pro.</p>
<p>It will however, eat up a couple of gigabytes of disk space, up to the maximum limit you choose for your disk size in the VMWare configuration. However it will only use the current amount of disk needed, as VMWare will expand the size of the image as needed (I&#8217;ll just assume that Parallels does something similar).</p>
<h3>Setting it up &#8211; basic instructions</h3>
<p><a href="http://tedwise.com/2008/10/03/running-oracle-for-development-on-the-mac/">This page here</a> &#8211; has a great set of instructions for getting JeOS installed and configured with Oracle XE on it. Follow the instructions there <em>exactly</em> &#8211; but only to the point where you install and configure Oracle XE &#8211; don&#8217;t go further than that.</p>
<p>Make sure you configure plenty of swap space as outlined in the instructions.</p>
<blockquote>
<h3>Setting it up on standard Ubuntu/Debian</h3>
<p>If you are running a full Ubuntu or other Debian based instance, the instructions are somewhat simpler. Install it as per normal in your VM. But make sure your swap space is twice the memory you have assigned to the VM! Oracle XE demands things to be like that.</p>
<p>Add</p>
<pre>deb http://oss.oracle.com/debian unstable main non-free</pre>
<p>to /etc/apt/sources.list and then:</p>
<pre>$ wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle  -O- | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install oracle-xe</pre>
<p>These instructions were cribbed from <a href="http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html">here</a>.</p></blockquote>
<h3>After installing and configuring Oracle XE</h3>
<p>After you run the XE configuration (&#8216;$&#8217; represents the Unix shell prompt and should not be typed);</p>
<pre>$ sudo /etc/init.d/oracle-xe configure</pre>
<p>If you&#8217;re running on JeOS don&#8217;t yet make the machine &#8220;headless&#8221;! Or you might find there are issues with the &#8220;Apex&#8221; application. The problem is that the Apex application, which is a useful web-based administration program for Oracle XE (especially for developers who don&#8217;t want to be forced to use sqlplus for all their database administration), will only allow connections from localhost &#8211; and you don&#8217;t have X-window, or a browser, to access it (I don&#8217;t know if lynx will work with Apex and I wasn&#8217;t going to try).</p>
<h3>Get SSH installed</h3>
<p>First get SSH installed in JeOS so you can get to the command prompt remotely:</p>
<pre>$ sudo apt-get install ssh</pre>
<h3>Find out the VM&#8217;s IP address</h3>
<p>Now, if you type <em>ifconfig</em> (<em>/sbin/ifconfig</em> if that&#8217;s not found on your path) you will be able to determine the IP address of your VM running on your Macintosh. At this point you can connect to the VM using ssh from a Macintosh terminal window:</p>
<pre>$ ssh username@ip_address</pre>
<p>Actually, at this point you can go ahead and make the machine headless, if you want. I would recommend not to do that until you&#8217;re sure of everything you&#8217;ve configured.</p>
<h3>Configure environment to run sqlplus</h3>
<p>After you&#8217;ve logged back into the running Linux VM using ssh from the Mac Terminal, the next thing is you&#8217;ve got to get sqlplus access working to the XE instance you installed. Funnily enough, although the .deb file that is installed off the Oracle site creates an oracle user, it doesn&#8217;t in any way set that user up so you can use the command line tools. SO you can&#8217;t just su &#8211; oracle and get a functional environment.</p>
<p>Anyway, you will need to do two things to your environment; add the <em>ORACLE_HOME</em> environment variable and set up your <em>PATH</em> so it can find <em>sqlplus</em>.</p>
<pre>$ export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
$ export PATH=${PATH}:${ORACLE_HOME}/bin</pre>
<p>You should add these two lines to your <em>.profile</em> or <em>.bash_profile</em> file &#8211; probably best for the &#8216;oracle&#8217; user that the installation will have created. But you can actually set this up for any regular user that you configure in this VM. You can also just type them at the command line to get them in your current environment, if you have to.</p>
<h3>Configure Apex to accept non-localhost connections</h3>
<p>The web-based administration software for XE, called &#8220;APEX&#8221;, only binds to <em>localhost</em>. This is a big hassle if your VM copy of Linux (like JeOS) doesn&#8217;t have a GUI, because you don&#8217;t have a browser (lynx/links excluded, I did not try those!).  However, you can make Apex bind to the &#8220;external&#8221; IP address for your VM, but you&#8217;ll need to use <em>sqlplus</em>.</p>
<p>To run <em>sqlplus</em>, do the following:</p>
<pre>$ sqlplus system@XE
  Enter password:</pre>
<p>Enter the password you specified at the &#8216;oracle-xe configure&#8217; step above.</p>
<p>At the SQL prompt, enter the following command:</p>
<pre>SQL&gt; EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);</pre>
<p>Now you&#8217;ll have to stop and start Oracle to make the configuration active:</p>
<pre>$ sudo /etc/init.d/oracle-xe restart</pre>
<p>After which, if you type</p>
<pre>$ netstat -tna</pre>
<p>You should find a line</p>
<pre>tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN</pre>
<p>This indicates a process is listening to the port 8080 on all IP addresses for connections coming from any other IP address. Assuming you specified port 8080 at the &#8216;oracle-xe configure&#8217; step. Sometimes I use 8888 especially if I have a Tomcat instance in the same VM, as Tomcat will also like to run on 8080 and I&#8217;d prefer it if it did.</p>
<h3>Test and use Apex</h3>
<p>Test this connection in your browser, in my case, the address was 10.1.2.17, but you will have to substitute your own VM&#8217;s IP address &#8211; <em>http://10.1.2.17:8080/apex</em>. I like to make an /etc/hosts entry that points to this address as &#8216;oracleXE&#8217;. That way I can use a symbolic name in my jdbc connection strings and actually switch which instance of XE I am using depending which VM I&#8217;ve fired up without editing the jdbc configuration of the application under development &#8211; I just change the /etc/hosts entry instead.</p>
<p>Anyway once you connect to apex you can login using the user name and password you set up during your XE install and configuration process (same as you used for <em>sqlplus</em>). The users will be sys and system, you can use them to create new users to contain your databases for development.</p>
<p>The same IP address as above will be used to connect to your Oracle database from the programs you are developing. The default port should be 1521 and the SID should be XE.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/08/27/oracle-xe-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In those OTHER multiverses, Oracle already bought it for $500mil</title>
		<link>http://www.crazymcphee.net/x/2009/05/21/in-those-other-multiverses-oracle-already-bought-it-for-500mil/</link>
		<comments>http://www.crazymcphee.net/x/2009/05/21/in-those-other-multiverses-oracle-already-bought-it-for-500mil/#comments</comments>
		<pubDate>Thu, 21 May 2009 11:40:54 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=364</guid>
		<description><![CDATA[Strange IM conversation came my way the other night, whilst discussing some code a team I led wrote at a previous workplace, I think it highlights some crucial factors Oracle bring to the Enterprise Java World: anon 9:04PM [about that code] crazymcphee 9:05 PM well, it WAS perfect &#8230; CRAZY perfect anon 9:06 PM lol&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Strange IM conversation came my way the other night, whilst discussing some code a team I led wrote at a previous workplace, I think it highlights some crucial factors Oracle bring to the Enterprise Java World:</p>
<blockquote><p><strong>anon</strong> 9:04PM<br />
[about that code]</p>
<p><strong>crazymcphee</strong> 9:05 PM<br />
well, it WAS perfect &#8230; CRAZY perfect</p>
<p><strong>anon</strong> 9:06 PM<br />
lol&#8230;  no doubt it even spans a 2yr time frame and 2 organisational puchases later, with no impact</p>
<p><strong>crazymcphee</strong> 9:07 PM<br />
exactly. all future and past and alternative universe combinations taken care of forever. no changes necessary.</p>
<p><strong>anon</strong> 9:08 PM<br />
sweeet&#8230; it should be a product</p>
<p><strong>crazymcphee</strong> 9:08 PM<br />
oh it already is just not in this instantiation of the multiverse</p>
<p><strong>anon</strong> 9:08 PM<br />
this instance has finished run level 3 yet</p>
<p><strong>crazymcphee</strong> 9:08 PM<br />
but in those OTHER multiverses, Oracle already bought it for $500mil</p>
<p><strong>anon</strong> 9:09 PM<br />
hahaha, i can see you partying with ellison and his geisha girls ;D</p>
<p><strong>crazymcphee</strong> 9:09 PM<br />
tried a &#8216;sudo shutdown&#8217; but something&#8217;s threadlocked the kernel</p>
<p><strong>anon</strong> 9:10 PM<br />
then I stepped in a core dump</p>
<p><strong>crazymcphee</strong> 9:10 PM<br />
that&#8217;s why i&#8217;m hard at work building a mutiverse portal so i get me a slice of sweet ellison geisha-girl action</p>
<p>and here you are thinking about some OTHER sort of portal when i said i was working on an &#8216;Oracle 10g Portal Implementation&#8217;</p>
<p><strong>anon</strong> 9:11 PM<br />
don&#8217;t forget to add some proprietary and intrusive components that spread like a virus and grind all the other appservers to dust</p>
<p><strong>crazymcphee</strong> 9:12 PM<br />
well, that&#8217;s what at least half of those 10^100 multiverses full of new Indian IT grads are working on</p>
<p>I just send them a 500 page spec each month and they will get it to me at sometime before the death of this multiverse</p>
<p><strong>anon</strong> 9:13 PM<br />
that means it should be about ready by now, well as in it probably compiles in at least one of those multiverses, will be fully cmm lvl 5, yet not actually do what you asked</p>
<p><strong>crazymcphee</strong> 9:13 PM<br />
(oh by &#8216;spec&#8217; i mean, a drunken rant shouted into my mobile phone on the walk home)</p>
<p>well, yes, but i&#8217;m fully expecting it will meet oracle&#8217;s stringent marketing requirements</p>
<p><strong>anon</strong> 9:14 PM<br />
well shit, they have to do some work, what do they expect, 4 u to write the code as well</p>
<p>yes marketing tickbox on the packaging is the only requirements they really need</p>
<p><strong>crazymcphee</strong> 9:15 PM<br />
yeah, i mean, hell, we pay at least $5.50 a day per developer &#8230;</p>
<p>oh we don&#8217;t tell the DEVELOPERS about the marketing tickbox requirements! they are super-secret. we just slap those on the box at the end. when i say &#8216;end&#8217; i mean end of the box design process which has been ready for about 8 months now.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/05/21/in-those-other-multiverses-oracle-already-bought-it-for-500mil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Oracle 10g portlets in a continuous integration environment</title>
		<link>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/</link>
		<comments>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 07:15:37 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[jsr168]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=336</guid>
		<description><![CDATA[Ignoring all the hints (to use wizards and manual deployments) from the Oracle information as to how to go about creating JSR168 portlets for the Oracle 10g Portal server, we have successfully designed a continuous integration environment for the Oracle portal environment for a client. The Oracle 10g portal server is the old-school Oracle app-server [...]]]></description>
			<content:encoded><![CDATA[<p>Ignoring all the hints (to use wizards and manual deployments) from the Oracle information as to how to go about creating JSR168 portlets for the Oracle 10g Portal server, we have successfully designed a continuous integration environment for the Oracle portal environment for a client. The Oracle 10g portal server is the old-school Oracle app-server portal environment, not the BEA environment. As such it&#8217;s pretty old school (the database is the World), but it did surprise us with a command line utility (&#8216;<em>dcmctl</em>&#8216;) that allows us to programmatically deploy components such as portlet WARs into the application server using nothing but simple shell scripts. Unfortunately no such programmatic control has been found yet for the actual portal configuration, but we are working on that (if you know how to programmatically control the configuration of an Oracle 10g Portal with the command line please leave a comment!).</p>
<p>Simply put, using nothing but a <em>/bin/bash</em> script and <em>wget</em> we scrape the latest version of the relevant artefacts from the Artifactory Maven repository. These artefacts are deployed (published) into the repository by the Hudson continuous integration build.</p>
<p>As they say, a picture tells a thousand words and I&#8217;ve included a schematic of the environment we have created below (image links to PDF).</p>
<p> </p>
<p><a href="http://www.crazymcphee.net/x/wp-content/uploads/2009/04/build-process.pdf"><img class="alignnone size-full wp-image-338" title="build-process" src="http://www.crazymcphee.net/x/wp-content/uploads/2009/04/build-process.png" alt="build-process" width="418" height="281" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle to buy Sun &#8230;</title>
		<link>http://www.crazymcphee.net/x/2009/04/20/oracle-to-buy-sun/</link>
		<comments>http://www.crazymcphee.net/x/2009/04/20/oracle-to-buy-sun/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:33:04 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=329</guid>
		<description><![CDATA[Yes, it&#8217;s true. Oracle and Sun have both announced the marriage. Techcrunch has the full press release. ZDnet some other commentary. A few people seem to be sweating about MySQL. It would not be stressing about MySQL too much. It could get spun off, who knows. It&#8217;s even possible, as some commenters on Techcrunch say, [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it&#8217;s true. Oracle and Sun have both announced the marriage. <a href="http://www.techcrunch.com/2009/04/20/oracle-to-buy-sun-hold-on-to-your-hats/" target="_blank">Techcrunch</a> has the full press release. <a href="http://blogs.zdnet.com/BTL/?p=16598" target="_blank">ZDnet</a> some other commentary.</p>
<p>A few people seem to be sweating about MySQL. It would not be stressing about MySQL too much. It could get spun off, who knows. It&#8217;s even possible, as some commenters on Techcrunch say, that Oracle might use the free MySQL offering to hammer Microsoft&#8217;s database market from the bottom-up</p>
<p>It&#8217;s more touch-and-go in the app-server market (what Oracle likes to call &#8216;middleware&#8217;) which is already suffering a little from Oracle&#8217;s transition over to BEA Weblogic from its older products. Sun has excellent products in that area, i.e. Glassfish. I have used all of these products (plus Websphere and JBoss) and Glassfish is <em>easily</em> the nicest (in fact I would say it&#8217;s the best app-server I&#8217;ve used, apart from plain old Tomcat).</p>
<p>And what will happen to Java? Of course, Oracle wants Java, that&#8217;s part of the reason they are buying Sun in the first place (as well as their hardware business). But will IBM play along now it&#8217;s most critical competitor owns Java (and IBM has previously bet its software integration farm on the Java stack)? And what of the JCP?</p>
<p>Even more worrying for some, is what will happen in the IDE space. Of course, I&#8217;m a confirmed Eclipse man, but it is always a worry when competition is reduced. What will happen to Netbeans? And dare I say it &#8230; JDeveloper is fairly horrible compared to Netbeans but will that save either of them? Oracle&#8217;s got a lot invested into it&#8217;s tooling, which all runs on JDeveloper. As much as I prefer to just write <em>code</em>, that use <em>wizards</em>, Oracle does seem to have at least some customers in that area. Oracle&#8217;s development model tends to focus a <a href="http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/">little too much on magic wizards</a>. From the IDE-JDeveloper-to-the-app-server single click-to-deploy, drag-and-drop to create-the-control, easy-peasy wizardry, which I hate, because I think it gets in the way of <em>craftmanship</em>. It&#8217;s the Bunnings Warehouse of software development. Show me the command-line Oracle! you should remember, that Sun is most definitely a company built around the Unix shell prompt. Even with Oracle middleware, it&#8217;s definitely possible, I&#8217;ve just been working on command-line deployment automation for their older Orion-based app-server, they just don&#8217;t like to promote it.</p>
<p>I&#8217;m hoping that Sun can reverse-ferret them on that score and teach them about <em>Ant</em>, <em>Maven</em>, <em>/bin/sh</em> and the goodness of installations that are as simple as <em>tar xcf </em>in the spot you want to install it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/04/20/oracle-to-buy-sun/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>GUI builders, modern development practices, and vendor lock-in</title>
		<link>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/</link>
		<comments>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 02:22:34 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=176</guid>
		<description><![CDATA[The Paranoid Engineer has declared &#8216;Screw All Gui Builders&#8216;, with an excellent example of the genre of code that can be produced by one such tool, contrasted against the much nicer hand-written code. Now I can certainly sympathise with his pain. The thing that really gets my goat up, and the subject of this post, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://paranoid-engineering.blogspot.com/">Paranoid Engineer</a> has declared <a href="http://paranoid-engineering.blogspot.com/2009/02/screw-all-gui-builders.html" target="_blank"><em>&#8216;Screw All Gui Builders</em></a>&#8216;, with an excellent example of the genre of code that can be produced by one such tool, contrasted against the much nicer hand-written code. Now I can certainly sympathise with his pain. The thing that really gets my goat up, and the subject of this post, is when vendors use a GUI builder to lock the poor developer and the target <span style="text-decoration: line-through;">victim</span> sorry, enterprise, into their <em>entire product suite</em>.</p>
<p>My case-in-point <em>du jour</em> is Oracle&#8217;s new <a title="Oracle Rich Enterprise Applications" href="http://rea.oracle.com/" target="_blank">Rich Enterprise Applications</a> site and the associated technology.  On that site you will find a flash presentation of their technology around delivering and I quote:</p>
<blockquote><p>multi-channel capable applications that deliver desktop quality, highly interactive user experiences that are pre-integrated to enterprise class server technology.</p></blockquote>
<p>That sounds pretty good, might be of interest to me. Lets investigate further. Now, a lot this technology is built on top of standards, like JSF, and other commonly used technology like AJAX. The earlier version of the ADF component technology was donated to Apache where it lives as the <a title="Apache Trinidad" href="http://myfaces.apache.org/trinidad/index.html" target="_blank">Apache Myfaces Trinidad</a> project. The new components are built on top of these open sourced components. So far, so much is OK.</p>
<p>But, the kick in the tail can be seen in   even just in the quoted sentence above: <em>&#8220;pre-integrated to enterprise class server technology&#8221;</em> &#8211; they certainly don&#8217;t mean <em>Tomcat</em>, right? The point of the presentation is induce <em>lock in</em>. However I&#8217;m still willing to cut them some slack on this particular point. Of course, if you are thinking about using Oracle&#8217;s JSF technology, you probably are already committed to Oracle&#8217;s middleware technology anyway &#8211; and Weblogic is a perfectly good application server, if you need such advanced capabilities (and whether you actually do is another question for another day).</p>
<p>But what absolutely does my head in, is the insistence the only way to develop for this technology is to write it using their proprietary, non-standard developer technology, aka <em>JDeveloper</em>. This is the point where I have to say, I&#8217;m sorry Oracle, but &#8230; <em><strong>FAIL</strong></em>. <em>I actually don&#8217;t even care if your IDE is even the world&#8217;s best!</em> Or even if it comes as an Eclipse plugin. My beef with this sort of IDE integration is the total mind-set that it embodies. The IDE might have all the <em>drag-and-drop interface-building mojo</em> in all the world, but the code it produces will never, ever, stand up to a hand coded model driven off the target domain, using modern agile development techniques that are designed to ensure the most cost-effective, best-quality development delivering timely business process transformation (aka <em>value</em>) that the enterprise prioritises and chooses. Just look at the <a title="Oracle ADF FAQ" href="http://wiki.oracle.com/page/Oracle+ADF+FAQ?t=anon" target="_blank">ADF FAQ on the Oracle Wiki</a>.  Half the questions are related to the <em>IDE</em>. Here&#8217;s a <a title="Introduction to Oracle's ADF Faces" href="http://java.dzone.com/news/introduction-oracles-adf-faces" target="_blank">tutorial style introduction</a> that just assumes JDeveloper as the default way to get access to the Oracle JDF components.<em> </em></p>
<p><em>No, no a thousand times NO!</em></p>
<p>The biggest insult is the way that developers are treated as mere <em>commodities</em> in this whole process. They are just the warm bodies occupying the chair driving the interface. Much like the continually failed dream of <a title="Programmerless programming is just a mirage" href="http://www.crazymcphee.net/x/2009/01/17/programmerless-programming-is-just-a-mirage/" target="_self">developerless development</a>, their primary skill is seen as not &#8220;being a programmer&#8221; but &#8220;being a driver of a software package&#8221;. If I said, my financial skills and experience include 10 years Excel and 5 years MYOB &#8211; <em>I can haz CFO jobz now</em>? NO?! <em>Why not?</em> It&#8217;s insulting, that&#8217;s why not.</p>
<p>Software development is a profession, or at the very least a <em>craft</em>, and software developers should be able to choose their own tools. Obviously, some agreement has to be made organisationally, or at least across a single team or a whole project, to use a certain common toolset. Here&#8217;s one possible checklist:</p>
<blockquote><p>We&#8217;re writing a Java app, check. Deploying onto Weblogic, check. Database is Oracle 11g, check. We have <a href="http://www.crazymcphee.net/x/tag/scrum/">Scrum</a> as our process framework, check. <a href="http://www.crazymcphee.net/x/tag/test-driven-design/">TDD</a> is in our list of favoured engineering disciplines, check. Maven is our chosen build tool, check. Using Subversion for version control, check. Hudson for a continuous integration server, check. Writing the interface with Oracle ADF, check. Using Crossfire to deliver our web services, check. Spring for application wiring, check. Hibernate for persistence, check.</p></blockquote>
<p>Each of these things has to be agreed upon at an architectural and organisational level (and obviously I don&#8217;t mean to say that each of the above is the only choice for each type of item, I&#8217;m just giving <em>examples</em>).</p>
<p>You should note one very deliberate omission from that list, the IDE. <em>Architects</em> might impose a certain application server, a particular approach to application layering, and so on. The <em>developers</em> &#8211; at least the senior ones &#8211; have to choose and agree, for example, on whether to use Ant or Maven, CVS or SVN, Cruisecontrol or Hudson. But what they do not do, is force developers to favour Eclipse or IntelliJ or Netbeans or JDeveloper. What is the point of taking someone who is super-productive with a particular IDE&#8217;s keystrokes and  then forcing them to spend six months learning a whole new set, a new environment? That&#8217;s not productive! A developer needs to have the IDE <em>get out of the way</em>, become second nature &#8211; they need to be thinking about <em>code</em>, not where the menu is for the rename-method refactoring because they are unfamiliar with the keystrokes of the unfamiliar IDE. Keystrokes are <em>muscle memory</em>. You just think, <em>rename this method</em> and your fingers are already on the keys you need to press, without breaking your all-important <em>flow</em>. That&#8217;s how a developer is as <em>productive</em> as they can be. A productive development team should have a <em>mix</em> of IDEs (I&#8217;d propose that this would be statistically in proportion to the usage patterns of the common IDEs). Then we have the specific example of JDeveloper. I won&#8217;t even go into it except to say I&#8217;ve never heard a developer do anything but <em>curse</em> it, or maybe <em>laugh</em> at it. But it&#8217;s the laughter of the condemned man.</p>
<p>It&#8217;s something that vendors really need to get serious about. Rather than presenting me with a seamlessly integrated vision, from developer&#8217;s screen, through application server, to user&#8217;s screen, their technology presentations ought to think <em>discrete</em>. Each piece of technology ought to live and die on it&#8217;s own merits, something I&#8217;m sure Oracle&#8217;s ADF is perfectly capable of &#8211; without JDeveloper. If it&#8217;s not capable of being developed productively without JDeveloper, it&#8217;s already in the reject pile as far as I am concerned.</p>
<p>This essential information needs to be right up front. Don&#8217;t bury the information a thousand web sites deep in your developer portal. <em>Put it right there in the first presentation!</em> Separate the selling of the developer tooling from the selling of the user presentation frameworks and the server technology. Show me how I integrate Oracle ADF into TDD, into continuous integration, into the IDE of the developer&#8217;s choice. Because if you don&#8217;t, <em>you&#8217;ve already lost me as a potential customer</em>. This is the <em>real</em> future of software development. Look at where the major thought leaders of software development are taking development &#8211; open source frameworks, inversion of control, TDD, Domain Driven Design, Domain Specific Languages, Agile Methods, delivering real process transformation and business capability as early as possible &#8211; not <em>drag and drop with wizards</em>. FFS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

