Java特性
- 简单性:Java与C++很相似,但剔除了C++中许多比较复杂并且很少使用的功能,比如头文件、指针运算、结构、联合、操作符重载、虚基类等,从而使Java更易于上手、学习。
- 面向对象:Java是一门面向对象语言,具有面向对象的三个特性——封装、继承、多态。
- 网络技能:Java有一个扩展的例程库,用于处理HTTP和FTP之类的TCP/IP协议。
- 健壮性:Java编译器能检测许多在其他语言中仅运行时刻才能检测出来的问题。
- 安全性:Java设计时加入许多安全特性,用于防止攻击,比如运行时堆栈溢出、未经授权读写文件等。
- 体系结构中立:编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行,Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。
- 可移植性:Java的数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题,且二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。
- 解释型:Java解释器可以在任何移植了解释器的机器上执行Java字节码。
- 高性能:字节码可以在运行时快速地翻译为运行这个应用程序的特定CPU的机器码。
- 多线程:Java天然支持多线程,并且提供一系列便捷的多线程相关类。
- 动态性:Java能适应不断发展的环境,库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。
JVM、JRE、JDK
JVM:Java虚拟机,用于运行Java字节码,JVM针对不同系统有特定实现,目的是使用相同的字节码,他们都会给出相同的结果,字节码和JVM是实现Java语言“依次编译、随处可以运行”的关键。
JRE: JRE是运行已编译Java程序所需的环境,主要包含JVM和Java基础类库(一组标准的类库,提供常用的功能和API)。
JDK:JDK(Java Development Kit)是一个功能齐全的Java开发工具包,用于创建和编译Java程序,包含了JRE(Java Runtime Environment)以及编译器javac和其他工具。
Java发展简史
Java前身——Oak
Java诞生于1991年5月,来源于名为"Oak"的项目,当时是由Sun公司的一个小工程师团队在设计和开发。该团队称自己为绿队(Green Term),团队成员有James Gosling、Mike Sheridan、 Patrick Naughton等人。James Gosling(詹姆斯高斯林)是项目负责人。Oak中文名是"橡树",橡树是力量和耐用性的象征。时间证明,这个名字是非常适合的,甚至是预言性的,尽管在1995年被迫改名为Java(当时Oak已经被注册为另一个商标的一部分导致无法继续使用)。
Java诞生
1995年当时在美国的硅谷有一个大会,号称是全球最顶尖的软件和硬件厂商都会在这个大会展示自家的产品,那么Sun公司的负责人James Gosling也带着他的Oak项目去展示了。参会时一个偶然的机会让他发现他的项目名字早已被人注册商标了,没办法了只能重新给Oak取一个新的名字(早在国外的时候人们对于版权看的非常重要)。James Gosling和他的团队经过讨论后最终决定重命名为Java(爪哇,是印度尼西亚生产第一杯咖啡的一个岛屿名称。因为当时美国非常多的人喜欢喝咖啡)。同年Sun公司正式公开发布Java语言。
Java发展
- JDK1.0:1996年1月23日,Sun公司发布JDK1.0,Java语言有了第一个正式版本的运行环境,其主要技术特点有:Java虚拟机、Applet、AWT等。
- JDK1.1:1997年2月19日,Sun公司发布JDK1.1,提出许多Java最基础的技术,包括JDBC、RMI、Inner Class(内部类)和Reflction(反射)等。
- JDK1.2:1998年12月4日,JDK迎来一个里程碑式的版本,在这个版本将Java技术体系拆分为三个方向,分别是面向桌面开发的J2SE,面向企业开发的J2EE和面向移动开发的J2ME。
- HotSpot:1999年,HotSpot虚拟机诞生。
- JDK1.3:2000年5月8日,JDK1.3版本发布,主要有HotSpotJVM、修改RMI以支持与CORBA的可兼容性。
- JDK1.4:2002年2月13日,JDK1.4发布,带来许多新特性,包括正则表达式、NIO、异常链、日志类等。
- JDK5:2004年9月30日,JDK5发布。该版本在Java语法易用性上做了非常大的改进。如:自动装箱拆箱、泛型、动态注解、枚举、可变长参数、循环遍历(foreach)等语法特性。
- JDK6:2006年12月11日,JDK6发布。在这个版本中,Sun公司终结了J2EE、J2SE、J2ME的产品线命名方式,启用JavaEE、JavaSE、JavaME的新命名格式来代替。该版本主要特性有JDBC4.0、JVM改进(同步和编译器性能优化、新算法和对现有垃圾收集算法的升级、应用程序启动性能优化)、脚本语言支持等。
- JDK7:2009年2月19日,JDK7的第一个里程碑版本发布。其主要特性包括动态语言支持、fork/join框架、并发实用工具、自动管理资源的try-with-resources、改进了实例创建时的类型推断菱形运算符<>等。
- JDK8:2014年3月18日,JDK8发布,提供了Lambda表达式支持、内置Nashorn JavaScript引擎支持、新的时间日期API、彻底移除HotSpot永久代。
参考链接
https://zhuanlan.zhihu.com/p/645406671
https://blog.csdn.net/lywstuding/article/details/121117136
《Java核心技术卷I》(网盘链接:https://pan.quark.cn/s/06c58d47dce1)