Aijaz, My personal preference is as follows (according to your order of questions) 1. Comprehensive GUI You should seriously reconsider your needs if your #1 concern is the support of some GUI. This should be irrelevant in your project. If you are this connected to a particular GUI, then the remaining points are meaningless. But then again, I believe that emacs is the natural choice 2. Java not that Slow, as they say! It is not as slow as it used to be but not as fast as C++ (see http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=gpp&lang2=java for a comparison). Sure computers are getting faster, but ... 3. Huge API, DBMS, XML, DRMAA, . . . . . And C++ doesn't have a big API and set of libraries? 4. No deployment pain, although a little application specific deployment may be required example: preference files etc If you are going to use Qt, it is not an issue either. I have actually had a more difficult time deploying java on win than Qt on Win/OSX/*nix. 5. Automated Garbage collection, less trouble in maintaining memory. Although it has a little overhead, it can be reduced by efficient handling of data??? If you are going to learn C/C++ you should be able to know how to implement memory management. For large chunks, it may be more efficient for you to have some more control over memory than GC. 6. efficient multi threading, not system level fork, etc?????? Proper design and factoring is available in many languages. 7. Java has growing number of Bioinformatics applications Irrelevant, your needs are primary. Hope this helps. One thing that I typically do is try to determine, over the lifetime of the application, if the language of choice will be expansive enough. For example, maybe some cluster MPI stuff would be in the future in which case it would suggest one language over another (I'll let you guess which one). Ciao, Rodney J. Dyer, PhD Department of Biology Center for the Study of Biological Complexity Virginia Commonwealth University http://dyerlab.bio.vcu.edu