0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java21版本的使用

jf_ro2CN3Fa 来源:芋道源码 2023-06-19 09:42 次阅读

如果你是一位苦逼的 Java 程序员,那么当你看到这张图的时候也许震惊的会跳起来!

但是我最大的感受是:

卧槽,怎么就Java 21了?!我还在用Java 8 呢!

实际上,从Java 8 到Java 21,中间也就是Java 11, Java 17是长期支持版本,其他的都是“小”版本,变化不大。

这次去掉“public static void main”的提案来自JEP 445: Unnamed Classes and Instance Main Methods (Preview) ;翻译过来是 “未命名类和实例 main 方法”,仅看标题你可能并不认为和上面那些东西有什么关系,但事实上,上述特性确实是由此 JEP 带来的。

这种简化写法并不是 Java 的特例,其实早在 .NET 6,C# 就引入了一套 "控制台模板" 语法,其允许你在 C# 的主类文件(这里是 Program.cs)这么写:

//Seehttps://aka.ms/new-console-templateformoreinformation
Console.WriteLine("Hello,World!");

其等价于:

usingSystem;

namespaceMyApp//Note:actualnamespacedependsontheprojectname.
{
internalclassProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("HelloWorld!");
}
}
}

很神奇对不对,但实际上说简单点这只是套语法糖而已。那么,JEP 445 也是如此吗?答案是否定的,甚至,它连语法糖都没有引入

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目地址:https://github.com/YunaiV/ruoyi-vue-pro

视频教程:https://doc.iocoder.cn/video/

真的是变天了吗?

如果你仔细查看 JEP 提案的原文,你会发现他们在 Summary 和 Goal 上提到最多的两个词是:sutdents 和 beginners:

7d95392e-0e41-11ee-962d-dac502259ad0.png

而仔细读读这部分内容你会知道,这个 JEP 设立的初衷是为了为学生和 Java 新手隐去晦涩难懂的部分,仅保留一些简单的语法,方便他们快速入门和学习 Java,但并不是引入了一套额外的 Java 方言

从始至终,这套东西就不是给普通 Java 开发者使用的,而是面向学生和新手入门使用的。

有个可爱的美国老师居然创作了一首RAP来帮助新手记忆“public static void main”!

publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld");
}
}

对于新手来说,这简单的五行代码说,信息严重过载了:

(1) 类上的public

它只有在跨越package访问时才有意义,为什么一个简单的Hello World都必须把它写上?

(2) class

新手只想写个hello world ,他们还必须理解什么叫类吗?

(3) 方法上的public

这是什么鬼?为什么要加个public

(4) static

新手根本理解不了什么静态方法,为什么需要静态方法。

(5) String[] args

这个参数的定义,对于新手来说也是一团雾水

(6) System.out.println(...)

System是个类,out是个静态字段,println是实例方法,学生们唯一关心的是println啊。

在上课的第一天就需要解释很多东西,快下课了,学生也写不出任何程序,老师只好说:先记住吧,以后你会明白的。

所以Brian Goetz认为,必须要简化这一切。

第一步使用更宽容的“启动协议”,可以改成这样:

classHelloWorld{
voidmain(){
System.out.println("HelloWorld");
}
}

第二步通过引入“未命名的类”,改成这样:

voidmain(){
System.out.println("HelloWorld");
}

第三步,“自动导入静态方法”,改成这样:

voidmain(){
println("HelloWorld");
}

看起来更加清晰明了,对于Java初学者将会非常友好。

经过这二十多年的发展,围绕Java建立了庞大的生态,各种各样的软件应有尽有,让Java极其成功的同时,也让Java背上了沉重的包袱,要想简化成Python,JS那样的脚本语言,几乎不可能了,这次能够迈出一小步已经是难能可贵了。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

责任编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2956

    浏览量

    104530
  • RBAC
    +关注

    关注

    0

    文章

    44

    浏览量

    9944
  • 开发者
    +关注

    关注

    1

    文章

    553

    浏览量

    16980

