.NET码农学Java - 1. 起步

因为各种原因,计划学习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)创建。

 

到这里第一天的学习结束,接下去准备看数据类型。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。