首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.3  什么是Java

Java不仅仅是一种程序设计语言,它还是一种新的“生活方式”。首先,大多数的程序设计语言用编译或者解释的方法处理代码,而Java同时使用这两种方法。在图1.3中你可以看到,在最初的编译阶段将源代码(.java文件)翻译成叫作Java字节码的中间语言(.class文件)。字节码接下来可以在一个特殊的虚拟计算机——JVM(Java虚拟机)中运行(解释方式)。

图1.3  Java代码的执行分两步:编译和解释执行

Java虚拟机是一个“模拟”的计算机,所有的字节码指令可以在上面运行,即JVM使Java可以在大量的、不同的平台上运行,因为JVM担当了一个字节码和真实机器指令间的一个统一界面,在运行的时候,JVM将字节码翻译成特定机器的指令。

编译成的字节码是Java“编写一次,到处运行”的灵活性背后的动力。正像在图1.4中看到的,一个目标平台需要的所有东西就是一个JVM,它有能力去执行Java应用程序,而不管它们最初是在什么平台上面编译的。

然而,为了成功地做到这些,我们不仅仅需要一种程序设计语言,还需要一个程序设计平台。Java平台由3个重要的部分组成:

v        Java编译器和工具。

v        Java虚拟机。

v        Java的API。

图1.4  Java字节码在JVM上运行,这使得它成为可移植的程序

Java和C++的对比

既然大多数的游戏程序员都是C++编程人员,下面简要列举一下Jave和C++主要的     区别。

Java是基于C++的,实际上James Gosling用C++实现了Java最初的版本。但是James找机会用Java独特的语言模型,改造了它的结构,使得它对程序员更加友好。

首先主要的区别是内存管理。不像C++,在Java中,基本上不能自己分配和释放内         存——那是JVM的工作。我们可以控制对象的创建,但是没有任何一种方法可以控制对象的销毁。我们不能做任何指针运算;这里没有对象在内存中的地址的概念。因此那些悬指针、内存泄漏、蓝屏的事件就不会发生。

同时,Java和C++还有以下显著的区别:

  ●       在Java中没有对源文件的预处理。

  ●       不像C++,Java没有分为接口(.h)和实现(.cpp)。在Java中只有一个源文件。

  ●       任何东西在Java中都是以类的形式存在的对象,这也就意味着没有全局变量。

  ●       Java中没有类型自动转换,必须明确进行。

  ●       Java有一个简单的对象模型;它不支持多重继承、模板和操作符重载。

作为一个C++程序员,笔者对Java的最初印象是它是C++的简化版本。C++给了更多在内存和运行方面的控制,在Java中找不到模板、预处理的技巧和操作符重载。然而在使用Java一些年后,笔者不得不公正地说,在对性能要求不是那么苛刻的地方,不用关心这些区别。Java代码一般执行得比较好,错误也比较少。Java API具有大量丰富的功能,而且它的性能在大多数的情况下和C++一样,或者优于C++——这也是因为笔者可以花一些时间来改进自己的代码。

JVM的目标是提供一个底层设备的接口,Java API向Java应用程序提供一个这些功能的有限接口。在这种方式下,JVM是法官、陪审团和程序代码的执行者。

Java API是一个覆盖众多功能的Java类的集合,这些功能包括容器、数据管理、通信、输入输出、安全性和其他的一些功能。现在已经有几千个类在Java平台上可以供使用。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论