CONCURRENCY AND COMPUTATION: PRACTICE AND EXPERIENCE Concurrency Computat.: Pract. Exper. 2005; 17:663–680 Published online 22 February 2005 in Wiley InterScience (www.interscience.wiley.com). DOI: 10.1002/cpe.858 Experience in integrating Java with C# and .NET Judith Bishop 1, ,† , R. Nigel Horspool 2 and Basil Worrall 1 1 Computer Science Department, University of Pretoria, Pretoria 0002, South Africa 2 Computer Science Department, University of Victoria, Victoria, BC, Canada V8W 3P6 SUMMARY Java programmers cannot help but be aware of the advent of C#, the .NET network environment, and a host of new supporting technologies, such as Web services. Before taking the big step of moving all development to a new environment, programmers will want to know what are the advantages of C# as a language over Java, and whether the new and interesting features of C# and .NET can be incorporated into existing Java software. This paper surveys the advantages of C# and then presents and evaluates experience with connecting it to Java in a variety of ways. The first way provides evidence that Java can be linked to C# at the native code level, albeit through C++ wrappers. The second is a means for retaining the useful applet feature of Java in the server-side architecture of Web services written in C#. The third is by providing a common XML-based class for the development of graphical user interfaces (GUIs), which can be incorporated into Java or C#. An added advantage of this system, called Views, is that it can run independently of the resource- intensive development environment that would otherwise be needed for using C#. A major advantage of the methods described in this paper is that in all cases the Java program is not affected by the fact that it is interfacing with C#. The paper concludes that there are many common shared technologies that bring Java and C# close together, and that innovative ways of using others can open up opportunities not hitherto imagined. Copyright c 2005 John Wiley & Sons, Ltd. KEY WORDS: integration; Java; C#; XML; native code; Web services; GUI 1. INTRODUCTION Since its inception in 1996, Java has made phenomenal inroads into the world of system, business, Internet and educational programming. As demonstrated by presentations made at conferences such as JavaGrande, its influence also extends into scientific and high-performance computing, specifically in Correspondence to: Judith Bishop, Computer Science Department, University of Pretoria, Pretoria 0002, South Africa. E-mail: jbishop@cs.up.ac.za Contract/grant sponsor: National Research Foundation, South Africa; contract/grant number: 2050319 Contract/grant sponsor: National Spaces and Engineering Research Council of Canada Copyright c 2005 John Wiley & Sons, Ltd. Received 16 January 2003 Revised 19 September 2003 Accepted 14 October 2003