<?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>Technoetic &#187; QuickFIX/J</title>
	<atom:link href="http://blog.technoetic.com/categories/quickfixj/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.technoetic.com</link>
	<description></description>
	<lastBuildDate>Thu, 24 Mar 2011 10:41:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>QuickFIX/J Message Representation Plugins</title>
		<link>http://blog.technoetic.com/2010/03/28/quickfixj-message-representation-plugins/</link>
		<comments>http://blog.technoetic.com/2010/03/28/quickfixj-message-representation-plugins/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 14:53:40 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[QuickFIX/J]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/?p=141</guid>
		<description><![CDATA[Although I haven&#8217;t had much time to work on QuickFIX/J since handing off the project leadership to Smart Trade, I still have many ideas about how the library could be improved. One feature I&#8217;d like to see added to QuickFIX/J is message representation plugin support. The current implementation of QuickFIX/J uses the message representation defined [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.technoetic.com/wp-content/uploads/2010/03/quickfixj.png" alt="QuickFIX/J" style="float: left; margin-right: 16px"/> Although I haven&#8217;t had much time to work on <a href="http://www.quickfixj.org/">QuickFIX/J</a> since handing off the project leadership to <a href="http://www.smart-trade.net">Smart Trade</a>, I still have many ideas about how the library could be improved. One feature I&#8217;d like to see added to QuickFIX/J is message representation plugin support.</p>
<p>The current implementation of QuickFIX/J uses the message representation defined by QuickFIX JNI implementation (no longer supported by the QuickFIX C++ project). The representation is not idiomatic Java and this not only makes it&#8217;s more difficult for Java programmers to work with but also increases the challenges when processing QuickFIX/J messages using other Java tools. Since compatibility with previous versions of QuickFIX/J is desirable, the existing message presentation would continue as one of the supported plugins. Another simple, but useful representation would be a java.util.Map where groups are represented as lists of nested maps. This would not be a particularly high performance representation but would be much easier to use than the current representation. For higher performance, it may be possible to pull data directly from the message byte buffer when it&#8217;s requested. The point is that plugin support would allow QuickFIX/J to support various ease-of-use versus performance trade offs.<br />
<span id="more-141"></span><br />
It&#8217;s also possible that we could support application-defined POJO&#8217;s as the message payload. Instead of the FIX message being parsed into QuickFIX/J objects and then copied into an application object (a common practice), the message would be demarshalled directly into the application object. This could be supported through a combination of external configuration, Java annotations or convention. The application-specific object would then be passed to the application with no further conversion required. A similar approach could be used for message publication where application-specific object data is used to build the output FIX message byte buffer.</p>
<p>A notional example might be:</p>
<pre class="brush: java;">
import static MessageName.*;
import static FieldName.*;
import static GroupName.*;
. . .

@Message(name=NewOrderSingle)
public class Order {

   // Convention
   public void setPrice(BigDecimal price) {
      . . .
   }

   // Automatic conversion between int and BigDecimal for FIX 4.0 ...
   @Field(name=OrderQty)
   public void setQuantity(BigDecimal price) {
      . . .
   }

   @Field(tag=MyUserDefinedTag)
   public void setMyValue(string value) {
      . . .
   }

   @Group(name=NoPartyIds)
   public void setParties(List&lt;tradeparty&gt; parties) {
      . . .
   }
}
</pre>
<p>One nice side-effect of this approach is that only messages that are interesting to the application are mapped in this way. This eliminates the current need for large message JARs mostly full of messages that are never needed.</p>
<p>The message representation plugins would be packaged as a JAR containing a message demarshaller, a message marshaller, a metadata provider and supporting classes. QuickFIX/J currently performs message framing on incoming data stream and places detected messages in byte buffers. This code would be reused from the existing code base and the byte buffer would be passed to the message demarshaller. At this point, the demarshaller is only required to decode the FIX header and trailer fields since these are required by the FIX session engine. The FIX body fields are only decoded as needed, ideally just before the message is passed to the FIX application. This could be a big performance win for FIX routing application that don&#8217;t process the FIX message body.</p>
<p>The message metadata would be used for message validation and, internally, for message parsing and formatting. However, the metadata would not be required to be in any specific format. Although the QuickFIX/J data dictionaries would still be supported, other plugins could use the FIX Repository or a proprietary message metadata format.</p>
<p>This is only one of many areas where I believe we could improve QuickFIX/J usability and performance. The nice thing about this feature is that it would have minimal, if any, impact on existing applications. Comments?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2010/03/28/quickfixj-message-representation-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickFIX/J has a new home.</title>
		<link>http://blog.technoetic.com/2006/05/31/quickfixj-has-a-new-home/</link>
		<comments>http://blog.technoetic.com/2006/05/31/quickfixj-has-a-new-home/#comments</comments>
		<pubDate>Wed, 31 May 2006 06:03:02 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[QuickFIX/J]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2006/05/31/quickfixj-has-a-new-home/</guid>
		<description><![CDATA[I am moving the QuickFIX/J tips articles to the new project home at http://www.quickfixj.org/. This site also contains a Jira issue tracking application and a Confluence wiki. Check it out if you are using QuickFIX/J. The articles are on the wiki.]]></description>
			<content:encoded><![CDATA[<p>I am moving the QuickFIX/J tips articles to the new project home at <a href="http://www.quickfixj.org/">http://www.quickfixj.org/</a>. This site also contains a Jira issue tracking application and a Confluence wiki. Check it out if you are using QuickFIX/J. The articles are on the wiki.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2006/05/31/quickfixj-has-a-new-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickFIX/J FIX Engine</title>
		<link>http://blog.technoetic.com/2006/02/06/quickfixj-fix-engine/</link>
		<comments>http://blog.technoetic.com/2006/02/06/quickfixj-fix-engine/#comments</comments>
		<pubDate>Mon, 06 Feb 2006 13:12:03 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[QuickFIX/J]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/index.php/2006/02/02/quickfixj-fix-engine/</guid>
		<description><![CDATA[I&#8217;m the development lead for the pure Java port of the open source QuickFIX FIX protocol engine. The FIX protocol is widely used for financial market connectivity around the world. I&#8217;m creating a new blog category on this topic to post ongoing news and technical articles about the QuickFIX/J product. If you are interested in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m the development lead for the pure Java port of the open source <a href="http://www.quickfixengine.org/">QuickFIX</a> <a href="http://www.fixprotocol.org/">FIX protocol</a> engine. The FIX protocol is widely used for financial market connectivity around the world. I&#8217;m creating a new blog category on this topic to post ongoing news and technical articles about the QuickFIX/J product. If you are interested in monitoring articles for only this category, select the category RSS feed in the sidebar.</p>
<p>We released the 1.0.0 beta 2 version last month and are about ready to release the 1.0.0 beta 3 within a few weeks. The beta 3 will feature the conversion to the <a href="http://directory.apache.org/subprojects/network/">Apache MINA networking library</a> and updates of the functionality to be compatible with the recently released QuickFIX 1.11.0.</p>
<p>Stay tuned&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2006/02/06/quickfixj-fix-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

