标签:
因为各种原因,计划学习Java。自己已经做.NET开发几乎10年了,把语言级别的东西撸一遍估计不难。由于.NET和Java的相似性,准备比较着.NET/C#来学,一来自己容易理解,同时也巩固下.NET的知识。选择的参考书是《Java核心技术》。
第一个程序
第一个程序,hello world,代码很简单,更重要的是看清楚代码执行的原理。
先从C#开始,创建文件FirstSample.cs,写入以下代码并保存:
using System; public class FirstSample { public static void Main(string[] args) { Console.WriteLine("Hello C# World!"); } }
HelloWorld的代码总是很简单的,接下去可以编译了。打开一个shell窗口,定位到FirstSample.cs的同级目录,敲入
csc FirstSample.cs
同级目录下会生成一个新的文件,FirstSample.exe,直接执行,就可以在shell窗口看到“Hello C# World!”字样了。
Java的Hello World会非常类似,首先,创建文件FirstSample.java,写入代码:
public class FirstSample { public static void main(String[] args) { System.out.println("Hello Java World!"); } }
接下去同样是编译。打开shell窗口,定位到FirstSample.java的同级目录,敲入
javac FirstSample.java
同级目录下同样生成一个新的文件,FirstSample.class。跟C#不一样,这个不能直接执行,继续在shell窗口敲入
java FirstSample
成功执行后,在shell窗口看到“Hello Java World!”
发生了什么?
Java和.NET的工作原理,都是把源代码编译成中间语言(bytecode和IL),然后由虚拟机(JVM和CLR)编译为native code。老生常谈的内容,这里不多说。这里想谈谈我对Java和.NET工作原理的理解。
想要执行中间语言,首先得启动JVM/CLR,所谓的启动,实际上是在OS上创建进程,然后把JVM/CLR host到该进程上。
回顾两个hello world,C#编译成的exe,执行的时候实际上做了这么些事情:创建一个新的进程,在进程上host一个CLR实例,把IL code加载到CLR里,然后开始由执行IL code。
Java的其实类似,只不过host JVM的进程是有java.exe(而不是FirstSample.class)创建。
到这里第一天的学习结束,接下去准备看数据类型。
标签:
原文地址:http://www.cnblogs.com/woodylic/p/4391052.html