Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How dominant is Java/C# compared to C++ in Financial Industry?

Tags:

finance

I wanted to know how does Java/C# scale up compared to C++ with reference to financial industry projects ?

Thanks.

like image 847
Rachel Avatar asked Sep 03 '09 05:09

Rachel


People also ask

Is Java more powerful than C?

C is a procedural, low level, and compiled language. Java is an object-oriented, high level, and interpreted language. Java uses objects, while C uses functions. Java is easier to learn and use because it's high level, while C can do more and perform faster because it's closer to machine code.

Which is more popular C or Java?

Java is more widely known and versatile, so it's also easier to find a Java developer than a “harder” language such as C++.

Is Java a descendant of C?

Java is related to C++, which is a direct descendant of C. Much of the character of Java is inherited from these two languages. From C, Java derives its syntax. Many of Java's object-oriented features were influenced by C++.

Is Java still dominant?

In May, Java will celebrate its 24th birthday as a language. Moreover, when it celebrates its birthday, Java will still likely sit atop the world's lists of top programming languages.


2 Answers

Depends on the type of system. C++ is traditionally associated with finance applications because people use it to code fast monte-carlo models for pricing derivative securities. This is probably irrelevant if you're not a quantitative analyst (quant).

For a trading floor system or other transactional application C++ will certainly get you faster performance and more transaction volume in a smaller memory footprint and less CPU. However, database and network performance are more likely to be a limiting factor, and Java or C# can be scaled by using clustered architectures.

Java and C# can pause for garbage collection which leads to dead spaces in your application's response times. These delays might be unacceptable for some applications (e.g. algorithmic trading platforms) that need to support reliable realtime responses. In this case C++ allows you tighter control over this behaviour and may be preferable.

Doing some quick searches on Jobserve for contract jobs based on the keywords 'Banking' and 'C++', '.Net' and 'Java' turns up:

  • 60 matches for 'C++ and Banking'
  • 128 matches for 'Java and Banking'
  • 186 matches for '.Net and Banking'

Assuming some correlation (1) between the number of job ads for contractors and the number of active projects (2) one can use this as a rough metric indicating the relative prevalence of these platforms in active projects.

  1. Relative availability of people with the skill will affect this as well - a well supplied skill set will mean more jobs get filled and a skill set in short supply will mean that more positions are left open for longer.

  2. The banking and insurance industries have a perennial skill shortage of good development staff with experience in the industry so there is a substantial contract market for many skill sets.

like image 54
ConcernedOfTunbridgeWells Avatar answered Sep 17 '22 18:09

ConcernedOfTunbridgeWells


Obviously it varies a lot across different companies / areas of the industry, but in my experience it roughly breaks down as follows:

  • Java for the big enterprise systems, back end trading platforms etc.
  • C++ for the low latency / high performance stuff
  • C# for front-end / desktop apps

Java is overall the biggest of these three - which makes sense as it is the best suited for general purpose, cross platform enterprise applications on the server side.

The only area where Java/C# are really not suitable is the very low latency stuff, where GC pauses can be very problematic. You really need C++ here (or assembler, or some other language that allows you to get guaranteed realtime behaviour)

There are occasionally a few other languages thrown in as well (e.g. Haskell for pricing models), but these tend to be in more niche / specialist domains.

I've also seen a bit of experimentation with some of the newer JVM languages (e.g. Scala, Clojure). Still pretty small-scale at present, but if you're looking for a place to develop your skills I think these are a pretty good bet for the future because they combine the advantages of the Java platform (where banks have a huge amount of investment) with much more modern / productive languages.

like image 42
mikera Avatar answered Sep 21 '22 18:09

mikera