JAVA特性和优势

简单性:

  • Java语法可以看作c++语法的一个纯净版本。没有头文件,没有指针运算,不用分配内存,没有操作符重载,虚基类等等。
  • 简单的另一个方面是小,Java的目标之一是支持开发能够在小型机器上独立运行的软件。基本的解释器以及类支持大约40KB;再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核)大约需要增加175KB。

面向对象:

  • 程序设计思维,重点放在对象与接口上,模拟人的思维去写程序
  • Java与c++的主要不同点在于多重继承。Java不支持多继承,用的是接口概念取代多继承。

可移植性:

  • Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的说明。
  • Java中,数据类型有固定的大小,这消除了代码移植时令人头疼的主要问题。二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。字符串是用标准的Unicode格式存储。
  • 例如,Java中的int永远为32位整型,而在C/C++中,int可能是16位、32位整型。
  • 除了与用户界面相关的部分外,所有其他的Java库都能很好地支持平台独立性。可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等,而不用操心底层操作系统
  • 跨平台性,一次编写到处运行,Write once Run anywhere

高性能:

  • 尽管对解释后的字节码性能已经比较满意,但是在有些场合还需要更高效的性能。字节码可以在运行时动态地翻译成对应运行这个应用的特定CPU的机器码
  • 即时编译可以使一些代码效率接近C++的效率
  • 现在的即时编译器已经非常出色,某些情况下,甚至超过了传统编译器,原因在于它们含有更多的可用信息。例如,即时编译器可以监控经常执行哪些代码并优化这些代码可以提高速度。更为复杂的优化是消除函数调用(即“内联”)。即时编译器知道哪些类以及加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用内联。必要时还可以撤销优化。

分布式:

  • JAVA就是为网络分布式环境所设计的
  • Java有一个丰富的例程库 ,用于处理HTTP和FTP之类的TCP/IP协议
  • Java程序能够通过URL访问网路上的资源,就像访问本地文件一样方便。
  • 支持远程方法调用,所以可以通过网络去调用方法。

动态性:

  • Java能适应不断发展的环境
  • 库中可以自由添加新方法和实例变量,而对客户端没有任何影响
  • 在Java中找出运行时类型信息十分简单
  • JAVA本身不具备动态性,但是通过反射机制,让JAVA拥有动态性,很多框架底层基于反射,这点C++无法实现。

多线程:

  • 多线程可以带来更好的交互响应实时行为
  • 由于摩尔定律将完结,所以我们不再追求更快的处理器。而是想要获得更多的处理器,并让它们一直保持工作。

安全性:

  • 为了适用于网络/分布式环境,JAVA在安全性上投入很大精力,使得Java可以构建防病毒、防篡改的系统。
  • 从一开始Java就设计成能够防范各种攻击,包括:运行时堆栈溢出、破坏自己的进程空间之外的内存、未经授权读写文件。

健壮性:

  • Java的设计目标之一就是让Java编写的程序具有多方面的可靠性
  • Java投入大量精力进行早期的问题检测后期动态的(运行时)检测,并消除了容易出错的情况
  • Java和c++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性
  • Java编译器能检测许多在其他语言中仅在运行时才能检测处理的问题
  • 去掉指针和内存的管理,每次运行都会对内存进行检查,确认都是合法的。所以不容易造成计算机的崩溃。

笔记记录来自:
https://www.bilibili.com/video/BV12J41137hu?p=14
Java核心技术卷Ⅰ(原书第10版)第一章

posted @ 2021-01-05 23:16  张三丰学Java  阅读(202)  评论(0编辑  收藏  举报