原文标题:Java21的 main 方法声明要变天了吗?

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    分享两很好的编程的书C++和JAVA

    这是国外两很好的编程的书,其风格很独特。中文版本,适合初学者入门,文件类型是epub,打不开的可以用格式工厂转换一下格式。像计算机科学家一样思考C++像计算机科学家一样思考JAVA
    发表于 04-22 20:46

    IDEA插件MyBatisCodeHelperPro 21版本介绍

    开发了两年多的 IDEA插件 MyBatisCodeHelperPro 21 版本发布
    发表于 07-12 17:07

    Java语言平台版本 及语言特点是什么?

    使用计算机的方式有哪些?Java语言平台版本 Java语言的特点是什么?
    发表于 11-06 07:52

    请问AD21版本如何重新定义板子形状?

    请问AD21版本如何重新定义板子形状?
    发表于 02-07 09:15

    java和javac版本不一致该如何去修改呢

    也是这个原理.Javac版本修改:下面是修改javac的过程查看命令路径root@build-server:/home/build# which java javac/usr/bin/java/usr
    发表于 10-28 15:33

    21天学通JAVA2_袁国忠译

    21天学通Java2》包括4周的课程。第一周介绍Java语言的基本知识,包括数据类型、变量、表达式、对象、数组、条件语句、循环、类、接口、包异常和线程等;第二周介绍Java类库,包括
    发表于 12-06 10:38 0次下载
    <b class='flag-5'>21</b>天学通<b class='flag-5'>JAVA</b>2_袁国忠译

    Java学习路线教程之Java新手必须学习那21个技术点详细资料说明

    Java新手必学的21个技术点 以下为大家盘点作为Java新手必学的21个技术点,希望能够对想要学习编程,学习JAVA的人有些帮助! JN
    发表于 12-19 15:23 19次下载

    三星骁龙888版本和Exynos 2100版本对比差异

    据台媒eprice消息,他们最近将三星Galaxy S21 Ultra 5G在中国台湾地区销售的骁龙888版本,以及在欧洲地区销售的Exynos 2100版本放在一起进行了一次PCMark续航对比,内容为测试手机电量从100%降
    的头像 发表于 01-26 10:53 4413次阅读

    Altium Designer 21版本的操作界面环境

    相对于Altium Designer以前的版本21版本给用户提供了一个更加人性化、更加集成化的操作界面环境,如图2-9所示,主要包含菜单栏、工具栏、面板控制区、用户工作区等,其中工具栏、菜单栏的项目显示会跟随用户操作环境的变化
    的头像 发表于 08-09 11:37 3418次阅读

    代码库源程序3.0版本

    代码库源程序3.0版本
    发表于 09-22 15:12 0次下载

    SpringBoot正式弃用Java8 Java17将成为未来主流版本

    了Spring Boot 3.0.0的第一个里程碑版本 M1 。 下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化: Java基线从 Java 8 提升到了
    的头像 发表于 10-09 18:03 3594次阅读

    MegaRAID SCSI GAM UnixWare 6.02版本-21

    电子发烧友网站提供《MegaRAID SCSI GAM UnixWare 6.02版本-21.zip》资料免费下载
    发表于 08-22 16:32 0次下载
    MegaRAID SCSI GAM UnixWare 6.02<b class='flag-5'>版本</b>-<b class='flag-5'>21</b>

    JDK 21 GA,虚拟线程正式稳定!你还坚守Java8?

    Java 21 / JDK 21 已正式 GA,此版本是继 JDK 17 后的长期支持版本 (LTS),Oracle 将为其提供至少八年的技
    的头像 发表于 09-20 15:47 967次阅读
    JDK <b class='flag-5'>21</b> GA,虚拟线程正式稳定!你还坚守<b class='flag-5'>Java</b>8?

    Java11和Java17使用率达48%和45%

    2018 年 9 月发布的 Java 11 和 2020 年 9 月发布的 Java 17 是使用最广泛的 Java 版本,使用率分别为 48% 和 45%。其次是 2014 年 3
    的头像 发表于 11-01 12:30 563次阅读

    一文了解Java 21的新功能

    JDK 21 于 2023 年 9 月 19 日发布,是继之前的 LTS 版本 JDK 17 之后最新的长期支持 (LTS) 版本。在本文中,我们将探讨 JDK 21 新引入的功能。
    的头像 发表于 12-21 16:19 1243次阅读
    一文了解<b class='flag-5'>Java</b> <b class='flag-5'>21</b>的新功能