我们知道Java跟C#一样,都是基于虚拟机的环境而得以运行的。Java中的虚拟机叫做JVM(Java Virtual Machine),而C#中叫做CLR(Common Language Runtime)。借助于虚拟机,这两门编程语言就可以实现所谓跨平台的功能。
下面我们做个简单的试验,来回顾一下Java跟C#是如何编译源文件的。
一、Java编译源文件
编译的前提是要安装好JDK(Java Development Kit),如果安装的是JRE(Java Runtime Environment)则不能进行进行编译,只能运行。
装好之后,为了便于操作,我们需要将D:\Program Files\Java\jdk1.7.0_25\bin(看你的安装目录)目录添加到环境变量中,然后就可以在cmd命令窗口中直接使用javac、java等命令了。
以HelloWorld为例:
在D盘建立一个名为Test.java的Java源文件,然后编辑内容为:
public class Test{ public static void main(String [] args){ System.out.println("Hello World."); } }
如上所示,执行javac命令会在D盘下生成一个Test.class文件,再执行java Test命令会运行生成好的Test.class文件。
这样就完成了Java源文件的编译。
二、C#编译源文件
与Java类似,C#中执行文件的编译操作,需要csc命令,前提是要安装好.NET Framework。
同样为了便于在cmd命令窗口中直接使用csc命令,我们将所在的目录添加至Windows系统的环境变量中。
我本机的.NET Framework所在的目录为:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319,也可以选择其它版本的.NET Framework。
还是以HelloWorld为例:
我们在D盘建立一个名为TestCSharp.cs的C#源文件,然后编辑内容为:
using System; namespace Test { public class TestCSharp { public static void Main(string [] args) { Console.WriteLine("Hello World."); } } }
执行csc TestCSharp.cs命令会在当前目录下生成一个TestCSharp.exe可执行文件,然后直接输入文件名称即可运行。至于为什么是csc,可以这样理解,csc(c sharp compile,C#编译)。
关于C# csc命令的更多选项,可以参考:http://msdn.microsoft.com/zh-cn/library/78f4aasd.aspx
后记:Java跟C#一样,都是面向对象的编译型编程语言。同样的它们都是基于虚拟机的编程语言,理论上都能实现跨平台。通过编译,Java生成的是class字节码文件,而C#生成对应的IL中间语言,其设计思路如出一辙。