Java语言特点概览

Java语言的特点

简单

Java省略了C++中一些难以理解的概念(这些概念带来的优点往往比缺点更多),包括运算符重载、多继承和扩展的自动类型转换。
另外,Java由于具备自动垃圾回收的机制(gc),所以不需要像C/C++程序员那样管理程序内存。
除此以外,Java的简单还体现在“小”上。Java的目标之一就是在小型机器上运行(JavaME),基础的解释器和支持库只有30个字节,它们支持标准库和线程。

面向对象(OO)

工业界这个概念被滥用了,但是面向对象依旧是软件复用的基础。
以做木工为例,OO需要关注两点:木工的实施对象(例如椅子),以及使用什么工具(例如锤子)。而非OO的写法主要考虑的就是使用的工具。

分布式(distributed)

Java集成了网络和运行时(runtime),并且它们几乎是透明的。Java对象可以放在远程的电脑上,而远程对象的调用会转换为RPCs(remote procedure calls)。
Java中的分布式应用和非分布式应用看起来并没有什么区别,因为它们使用的编程模型是类似的。不过Java虽然为分布式提供了很好的支持,但是分布式应用需要程序员关注某些情况下网络链接失败的问题。

可靠(robust)

Java这门语言的目的之一就是为了开发安全可靠的程序(这里自然是和C/C++对比的)编译期和运行期都具备规避错误的手段。
强类型的语言在编译期就可以避免很多不必要的错误,但是C++本身因为继承了C的糟粕,类型检查并不严格(例如你可以把数值类型转换成指针类型)。
还有一点,Java具有gc,所以内存安全。这一点上面也提到过。
Java具有指针模型,这个消除了内存重写和数据损坏的隐患。另外Java具备“数组”这种数据类型,并且不支持指针运算,因此也就不会出现像C/C++里面那样把数字转换成指针使用的情况。
严格意义上的动态语言,例如Lisp, TCL和SmallTalk,常常用作标准。它们成功的原因就在于内存安全。

安全(secure)

由于Java是为网络和分布式而生的,因此Java非常重视安全的问题。使用Java可以构造无病毒的安全系统。
需要注意,可靠(robust)和安全(secure)是两个相辅相成的概念。例如,Java针对C/C++指针语义的修改,直接在语法层面禁止了伪造的访问权限,这样这些伪造的访问权限就无法访问类的私有成员。就这一点便限制大部分的病毒的活动。
Java具有定义访问模块和接口许可证的机制。例如,一个Java程序构建的系统可以限定:只有当外部软件符合许可权限的时候,才可以加载它。对于单个的Java模块来说,也能限定:加载它的接口的系统需要什么样的许可证。

平台无关

Java是平台无关的语言,因为Java本身就是一个平台。Java之所以要设计成跨平台的模式,因为它最初的定位是网络,而网络连接着各种系统的主机。这就类似于,不管你用安卓,还是MacOS,抑或是Windows浏览器打开一个网站,它们都能按照同样的方式展示和运行。为了能让Java程序在网络的任何一个主机上都能工作,Java 编译器可以生成平台无关的字节码,这些字节码在Java runtime上就可以运行。
Java字节码在runtime上是解释执行的,所以也有人说Java就是解释型语言。在解释的过程中,Java可以把常用的代码编译成本地(native)机器码,这称为Just-In-Time compilation(JIT)。Java JIT生成的机器码在运行速度上与C/C++无异。

可移植

Java里面int总是表示32位无符号整型,然在在C/C++中则不是这样。
Java系统库定义了可移植接口。例如有抽象类Window,以及分别针对Unix, Windows和Mac的实现类。
Java系统本身也是便于移植的。新的Java编译器采用Java编写,运行时则是使用符合ASCI标准的C语言写成的。可移植性的条件就是POSIX(portable operating system interface)

解释性

Java解释器可以执行Java字节码。
字节流中包含很多编译信息,这些信息可以在运行期获取。链接器类型检查和RPC(远程程序调用)都是基于此。同时,这些信息在debug的时候也非常有用。

高性能

Java在运行期可以把常用的字节码翻译成本地机器码,即JIT,这个上面也有所提及。翻译成机器码之后,其运行速度与C/C++相比无异。

多线程

多线程是利用了计算机多核心的特点。Java原生就具备对多线程的支持,而且在Java中使用多线程是很安全的(同样,这也是和C/C++相比)

动态

Java比C/C++要更加动态(通过反射)。C/C++并不是说实现不了动态语言的效果,而是写起来比较复杂。动态的好处就是,可以在更改源码之后,不需要重新编译,就能在运行期动态获取类的成员。在项目迭代的过程中,这一点会显得非常重要。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值