当前位置: 首页 > news >正文

简介java5、java6、java7、java8、java9

简介java5、java6、java7、java8、java9

  1. 介绍

JAVA作为使用的主力语言,掌握下其历史发展也是有必要的。看看从JAVA5开始到现在的JAVA9有哪些变化。借此机会,也可以看看哪些特性我们是已经用到的,哪些是还没有用到的。
我们在IDEA里面也可以看到language level里面的信息,这里也大致写了下各个版本JDK的新特性。

简单概括下就是:
JAVA1.3:普通的原始的JAVA,基本语法相信大家都见过了
JAVA1.4:assert关键字
JAVA5:枚举类型、泛型、自动拆装箱
JAVA6: @Override注解
JAVA7: <>符号、ARM支持、支持多catch
JAVA8:Lamda表达式,类型注解等
JAVA9: 模块化、接口中的私有方法等
下面我们更加详细的分析下各个版本有哪些新特性。
2. JAVA5新特性

2.1 泛型 Generics
引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。
泛型可以带来如下的好处总结如下:
类型安全:抛弃List、Map,使用List 、Map 给它们添加元素或者使用Iterator 遍历时,编译期就可以给你检查出类型错误
方法参数和返回值加上了Type: 抛弃List、Map,使用List 、Map
不需要类型转换:List list=new ArrayList ();
类型通配符“?”: 假设一个打印List 中元素的方法printList,我们希望任何类型T的List 都可以被打印
2.2 枚举类型引入了枚举类型
2.3自动装箱拆箱(自动类型包装和解包)autoboxing & unboxing 简单地说是类型自动转换。 自动装包:基本类型自动转为包装类(int ——Integer) 自动拆包:包装类自动转为基本类型(Integer——int)
2.4可变参数varargs(varargs number of arguments) 参数类型相同时,把重载函数合并到一起了。 如:
publicvoidtest(object… objs){for(Object obj:objs){ System.out.println(obj); }}
2.5Annotations(重要) 它是java中的metadata(注释)
注解在JAVA5中就引入了。这是非常重要的特性。现在注解的应用已经随处可见。不过JAVA5的注解还不成熟,没法自定义注解。
2.6 新的迭代语句
for(intn:numbers){//process}
2.7 静态导入(import static )

导入静态对象,可以省略些代码。不过这个也不常用。、
importstaticjava.lang.System.out;//导入java.lang包下的System类的静态方法out;publicclassHelloWorld{publicstaticvoidmain(String[] args){out.print(“Hello World!”);//既是在这里不用再写成System.out.println(“Hello World!”)了,因为已经导入了这个静态方法out。}}
2.8 新的格式化方法(java.util.Formatter)
formatter.format(“Remaining account balance: $%.2f”, balance);
2.9 新的线程模型和并发库Thread Framework(重要)
最主要的就是引入了java.util.concurrent包,这个都是需要重点掌握的。
HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList
在大并发量读取时采用java.util.concurrent包里的一些类会让大家满意BlockingQueue、Callable、Executor、Semaphore
3. JAVA6

JAVA6当中
3.1 Web Services

优先支持编写 XML web service 客户端程序。你可以用过简单的annotaion将你的API发布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平台实现或者Java Web Services Pack中提供.
3.2 Scripting
现在你可以在Java源代码中混入JavaScript了,这对开发原型很有有用,你也可以插入自己的脚本引擎。
3.3 JDBC4.0
JAVA6将联合绑定 Java DB (Apache Derby). JDBC 4.0 增加了许多特性例如支持XML作为SQL数据类型,更好的集成Binary Large OBjects (BLOBs) 和 Character Large OBjects (CLOBs) .
3.4 UI优化
GUI 开发者可以有更多的技巧来使用 SwingWorker utility ,以帮助GUI应用中的多线程。, JTable 分类和过滤,以及添加splash闪屏。
Swing拥有更好的 look-and-feel , LCD 文本呈现, 整体GUI性能的提升。Java应用程序可以和本地平台更好的集成,例如访问平台的系统托盘和开始菜单。Mustang将Java插件技术和Java Web Start引擎统一了起来。
3.5 监控管理增强添加更多的诊断信息,绑定了不是很知名的医生 memory-heap 分析工具Jhat 来查看内核导出。
3.6 编译APIcompiler API提供编程访问javac,可以实现进程内编译,动态产生Java代码 ##3.7 自定义注解Java tool和framework 提供商可以定义自己的 annotations ,并且内核支持自定义annotation的插件和执行处理器
3.8安全性 XML-数字签名(XML-DSIG) APIs 用于创建和操纵数字签名); 新的方法来访问本地平台的安全服务,例如本地Microsoft Windows for secure authentication and communicationnative 的Public Key Infrastructure (PKI) 和 cryptographic services, Java Generic Security Services (Java GSS) 和 Kerberos services for authentication, 以及访问 LDAP servers 来认证用户.
4. JAVA7

