1、简单性
第一印象:
a、语法简单(和C++比较接近,且去除了许多难以理解的,比如goto指针)
b、封装了许多类库,基本上不需要涉及太多底层知识
阅后理解:
c、体积小,Java Micro Edition版本,运用于嵌入式设备
2、面向对象
第一印象:
a、Java几乎是完全面向对象,除了几个基础类型,int、long、float、double、char、bit、short等,不过现在java8引入了lambda表达式等函数式编程的支持
阅后理解:
面向对象是一种程序设计技术,体现在关注点在于抽象,而不是具体实现本身,在Java中最直接体现的是Interface(接口),在旧的版本中Java的接口完全是抽象的,后续也引入了默认方法、静态方法【java9】等
3、分布式
第一印象:
a、不是很理解这个,分布式应该很多都支持
阅后理解:
Java有原生支持rmi这种远程调用的方式,当然在目前微服务时代里,如果要支持异构,更多的是使用RESTFULE风格的HTTP对外接口;性能的话更多采用RPC协议
4、健壮性
第一印象:
a、强类型语言
b、编译时错误检验
阅后理解:
a、早期的问题检测:强大的编译时错误校验功能、后期动态的运行时检测
b、消除了C++容易出错的指针
5、安全性
第一印象:
a、强类型语言
阅后理解:
沙箱机制
a、运行时堆栈溢出,防止蠕虫、病毒攻击
b、进程空间之外的内存无法操控
c、文件需要授权才能读写(这个感觉应该是大部分Linux系统都有的授权机制)
6、体系结构中立
第一印象:
a、Java用的是编译器+虚拟机(解释器),一般程序员不太需要关注底层系统
阅后理解:
可以通过虚拟机解释运行,速度会比直接运行慢,但目前的虚拟机有及时编译技术,根据计算机的优化原理(或者说多级缓存机制),也是可以理解为:只要优化被频繁运行的代码即可
7、可移植性
第一印象:
a、Java号称一次编译,到处运行。依赖的主要也是虚拟机JVM
阅后理解:
例如不同的操作系统中Int类型的位数是不同的,而虚拟机会使得我们不需要关注这个点
8、解释型
第一印象:
a、还是和JVM相关
阅后理解:
jvm可以动态解释运行class的字节码,转化为机器码
9、高性能
第一印象:
理论上Java应该比不了C++,极限性能,但由于实际上大部分的系统都不会是在极限场景下运行,所以Java通过优化,在某些场景下,性能更优
阅后理解:
及时编译器,机械码、本地方法内联优化等
10、多线程
第一印象:
Java原生支持多线程
阅后理解:
Java是比较早支持多线程的语言
11、动态性
第一印象:不太理解
阅后理解:反射机制,Java新增特性不会直接影响到客户端