I am curious as to people's opinions about building a realtime Automated Trading System (ATS) plus Backtester in Java. I have historically felt (rightly or wrongly) that Java is a resource (memory) hog and applications built in Java are slow. I am not an IT guru...so this is just my layman's opinion. Could the experts expound on this issue. Is a JAVA ATS OK for a mission -critical real-time ATS app or is Visual Studio/C#/C++ a better development language for such mission critical applications. Many thanks.
If you are building the ATS from scratch then you could easily take any code-latency into consideration when you back-test it. On that way you can see which trades you are missing/ entering when compared to normal code-latency. My opinion.... build the ATS in the language you are sharpest at, if you are writing your methods correct it shouldn't make a big difference between Java, C++ or C#. Common awareness of a restrained usage of generics, delegates etc. should certainly be used in all languages.
Java is used all over the place for mission-critical systems and has been for a number of years. I'll give you one relevant example: Lime Brokerage, who execute up 3-5% of US equity market volume and average 750 million shares a day (2008), use Java-based infrastructure for HFT. http://www.limebrokerage.com Worrying about which language to choose is largely time wasted.
If what's critical in your mission critical app is a lot of processing and calculation of data, c++ is the way to go hands down. I can see where some HFT routines could be implemented where seconds count and you would want to use c++. c++ can be on a order of 2-30 times faster for some calcs, such as sorts and transforms. Keep in mind that many backtesting and ATS programs can be a java frontend and all the guts are in another language like python or c++.
Kind of funny to keep reading these occasionally. This goes to both CPtrader and you! -> I can guarantee you both that it will not be the language that creates the bottleneck, Java, C# or C++ , same same.... What you really should be worrying about is the tick/ trade/ quote-rate at which your provider can deliver his feed and how many messages your trading- pc/ server/ portable can process. What you read about.. take for instance... StreamBase, Esper that announce events up to 500.000 per second, this is nothing compared to doing it yourself. I will soon post my performance measures of commercial CEP contra Homebrewed CEP. Feel free to inspect the comparison between c++, c# and java: http://www.tommti-systems.de/go.htm...ain-Dateien/reviews/languages/benchmarks.html Remember to do your homework before posting such content
Do you know something we don't? True, Lime advertises for Java people http://www.limebrokerage.com/careers/enterprise_java_developer.shtml but it's a big stretch from that to <i>Java-based infrastructure for HFT</i>. You gave their homepage as a link, but there's nothing relevant on that page.
Why don't you ask them yourself? That's what I did 4/5 years ago and that's what I was told. I'm sure there's a lot of native code involved too. My point was, as per the topic of the thread, in the absence of more specific non-functional requirements Java is fine for mission-critical real-time ATS...as is C++ and C#. I'd be interested to hear what you find out from them today.