4.1 集合类的语法支持
原来的样子
List list =newArrayList(); list.add(“item”);Stringitem = list.get(0);Setset=newHashSet();set.add(“item”);Map map =newHashMap(); map.put(“key”,1);intvalue = map.get(“key”);
现在的样子:(这些集合是不可变的…)
List list = [“item”];Stringitem = list[0];Setset= {“item”};Map map = {“key”:1};intvalue = map[“key”];
4.2 自动资源管理
Java中某些资源是需要手动关闭的,如InputStream,Writes,Sockets,Sql classes等。这个新的语言特性允许try语句本身申请更多的资源,这些资源作用于try代码块,并自动关闭。
以前的写法
BufferedReader br =newBufferedReader(newFileReader(path));try{returnbr.readLine(); }finally{ br.close(); }
现在的写法(不需要finally来释放资源了)
try (BufferedReaderbr = new BufferedReader(newFileReader(path)) { return br.readLine();}
4.3 类型推断
以前的写法:
Map> anagrams =newHashMap>();
现在的写法
Map> anagrams =newHashMap<>();
4.4 数字字面量下划线支持
很长的数字可读性不好,在Java 7中可以使用下划线分隔长int以及long了。如:
intone/_million = 1/_000/_000;
这样子还真看不惯。。。不过的确是可读性好了。
4.5 switch中使用string
String s =“test”;switch(s) {case"test": System.out.println(“test”);case"test1": System.out.println(“test1”);break;default: System.out.println(“break”);break; }
4.6 新增一些取环境信息的工具方法
FileSystem.getJavaIoTempDir()// IO临时文件夹 FileSystem.getJavaHomeDir()// JRE的安装目录 FileSystem.getUserHomeDir()// 当前用户目录 FileSystem.getUserDir()// 启动java进程时所在的目录5
5. java8

5.1 lambda表达式
提供了lambda表达式,增加了很多内置函数式接口。尤其是其中的stream接口提供了
5.2 注解改进
例如支持多重注解,还有新的target等
这是我的B站公众号【Linda的编程学习资料库】各位大佬有空可以关注下,每天更新Java相关视频教程。

学习中遇到问题有不明白的地方,小编给大家整理了一份B站java视频教程:尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程/_手把手图解学习Java,让学习成为一种享受/_哔哩哔哩/_bilibili

《网络安全从零到精通全套学习大礼包》

96节从入门到精通的全套视频教程免费领取

如果你也想通过学网络安全技术去帮助就业和转行,我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。

网络安全学习路线图

想要学习 网络安全,作为新手一定要先按照路线图学习方向不对,努力白费。对于从来没有接触过网络安全的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线,大家跟着这个路线图学习准没错。

配套实战项目/源码

所有视频教程所涉及的实战项目和项目源码

学习电子书籍

学习网络安全必看的书籍和文章的PDF,市面上网络安全书籍确实太多了,这些是我精选出来的

面试真题/经验

以上资料如何领取?

6034045b97ae8ac36b2a650.png)

以上资料如何领取?

http://www.cnnetsun.cn/news/2456733.html

相关文章:

  • Chinese-CLIP模型部署实战指南:如何实现3倍推理加速?
  • 如何免费获取EB Garamond 12:古典衬线字体的现代重生
  • 【免费下载】 无缝集成ADS8688:探索STM32F103的高效数据采集新境界
  • 别再怕sudo rm -rf了!手把手教你用Win32DiskImager备份树莓派SD卡(附恢复教程)
  • FindSomething:浏览器隐私保护终极指南,零干扰检测信息泄漏
  • OpenShift集群搭建后,这10个oc命令帮你快速排障和日常巡检(附脚本)
  • 认识自定义协议
  • 数据库容灾配置全攻略:同城容灾vs两地三中心,RPO、RTO一篇讲透
  • 【C++动态规划】B3734 [信息与未来 2017] 加强版密码锁|普及+
  • 【Perplexity国际新闻搜索实战指南】:20年资深专家亲授5大避坑法则与实时情报提效秘技
  • human-panic 与 Rust 标准库 panic 处理的对比分析
  • 终极指南:3种高效方法破解Cursor AI编辑器限制,免费使用Pro功能
  • 终极指南:如何免费解锁Cursor AI编辑器的Pro功能
  • PlusPlugins实战教程:利用DeviceInfo+和PackageInfo+获取设备信息
  • 告别矩形框!用YOLOv7-Polygon搞定不规则目标检测(附完整数据集转换脚本)
  • Brev Launchables成本控制:7个实用技巧在预算内运行高性能AI项目
  • 观察使用Taotoken Token Plan套餐后的月度成本变化趋势
  • Mi-Create:零基础也能设计小米手表个性表盘的终极可视化工具
  • FPGA时序收敛核心:时钟偏移对建立与保持时间的影响及实战优化
  • BitLocker跨平台访问:Dislocker完整解决方案与技术实现指南
  • 【信息科学与工程学】【管理科学】——第十二篇 企业运营与管理模型体系 第三部分:权力结构与治理模型 ——激励机制与权力制衡
  • Grok系列大模型:xAI的智能宇宙探秘
  • 华硕路由器AdGuardHome安装终极指南:全网络广告过滤快速部署
  • 百度文心大模型如何通过Taotoken快速接入并享受官方折扣
  • HC7253晨芯阳高端电流检测降压LED恒流驱动器
  • ExtractorSharp:让游戏资源编辑变得像拼图一样简单
  • Boss-Key老板键:一键隐藏窗口的Windows隐私保护神器
  • 使用Taotoken后,我的Claude Code项目API调用稳定性提升实录
  • 声明式图表工具:提升技术文档绘制的自动化方案
  • GitHub网络加速终极指南:如何实现10倍下载速度的智能优化方案